Skip to content

Commit fad8a23

Browse files
committed
MNT: refactor so PyArray_DiscoverDTypeFromScalarType returns NULL instead of Py_None
1 parent 36fa231 commit fad8a23

File tree

4 files changed

+15
-19
lines changed

4 files changed

+15
-19
lines changed

numpy/_core/src/multiarray/array_coercion.c

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -247,13 +247,17 @@ npy_discover_dtype_from_pytype(PyTypeObject *pytype)
247247
}
248248

249249
/*
250-
* Note: This function never fails, but will return `NULL` for unknown scalars
251-
* and `None` for known array-likes (e.g. tuple, list, ndarray).
250+
* Note: This function never fails, but will return `NULL` for unknown scalars or
251+
* known array-likes (e.g. tuple, list, ndarray).
252252
*/
253253
NPY_NO_EXPORT PyObject *
254254
PyArray_DiscoverDTypeFromScalarType(PyTypeObject *pytype)
255255
{
256-
return (PyObject *)npy_discover_dtype_from_pytype(pytype);
256+
PyObject *DType = (PyObject *)npy_discover_dtype_from_pytype(pytype);
257+
if (DType == NULL || DType == Py_None) {
258+
return NULL;
259+
}
260+
return DType;
257261
}
258262

259263

numpy/_core/src/multiarray/descriptor.c

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1557,14 +1557,6 @@ PyArray_GetDefaultDescr(PyArray_DTypeMeta *DType)
15571557
return NPY_DT_CALL_default_descr(DType);
15581558
}
15591559

1560-
NPY_NO_EXPORT PyArray_Descr *
1561-
default_descr_from_scalar_type(PyTypeObject *typ) {
1562-
PyObject *DType = PyArray_DiscoverDTypeFromScalarType(typ);
1563-
if (DType == NULL || DType == Py_None) {
1564-
return NULL;
1565-
}
1566-
return PyArray_GetDefaultDescr((PyArray_DTypeMeta *)DType);
1567-
}
15681560

15691561
/**
15701562
* Get a dtype instance from a python type
@@ -1609,9 +1601,9 @@ _convert_from_type(PyObject *obj) {
16091601
return PyArray_DescrFromType(NPY_OBJECT);
16101602
}
16111603
else {
1612-
PyArray_Descr *descr = default_descr_from_scalar_type(typ);
1613-
if (descr != NULL) {
1614-
return descr;
1604+
PyObject *DType = PyArray_DiscoverDTypeFromScalarType(typ);
1605+
if (DType != NULL) {
1606+
return PyArray_GetDefaultDescr((PyArray_DTypeMeta *)DType);
16151607
}
16161608
PyArray_Descr *ret = _try_convert_from_dtype_attr(obj);
16171609
if ((PyObject *)ret != Py_NotImplemented) {

numpy/_core/src/multiarray/descriptor.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,4 @@ arraydescr_field_subset_view(_PyArray_LegacyDescr *self, PyObject *ind);
6565

6666
extern NPY_NO_EXPORT char const *_datetime_strings[];
6767

68-
NPY_NO_EXPORT PyArray_Descr *
69-
default_descr_from_scalar_type(PyTypeObject *typ);
70-
7168
#endif /* NUMPY_CORE_SRC_MULTIARRAY_DESCRIPTOR_H_ */

numpy/_core/src/multiarray/scalarapi.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -391,9 +391,12 @@ PyArray_DescrFromTypeObject(PyObject *type)
391391
return (PyArray_Descr *)new;
392392
}
393393

394-
PyArray_Descr *default_descr = default_descr_from_scalar_type((PyTypeObject *)type);
394+
PyObject *DType = PyArray_DiscoverDTypeFromScalarType((PyTypeObject *)type);
395+
if (DType != NULL) {
396+
return PyArray_GetDefaultDescr((PyArray_DTypeMeta *)DType);
397+
}
395398

396-
return default_descr != NULL ? default_descr : _descr_from_subtype(type);
399+
return _descr_from_subtype(type);
397400
}
398401

399402

0 commit comments

Comments
 (0)