pint
pint copied to clipboard
Check on percentage fails
>>> from pint import Quantity
>>> pq = Quantity(1, "%")
>>> pq.check("%")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/facets/plain/quantity.py", line 360, in check
return self.dimensionality == self._REGISTRY.get_dimensionality(dimension)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/facets/plain/registry.py", line 717, in get_dimensionality
input_units = to_units_container(input_units)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/util.py", line 1060, in to_units_container
return ParserHelper.from_string(unit_like)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/util.py", line 774, in from_string
ret = build_eval_tree(gen).evaluate(
^^^^^^^^^^^^^^^^^^^^
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/pint_eval.py", line 565, in build_eval_tree
result, _ = _build_eval_tree(tokens, op_priority, 0, 0)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/pint_eval.py", line 490, in _build_eval_tree
right, index = _build_eval_tree(
^^^^^^^^^^^^^^^^^
File "/home/ernie/code/costmodels/.pixi/envs/test/lib/python3.12/site-packages/pint/pint_eval.py", line 514, in _build_eval_tree
assert result is not None
^^^^^^^^^^^^^^^^^^
AssertionError
>>> pq = Quantity(1, "km")
>>> pq.check("m")
True
>>>
this is insteresting, it's because % is converted using a preprocessor so isn't recognised as a unit. so I suppose the preprocessors should be applied anywhere there is a text input