Skip to main content
`Ctrl`+`K`

#

# Source code for pint.facets.measurement.registry

    """
    pint.facets.measurement.registry
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    :copyright: 2022 by Pint Authors, see AUTHORS for more details.
    :license: BSD, see LICENSE for more details.
    """

    from __future__ import annotations

    from typing import Any, Generic

    from ...compat import TypeAlias, ufloat
    from ...util import create_class_with_registry
    from ..plain import GenericPlainRegistry, QuantityT, UnitT
    from . import objects

    class GenericMeasurementRegistry(
        Generic[QuantityT, UnitT], GenericPlainRegistry[QuantityT, UnitT]
    ):
        Measurement = objects.Measurement

        def _init_dynamic_classes(self) -> None:
            """Generate subclasses on the fly and attach them to self"""
            super()._init_dynamic_classes()

            if ufloat is not None:
                self.Measurement = create_class_with_registry(self, self.Measurement)
            else:

                def no_uncertainties(*args, **kwargs):
                    raise RuntimeError(
                        "Pint requires the 'uncertainties' package to create a Measurement object."
                    )

                self.Measurement = no_uncertainties

    class MeasurementRegistry(
        GenericMeasurementRegistry[
            objects.MeasurementQuantity[Any], objects.MeasurementUnit
        ]
    ):
        Quantity: TypeAlias = objects.MeasurementQuantity[Any]
        Unit: TypeAlias = objects.MeasurementUnit