[Python-Dev] (no subject)

Phillip J. Eby pje at telecommunity.com
Mon Mar 14 17:13:04 CET 2005


At 04:35 PM 3/14/05 +0100, Thomas Heller wrote:
>Another possibility (ugly, maybe) would be to create sourcecode with the
>function signature that you need, and compile it. inspect.getargspec() and
>inspect.formatargspec can do most of the work.

I've done exactly that, for generic functions in PyProtocols.  It's *very* 
ugly, and not something I'd wish on anyone needing to write a 
decorator.  IMO, inspect.getargspec() shouldn't need to be so complicated; 
it should just return an object's __signature__ in future Pythons.

Also, the 'object' type should have a __signature__ descriptor that returns 
the __signature__ of __call__, if present.  And types should have a 
__signature__ that returns the __init__ or __new__ signature of the 
type.  Finally, C methods should have a way to define a __signature__ as well.

At that point, any callable object has an introspectable __signature__, 
which would avoid the need for every introspection framework or 
documentation tool having to rewrite the same old type dispatching code to 
check if it's an instancemethod, an instance with a __call__, a type, etc. 
etc. in order to find the real function and how to modify what getargspec() 
returns.



More information about the Python-Dev mailing list