From cce455c2941384fa39e80c99a5ad9ed0f0483c0a Mon Sep 17 00:00:00 2001 From: Thor Whalen Date: Wed, 12 Jun 2024 10:33:31 +0200 Subject: [PATCH] fix: remove Store.__missing__ and change __getitem__ so it calls it only if it exists. To not obfuscate errors under KeyError. --- dol/base.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/dol/base.py b/dol/base.py index f50b5dbe..b851f78a 100644 --- a/dol/base.py +++ b/dol/base.py @@ -321,7 +321,8 @@ def __reduce__(self): for attr in attrs: wrapped_attr = getattr(wrapped, attr) delegated_attribute = update_wrapper( - wrapper=DelegatedAttribute(delegation_attr, attr), wrapped=wrapped_attr, + wrapper=DelegatedAttribute(delegation_attr, attr), + wrapped=wrapped_attr, ) setattr(Wrap, attr, delegated_attribute) @@ -610,13 +611,13 @@ def __getitem__(self, k: Key) -> Val: _id = self._id_of_key(k) try: data = self.store[_id] - except self._errors_that_trigger_missing: - data = self.__missing__(k) + except self._errors_that_trigger_missing as error: + if hasattr(self, '__missing__'): + data = self.__missing__(k) + else: + raise error return self._obj_of_data(data) - def __missing__(self, k): - raise KeyError(k) - def get(self, k: Key, default=None) -> Val: try: return self[k]