Source code for quantityfield.helper

from pint import DimensionalityError, UnitRegistry


[docs] def check_matching_unit_dimension( ureg: UnitRegistry, base_units: str, units_to_check: list[str] ) -> None: """ Check if all units_to_check have the same Dimension like the base_units If not :raise DimensionalityError """ base_unit = getattr(ureg, base_units) # create a pint quantity by multiplying unit with magnitude of 1 base_quant = 1 * base_unit for unit_string in units_to_check: unit = getattr(ureg, unit_string) # try to convert base qunatity to new unit, this also work for ureg.context try: base_quant.to(unit) except DimensionalityError as e: raise DimensionalityError(base_unit, unit) from e