diff options
author | Hernan Grecco <hgrecco@gmail.com> | 2023-04-27 07:58:50 -0300 |
---|---|---|
committer | Hernan Grecco <hgrecco@gmail.com> | 2023-04-27 07:58:50 -0300 |
commit | 1b54de47fcb3eeaf4c52e5acb519bd212216f413 (patch) | |
tree | d4381612bd2b0af15813b5c93936ba7b840c4f10 /pint | |
parent | 32abc1ccdb9e5b20b5938dff69c6e6b2bf1727fd (diff) | |
download | pint-1b54de47fcb3eeaf4c52e5acb519bd212216f413.tar.gz |
Honor non_int_type when a unit without a magnitude is given as string.
Close #1505
Diffstat (limited to 'pint')
-rw-r--r-- | pint/facets/plain/registry.py | 6 | ||||
-rw-r--r-- | pint/testsuite/test_issues.py | 12 |
2 files changed, 15 insertions, 3 deletions
diff --git a/pint/facets/plain/registry.py b/pint/facets/plain/registry.py index b7ca362..255c7a5 100644 --- a/pint/facets/plain/registry.py +++ b/pint/facets/plain/registry.py @@ -1137,7 +1137,7 @@ class PlainRegistry(metaclass=RegistryMeta): token_text = token[1] if token_type == NAME: if token_text == "dimensionless": - return 1 * self.dimensionless + return self.non_int_type("1") * self.dimensionless elif token_text.lower() in ("inf", "infinity"): return self.non_int_type("inf") elif token_text.lower() == "nan": @@ -1146,7 +1146,7 @@ class PlainRegistry(metaclass=RegistryMeta): return self.Quantity(values[token_text]) else: return self.Quantity( - 1, + self.non_int_type("1"), self.UnitsContainer( {self.get_name(token_text, case_sensitive=case_sensitive): 1} ), @@ -1254,7 +1254,7 @@ class PlainRegistry(metaclass=RegistryMeta): ) if not input_string: - return self.Quantity(1) + return self.Quantity(self.non_int_type("1")) for p in self.preprocessors: input_string = p(input_string) diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py index 6dd8f85..8517bd9 100644 --- a/pint/testsuite/test_issues.py +++ b/pint/testsuite/test_issues.py @@ -1078,3 +1078,15 @@ def test_issue1631(): def test_issue1725(registry_empty): registry_empty.define("dollar = [currency]") assert registry_empty.get_compatible_units("dollar") == set() + + +def test_issues_1505(): + ur = UnitRegistry(non_int_type=decimal.Decimal) + + assert isinstance(ur.Quantity("1m/s").magnitude, decimal.Decimal) + assert not isinstance( + ur.Quantity("m/s").magnitude, float + ) # unexpected success (magnitude should not be a float) + assert isinstance( + ur.Quantity("m/s").magnitude, decimal.Decimal + ) # unexpected fail (magnitude should be a decimal) |