diff options
Diffstat (limited to 'lib/sqlalchemy/ext/indexable.py')
-rw-r--r-- | lib/sqlalchemy/ext/indexable.py | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/sqlalchemy/ext/indexable.py b/lib/sqlalchemy/ext/indexable.py index f2e0501bb..6eb7e1185 100644 --- a/lib/sqlalchemy/ext/indexable.py +++ b/lib/sqlalchemy/ext/indexable.py @@ -223,7 +223,8 @@ The above query will render:: """ # noqa from __future__ import absolute_import -from sqlalchemy import inspect +from .. import inspect +from .. import util from ..ext.hybrid import hybrid_property from ..orm.attributes import flag_modified @@ -301,9 +302,9 @@ class index_property(hybrid_property): # noqa self.datatype = dict self.onebased = onebased - def _fget_default(self): + def _fget_default(self, err=None): if self.default == self._NO_DEFAULT_ARGUMENT: - raise AttributeError(self.attr_name) + util.raise_(AttributeError(self.attr_name), replace_context=err) else: return self.default @@ -314,8 +315,8 @@ class index_property(hybrid_property): # noqa return self._fget_default() try: value = column_value[self.index] - except (KeyError, IndexError): - return self._fget_default() + except (KeyError, IndexError) as err: + return self._fget_default(err) else: return value @@ -337,8 +338,8 @@ class index_property(hybrid_property): # noqa raise AttributeError(self.attr_name) try: del column_value[self.index] - except KeyError: - raise AttributeError(self.attr_name) + except KeyError as err: + util.raise_(AttributeError(self.attr_name), replace_context=err) else: setattr(instance, attr_name, column_value) flag_modified(instance, attr_name) |