From 56aad0ffe7f2e72500cc45f7e4ba6bee014364bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Filipe=20La=C3=ADns?= Date: Fri, 10 Mar 2023 02:56:16 +0000 Subject: [PATCH 1/5] Sync PackageMetadata with email.message.Message MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Filipe LaĆ­ns --- importlib_metadata/_meta.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/importlib_metadata/_meta.py b/importlib_metadata/_meta.py index 259b15ba..6123e746 100644 --- a/importlib_metadata/_meta.py +++ b/importlib_metadata/_meta.py @@ -1,5 +1,5 @@ from ._compat import Protocol -from typing import Any, Dict, Iterator, List, TypeVar, Union +from typing import Any, Dict, Iterator, List, Optional, TypeVar, Union, overload _T = TypeVar("_T") @@ -18,7 +18,12 @@ def __getitem__(self, key: str) -> str: def __iter__(self) -> Iterator[str]: ... # pragma: no cover - def get_all(self, name: str, failobj: _T = ...) -> Union[List[Any], _T]: + @overload + def get_all(self, name: str, failobj: None = None) -> Optional[List[Any]]: + ... + + @overload + def get_all(self, name: str, failobj: _T) -> Union[List[Any], _T]: """ Return all values associated with a possibly multi-valued key. """ From fb364de47af2f12b93f4ab6c156a268aceded81e Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 18 Mar 2023 11:49:06 -0400 Subject: [PATCH 2/5] Add comment to link rationale for existence. --- importlib_metadata/_meta.py | 1 + 1 file changed, 1 insertion(+) diff --git a/importlib_metadata/_meta.py b/importlib_metadata/_meta.py index 6123e746..d6ba1c30 100644 --- a/importlib_metadata/_meta.py +++ b/importlib_metadata/_meta.py @@ -18,6 +18,7 @@ def __getitem__(self, key: str) -> str: def __iter__(self) -> Iterator[str]: ... # pragma: no cover + # overload per python/importlib_metadata#435 @overload def get_all(self, name: str, failobj: None = None) -> Optional[List[Any]]: ... From 51b89b07d828cf0e2137743a61672a1b57f88c73 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 18 Mar 2023 11:49:50 -0400 Subject: [PATCH 3/5] =?UTF-8?q?=F0=9F=91=B9=20Feed=20the=20hobgoblins=20(d?= =?UTF-8?q?elint).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- importlib_metadata/_meta.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/importlib_metadata/_meta.py b/importlib_metadata/_meta.py index d6ba1c30..8621c680 100644 --- a/importlib_metadata/_meta.py +++ b/importlib_metadata/_meta.py @@ -21,7 +21,7 @@ def __iter__(self) -> Iterator[str]: # overload per python/importlib_metadata#435 @overload def get_all(self, name: str, failobj: None = None) -> Optional[List[Any]]: - ... + ... # pragma: no cover @overload def get_all(self, name: str, failobj: _T) -> Union[List[Any], _T]: From ac0949adceae61c7cf31c009635e02952cccc4b0 Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 18 Mar 2023 11:51:35 -0400 Subject: [PATCH 4/5] Update changelog. --- CHANGES.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES.rst b/CHANGES.rst index 4dd9d5df..8eca4dfb 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,10 @@ +v6.0.1 +====== + +* #434: Expand protocol for ``PackageMetadata.get_all`` to match + the upstream implementation of ``email.message.Message.get_all`` + in python/typeshed#9620. + v6.0.0 ====== From a046b04cd628eff4b21a0e6e77d3f9a2672e311b Mon Sep 17 00:00:00 2001 From: "Jason R. Coombs" Date: Sat, 18 Mar 2023 12:07:51 -0400 Subject: [PATCH 5/5] Extend the workaround to satisfy docstring of typing._overload_dummy. --- docs/conf.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index ebfdb74d..8e7762d0 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -61,9 +61,11 @@ ), ) -# Workaround for #316 nitpick_ignore = [ + # Workaround for #316 ('py:class', 'importlib_metadata.EntryPoints'), ('py:class', 'importlib_metadata.SelectableGroups'), ('py:class', 'importlib_metadata._meta._T'), + # Workaround for #435 + ('py:class', '_T'), ]