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:
Emilien Kofman
2016-01-13 10:42:17 +01:00
parent 7edf3fee67
commit 20c3cd69a9
2 changed files with 10 additions and 0 deletions

View File

@@ -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'))

View File

@@ -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: