[Python-Dev] Why does Signature.from_function() have to check the type of its argument?
Stefan Behnel
stefan_ml at behnel.de
Fri Feb 8 15:09:07 CET 2013
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
More information about the Python-Dev
mailing list