10000 When requesting an item from metadata, if it's not present, raise a K… · python/importlib_metadata@a7eb4ba · GitHub
[go: up one dir, main page]

Skip to content

Commit a7eb4ba

Browse files
committed
When requesting an item from metadata, if it's not present, raise a KeyError. Fixes #371.
1 parent 51c0c85 commit a7eb4ba

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

importlib_metadata/_adapters.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,20 @@ def __init__(self, *args, **kwargs):
3939
def __iter__(self):
4040
return super().__iter__()
4141

42+
def __getitem__(self, item):
43+
"""
44+
Prefer dict-like behavior for __getitem__ when keys are missing.
45+
>>> msg = Message(email.message.Message())
46+
>>> msg['thing']
47+
Traceback (most recent call last):
48+
...
49+
KeyError: 'thing'
50+
"""
51+
res = super().__getitem__(item)
52+
if res is None:
53+
raise KeyError(item)
54+
return res
55+
4256
def _repair_headers(self):
4357
def redent(value):
4458
"Correct for RFC822 indentation"

tests/test_api.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,6 @@ def test_importlib_metadata_version(self):
141141
resolved = version('importlib-metadata')
142142
assert re.match(self.version_pattern, resolved)
143143

144-
@__import__('pytest').mark.xfail(reason="not implemented #371")
145144
def test_missing_key(self):
146145
"""
147146
Attempting to request missing metadata raises KeyError.

0 commit comments

Comments
 (0)
0