From df1a80f04af30b51806678753a938cf1cb8c3a7b Mon Sep 17 00:00:00 2001 From: t4m4k0ty4 Date: Sat, 12 Jul 2025 10:52:06 +0300 Subject: [PATCH] fix: enhance missing methods to handle missing keys more explicitly in DictSub and UserDictSub classes --- 03-dict-set/missing.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/03-dict-set/missing.py b/03-dict-set/missing.py index 609d39e..95ec295 100644 --- a/03-dict-set/missing.py +++ b/03-dict-set/missing.py @@ -60,8 +60,7 @@ """ -from collections import UserDict -from collections import abc +from collections import UserDict, abc def _upper(x): @@ -73,12 +72,16 @@ def _upper(x): class DictSub(dict): def __missing__(self, key): - return self[_upper(key)] + if _upper(key) in self: + return self[_upper(key)] + raise KeyError(key) class UserDictSub(UserDict): def __missing__(self, key): - return self[_upper(key)] + if _upper(key) in self: + return self[_upper(key)] + raise KeyError(key) class SimpleMappingSub(abc.Mapping): @@ -105,7 +108,9 @@ def __getitem__(self, key): try: return self._data[key] except KeyError: - return self[_upper(key)] + if _upper(key) in self._data: + return self[_upper(key)] + raise KeyError(key) class DictLikeMappingSub(SimpleMappingSub): @@ -113,7 +118,9 @@ def __getitem__(self, key): try: return self._data[key] except KeyError: - return self[_upper(key)] + if _upper(key) in self: + return self[_upper(key)] + raise KeyError(key) def get(self, key, default=None): return self._data.get(key, default)