Skip to content

Commit 4e88577

Browse files
authored
BENCH: Missing ufunc in benchmarks (numpy#26841)
* BENCH: ufunc account for alias and missing unfunc benchmarks now raise an exception
1 parent dad2629 commit 4e88577

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

benchmarks/benchmarks/bench_ufunc.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,23 @@
2121
'power', 'rad2deg', 'radians', 'reciprocal', 'remainder',
2222
'right_shift', 'rint', 'sign', 'signbit', 'sin',
2323
'sinh', 'spacing', 'sqrt', 'square', 'subtract', 'tan', 'tanh',
24-
'true_divide', 'trunc']
24+
'true_divide', 'trunc', 'vecdot']
2525
arrayfuncdisp = ['real', 'round']
2626

27+
for name in ufuncs:
28+
f = getattr(np, name, None)
29+
if not isinstance(f, np.ufunc):
30+
raise ValueError(f"Bench target `np.{name}` is not a ufunc")
2731

28-
for name in dir(np):
29-
if isinstance(getattr(np, name, None), np.ufunc) and name not in ufuncs:
30-
print("Missing ufunc %r" % (name,))
32+
all_ufuncs = (getattr(np, name, None) for name in dir(np))
33+
all_ufuncs = set(filter(lambda f: isinstance(f, np.ufunc), all_ufuncs))
34+
bench_ufuncs = set((getattr(np, name, None) for name in ufuncs))
35+
36+
missing_ufuncs = all_ufuncs - bench_ufuncs
37+
if len(missing_ufuncs) > 0:
38+
missing_ufunc_names = [f.__name__ for f in missing_ufuncs]
39+
raise NotImplementedError(
40+
"Missing benchmarks for ufuncs %r" % missing_ufunc_names)
3141

3242

3343
class ArrayFunctionDispatcher(Benchmark):

0 commit comments

Comments
 (0)