Hi,

I'm wondering about the purpose of this code in
inspect.Signature.from_function():

"""
    if not isinstance(func, types.FunctionType):
        raise TypeError('{!r} is not a Python function'.format(func))
"""

Is there any reason why this method would have to explicitly check the type
of its argument? Why can't it just accept any object that quacks like a
function?

The reason why I ran into this is that I was trying to implement PEP 362
for Cython functions (which are not of Python function type
types.FunctionType), and these two lines currently force me to copy the
entire method body over into my code, just to build a Signature object from
introspection. I find that a really bad design.

Could this check please be removed completely? Or at least be changed to
use isfunction() instead, so that it becomes a bit more easy to monkey
patch it? (which is hard enough to explain to users already, BTW)

Oh, and that's for 3.3.1, please.

Stefan

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to