diff options
author | Matti Picus <matti.picus@gmail.com> | 2023-03-26 08:44:02 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-26 08:44:02 +0300 |
commit | 1915e33df68ea3367fee8026f017178a3cf425c6 (patch) | |
tree | a8e1fac02e6a56cb1b5657c63d44912986243877 /numpy/lib/tests | |
parent | ad09c69fafe5d198fab979e66fe1c13f09ed347d (diff) | |
parent | 85a311a79089f72f1ab0dadc3ab8d5cefb799c48 (diff) | |
download | numpy-1915e33df68ea3367fee8026f017178a3cf425c6.tar.gz |
Merge pull request #23061 from MatteoRaso/vectorize
ENH: Enabled the use of numpy.vectorize as a decorator
Diffstat (limited to 'numpy/lib/tests')
-rw-r--r-- | numpy/lib/tests/test_function_base.py | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/numpy/lib/tests/test_function_base.py b/numpy/lib/tests/test_function_base.py index 3ec46735c..97ca13bfb 100644 --- a/numpy/lib/tests/test_function_base.py +++ b/numpy/lib/tests/test_function_base.py @@ -1787,6 +1787,61 @@ class TestVectorize: assert_equal(type(r), subclass) assert_equal(r, m * v) + def test_name(self): + #See gh-23021 + @np.vectorize + def f2(a, b): + return a + b + + assert f2.__name__ == 'f2' + + def test_decorator(self): + @vectorize + def addsubtract(a, b): + if a > b: + return a - b + else: + return a + b + + r = addsubtract([0, 3, 6, 9], [1, 3, 5, 7]) + assert_array_equal(r, [1, 6, 1, 2]) + + def test_docstring(self): + @vectorize + def f(x): + """Docstring""" + return x + + assert f.__doc__ == "Docstring" + + def test_signature_otypes_decorator(self): + @vectorize(signature='(n)->(n)', otypes=['float64']) + def f(x): + return x + + r = f([1, 2, 3]) + assert_equal(r.dtype, np.dtype('float64')) + assert_array_equal(r, [1, 2, 3]) + assert f.__name__ == 'f' + + def test_bad_input(self): + with assert_raises(TypeError): + A = np.vectorize(pyfunc = 3) + + def test_no_keywords(self): + with assert_raises(TypeError): + @np.vectorize("string") + def foo(): + return "bar" + + def test_positional_regression_9477(self): + # This supplies the first keyword argument as a positional, + # to ensure that they are still properly forwarded after the + # enhancement for #9477 + f = vectorize((lambda x: x), ['float64']) + r = f([2]) + assert_equal(r.dtype, np.dtype('float64')) + class TestLeaks: class A: |