summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2020-08-21 17:03:59 -0500
committerSebastian Berg <sebastian@sipsolutions.net>2020-09-02 12:53:32 -0500
commitd9075b77586e0c7b536d5ec684bfd93c5bcd9439 (patch)
treeeee5c8441513bb00adc510c7587438f474e0247a
parent6b1c643d82e5cb39498f791c0dc5020890229f6e (diff)
downloadnumpy-d9075b77586e0c7b536d5ec684bfd93c5bcd9439.tar.gz
MAINT: Always define `default_descr()` and simplify code
-rw-r--r--numpy/core/src/multiarray/array_coercion.c12
-rw-r--r--numpy/core/src/multiarray/dtypemeta.c10
2 files changed, 13 insertions, 9 deletions
diff --git a/numpy/core/src/multiarray/array_coercion.c b/numpy/core/src/multiarray/array_coercion.c
index 4e2354991..4f8456fb9 100644
--- a/numpy/core/src/multiarray/array_coercion.c
+++ b/numpy/core/src/multiarray/array_coercion.c
@@ -1284,15 +1284,9 @@ PyArray_DiscoverDTypeAndShape(
* the correct default.
*/
if (fixed_DType != NULL) {
- if (fixed_DType->default_descr == NULL) {
- Py_INCREF(fixed_DType->singleton);
- *out_descr = fixed_DType->singleton;
- }
- else {
- *out_descr = fixed_DType->default_descr(fixed_DType);
- if (*out_descr == NULL) {
- goto fail;
- }
+ *out_descr = fixed_DType->default_descr(fixed_DType);
+ if (*out_descr == NULL) {
+ goto fail;
}
}
}
diff --git a/numpy/core/src/multiarray/dtypemeta.c b/numpy/core/src/multiarray/dtypemeta.c
index 3026e68e9..6e5bf840e 100644
--- a/numpy/core/src/multiarray/dtypemeta.c
+++ b/numpy/core/src/multiarray/dtypemeta.c
@@ -194,6 +194,14 @@ discover_datetime_and_timedelta_from_pyobject(
static PyArray_Descr *
+nonparametric_default_descr(PyArray_DTypeMeta *cls)
+{
+ Py_INCREF(cls->singleton);
+ return cls->singleton;
+}
+
+
+static PyArray_Descr *
flexible_default_descr(PyArray_DTypeMeta *cls)
{
PyArray_Descr *res = PyArray_DescrNewFromType(cls->type_num);
@@ -399,6 +407,8 @@ dtypemeta_wrap_legacy_descriptor(PyArray_Descr *descr)
dtype_class->kind = descr->kind;
/* Strings and voids have (strange) logic around scalars. */
+ dtype_class->default_descr = nonparametric_default_descr;
+
dtype_class->is_known_scalar_type = python_builtins_are_known_scalar_types;
if (PyTypeNum_ISDATETIME(descr->type_num)) {