summaryrefslogtreecommitdiff
path: root/numpy/core
diff options
context:
space:
mode:
authorSebastian Berg <sebastian@sipsolutions.net>2020-12-04 11:39:04 -0600
committerGitHub <noreply@github.com>2020-12-04 11:39:04 -0600
commitb1862a3006a354be01b860a1a23f100e6401dd1e (patch)
tree5f810afab7f70927a9a1810fa88234ffbc660dc9 /numpy/core
parente538e11d2b0acd93f5ce74fb3c6a0e25a4aa3ef8 (diff)
parentb86408552e823a8d2cdc5db9c3a89560b3c462ab (diff)
downloadnumpy-b1862a3006a354be01b860a1a23f100e6401dd1e.tar.gz
Merge pull request #17878 from MaiaKaplan/arange_keyword
BUG: np.arange: Allow `stop` not `start` as sole kwargs.
Diffstat (limited to 'numpy/core')
-rw-r--r--numpy/core/src/multiarray/multiarraymodule.c14
-rw-r--r--numpy/core/tests/test_multiarray.py16
2 files changed, 29 insertions, 1 deletions
diff --git a/numpy/core/src/multiarray/multiarraymodule.c b/numpy/core/src/multiarray/multiarraymodule.c
index af5949e73..79956863a 100644
--- a/numpy/core/src/multiarray/multiarraymodule.c
+++ b/numpy/core/src/multiarray/multiarraymodule.c
@@ -2878,7 +2878,7 @@ array_arange(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kws) {
static char *kwd[] = {"start", "stop", "step", "dtype", "like", NULL};
PyArray_Descr *typecode = NULL;
- if (!PyArg_ParseTupleAndKeywords(args, kws, "O|OOO&$O:arange", kwd,
+ if (!PyArg_ParseTupleAndKeywords(args, kws, "|OOOO&$O:arange", kwd,
&o_start,
&o_stop,
&o_step,
@@ -2888,6 +2888,18 @@ array_arange(PyObject *NPY_UNUSED(ignored), PyObject *args, PyObject *kws) {
return NULL;
}
+ if (o_stop == NULL) {
+ if (args == NULL || PyTuple_GET_SIZE(args) == 0){
+ PyErr_SetString(PyExc_TypeError,
+ "arange() requires stop to be specified.");
+ return NULL;
+ }
+ }
+ else if (o_start == NULL) {
+ o_start = o_stop;
+ o_stop = NULL;
+ }
+
array_function_result = array_implement_c_array_function_creation(
"arange", args, kws);
if (array_function_result != Py_NotImplemented) {
diff --git a/numpy/core/tests/test_multiarray.py b/numpy/core/tests/test_multiarray.py
index bd8c51ab7..2df92ee65 100644
--- a/numpy/core/tests/test_multiarray.py
+++ b/numpy/core/tests/test_multiarray.py
@@ -8473,6 +8473,22 @@ class TestArange:
assert_raises(ZeroDivisionError, np.arange, 0, 0, 0)
assert_raises(ZeroDivisionError, np.arange, 0.0, 0.0, 0.0)
+ def test_require_range(self):
+ assert_raises(TypeError, np.arange)
+ assert_raises(TypeError, np.arange, step=3)
+ assert_raises(TypeError, np.arange, dtype='int64')
+ assert_raises(TypeError, np.arange, start=4)
+
+ def test_start_stop_kwarg(self):
+ keyword_stop = np.arange(stop=3)
+ keyword_zerotostop = np.arange(start=0, stop=3)
+ keyword_start_stop = np.arange(start=3, stop=9)
+
+ assert len(keyword_stop) == 3
+ assert len(keyword_zerotostop) == 3
+ assert len(keyword_start_stop) == 6
+ assert_array_equal(keyword_stop, keyword_zerotostop)
+
class TestArrayFinalize:
""" Tests __array_finalize__ """