summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/ext/hybrid.py11
-rw-r--r--lib/sqlalchemy/orm/properties.py2
2 files changed, 8 insertions, 5 deletions
diff --git a/lib/sqlalchemy/ext/hybrid.py b/lib/sqlalchemy/ext/hybrid.py
index 609f5aa8e..e0b3dab48 100644
--- a/lib/sqlalchemy/ext/hybrid.py
+++ b/lib/sqlalchemy/ext/hybrid.py
@@ -90,7 +90,7 @@ class property_(object):
def __get__(self, instance, owner):
if instance is None:
- return util.update_wrapper(self.expr(owner), self)
+ return self.expr(owner)
else:
return self.fget(instance)
@@ -135,6 +135,9 @@ class Comparator(interfaces.PropComparator):
# interesting....
return self
-
-
- \ No newline at end of file
+
+def hybrid_and(self):
+ if isinstance(self, type):
+ return expression.and_
+ else:
+ return operator.and_
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py
index e6afe8d63..61b7f8c19 100644
--- a/lib/sqlalchemy/orm/properties.py
+++ b/lib/sqlalchemy/orm/properties.py
@@ -292,7 +292,7 @@ class DescriptorProperty(MapperProperty):
lambda: self._comparator_factory(mapper)
)
def get_comparator(owner):
- return proxy_attr
+ return util.update_wrapper(proxy_attr, descriptor)
descriptor.expr = get_comparator
descriptor.impl = _ProxyImpl(self.key)
mapper.class_manager.instrument_attribute(self.key, descriptor)