You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
import typing
|
|
|
|
|
|
|
|
try:
|
|
|
|
import pint
|
|
|
|
except ImportError:
|
|
|
|
pint = False
|
|
|
|
|
|
|
|
|
|
|
|
class NullRegistry:
|
|
|
|
"""A NullRegistry that masquerades as a pint.UnitRegistry."""
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
"""Initialize a null registry."""
|
|
|
|
|
|
|
|
def __getattr__(self, item: typing.Any) -> int:
|
|
|
|
"""Return a Scalar 1 to simulate a unit."""
|
|
|
|
return 1
|
|
|
|
|
|
|
|
def __bool__(self):
|
|
|
|
"""Return False since a NullRegistry is not a pint.UnitRegistry."""
|
|
|
|
return False
|
|
|
|
|
|
|
|
def define(self, *args, **kwargs):
|
|
|
|
"""Pretend to add unit to the registry."""
|
|
|
|
|
|
|
|
|
|
|
|
def _build_unit_registry():
|
|
|
|
registry = pint.UnitRegistry() if pint else NullRegistry()
|
|
|
|
registry.define('FPS = 1 * hertz')
|
|
|
|
return registry
|
|
|
|
|
|
|
|
|
|
|
|
units = _build_unit_registry()
|