"plugins/freeEnergy/vscode:/vscode.git/clone" did not exist on "ab09b5228010ebca852da7ff00c9280d07474828"
Commit 1ef16124 authored by Christopher Bruns's avatar Christopher Bruns
Browse files

Use Peter's modified quantity.py

Change doctests to reflect better preservation of tuples in collections of collections.
Note that outer container is still converted to list...
parent c7a1ae89
......@@ -247,12 +247,12 @@ Collections of numbers can also be used as values.
>>> print s3
[(1, 2, 3), (4, 5, 6)] cm
>>> print s3 / millimeters
[[10.0, 20.0, 30.0], [40.0, 50.0, 60.0]]
[(10.0, 20.0, 30.0), (40.0, 50.0, 60.0)]
>>> s4 = ((1,2,3),(4,5,6)) * centimeters
>>> print s4
((1, 2, 3), (4, 5, 6)) cm
>>> print s4 / millimeters
[[10.0, 20.0, 30.0], [40.0, 50.0, 60.0]]
[(10.0, 20.0, 30.0), (40.0, 50.0, 60.0)]
>>> t = (1,2,3) * centimeters
>>> print t
(1, 2, 3) cm
......
......@@ -528,18 +528,32 @@ class Quantity(object):
value = []
for i in self._value:
value.append(i)
result = Quantity(value, new_unit)
for i in range(len(result)):
# Push multiply operation one level deeper
if post_multiply:
result[i] = result[i]*factor
else:
result[i] = factor*result[i]
result = Quantity(self._scale_sequence(value, factor, post_multiply), new_unit)
if (new_unit.is_dimensionless()):
return result._value
else:
return result
def _scale_sequence(self, value, factor, post_multiply):
try:
if post_multiply:
if isinstance(value, tuple):
value = tuple([x*factor for x in value])
else:
for i in range(len(value)):
value[i] = value[i]*factor
else:
if isinstance(value, tuple):
value = tuple([factor*x for x in value])
else:
for i in range(len(value)):
value[i] = factor*value[i]
except TypeError as ex:
for i in range(len(value)):
value[i] = self._scale_sequence(value[i], factor, post_multiply)
return value
####################################
### Sequence methods of Quantity ###
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment