summaryrefslogtreecommitdiff
path: root/numpy/array_api/_array_object.py
diff options
context:
space:
mode:
authorWarren Weckesser <warren.weckesser@gmail.com>2020-04-30 22:29:18 -0400
committerWarren Weckesser <warren.weckesser@gmail.com>2020-04-30 22:29:18 -0400
commit684e4a92d5f8a9b8744ea7f994d636e7483e530f (patch)
treeeb8b4aab3df8118ecaae5c74d954378c1c9c60b4 /numpy/array_api/_array_object.py
parent6f8d7fd467b69229c0a7ed3662966573e8b3d85c (diff)
downloadnumpy-684e4a92d5f8a9b8744ea7f994d636e7483e530f.tar.gz
BUG: lib: Fix a problem with vectorize with default parameters.
When `otypes` is given to `vectorize` and then the instance is called, it creates a ufunc by calling numpy.core.umath.frompyfunc. The number of arguments given to this ufunc is set to the number of arguments in the call of the vectorize instance. This ufunc is cached, so frompyfunc does not have to be called on the next call. The problem is that, if the function being wrapped has parameters with default values, the number of arguments passed to the vectorize instance can change, and when that happens, a new ufunc must be created by calling frompyfunc with the correct number of arguments. This commit changes the cache of the ufunc from a simple attribute that holds the most recent ufunc to a dictionary whose keys are the number of arguments in the call. The cache is only used when the vectorized function is called with only positional arguments and there are no excluded arguments. If keywords are used, the number of arguments is no longer sufficient to uniquely identify a previously created ufunc. Closes gh-16120.
Diffstat (limited to 'numpy/array_api/_array_object.py')
0 files changed, 0 insertions, 0 deletions