diff options
author | Sebastian Berg <sebastian@sipsolutions.net> | 2020-12-04 11:39:04 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-12-04 11:39:04 -0600 |
commit | b1862a3006a354be01b860a1a23f100e6401dd1e (patch) | |
tree | 5f810afab7f70927a9a1810fa88234ffbc660dc9 /numpy/core | |
parent | e538e11d2b0acd93f5ce74fb3c6a0e25a4aa3ef8 (diff) | |
parent | b86408552e823a8d2cdc5db9c3a89560b3c462ab (diff) | |
download | numpy-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.c | 14 | ||||
-rw-r--r-- | numpy/core/tests/test_multiarray.py | 16 |
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__ """ |