-
-
Notifications
You must be signed in to change notification settings - Fork 11.3k
Description
Describe the issue:
While writing bindings for Numpy I discovered that functions in numpy.random
are
missing signatures (in the sense of inspect.signature
).
My use case: I am using function signatures to automatically generate Racket bindings for large parts of Numpy.
The following output were generated by the script signature-random.py
.
Functions where inspect.signature fails
Functions where inspect.signature works
__RandomState_ctor
Builtins (where inspect.signature fails)
beta
binomial
bytes
chisquare
choice
default_rng
dirichlet
exponential
f
gamma
geometric
get_state
gumbel
hypergeometric
laplace
logistic
lognormal
logseries
multinomial
multivariate_normal
negative_binomial
noncentral_chisquare
noncentral_f
normal
pareto
permutation
poisson
power
rand
randint
randn
random
random_integers
random_sample
ranf
rayleigh
sample
seed
set_state
shuffle
standard_cauchy
standard_exponential
standard_gamma
standard_normal
standard_t
triangular
uniform
vonmises
wald
weibull
zipf
Reproduce the code example:
import inspect
import numpy
###
### This script finds the functions in `numpy.random` that have no signatures.
###
# Attempt to get the signature for `f`.
# Return `False` when no signature is available.
def sign(f):
try:
return inspect.signature(f)
except:
return False
mod = numpy.random
print("Functions where inspect.signature fails")
print("---")
for x in dir(mod):
f = getattr(mod,x)
if inspect.isfunction(f):
if not sign(f):
print(x)
print("Functions where inspect.signature works")
print("---")
for x in dir(mod):
f = getattr(mod,x)
if inspect.isfunction(f):
if sign(f):
print(x)
print("")
print("Builtins (where inspect.signature fails)")
print("---")
for x in dir(mod):
f = getattr(mod,x)
if (not inspect.isfunction(f)) and inspect.isbuiltin(f):
if not sign(f):
print(x)
Error message:
No response
NumPy/Python version information:
import sys, numpy; print(numpy.version, sys.version)
1.22.4 3.10.4 (main, Apr 26 2022, 19:42:59) [Clang 13.1.6 (clang-1316.0.21.2)]