Signature 0.1

neelk at neelk neelk at neelk
Sat Jul 10 03:53:46 EDT 1999


Signature.py is a module that makes reflecting on the function call
signatures of callable objects a lot easier. A common question in
Python is "How do I ask the interpreter what arguments a function
takes?" and while the information is obviously available, I haven't
found any simple, high-level interfaces to it.

That's why I wrote Signature -- it's useful enough that it's made it
into my personal library of frequently-used utilities.

You can find it at:

  http://www.sff.net/people/neelk/free-software/Signature.py

Caveats/TODO:

o I don't know if it will work on JPython -- I exploited a lot of
  undocumented object attributes to figure out what the call signature
  is, and I have no idea if the same data is available there.

o I haven't figured out how to look into C builtins yet -- anyone
  who can teach me how to do this from within Python will earn my
  undying gratitude. :)

Example of use:

    >>> def foo(x, y, z=-1.0, *args, **kw):
    ...     return (x+y)**z
    ...
    >>> f = Signature(foo)

    >>> print 'ordinary arglist:', f.ordinary_args()
    ordinary arglist: ('x', 'y', 'z')

    >>> print 'special_args:', f.special_args()
    special_args: {'keyword': 'kw', 'positional': 'args'}

    >>> print 'full arglist:', f.full_arglist()
    full arglist: ['x', 'y', 'z', 'args', 'kw']

    >>> print 'defaults:', f.defaults()
    defaults: {'z': -1.0}

    >>> print 'signature:', str(f)
    signature: foo(x, y, z=-1.0, *args, **kw)


Neel

<P><A HREF="http://www.sff.net/people/neelk/free-software/Signature.py">
Signature 0.1</A> - for reflecting on the function call signatures of
callable objects.  (09-Jul-99)

-- 
----------- comp.lang.python.announce (moderated) ----------
Article Submission Address:  python-announce at python.org
Python Language Home Page:   http://www.python.org/
Python Quick Help Index:     http://www.python.org/Help.html
------------------------------------------------------------




More information about the Python-list mailing list