diff options
| author | Jordy Williams <43758351+jordyjwilliams@users.noreply.github.com> | 2022-10-11 22:40:27 +1100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-10-11 13:40:27 +0200 |
| commit | 4d19f55dd94eb16e02a605ce963d02c51411057d (patch) | |
| tree | 86621f53005dad9ba3769229e0bb596ec9ddb665 /numpy/core/src/multiarray | |
| parent | 1ed87fa09d5a5887e2ef47b31e6fe2fefff9882a (diff) | |
| download | numpy-4d19f55dd94eb16e02a605ce963d02c51411057d.tar.gz | |
ENH: allow explicit `like=None` in all array creation functions (#22379)
Addresses #22069. As discussed in the existing issue @seberg stated that it would be best to support explicitly defined like=None when creating arange objects.
Extended to all other array_creation methods which did not currently support like=None.
Closes gh-22069
Diffstat (limited to 'numpy/core/src/multiarray')
| -rw-r--r-- | numpy/core/src/multiarray/arrayfunction_override.c | 4 | ||||
| -rw-r--r-- | numpy/core/src/multiarray/multiarraymodule.c | 48 |
2 files changed, 26 insertions, 26 deletions
diff --git a/numpy/core/src/multiarray/arrayfunction_override.c b/numpy/core/src/multiarray/arrayfunction_override.c index af53d7821..2bb3fbe28 100644 --- a/numpy/core/src/multiarray/arrayfunction_override.c +++ b/numpy/core/src/multiarray/arrayfunction_override.c @@ -63,7 +63,7 @@ pyobject_array_insert(PyObject **array, int length, int index, PyObject *item) * Collects arguments with __array_function__ and their corresponding methods * in the order in which they should be tried (i.e., skipping redundant types). * `relevant_args` is expected to have been produced by PySequence_Fast. - * Returns the number of arguments, or -1 on failure. + * Returns the number of arguments, or -1 on failure. */ static int get_implementing_args_and_methods(PyObject *relevant_args, @@ -384,7 +384,7 @@ array_implement_array_function( * only. Added as an extension to NEP-18 in an effort to bring NEP-35 to * life with minimal dispatch overhead. * - * The caller must ensure that `like != NULL`. + * The caller must ensure that `like != Py_None` or `like == NULL`. */ NPY_NO_EXPORT PyObject * array_implement_c_array_function_creation( diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c index a5b66f5a8..dda8831c5 100644 --- a/numpy/core/src/multiarray/multiarraymodule.c +++ b/numpy/core/src/multiarray/multiarraymodule.c @@ -1734,7 +1734,7 @@ array_array(PyObject *NPY_UNUSED(ignored), int ndmin = 0; PyArray_Descr *type = NULL; NPY_ORDER order = NPY_KEEPORDER; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (len_args != 1 || (kwnames != NULL)) { @@ -1750,7 +1750,7 @@ array_array(PyObject *NPY_UNUSED(ignored), Py_XDECREF(type); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "array", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -1777,7 +1777,7 @@ array_asarray(PyObject *NPY_UNUSED(ignored), PyObject *op; PyArray_Descr *type = NULL; NPY_ORDER order = NPY_KEEPORDER; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (len_args != 1 || (kwnames != NULL)) { @@ -1790,7 +1790,7 @@ array_asarray(PyObject *NPY_UNUSED(ignored), Py_XDECREF(type); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "asarray", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -1816,7 +1816,7 @@ array_asanyarray(PyObject *NPY_UNUSED(ignored), PyObject *op; PyArray_Descr *type = NULL; NPY_ORDER order = NPY_KEEPORDER; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (len_args != 1 || (kwnames != NULL)) { @@ -1829,7 +1829,7 @@ array_asanyarray(PyObject *NPY_UNUSED(ignored), Py_XDECREF(type); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "asanyarray", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -1855,7 +1855,7 @@ array_ascontiguousarray(PyObject *NPY_UNUSED(ignored), { PyObject *op; PyArray_Descr *type = NULL; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (len_args != 1 || (kwnames != NULL)) { @@ -1867,7 +1867,7 @@ array_ascontiguousarray(PyObject *NPY_UNUSED(ignored), Py_XDECREF(type); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "ascontiguousarray", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -1893,7 +1893,7 @@ array_asfortranarray(PyObject *NPY_UNUSED(ignored), { PyObject *op; PyArray_Descr *type = NULL; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (len_args != 1 || (kwnames != NULL)) { @@ -1905,7 +1905,7 @@ array_asfortranarray(PyObject *NPY_UNUSED(ignored), Py_XDECREF(type); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "asfortranarray", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -1978,7 +1978,7 @@ array_empty(PyObject *NPY_UNUSED(ignored), NPY_ORDER order = NPY_CORDER; npy_bool is_f_order; PyArrayObject *ret = NULL; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (npy_parse_arguments("empty", args, len_args, kwnames, @@ -1990,7 +1990,7 @@ array_empty(PyObject *NPY_UNUSED(ignored), goto fail; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "empty", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -2180,7 +2180,7 @@ array_zeros(PyObject *NPY_UNUSED(ignored), NPY_ORDER order = NPY_CORDER; npy_bool is_f_order = NPY_FALSE; PyArrayObject *ret = NULL; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (npy_parse_arguments("zeros", args, len_args, kwnames, @@ -2193,7 +2193,7 @@ array_zeros(PyObject *NPY_UNUSED(ignored), } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "zeros", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { @@ -2256,7 +2256,7 @@ array_fromstring(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds char *sep = NULL; Py_ssize_t s; static char *kwlist[] = {"string", "dtype", "count", "sep", "like", NULL}; - PyObject *like = NULL; + PyObject *like = Py_None; PyArray_Descr *descr = NULL; if (!PyArg_ParseTupleAndKeywords(args, keywds, @@ -2265,7 +2265,7 @@ array_fromstring(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds Py_XDECREF(descr); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "fromstring", like, args, keywds, NULL, 0, NULL); if (deferred != Py_NotImplemented) { @@ -2297,7 +2297,7 @@ array_fromfile(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds) char *sep = ""; Py_ssize_t nin = -1; static char *kwlist[] = {"file", "dtype", "count", "sep", "offset", "like", NULL}; - PyObject *like = NULL; + PyObject *like = Py_None; PyArray_Descr *type = NULL; int own; npy_off_t orig_pos = 0, offset = 0; @@ -2310,7 +2310,7 @@ array_fromfile(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds) return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "fromfile", like, args, keywds, NULL, 0, NULL); if (deferred != Py_NotImplemented) { @@ -2387,7 +2387,7 @@ array_fromiter(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds) PyObject *iter; Py_ssize_t nin = -1; static char *kwlist[] = {"iter", "dtype", "count", "like", NULL}; - PyObject *like = NULL; + PyObject *like = Py_None; PyArray_Descr *descr = NULL; if (!PyArg_ParseTupleAndKeywords(args, keywds, @@ -2396,7 +2396,7 @@ array_fromiter(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds) Py_XDECREF(descr); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "fromiter", like, args, keywds, NULL, 0, NULL); if (deferred != Py_NotImplemented) { @@ -2414,7 +2414,7 @@ array_frombuffer(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds PyObject *obj = NULL; Py_ssize_t nin = -1, offset = 0; static char *kwlist[] = {"buffer", "dtype", "count", "offset", "like", NULL}; - PyObject *like = NULL; + PyObject *like = Py_None; PyArray_Descr *type = NULL; if (!PyArg_ParseTupleAndKeywords(args, keywds, @@ -2424,7 +2424,7 @@ array_frombuffer(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *keywds return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "frombuffer", like, args, keywds, NULL, 0, NULL); if (deferred != Py_NotImplemented) { @@ -3043,7 +3043,7 @@ array_arange(PyObject *NPY_UNUSED(ignored), { PyObject *o_start = NULL, *o_stop = NULL, *o_step = NULL, *range=NULL; PyArray_Descr *typecode = NULL; - PyObject *like = NULL; + PyObject *like = Py_None; NPY_PREPARE_ARGPARSER; if (npy_parse_arguments("arange", args, len_args, kwnames, @@ -3056,7 +3056,7 @@ array_arange(PyObject *NPY_UNUSED(ignored), Py_XDECREF(typecode); return NULL; } - if (like != NULL) { + if (like != Py_None) { PyObject *deferred = array_implement_c_array_function_creation( "arange", like, NULL, NULL, args, len_args, kwnames); if (deferred != Py_NotImplemented) { |
