pint
pint copied to clipboard
Can't alias unit with prefix
When I try to alias meV , a KeyError is raised.
>>> from pint import UnitRegistry
>>> ureg = UnitRegistry()
>>> ureg.define('@alias meV = DEFAULT_ENERGY_UNIT')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\site-packages\pint\registry.py", line 346, in define
self._define(Definition.from_string(line))
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\site-packages\pint\registry.py", line 1925, in _define
definition, d, di = super()._define(definition)
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\site-packages\pint\registry.py", line 1284, in _define
definition, d, di = super()._define(definition)
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\site-packages\pint\registry.py", line 394, in _define
self._define_alias(definition, d, di)
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\site-packages\pint\registry.py", line 471, in _define_alias
unit = unit_dict[definition.name]
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\collections\__init__.py", line 914, in __getitem__
return self.__missing__(key) # support subclasses that define __missing__
File "C:\Users\mll13652\AppData\Local\conda\conda\envs\py37\lib\collections\__init__.py", line 906, in __missing__
raise KeyError(key)
KeyError: 'meV'
I can work around it by specifying ureg.mDEFAULTENERGYUNIT, but it would be better if I could just alias meV. Is this a bug or are we not supposed to alias prefixed units? I'm using v0.11
Seconded. Attemping to define using UnitRegistry.define("@alias centimeter = Centimeters") for a more user-friendly alias will fail.