summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/ext/declarative/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy/ext/declarative/api.py')
-rw-r--r--lib/sqlalchemy/ext/declarative/api.py15
1 files changed, 6 insertions, 9 deletions
diff --git a/lib/sqlalchemy/ext/declarative/api.py b/lib/sqlalchemy/ext/declarative/api.py
index 048533b92..713ea0aba 100644
--- a/lib/sqlalchemy/ext/declarative/api.py
+++ b/lib/sqlalchemy/ext/declarative/api.py
@@ -175,15 +175,12 @@ class declared_attr(interfaces._MappedAttribute, property):
"non-mapped class %s" %
(desc.fget.__name__, cls.__name__))
return desc.fget(cls)
- try:
- reg = manager.info['declared_attr_reg']
- except KeyError:
- raise exc.InvalidRequestError(
- "@declared_attr called outside of the "
- "declarative mapping process; is declarative_base() being "
- "used correctly?")
-
- if desc in reg:
+
+ reg = manager.info.get('declared_attr_reg', None)
+
+ if reg is None:
+ return desc.fget(cls)
+ elif desc in reg:
return reg[desc]
else:
reg[desc] = obj = desc.fget(cls)