Skip to content

Commit

Permalink
Merge pull request #444 from dimbleby/metadata-get
Browse files Browse the repository at this point in the history
add .get() to the PackageMetadata protocol

Fixes #384.
  • Loading branch information
jaraco authored Apr 7, 2023
2 parents 700f2c7 + 15fffb8 commit 4df89f1
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 0 deletions.
7 changes: 7 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
v6.2.0
======

* #384: ``PackageMetadata`` now stipulates an additional ``get``
method allowing for easy querying of metadata keys that may not
be present.

v6.1.0
======

Expand Down
8 changes: 8 additions & 0 deletions importlib_metadata/_meta.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,14 @@ def __getitem__(self, key: str) -> str:
def __iter__(self) -> Iterator[str]:
... # pragma: no cover

@overload
def get(self, name: str, failobj: None = None) -> Optional[str]:
... # pragma: no cover

@overload
def get(self, name: str, failobj: _T) -> Union[str, _T]:
... # pragma: no cover

# overload per python/importlib_metadata#435
@overload
def get_all(self, name: str, failobj: None = None) -> Optional[List[Any]]:
Expand Down
14 changes: 14 additions & 0 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -148,6 +148,20 @@ def test_missing_key_legacy(self):
with suppress_known_deprecation():
assert md['does-not-exist'] is None

def test_get_key(self):
"""
Getting a key gets the key.
"""
md = metadata('egginfo-pkg')
assert md.get('Name') == 'egginfo-pkg'

def test_get_missing_key(self):
"""
Requesting a missing key will return None.
"""
md = metadata('distinfo-pkg')
assert md.get('does-not-exist') is None

@staticmethod
def _test_files(files):
root = files[0].root
Expand Down

0 comments on commit 4df89f1

Please sign in to comment.