示例#1
0
def _parse_quantity(quantity_str, expected_units, default_unit, unit_type):
    try:
        if default_unit:
            quantity = Quantity.from_string_or_float(quantity_str,
                                                     default_unit)
        else:
            quantity = Quantity.from_string(quantity_str)

    except ValueError:
        raise ParseError(
            "can't interpret {quantity_str!r} as a {unit_type}",
            quantity_str=quantity_str,
            unit_type=unit_type,
        ) from None

    if quantity.unit not in expected_units:
        raise ParseError(
            lambda e:
            f"can't interpret {e.quantity_str!r} as a {unit_type}, did you mean '{Quantity(e.quantity.value, did_you_mean(e.quantity.unit, e.expected_units))}'?",
            quantity=quantity,
            quantity_str=quantity_str,
            expected_units=expected_units,
            unit_type=unit_type,
        )

    return quantity
def parse_conc(x):
    return Quantity.from_string_or_float(x, 'µg/µL')