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 ...compat import ufloat
from ...util import build_dependent_class, create_class_with_registry
from ..plain import PlainRegistry
from .objects import Measurement, MeasurementQuantity
[docs]class MeasurementRegistry(PlainRegistry):
_quantity_class = MeasurementQuantity
_measurement_class = Measurement
def __init_subclass__(cls, **kwargs):
super().__init_subclass__()
cls.Measurement = build_dependent_class(
cls, "Measurement", "_measurement_class"
)
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