diff --git a/importlib_metadata/_adapters.py b/importlib_metadata/_adapters.py index aa460d3e..c8576cd9 100644 --- a/importlib_metadata/_adapters.py +++ b/importlib_metadata/_adapters.py @@ -39,6 +39,20 @@ def __init__(self, *args, **kwargs): def __iter__(self): return super().__iter__() + def __getitem__(self, item): + """ + Prefer dict-like behavior for __getitem__ when keys are missing. + >>> msg = Message(email.message.Message()) + >>> msg['thing'] + Traceback (most recent call last): + ... + KeyError: 'thing' + """ + res = super().__getitem__(item) + if res is None: + raise KeyError(item) + return res + def _repair_headers(self): def redent(value): "Correct for RFC822 indentation" diff --git a/tests/test_api.py b/tests/test_api.py index a9c1f194..d3ae8144 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -141,7 +141,6 @@ def test_importlib_metadata_version(self): resolved = version('importlib-metadata') assert re.match(self.version_pattern, resolved) - @__import__('pytest').mark.xfail(reason="not implemented #371") def test_missing_key(self): """ Attempting to request missing metadata raises KeyError.