Skip to content

Commit 4df89f1

Browse files
authored
Merge pull request #444 from dimbleby/metadata-get
add .get() to the PackageMetadata protocol Fixes #384.
2 parents 700f2c7 + 15fffb8 commit 4df89f1

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

CHANGES.rst

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
v6.2.0
2+
======
3+
4+
* #384: ``PackageMetadata`` now stipulates an additional ``get``
5+
method allowing for easy querying of metadata keys that may not
6+
be present.
7+
18
v6.1.0
29
======
310

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)