Skip to content

Commit b128e6a

Browse files
committed
don't memoize the simplified property for units or dimensionalities, or
set_default_units can suffer. Fixes #515314.
1 parent 2408990 commit b128e6a

7 files changed

Lines changed: 20 additions & 7 deletions

File tree

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Bugs fixed
1010
**********
1111

1212
* #501563 incorrect conversion ratio for gills/pints
13+
* #515314 don't memoize simplified, fixes set_default_units
1314

1415
-----
1516
0.7.0

quantities/dimensionality.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@ def ndims(self):
3030
return sum(abs(i) for i in self.simplified.itervalues())
3131

3232
@property
33-
@memoize
3433
def simplified(self):
3534
if len(self):
3635
rq = 1*unit_registry['dimensionless']

quantities/tests/test_30_quantity_conversion.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,21 @@ def test_compound_reduction():
4646

4747
assert_equal(str(temp1), str(temp1.simplified))
4848

49+
def test_default_units():
50+
pq.set_default_units(length='mm')
51+
assert_equal(pq.m.simplified.magnitude, 1000)
52+
assert_equal(pq.m.simplified.units, pq.mm)
53+
x = 1*pq.m
54+
y = x.simplified
55+
assert_equal(y.magnitude, 1000)
56+
assert_equal(y.units, pq.mm)
57+
pq.set_default_units(length='m')
58+
assert_equal(pq.m.simplified.magnitude, 1)
59+
assert_equal(pq.m.simplified.units, pq.m)
60+
z = y.simplified
61+
assert_equal(z.magnitude, 1)
62+
assert_equal(z.units, pq.m)
63+
4964
class TestQuantities(unittest.TestCase):
5065

5166
def numAssertEqual(self, a1, a2):

quantities/unitquantity.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
"""
1+
"""
22
"""
33
from __future__ import absolute_import
44

@@ -114,7 +114,6 @@ def definition(self):
114114
return self._definition
115115

116116
@property
117-
@memoize
118117
def simplified(self):
119118
return self._reference.simplified
120119

@@ -305,7 +304,6 @@ def __init__(
305304
cls._default_unit = self
306305

307306
@property
308-
@memoize
309307
def simplified(self):
310308
return self.view(Quantity).rescale(self.get_default_unit())
311309

quantities/utilities.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ def g(*args, **kwargs):
77
key = (f, tuple(args), frozenset(kwargs.items()))
88
if key not in cache:
99
cache[key] = f(*args, **kwargs)
10-
return cache[key]
10+
return cache[key].copy()
1111
return g
1212

1313

quantities/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11

2-
__version__ = '0.7.96'
2+
__version__ = '0.7.1'

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ name = quantities
3131
platforms = Any
3232
requires = numpy (>=1.3.0)
3333
url = http://packages.python.org/quantities
34-
version = 0.7.96
34+
version = 0.7.1
3535
zip_safe = False
3636

3737
[aliases]

0 commit comments

Comments
 (0)