mirror of
https://github.com/simonw/datasette.git
synced 2025-12-10 16:51:24 +01:00
46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
"""
|
|
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
|