Re: [Epydoc-devel] [C++-sig] Better introspection/apidoc extraction support?
Brought to you by:
edloper
From: Hans M. <me...@in...> - 2007-05-15 11:37:45
|
Hi! Am Montag, 14. Mai 2007 17:59:00 schrieb Ralf W. Grosse-Kunstleve: > I did the implementation of the "docstring_options" feature. I'm not aware > of plans to work on this, but I'm interested to at least learn what could > be done to better support epydoc. If it is not too time-consuming I'd be > willing to work on it a bit. Great! > > The epydoc developers would like to support boost::python function > > introspection. In boost 1.34.0, there is support for C++ signatures > > appended to the docstrings, but it would be better AFAICS if > > boost::python would additionally provide means for extracting the > > argument names and default values via ("half-private") attributes, > > similar to CPython. > > How exactly does this work? Are there web pages about this? Not that I know of. AFAICS, there is no public API for that (that's why I wrote "half-private"), but if you look at a functions func_code.co_XXX and func_defaults properties, you see that there is a lot of internal information available in CPython. Then, there is the inspect module (implemented in python), which uses the above internal stuff to offer a more convenient API. E.g. inspect.getargspec() uses func_code.co_varnames[:func_code.co_argcount] to query the argument names, func_code.co_flags to determine whether the function has *args or **kwargs parameters (4/8 bitflags), ... I would think that basically *any* API within boost::python functions would be OK, since there is no official way beyond inspect. (Of course, it would be best if the inspect module would become compatible with boost::python some day, so apidoc projects do not have to duplicate code..) -- Ciao, / / /--/ / / ANS |