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')