Stefan Behnel, 31.01.2014 21:01:
> Yury Selivanov just committed a revised version of a patch I wrote for
> CPython's inspect module last year. It now accepts Cython's function type
> as Python function, based on the function-like attributes that it exports.
> 
> http://hg.python.org/cpython/rev/32a660a52aae
> 
> That means that things like inspect.signature(cyfunction) will also work
> now, and finally have a reason to be further improved, including parameter
> introspection, annotations, etc. :)

Sorry, huge correction: inspect.isfunction(cyfunction) still returns False.
Only introspection and signature analysis in the inspect module were
changed. I got it wrong because I had code in my usersitecustomize.py that
monkey patches inspect.isfunction(), and had completely forgotten about it.

Looking through this a bit more, I noticed that CyFunction inherits from
PyCFunction, but doesn't actually tell CPython that it does. If I add this
line to __Pyx_CyFunction_init(), before the PyType_Ready() call:

    __pyx_CyFunctionType_type.tp_base = &PyCFunction_Type;

it still works as expected, but inspect.isbuiltin() now returns True (as
expected). Does anyone see a reason why we should not be doing this?

Stefan

_______________________________________________
cython-devel mailing list
cython-devel@python.org
https://mail.python.org/mailman/listinfo/cython-devel

Reply via email to