[Numpy-discussion] f2py functions, docstrings, and epydoc
Thu Mar 27 16:09:58 CDT 2008
On Thu, March 27, 2008 7:20 pm, Tom Loredo wrote:
>> smll_offset = smll_offset
>> exec `smll_offset.__doc__`
> Thanks for the quick and helpful response! I'll give it
> a try. I don't grasp why it works, though. I suppose I don't
> need to, but... I'm guessing the exec adds stuff to the current
> namespace that isn't there until a fortran object's attributes
> are explicitly accessed.
> While I have your attention... could you clear this up, also just
> for my curiousity? It's probably related.
I got this idea from how epydoc gets documentation strings
according to the variable assignement must follow a string constant
In our case,
smll_offset = smll_offset
is variable assignment and
creates a string constant after the variable assingment.
>> f2py generated functions (that, by the way, are
>> actually instances of `fortran` type and define __call__ method).
> I had wondered about this when I first encountered this issue,
> and thought maybe I could figure out how to put some hook into
> epydoc so it would document anything with a __call__ method.
> But it looks like 'fortran' objects *don't* have a __call__
> (here _cbmlike is my f2py-generated module):
> In : from inference.count._cbmlike import smllike
> In : smllike
> Out: <fortran object at 0x947a668>
> In : dir smllike
> ------> dir(smllike)
> Out: ['__doc__', '_cpointer']
> In : smllike.__call__
> AttributeError Traceback (most recent call
> /home/inference/loredo/tex/meetings/head08/<ipython console> in <module>()
> AttributeError: __call__
> Yet despite this apparent absence of __call__, I can magically
> call smllike just fine. Would you provide a quick explanation of
> what f2py and the fortran object are doing here?
`fortran` object is an instance of a *extension type* `fortran`.
It does not have __call__ method, the extension type has a slot
in C struct that holds a function that will be called when
something tries to call the `fortran` object.
If there are epydoc developers around in this list then here's
a feature request: epydoc support for extension types.
More information about the Numpy-discussion