UnitRegistry.convert now returns a Fraction if the user submits a Fraction to it. I also added a test for this issue.
This commit is contained in:
@@ -507,3 +507,9 @@ class TestIssuesNP(QuantityTestCase):
|
||||
t = copy.deepcopy(q)
|
||||
u = t.to(ur.mF)
|
||||
self.assertQuantityEqual(q.to(ur.mF), u)
|
||||
|
||||
def test_issue323(self):
|
||||
from fractions import Fraction as F
|
||||
self.assertEqual((self.Q_(F(2,3), 's')).to('ms'), self.Q_(F(2000,3), 'ms'))
|
||||
self.assertEqual((self.Q_(F(2,3), 'm')).to('km'), self.Q_(F(1,1500), 'km'))
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ import functools
|
||||
import operator
|
||||
import pkg_resources
|
||||
from decimal import Decimal
|
||||
from fractions import Fraction
|
||||
from contextlib import contextmanager, closing
|
||||
from io import open, StringIO
|
||||
from collections import defaultdict
|
||||
@@ -1109,6 +1110,9 @@ class UnitRegistry(object):
|
||||
if isinstance(value, Decimal):
|
||||
factor = Decimal(str(factor))
|
||||
|
||||
if isinstance(value, Fraction):
|
||||
factor = Fraction(Decimal(str(factor)))
|
||||
|
||||
if inplace:
|
||||
value *= factor
|
||||
else:
|
||||
|
||||
Reference in New Issue
Block a user