Skip to content

Commit b4b622e

Browse files
authored
Improve pkg_resource type specs (#4254)
Made `pkg_resoursces.NullProvider`'s `has_metadata` and `metadata_isdir` methods return actual booleans like all other Providers
2 parents b39639a + d54fdbe commit b4b622e

File tree

3 files changed

+15
-14
lines changed

3 files changed

+15
-14
lines changed

newsfragments/4254.bugfix.rst

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Made ``pkg_resoursces.NullProvider``'s ``has_metadata`` and ``metadata_isdir`` methods return actual booleans like all other Providers. -- by :user:`Avasam`

pkg_resources/__init__.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,7 @@ def get_entry_info(dist, group, name):
531531

532532

533533
class IMetadataProvider(Protocol):
534-
def has_metadata(self, name):
534+
def has_metadata(self, name) -> bool:
535535
"""Does the package's distribution contain the named metadata?"""
536536

537537
def get_metadata(self, name):
@@ -543,7 +543,7 @@ def get_metadata_lines(self, name):
543543
Leading and trailing whitespace is stripped from each line, and lines
544544
with ``#`` as the first non-blank character are omitted."""
545545

546-
def metadata_isdir(self, name):
546+
def metadata_isdir(self, name) -> bool:
547547
"""Is the named metadata a directory? (like ``os.path.isdir()``)"""
548548

549549
def metadata_listdir(self, name):
@@ -1489,9 +1489,9 @@ def has_resource(self, resource_name):
14891489
def _get_metadata_path(self, name):
14901490
return self._fn(self.egg_info, name)
14911491

1492-
def has_metadata(self, name):
1492+
def has_metadata(self, name) -> bool:
14931493
if not self.egg_info:
1494-
return self.egg_info
1494+
return False
14951495

14961496
path = self._get_metadata_path(name)
14971497
return self._has(path)
@@ -1515,8 +1515,8 @@ def get_metadata_lines(self, name):
15151515
def resource_isdir(self, resource_name):
15161516
return self._isdir(self._fn(self.module_path, resource_name))
15171517

1518-
def metadata_isdir(self, name):
1519-
return self.egg_info and self._isdir(self._fn(self.egg_info, name))
1518+
def metadata_isdir(self, name) -> bool:
1519+
return bool(self.egg_info and self._isdir(self._fn(self.egg_info, name)))
15201520

15211521
def resource_listdir(self, resource_name):
15221522
return self._listdir(self._fn(self.module_path, resource_name))
@@ -1555,12 +1555,12 @@ def run_script(self, script_name, namespace):
15551555
script_code = compile(script_text, script_filename, 'exec')
15561556
exec(script_code, namespace, namespace)
15571557

1558-
def _has(self, path):
1558+
def _has(self, path) -> bool:
15591559
raise NotImplementedError(
15601560
"Can't perform this operation for unregistered loader type"
15611561
)
15621562

1563-
def _isdir(self, path):
1563+
def _isdir(self, path) -> bool:
15641564
raise NotImplementedError(
15651565
"Can't perform this operation for unregistered loader type"
15661566
)
@@ -1695,10 +1695,10 @@ def _set_egg(self, path):
16951695
class DefaultProvider(EggProvider):
16961696
"""Provides access to package resources in the filesystem"""
16971697

1698-
def _has(self, path):
1698+
def _has(self, path) -> bool:
16991699
return os.path.exists(path)
17001700

1701-
def _isdir(self, path):
1701+
def _isdir(self, path) -> bool:
17021702
return os.path.isdir(path)
17031703

17041704
def _listdir(self, path):
@@ -1940,11 +1940,11 @@ def _index(self):
19401940
self._dirindex = ind
19411941
return ind
19421942

1943-
def _has(self, fspath):
1943+
def _has(self, fspath) -> bool:
19441944
zip_path = self._zipinfo_name(fspath)
19451945
return zip_path in self.zipinfo or zip_path in self._index()
19461946

1947-
def _isdir(self, fspath):
1947+
def _isdir(self, fspath) -> bool:
19481948
return self._zipinfo_name(fspath) in self._index()
19491949

19501950
def _listdir(self, fspath):
@@ -1978,7 +1978,7 @@ def __init__(self, path):
19781978
def _get_metadata_path(self, name):
19791979
return self.path
19801980

1981-
def has_metadata(self, name):
1981+
def has_metadata(self, name) -> bool:
19821982
return name == 'PKG-INFO' and os.path.isfile(self.path)
19831983

19841984
def get_metadata(self, name):

pkg_resources/tests/test_resources.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class Metadata(pkg_resources.EmptyProvider):
3535
def __init__(self, *pairs):
3636
self.metadata = dict(pairs)
3737

38-
def has_metadata(self, name):
38+
def has_metadata(self, name) -> bool:
3939
return name in self.metadata
4040

4141
def get_metadata(self, name):

0 commit comments

Comments
 (0)