summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--numpy/lib/tests/test_type_check.py9
-rw-r--r--numpy/lib/type_check.py8
2 files changed, 12 insertions, 5 deletions
diff --git a/numpy/lib/tests/test_type_check.py b/numpy/lib/tests/test_type_check.py
index 93a4da97a..4523e3f24 100644
--- a/numpy/lib/tests/test_type_check.py
+++ b/numpy/lib/tests/test_type_check.py
@@ -183,6 +183,15 @@ class TestIscomplexobj(TestCase):
dummy = DummyPd()
assert_(iscomplexobj(dummy))
+ def test_custom_dtype_duck(self):
+ class MyArray(list):
+ @property
+ def dtype(self):
+ return complex
+
+ a = MyArray([1+0j, 2+0j, 3+0j])
+ assert_(iscomplexobj(a))
+
class TestIsrealobj(TestCase):
def test_basic(self):
diff --git a/numpy/lib/type_check.py b/numpy/lib/type_check.py
index 1658f160c..3bbee0258 100644
--- a/numpy/lib/type_check.py
+++ b/numpy/lib/type_check.py
@@ -268,12 +268,10 @@ def iscomplexobj(x):
"""
try:
dtype = x.dtype
+ type_ = dtype.type
except AttributeError:
- dtype = asarray(x).dtype
- try:
- return issubclass(dtype.type, _nx.complexfloating)
- except AttributeError:
- return False
+ type_ = asarray(x).dtype.type
+ return issubclass(type_, _nx.complexfloating)
def isrealobj(x):