Skip to content

Commit 73c1385

Browse files
committed
add .get() to the PackageMetadata protocol
1 parent 700f2c7 commit 73c1385

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

importlib_metadata/_meta.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ def __getitem__(self, key: str) -> str:
1818
def __iter__(self) -> Iterator[str]:
1919
... # pragma: no cover
2020

21+
@overload
22+
def get(self, name: str, failobj: None = None) -> Optional[str]:
23+
... # pragma: no cover
24+
25+
@overload
26+
def get(self, name: str, failobj: _T) -> Union[str, _T]:
27+
... # pragma: no cover
28+
2129
# overload per python/importlib_metadata#435
2230
@overload
2331
def get_all(self, name: str, failobj: None = None) -> Optional[List[Any]]:

tests/test_api.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,20 @@ def test_missing_key_legacy(self):
148148
with suppress_known_deprecation():
149149
assert md['does-not-exist'] is None
150150

151+
def test_get_key(self):
152+
"""
153+
Getting a key gets the key.
154+
"""
155+
md = metadata('egginfo-pkg')
156+
assert md.get('Name') == 'egginfo-pkg'
157+
158+
def test_get_missing_key(self):
159+
"""
160+
Requesting a missing key will return None.
161+
"""
162+
md = metadata('distinfo-pkg')
163+
assert md.get('does-not-exist') is None
164+
151165
@staticmethod
152166
def _test_files(files):
153167
root = files[0].root

0 commit comments

Comments
 (0)