On 28 July 2010 21:20, Johan Hake <[email protected]> wrote: > [snip] > >> > How would you do that? I tried >> > >> > %extend dolfin::GenericVector >> > { >> > %pythoncode >> > %{ >> > def data(self): >> > generated_docstring_module.GenericVector.data.__doc__ >> > return self._data() >> > %} >> > } >> > >> > But it was only possible to have a "real" string, not a variable that was >> > a str. Not sure why... >> >> Me neither, what I thought about doing was to generate the contents of >> the *_post.i files from some source and then insert the docstring as a >> literal string in the *_post.i file. But I decided that was too much >> work. >> >> So what I will end up doing is to assign to the __doc__ members of >> these functions in the dolfin/__init__.py (on import). This is >> possible because Swig doesn't mess around with these functions but >> just adds them to the module. If the *_post.i contains other than >> simple functions/member functions we'll have to generate the *_post.i >> files from some source. > > Would this work? I tried: > > class A(object): > def jada(self):pass > > A.jada.__doc__ = "jada" > > but I got > > attribute '__doc__' of 'instancemethod' objects is not writable
Yes, the trick is to do: A.__dict__["jada"].__doc__ = "jada" So we just loop all classes in cpp and their dicts and try to assign to __doc__, if we can't we'll assume that it is handled by the docstrings.i. All other classes and functions in our Python layer have correct docstrings by construction. > I am still on vacation, which mean that I have been away from coding a bit so > my Python is a bit rusty ;) You're not much help then are you? ;) Enjoy whatever remains of you holiday, looking forward to seeing you back, more frequently, on the list. Kristian > Johan > _______________________________________________ Mailing list: https://launchpad.net/~fenics Post to : [email protected] Unsubscribe : https://launchpad.net/~fenics More help : https://help.launchpad.net/ListHelp

