diff --git a/importlib_metadata/__init__.py b/importlib_metadata/__init__.py index 09a02a4e..1e5be7a2 100644 --- a/importlib_metadata/__init__.py +++ b/importlib_metadata/__init__.py @@ -769,6 +769,7 @@ class Lookup: """ A micro-optimized class for searching a (fast) path for metadata. """ + def __init__(self, path: FastPath): """ Calculate all of the children representing metadata. diff --git a/importlib_metadata/_meta.py b/importlib_metadata/_meta.py index 1342d839..1927d0f6 100644 --- a/importlib_metadata/_meta.py +++ b/importlib_metadata/_meta.py @@ -9,30 +9,27 @@ class PackageMetadata(Protocol): - def __len__(self) -> int: - ... # pragma: no cover + def __len__(self) -> int: ... # pragma: no cover - def __contains__(self, item: str) -> bool: - ... # pragma: no cover + def __contains__(self, item: str) -> bool: ... # pragma: no cover - def __getitem__(self, key: str) -> str: - ... # pragma: no cover + def __getitem__(self, key: str) -> str: ... # pragma: no cover - def __iter__(self) -> Iterator[str]: - ... # pragma: no cover + def __iter__(self) -> Iterator[str]: ... # pragma: no cover @overload - def get(self, name: str, failobj: None = None) -> Optional[str]: - ... # pragma: no cover + 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 + 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]]: - ... # pragma: no cover + 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]: @@ -52,21 +49,19 @@ class SimplePath(Protocol): A minimal subset of pathlib.Path required by Distribution. """ - def joinpath(self, other: Union[str, os.PathLike[str]]) -> SimplePath: - ... # pragma: no cover + def joinpath( + self, other: Union[str, os.PathLike[str]] + ) -> SimplePath: ... # pragma: no cover - def __truediv__(self, other: Union[str, os.PathLike[str]]) -> SimplePath: - ... # pragma: no cover + def __truediv__( + self, other: Union[str, os.PathLike[str]] + ) -> SimplePath: ... # pragma: no cover @property - def parent(self) -> SimplePath: - ... # pragma: no cover + def parent(self) -> SimplePath: ... # pragma: no cover - def read_text(self, encoding=None) -> str: - ... # pragma: no cover + def read_text(self, encoding=None) -> str: ... # pragma: no cover - def read_bytes(self) -> bytes: - ... # pragma: no cover + def read_bytes(self) -> bytes: ... # pragma: no cover - def exists(self) -> bool: - ... # pragma: no cover + def exists(self) -> bool: ... # pragma: no cover diff --git a/importlib_metadata/_py39compat.py b/importlib_metadata/_py39compat.py index cde4558f..fc6b8221 100644 --- a/importlib_metadata/_py39compat.py +++ b/importlib_metadata/_py39compat.py @@ -1,6 +1,7 @@ """ Compatibility layer with Python 3.8/3.9 """ + from typing import TYPE_CHECKING, Any, Optional if TYPE_CHECKING: # pragma: no cover diff --git a/tests/_path.py b/tests/_path.py index 25c799fa..b3cfb9cd 100644 --- a/tests/_path.py +++ b/tests/_path.py @@ -17,20 +17,15 @@ class Symlink(str): @runtime_checkable class TreeMaker(Protocol): - def __truediv__(self, *args, **kwargs): - ... # pragma: no cover + def __truediv__(self, *args, **kwargs): ... # pragma: no cover - def mkdir(self, **kwargs): - ... # pragma: no cover + def mkdir(self, **kwargs): ... # pragma: no cover - def write_text(self, content, **kwargs): - ... # pragma: no cover + def write_text(self, content, **kwargs): ... # pragma: no cover - def write_bytes(self, content): - ... # pragma: no cover + def write_bytes(self, content): ... # pragma: no cover - def symlink_to(self, target): - ... # pragma: no cover + def symlink_to(self, target): ... # pragma: no cover def _ensure_tree_maker(obj: Union[str, TreeMaker]) -> TreeMaker: diff --git a/tests/fixtures.py b/tests/fixtures.py index b419d81c..7daae16a 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -140,15 +140,13 @@ class DistInfoPkgEditable(DistInfoPkg): some_hash = '524127ce937f7cb65665130c695abd18ca386f60bb29687efb976faa1596fdcc' files: FilesSpec = { 'distinfo_pkg-1.0.0.dist-info': { - 'direct_url.json': json.dumps( - { - "archive_info": { - "hash": f"sha256={some_hash}", - "hashes": {"sha256": f"{some_hash}"}, - }, - "url": "file:///path/to/distinfo_pkg-1.0.0.editable-py3-none-any.whl", - } - ) + 'direct_url.json': json.dumps({ + "archive_info": { + "hash": f"sha256={some_hash}", + "hashes": {"sha256": f"{some_hash}"}, + }, + "url": "file:///path/to/distinfo_pkg-1.0.0.editable-py3-none-any.whl", + }) }, } diff --git a/tests/test_main.py b/tests/test_main.py index dd6b51fa..6e0b1da7 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -304,12 +304,10 @@ def test_sortable(self): """ EntryPoint objects are sortable, but result is undefined. """ - sorted( - [ - EntryPoint(name='b', value='val', group='group'), - EntryPoint(name='a', value='val', group='group'), - ] - ) + sorted([ + EntryPoint(name='b', value='val', group='group'), + EntryPoint(name='a', value='val', group='group'), + ]) class FileSystem( @@ -376,18 +374,16 @@ def test_packages_distributions_all_module_types(self): 'all_distributions-1.0.0.dist-info': metadata, } for i, suffix in enumerate(suffixes): - files.update( - { - f'importable-name {i}{suffix}': '', - f'in_namespace_{i}': { - f'mod{suffix}': '', - }, - f'in_package_{i}': { - '__init__.py': '', - f'mod{suffix}': '', - }, - } - ) + files.update({ + f'importable-name {i}{suffix}': '', + f'in_namespace_{i}': { + f'mod{suffix}': '', + }, + f'in_package_{i}': { + '__init__.py': '', + f'mod{suffix}': '', + }, + }) metadata.update(RECORD=fixtures.build_record(files)) fixtures.build_files(files, prefix=self.site_dir)