diff options
author | Hernan Grecco <hernan.grecco@gmail.com> | 2014-05-09 18:01:21 -0300 |
---|---|---|
committer | Hernan Grecco <hernan.grecco@gmail.com> | 2014-05-09 18:01:21 -0300 |
commit | a19359b8d147269dad7b5621f052643a5796b9c6 (patch) | |
tree | bc92779bc50541b78b08f23a5f6474726b55e894 | |
parent | 78a5e2b09c84298230330d51bc9c5c465cee6bcf (diff) | |
download | pint-a19359b8d147269dad7b5621f052643a5796b9c6.tar.gz |
Allow assigning Not a Number to a quantity array.
Close #127
-rw-r--r-- | pint/quantity.py | 5 | ||||
-rw-r--r-- | pint/testsuite/test_issues.py | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/pint/quantity.py b/pint/quantity.py index 2170962..d1834e2 100644 --- a/pint/quantity.py +++ b/pint/quantity.py @@ -10,6 +10,7 @@ from __future__ import division, unicode_literals, print_function, absolute_import import copy +import math import operator import functools @@ -761,6 +762,10 @@ class _Quantity(object): def __setitem__(self, key, value): try: + if math.isnan(value): + self._magnitude[key] = value + return + if isinstance(value, self.__class__): factor = self.__class__(value.magnitude, value.units / self.units).to_base_units() else: diff --git a/pint/testsuite/test_issues.py b/pint/testsuite/test_issues.py index 4aeae91..958fc0e 100644 --- a/pint/testsuite/test_issues.py +++ b/pint/testsuite/test_issues.py @@ -2,6 +2,8 @@ from __future__ import division, unicode_literals, print_function, absolute_import +import math + from pint import UnitRegistry from pint.unit import UnitsContainer from pint.util import ParserHelper @@ -427,3 +429,12 @@ class TestIssuesNP(QuantityTestCase): self.assertTrue(False, "ValueError not raised") except ValueError: pass + + def test_issue127(self): + q = [1., 2., 3., 4.] * self.ureg.meter + q[0] = np.nan + self.assertNotEqual(q[0], 1.) + self.assertTrue(math.isnan(q[0].magnitude)) + q[1] = float('NaN') + self.assertNotEqual(q[1], 2.) + self.assertTrue(math.isnan(q[1].magnitude)) |