def METHOD_NAME(self, value: str) -> "Value":
    if isinstance(value, Number):
        self.value = value
        return self
    value = value.replace(" ", "")  # Ignore spaces
    if self._unit and (
        value.endswith(self._unit)
        or (
            self.fmt.parse_sloppy_unit
            and value.lower().endswith(self._unit.lower())
        )
    ):  # strip unit
        value = value[: -len(self._unit)]
    factor = 1
    # fix for e.g. KHz, mHz gHz as milli-Hertz mostly makes no
    # sense in NanoVNAs context
    if self.fmt.parse_sloppy_kilo and value[-1] in ("K", "m", "g"):
        value = value[:-1] + value[-1].swapcase()
    if value[-1] in PREFIXES:
        factor = 10 ** ((PREFIXES.index(value[-1]) - 10) * 3)
        value = value[:-1]
    if self.fmt.assume_infinity and value == "\N{INFINITY}":
        self._value = math.inf
    elif self.fmt.assume_infinity and value == "-\N{INFINITY}":
        self._value = -math.inf
    else:
        try:
            self._value = Decimal(value, context=Value.CTX) * Decimal(
                factor, context=Value.CTX
            )
        except InvalidOperation as exc:
            raise ValueError() from exc
        self._value = clamp_value(
            self._value, self.fmt.parse_clamp_min, self.fmt.parse_clamp_max
        )
    return self