diff options
author | Allan Haldane <allan.haldane@gmail.com> | 2016-10-12 19:47:16 -0400 |
---|---|---|
committer | Allan Haldane <allan.haldane@gmail.com> | 2016-10-13 18:55:43 -0400 |
commit | 1e8558138427aaf3ecb4714fc110e7d9791cb41c (patch) | |
tree | c8f3fa72896c4c6cd3effd0801132e6c050429ea /numpy/core | |
parent | b0a6e5583f2952a040c45d0d50f5e93372dc175b (diff) | |
download | numpy-1e8558138427aaf3ecb4714fc110e7d9791cb41c.tar.gz |
MAINT: Expose void-scalar "base" attribute in python
Diffstat (limited to 'numpy/core')
-rw-r--r-- | numpy/core/src/multiarray/scalartypes.c.src | 17 | ||||
-rw-r--r-- | numpy/core/tests/test_multiarray.py | 5 |
2 files changed, 22 insertions, 0 deletions
diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src index 19f2a6b03..87b3cde7a 100644 --- a/numpy/core/src/multiarray/scalartypes.c.src +++ b/numpy/core/src/multiarray/scalartypes.c.src @@ -1303,6 +1303,18 @@ gentype_base_get(PyObject *NPY_UNUSED(self)) Py_RETURN_NONE; } +static PyObject * +voidtype_base_get(PyVoidScalarObject *self) +{ + if (self->base == NULL) { + Py_RETURN_NONE; + } + else { + Py_INCREF(self->base); + return self->base; + } +} + static PyArray_Descr * _realdescr_fromcomplexscalar(PyObject *self, int *typenum) @@ -2099,6 +2111,11 @@ static PyGetSetDef voidtype_getsets[] = { (setter)0, "dtype object", NULL}, + {"base", + (getter)voidtype_base_get, + (setter)0, + "base object", + NULL}, {NULL, NULL, NULL, NULL, NULL} }; diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py index cdfe87579..7e3ffe28a 100644 --- a/numpy/core/tests/test_multiarray.py +++ b/numpy/core/tests/test_multiarray.py @@ -994,6 +994,11 @@ class TestStructured(TestCase): assert_equal(yy.itemsize, 0) assert_equal(xx, yy) + def test_base_attr(self): + a = np.zeros(3, dtype='i4,f4') + b = a[0] + assert_(b.base is a) + class TestBool(TestCase): def test_test_interning(self): |