summaryrefslogtreecommitdiff
path: root/pint
diff options
context:
space:
mode:
authorHernan Grecco <hgrecco@gmail.com>2023-04-27 07:58:50 -0300
committerHernan Grecco <hgrecco@gmail.com>2023-04-27 07:58:50 -0300
commit1b54de47fcb3eeaf4c52e5acb519bd212216f413 (patch)
treed4381612bd2b0af15813b5c93936ba7b840c4f10 /pint
parent32abc1ccdb9e5b20b5938dff69c6e6b2bf1727fd (diff)
downloadpint-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.py6
-rw-r--r--pint/testsuite/test_issues.py12
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)