summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHernan Grecco <hernan.grecco@gmail.com>2014-05-09 18:01:21 -0300
committerHernan Grecco <hernan.grecco@gmail.com>2014-05-09 18:01:21 -0300
commita19359b8d147269dad7b5621f052643a5796b9c6 (patch)
treebc92779bc50541b78b08f23a5f6474726b55e894
parent78a5e2b09c84298230330d51bc9c5c465cee6bcf (diff)
downloadpint-a19359b8d147269dad7b5621f052643a5796b9c6.tar.gz
Allow assigning Not a Number to a quantity array.
Close #127
-rw-r--r--pint/quantity.py5
-rw-r--r--pint/testsuite/test_issues.py11
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))