Le module inspect
de Python ne semble pas pouvoir inspecter les signatures de fonctions "intégrées", qui incluent des fonctions définies dans des modules d'extension C, comme celles définies par Cython. Est-il possible d'obtenir la signature d'une fonction Python que vous avez définie dans un tel module, et plus particulièrement dans Cython? Je cherche à être en mesure de trouver les arguments de mots clés disponibles.Comment introspecter une fonction définie dans un module d'extension Cython C
MWE:
# mwe.pyx
def example(a, b=None):
pass
et
import pyximport; pyximport.install()
import mwe
import inspect
inspect.signature(mwe.example)
rendements:
Traceback (most recent call last):
File "mwe_py.py", line 5, in <module>
inspect.signature(mwe.example)
File "/nix/store/134l79vxb91w8mhxxkj6kb5llf7dmwpm-python3-3.4.5/lib/python3.4/inspect.py", line 2063, in signature
return _signature_internal(obj)
File "/nix/store/134l79vxb91w8mhxxkj6kb5llf7dmwpm-python3-3.4.5/lib/python3.4/inspect.py", line 1965, in _signature_internal
skip_bound_arg=skip_bound_arg)
File "/nix/store/134l79vxb91w8mhxxkj6kb5llf7dmwpm-python3-3.4.5/lib/python3.4/inspect.py", line 1890, in _signature_from_builtin
raise ValueError("no signature found for builtin {!r}".format(func))
ValueError: no signature found for builtin <built-in function example>
En Python 3.4.5 et cython 0.24.1
Pourquoi cela ne serait-il pas possible? 'inspect.signature (all)' (par exemple pour extraire la signature de ['all'] (https://docs.python.org/library/functions.html#all)) fonctionne très bien' '. S'il vous plaît fournir un [mcve] afin que les réponses peuvent réellement vous montrer comment le faire dans * votre cas *. –
MSeifert
Copie possible de [Python inspect.getargspec avec fonction intégrée] (https://stackoverflow.com/questions/11343191/python-inspect-getargspec-with-built-in-function) – DavidW
Également pertinent: https: // stackoverflow.com/questions/1104823/python-c-extension-method-signatures-for-documentation – DavidW