Hi Michael, Do you want me to create a ticket on this issue so it does not get lost ?
Thanks, Christophe 2009/6/15 Christophe de VIENNE <cdevie...@gmail.com> > Hi, > > I tried the patch, but got the following error : > > /home/cdevienne/prog/sqlalchemy/lib/sqlalchemy/ext/declarative.pyc in > decorate(fn) > 645 """ > 646 def decorate(fn): > --> 647 return util.update_wrapper(_orm_synonym(name, > map_column=map_column, descriptor=fn), fn) > 648 return decorate > 649 > > /usr/lib/python2.5/functools.pyc in update_wrapper(wrapper, wrapped, > assigned, updated) > 31 """ > 32 for attr in assigned: > ---> 33 setattr(wrapper, attr, getattr(wrapped, attr)) > 34 for attr in updated: > 35 getattr(wrapper, attr).update(getattr(wrapped, attr, {})) > > AttributeError: 'property' object has no attribute '__module__' > > I think the problem is, in that case, that the decorator is applied on > property, not a function. > > I also tried to do the following : > > def decorate(fn): > w = _orm_synonym(name, map_column=map_column, descriptor=fn) > w.__doc__ = fn.__doc__ > return w > return decorate > > But in my documentation, I get "A combination of InsturmentedAttribute and > a regular descriptor.", which is the docstring of a Proxy class defined in > proxied_attribute_factory, in attributes.py. > > From what I could understand, at one moment the > attributes.register_descriptor function replace my property on the class, > and it is seems to be at that moment that the docstring is lost. I might be > completely wrong though, it is just a guess. > > Thanks, > > Chrisotphe > > 2009/6/12 Michael Bayer <mike...@zzzcomputing.com> > > >> try this patch: >> >> Index: lib/sqlalchemy/ext/declarative.py >> =================================================================== >> --- lib/sqlalchemy/ext/declarative.py (revision 6051) >> +++ lib/sqlalchemy/ext/declarative.py (working copy) >> @@ -639,8 +639,9 @@ >> prop = synonym('col', descriptor=property(_read_prop, _write_prop)) >> >> """ >> + >> def decorate(fn): >> - return _orm_synonym(name, map_column=map_column, descriptor=fn) >> + return util.update_wrapper(_orm_synonym(name, >> map_column=map_column, descriptor=fn), fn) >> return decorate >> >> def comparable_using(comparator_factory): >> @@ -661,7 +662,7 @@ >> >> """ >> def decorate(fn): >> - return comparable_property(comparator_factory, fn) >> + return >> util.update_wrapper(comparable_property(comparator_factory, fn), fn) >> return decorate >> >> def _declarative_constructor(self, **kwargs): >> >> >> >> Angri wrote: >> > >> > I think that patch which you would like to provide could add >> > functools.wraps decorator to the decorator defined in synonym_for(). >> > See http://docs.python.org/library/functools.html#functools.wraps >> > >> > -- >> > Anton Gritsay >> > http://angri.ru >> > >> > On 12 ÉÀÎ, 22:20, Christophe de VIENNE <cdevie...@gmail.com> wrote: >> >> Hi, >> >> >> >> I noticed that when I use the @synonym_for decorator, my function >> >> docstring >> >> get lost. >> >> >> >> I got lost in SA code around the attributes.register_descriptor >> >> function, >> >> which is one of the steps I guess the doc is not copied (along with the >> >> decorator function itself), and cannot propose a patch. >> >> >> >> I workaround the issue by doing the plain synonym declaration and using >> >> the >> >> sphinx specific docstrings for class attributes, but it would be really >> >> great if it could just work. >> >> >> >> And thanks for the awesome tool SqlAlchemy is : it is a constant source >> >> of >> >> amazement to me. >> >> >> >> Regards, >> >> >> >> Christophe >> > > >> > >> >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---