summaryrefslogtreecommitdiff
path: root/numpy/core/src/arrayobject.c
diff options
context:
space:
mode:
Diffstat (limited to 'numpy/core/src/arrayobject.c')
-rw-r--r--numpy/core/src/arrayobject.c21
1 files changed, 5 insertions, 16 deletions
diff --git a/numpy/core/src/arrayobject.c b/numpy/core/src/arrayobject.c
index 802cf64f1..c6041578d 100644
--- a/numpy/core/src/arrayobject.c
+++ b/numpy/core/src/arrayobject.c
@@ -1314,10 +1314,12 @@ PyArray_Scalar(void *data, PyArray_Descr *descr, PyObject *base)
int swap;
type_num = descr->type_num;
+ type = descr->typeobj;
if (type_num == PyArray_BOOL)
PyArrayScalar_RETURN_BOOL_FROM_LONG(*(Bool*)data);
- else if (type_num == PyArray_OBJECT || \
- ((type=descr->typeobj)==NULL)) {
+ else if (type_num == PyArray_OBJECT ||
+ (PyTypeNum_ISUSERDEF(type_num) &&
+ !(PyType_IsSubtype(type, &PyGenericArrType_Type)))) {
return descr->f->getitem(data, base);
}
itemsize = descr->elsize;
@@ -1540,8 +1542,7 @@ PyArray_TypeNumFromName(char *str)
for (i=0; i<NPY_NUMUSERTYPES; i++) {
descr = userdescrs[i];
- if (descr->typeobj &&
- strcmp(descr->typeobj->tp_name, str) == 0)
+ if (strcmp(descr->typeobj->tp_name, str) == 0)
return descr->type_num;
}
@@ -1588,12 +1589,10 @@ PyArray_RegisterDataType(PyArray_Descr *descr)
" is missing.");
return -1;
}
- /*
if (descr->typeobj == NULL) {
PyErr_SetString(PyExc_ValueError, "missing typeobject");
return -1;
}
- */
userdescrs = realloc(userdescrs,
(NPY_NUMUSERTYPES+1)*sizeof(void *));
if (userdescrs == NULL) {
@@ -10662,12 +10661,6 @@ arraydescr_typename_get(PyArray_Descr *self)
static int prefix_len=0;
if (PyTypeNum_ISUSERDEF(self->type_num)) {
- if (typeobj == NULL) {
- return PyString_FromFormat("%c%d (%d)",
- self->kind,
- self->elsize,
- self->type_num);
- }
s = strrchr(typeobj->tp_name, '.');
if (s == NULL) {
res = PyString_FromString(typeobj->tp_name);
@@ -10891,10 +10884,6 @@ arraydescr_reduce(PyArray_Descr *self, PyObject *args)
Py_DECREF(mod);
if (obj == NULL) {Py_DECREF(ret); return NULL;}
PyTuple_SET_ITEM(ret, 0, obj);
- if (self->typeobj == NULL) { /* Must handle this case in getitem */
- obj = self->f->getitem(NULL, NULL);
- if (obj == NULL) {Py_DECREF(ret); return NULL;}
- }
if (PyTypeNum_ISUSERDEF(self->type_num) || \
((self->type_num == PyArray_VOID && \
self->typeobj != &PyVoidArrType_Type))) {