summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Wieser <wieser.eric@gmail.com>2018-01-17 00:50:49 -0800
committerEric Wieser <wieser.eric@gmail.com>2018-01-17 01:02:40 -0800
commit669e87af8f2fdda9f17ad221a0e8cc1fd91c5a0e (patch)
treead25d03e63aadce0cc02cbc93951d32b34db1be4
parent5f01e54b20e38d483e8bab31bf5f953a860fe8d3 (diff)
downloadnumpy-669e87af8f2fdda9f17ad221a0e8cc1fd91c5a0e.tar.gz
MAINT: Remove repeated #ifdefs implementing `isinstance(x, basestring)` for field names
-rw-r--r--numpy/core/include/numpy/npy_3kcompat.h4
-rw-r--r--numpy/core/src/multiarray/descriptor.c30
-rw-r--r--numpy/core/src/multiarray/mapping.c12
-rw-r--r--numpy/core/src/multiarray/scalartypes.c.src6
4 files changed, 12 insertions, 40 deletions
diff --git a/numpy/core/include/numpy/npy_3kcompat.h b/numpy/core/include/numpy/npy_3kcompat.h
index c0aa1eb2e..56fbd99af 100644
--- a/numpy/core/include/numpy/npy_3kcompat.h
+++ b/numpy/core/include/numpy/npy_3kcompat.h
@@ -94,6 +94,8 @@ static NPY_INLINE int PyInt_Check(PyObject *op) {
#define PyUString_InternFromString PyUnicode_InternFromString
#define PyUString_Format PyUnicode_Format
+#define PyBaseString_Check(obj) (PyUnicode_Check(obj))
+
#else
#define PyBytes_Type PyString_Type
@@ -123,6 +125,8 @@ static NPY_INLINE int PyInt_Check(PyObject *op) {
#define PyUString_InternFromString PyString_InternFromString
#define PyUString_Format PyString_Format
+#define PyBaseString_Check(obj) (PyBytes_Check(obj) || PyUnicode_Check(obj))
+
#endif /* NPY_PY3K */
diff --git a/numpy/core/src/multiarray/descriptor.c b/numpy/core/src/multiarray/descriptor.c
index f6b29edfe..80161b71c 100644
--- a/numpy/core/src/multiarray/descriptor.c
+++ b/numpy/core/src/multiarray/descriptor.c
@@ -512,11 +512,7 @@ _convert_from_array_descr(PyObject *obj, int align)
}
if ((PyDict_GetItem(fields, name) != NULL)
|| (title
-#if defined(NPY_PY3K)
- && PyUString_Check(title)
-#else
- && (PyUString_Check(title) || PyUnicode_Check(title))
-#endif
+ && PyBaseString_Check(title)
&& (PyDict_GetItem(fields, title) != NULL))) {
#if defined(NPY_PY3K)
name = PyUnicode_AsUTF8String(name);
@@ -551,11 +547,7 @@ _convert_from_array_descr(PyObject *obj, int align)
Py_INCREF(title);
PyTuple_SET_ITEM(tup, 2, title);
PyDict_SetItem(fields, name, tup);
-#if defined(NPY_PY3K)
- if (PyUString_Check(title)) {
-#else
- if (PyUString_Check(title) || PyUnicode_Check(title)) {
-#endif
+ if (PyBaseString_Check(title)) {
if (PyDict_GetItem(fields, title) != NULL) {
PyErr_SetString(PyExc_ValueError,
"title already used as a name or title.");
@@ -1181,11 +1173,7 @@ _convert_from_dict(PyObject *obj, int align)
Py_DECREF(tup);
goto fail;
}
-#if defined(NPY_PY3K)
- if (!PyUString_Check(name)) {
-#else
- if (!(PyUString_Check(name) || PyUnicode_Check(name))) {
-#endif
+ if (!PyBaseString_Check(name)) {
PyErr_SetString(PyExc_ValueError,
"field names must be strings");
Py_DECREF(tup);
@@ -1202,11 +1190,7 @@ _convert_from_dict(PyObject *obj, int align)
PyDict_SetItem(fields, name, tup);
Py_DECREF(name);
if (len == 3) {
-#if defined(NPY_PY3K)
- if (PyUString_Check(title)) {
-#else
- if (PyUString_Check(title) || PyUnicode_Check(title)) {
-#endif
+ if (PyBaseString_Check(title)) {
if (PyDict_GetItem(fields, title) != NULL) {
PyErr_SetString(PyExc_ValueError,
"title already used as a name or title.");
@@ -3821,11 +3805,7 @@ descr_subscript(PyArray_Descr *self, PyObject *op)
return NULL;
}
-#if defined(NPY_PY3K)
- if (PyUString_Check(op)) {
-#else
- if (PyUString_Check(op) || PyUnicode_Check(op)) {
-#endif
+ if (PyBaseString_Check(op)) {
return _subscript_by_name(self, op);
}
else {
diff --git a/numpy/core/src/multiarray/mapping.c b/numpy/core/src/multiarray/mapping.c
index 18fa7b986..22186b639 100644
--- a/numpy/core/src/multiarray/mapping.c
+++ b/numpy/core/src/multiarray/mapping.c
@@ -1396,11 +1396,7 @@ _get_field_view(PyArrayObject *arr, PyObject *ind, PyArrayObject **view)
*view = NULL;
/* first check for a single field name */
-#if defined(NPY_PY3K)
- if (PyUnicode_Check(ind)) {
-#else
- if (PyString_Check(ind) || PyUnicode_Check(ind)) {
-#endif
+ if (PyBaseString_Check(ind)) {
PyObject *tup;
PyArray_Descr *fieldtype;
npy_intp offset;
@@ -1477,11 +1473,7 @@ _get_field_view(PyArrayObject *arr, PyObject *ind, PyArrayObject **view)
return -1;
}
-#if defined(NPY_PY3K)
- if (!PyUnicode_Check(name)) {
-#else
- if (!PyString_Check(name) && !PyUnicode_Check(name)) {
-#endif
+ if (!PyBaseString_Check(name)) {
Py_DECREF(name);
Py_DECREF(fields);
Py_DECREF(names);
diff --git a/numpy/core/src/multiarray/scalartypes.c.src b/numpy/core/src/multiarray/scalartypes.c.src
index f1329e066..9fc6e1792 100644
--- a/numpy/core/src/multiarray/scalartypes.c.src
+++ b/numpy/core/src/multiarray/scalartypes.c.src
@@ -2376,11 +2376,7 @@ voidtype_ass_subscript(PyVoidScalarObject *self, PyObject *ind, PyObject *val)
return -1;
}
-#if defined(NPY_PY3K)
- if (PyUString_Check(ind)) {
-#else
- if (PyBytes_Check(ind) || PyUnicode_Check(ind)) {
-#endif
+ if (PyBaseString_Check(ind)) {
/*
* Much like in voidtype_setfield, we cannot simply use ndarray's
* __setitem__ since assignment to void scalars should not broadcast