Skip to content

units

Full documentation pages are generated for docstring reference only and may contain symbols imported from other modules. Imported symbols are not distinguished from locally defined symbols and will appear in any module that they are imported into. For better information on where symbols should be imported from, review the sourcecode on the github.

FoSpy.parsing.validators.units

FOSQuantity

Bases: Quantity

Source code in FoSpy/parsing/validators/units.py
class FOSQuantity(Quantity):
    def serialize(self, **kwargs):
        return str(self.magnitude)

serialize

serialize(**kwargs)
Source code in FoSpy/parsing/validators/units.py
def serialize(self, **kwargs):
    return str(self.magnitude)

FOSTempUnit

Bases: FOSUnit

Source code in FoSpy/parsing/validators/units.py
class FOSTempUnit(FOSUnit):
    def __init__(self, unitlike, rate=False, **kwargs):
        unitlike = str(unitlike)
        if not ("deg" in unitlike or "k" in unitlike.lower()):
            unitlike = f"deg{unitlike}"
        super().__init__(unitlike, allow_dims="[temperature]" if not rate else "[temperature]/[time]")

    @classmethod
    def enforce_dims(cls, **kwargs):
        return cls

__init__

__init__(unitlike, rate=False, **kwargs)
Source code in FoSpy/parsing/validators/units.py
def __init__(self, unitlike, rate=False, **kwargs):
    unitlike = str(unitlike)
    if not ("deg" in unitlike or "k" in unitlike.lower()):
        unitlike = f"deg{unitlike}"
    super().__init__(unitlike, allow_dims="[temperature]" if not rate else "[temperature]/[time]")

enforce_dims classmethod

enforce_dims(**kwargs)
Source code in FoSpy/parsing/validators/units.py
@classmethod
def enforce_dims(cls, **kwargs):
    return cls

FOSUnit

Bases: Unit

Source code in FoSpy/parsing/validators/units.py
class FOSUnit(Unit):
    def __init__(self, unitlike, allow_dims=[]):
        super().__init__(units=unitlike)
        if not isinstance(allow_dims, list):
            allow_dims = [allow_dims]
        if len(allow_dims) != 0 and not any([self.dimensionality == dim for dim in allow_dims]):
            raise ValueError(f"Unit: '{unitlike}' is not a valid dimension. Valid dimensions are: "
                             f"{allow_dims}")

    @classmethod
    def enforce_dims(cls, allow_dims=[]):
        def constructor(unitlike):
            return cls(unitlike, allow_dims=allow_dims)
        return constructor

__init__

__init__(unitlike, allow_dims=[])
Source code in FoSpy/parsing/validators/units.py
def __init__(self, unitlike, allow_dims=[]):
    super().__init__(units=unitlike)
    if not isinstance(allow_dims, list):
        allow_dims = [allow_dims]
    if len(allow_dims) != 0 and not any([self.dimensionality == dim for dim in allow_dims]):
        raise ValueError(f"Unit: '{unitlike}' is not a valid dimension. Valid dimensions are: "
                         f"{allow_dims}")

enforce_dims classmethod

enforce_dims(allow_dims=[])
Source code in FoSpy/parsing/validators/units.py
@classmethod
def enforce_dims(cls, allow_dims=[]):
    def constructor(unitlike):
        return cls(unitlike, allow_dims=allow_dims)
    return constructor

attach_unit

attach_unit(value, value_key, cls, sourceDict)
Source code in FoSpy/parsing/validators/units.py
def attach_unit(value, value_key, cls, sourceDict):
    unit_key = f"{value_key}_unit"
    if unit_key not in sourceDict:
        raise ValueError(f"Could not find required unit for: '{value_key}'")

    unit = sourceDict[unit_key]

    validators = cls.build_validators()
    unit_validator = validators.get(unit_key, Unit)

    unit = unit_validator(unit)

    return FOSQuantity(value, unit)

temp_rate_unit

temp_rate_unit(unitlike)
Source code in FoSpy/parsing/validators/units.py
def temp_rate_unit(unitlike):
    one = FOSQuantity(1, FOSTempUnit(unitlike, rate=True))
    zero = FOSQuantity(0, FOSTempUnit(unitlike, rate=True))
    diff = one - zero
    return diff.units