diff options
-rw-r--r-- | numpy/core/src/multiarray/array_coercion.c | 12 | ||||
-rw-r--r-- | numpy/core/src/multiarray/dtypemeta.c | 10 |
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)) { |