[sqlalchemy] Re: @synonym_for lose the docstrings

2009-06-25 Thread Christophe de VIENNE
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
-~--~~~~--~~--~--~---



[sqlalchemy] Re: @synonym_for lose the docstrings

2009-06-15 Thread Christophe de VIENNE
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
-~--~~~~--~~--~--~---



[sqlalchemy] Re: @synonym_for lose the docstrings

2009-06-12 Thread Angri

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
-~--~~~~--~~--~--~---



[sqlalchemy] Re: @synonym_for lose the docstrings

2009-06-12 Thread Michael Bayer

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
-~--~~~~--~~--~--~---