Skip to content

Commit af84d2f

Browse files
authored
pkg_resources: Updates from upstream typing merge (#11455)
1 parent 3646f64 commit af84d2f

File tree

1 file changed

+36
-36
lines changed

1 file changed

+36
-36
lines changed

stubs/setuptools/pkg_resources/__init__.pyi

Lines changed: 36 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import types
22
import zipimport
3-
from _typeshed import Incomplete
3+
from _typeshed import Incomplete, StrPath, Unused
44
from collections.abc import Callable, Generator, Iterable, Iterator, Sequence
55
from io import BytesIO
6+
from itertools import chain
67
from pkgutil import get_importer as get_importer
78
from re import Pattern
89
from typing import IO, Any, ClassVar, Final, Literal, NoReturn, Protocol, TypeVar, overload, type_check_only
@@ -13,11 +14,11 @@ from ._vendored_packaging import requirements as packaging_requirements, version
1314

1415
_T = TypeVar("_T")
1516
_D = TypeVar("_D", bound=Distribution)
16-
_NestedStr: TypeAlias = str | Iterable[str | Iterable[_NestedStr]]
17+
_NestedStr: TypeAlias = str | Iterable[_NestedStr]
1718
_InstallerType: TypeAlias = Callable[[Requirement], Distribution | None]
18-
_EPDistType: TypeAlias = Distribution | Requirement | str
19-
_MetadataType: TypeAlias = IResourceProvider | None
2019
_PkgReqType: TypeAlias = str | Requirement
20+
_EPDistType: TypeAlias = Distribution | _PkgReqType
21+
_MetadataType: TypeAlias = IResourceProvider | None
2122
_ResolvedEntryPoint: TypeAlias = Any # Can be any attribute in the module
2223
_ModuleLike: TypeAlias = object | types.ModuleType # Any object that optionally has __loader__ or __file__, usually a module
2324
_ProviderFactoryType: TypeAlias = Callable[[_ModuleLike], IResourceProvider]
@@ -163,18 +164,19 @@ class Environment:
163164

164165
AvailableDistributions = Environment
165166

166-
def parse_requirements(strs: str | Iterable[str]) -> Generator[Requirement, None, None]: ...
167+
def parse_requirements(strs: _NestedStr) -> Iterator[Requirement]: ...
167168

168169
class RequirementParseError(packaging_requirements.InvalidRequirement): ...
169170

170171
class Requirement(packaging_requirements.Requirement):
171172
unsafe_name: str
172173
project_name: str
173174
key: str
174-
extras: tuple[str, ...] # type: ignore[assignment] # incompatible override of attribute on base class
175+
# packaging.requirements.Requirement uses a set for its extras. setuptools/pkg_resources uses a variable-length tuple
176+
extras: tuple[str, ...] # type: ignore[assignment]
175177
specs: list[tuple[str, str]]
176178
def __init__(self, requirement_string: str) -> None: ...
177-
def __eq__(self, other_requirement: object) -> bool: ...
179+
def __eq__(self, other: object) -> bool: ...
178180
def __contains__(self, item: Distribution | str | tuple[str, ...]) -> bool: ...
179181
@staticmethod
180182
def parse(s: str | Iterable[str]) -> Requirement: ...
@@ -187,33 +189,31 @@ def get_entry_map(dist: _EPDistType, group: str) -> dict[str, EntryPoint]: ...
187189
def get_entry_info(dist: _EPDistType, group: str, name: str) -> EntryPoint | None: ...
188190

189191
class EntryPoint:
190-
pattern: ClassVar[Pattern[str]]
191192
name: str
192193
module_name: str
193194
attrs: tuple[str, ...]
194195
extras: tuple[str, ...]
195196
dist: Distribution | None
196197
def __init__(
197-
self,
198-
name: str,
199-
module_name: str,
200-
attrs: tuple[str, ...] = (),
201-
extras: tuple[str, ...] = (),
202-
dist: Distribution | None = None,
198+
self, name: str, module_name: str, attrs: Iterable[str] = (), extras: Iterable[str] = (), dist: Distribution | None = None
203199
) -> None: ...
200+
@overload
204201
def load(
205-
self, require: bool = True, env: Environment | None = ..., installer: _InstallerType | None = ...
202+
self, require: Literal[True] = True, env: Environment | None = None, installer: _InstallerType | None = None
206203
) -> _ResolvedEntryPoint: ...
204+
@overload
205+
def load(self, require: Literal[False], *args: Unused, **kwargs: Unused) -> _ResolvedEntryPoint: ...
207206
def resolve(self) -> _ResolvedEntryPoint: ...
208207
def require(self, env: Environment | None = None, installer: _InstallerType | None = None) -> None: ...
208+
pattern: ClassVar[Pattern[str]]
209209
@classmethod
210210
def parse(cls, src: str, dist: Distribution | None = None) -> Self: ...
211211
@classmethod
212-
def parse_group(cls, group: str, lines: str | Sequence[str], dist: Distribution | None = None) -> dict[str, EntryPoint]: ...
212+
def parse_group(cls, group: str, lines: _NestedStr, dist: Distribution | None = None) -> dict[str, Self]: ...
213213
@classmethod
214214
def parse_map(
215-
cls, data: dict[str, str | Sequence[str]] | str | Sequence[str], dist: Distribution | None = None
216-
) -> dict[str, EntryPoint]: ...
215+
cls, data: str | Iterable[str] | dict[str, str | Iterable[str]], dist: Distribution | None = None
216+
) -> dict[str, dict[str, Self]]: ...
217217

218218
def find_distributions(path_item: str, only: bool = False) -> Generator[Distribution, None, None]: ...
219219
@overload
@@ -229,9 +229,8 @@ CHECKOUT_DIST: Final = 0
229229
DEVELOP_DIST: Final = -1
230230

231231
class ResourceManager:
232-
extraction_path: Incomplete
232+
extraction_path: str | None
233233
cached_files: Incomplete
234-
def __init__(self) -> None: ...
235234
def resource_exists(self, package_or_requirement: _PkgReqType, resource_name: str) -> bool: ...
236235
def resource_isdir(self, package_or_requirement: _PkgReqType, resource_name: str) -> bool: ...
237236
def resource_filename(self, package_or_requirement: _PkgReqType, resource_name: str) -> str: ...
@@ -260,11 +259,11 @@ def get_provider(moduleOrReq: str) -> IResourceProvider: ...
260259
def get_provider(moduleOrReq: Requirement) -> Distribution: ...
261260

262261
class IMetadataProvider(Protocol):
263-
def has_metadata(self, name: str) -> bool | None: ...
262+
def has_metadata(self, name: str) -> bool: ...
263+
def get_metadata(self, name: str) -> str: ...
264+
def get_metadata_lines(self, name: str) -> Iterator[str]: ...
264265
def metadata_isdir(self, name: str) -> bool: ...
265266
def metadata_listdir(self, name: str) -> list[str]: ...
266-
def get_metadata(self, name: str) -> str: ...
267-
def get_metadata_lines(self, name: str) -> Generator[str, None, None]: ...
268267
def run_script(self, script_name: str, namespace: dict[str, Any]) -> None: ...
269268

270269
class ResolutionError(Exception): ...
@@ -298,7 +297,7 @@ class UnknownExtra(ResolutionError): ...
298297
class ExtractionError(Exception):
299298
manager: ResourceManager
300299
cache_path: str
301-
original_error: Exception
300+
original_error: BaseException | None
302301

303302
def register_finder(importer_type: type[_T], distribution_finder: _DistFinderType[_T]) -> None: ...
304303
def register_loader_type(loader_type: type[_ModuleLike], provider_factory: _ProviderFactoryType) -> None: ...
@@ -326,9 +325,9 @@ class NullProvider:
326325
def get_resource_stream(self, manager: ResourceManager, resource_name) -> BytesIO: ...
327326
def get_resource_string(self, manager: ResourceManager, resource_name): ...
328327
def has_resource(self, resource_name) -> bool: ...
329-
def has_metadata(self, name: str) -> bool | None: ...
328+
def has_metadata(self, name: str) -> bool: ...
330329
def get_metadata(self, name: str) -> str: ...
331-
def get_metadata_lines(self, name: str) -> Generator[str, None, None]: ...
330+
def get_metadata_lines(self, name: str) -> chain[str]: ...
332331
def resource_isdir(self, resource_name) -> bool: ...
333332
def metadata_isdir(self, name: str) -> bool: ...
334333
def resource_listdir(self, resource_name) -> list[str]: ...
@@ -339,26 +338,26 @@ class NullProvider:
339338
class Distribution(NullProvider):
340339
PKG_INFO: ClassVar[str]
341340
project_name: str
342-
py_version: str
341+
py_version: str | None
343342
platform: str | None
344-
location: str
343+
location: str | None
345344
precedence: int
346345
def __init__(
347346
self,
348347
location: str | None = None,
349348
metadata: _MetadataType = None,
350349
project_name: str | None = None,
351350
version: str | None = None,
352-
py_version: str = ...,
351+
py_version: str | None = ...,
353352
platform: str | None = None,
354353
precedence: int = 3,
355354
) -> None: ...
356355
@classmethod
357356
def from_location(
358-
cls, location: str, basename: str, metadata: _MetadataType = None, **kw: str | None | int
357+
cls, location: str, basename: str, metadata: _MetadataType = None, *, precedence: int = 3
359358
) -> Distribution: ...
360359
@property
361-
def hashcmp(self) -> tuple[Incomplete, int, str, Incomplete | None, str, str]: ...
360+
def hashcmp(self) -> tuple[parse_version, int, str, str | None, str, str]: ...
362361
def __hash__(self) -> int: ...
363362
def __lt__(self, other: Distribution) -> bool: ...
364363
def __le__(self, other: Distribution) -> bool: ...
@@ -372,11 +371,11 @@ class Distribution(NullProvider):
372371
def parsed_version(self) -> packaging_version.Version: ...
373372
@property
374373
def version(self) -> str: ...
375-
def requires(self, extras: tuple[str, ...] = ()) -> list[Requirement]: ...
374+
def requires(self, extras: Iterable[str] = ()) -> list[Requirement]: ...
376375
def activate(self, path: list[str] | None = None, replace: bool = False) -> None: ...
377376
def egg_name(self) -> str: ... # type: ignore[override] # supertype's egg_name is a variable, not a method
378377
@classmethod
379-
def from_filename(cls, filename: str, metadata: _MetadataType = None, **kw: str | None | int) -> Distribution: ...
378+
def from_filename(cls, filename: str, metadata: _MetadataType = None, *, precedence: int = 3) -> Distribution: ...
380379
def as_requirement(self) -> Requirement: ...
381380
def load_entry_point(self, group: str, name: str) -> _ResolvedEntryPoint: ...
382381
@overload
@@ -387,7 +386,7 @@ class Distribution(NullProvider):
387386
def insert_on(self, path, loc: Incomplete | None = None, replace: bool = False) -> None: ...
388387
def check_version_conflict(self) -> None: ...
389388
def has_version(self) -> bool: ...
390-
def clone(self, **kw: str | int | None) -> Requirement: ...
389+
def clone(self, **kw: str | int | IResourceProvider | None) -> Requirement: ...
391390
@property
392391
def extras(self) -> list[str]: ...
393392

@@ -426,13 +425,14 @@ class EmptyProvider(NullProvider):
426425
empty_provider: EmptyProvider
427426

428427
class FileMetadata(EmptyProvider):
429-
def __init__(self, path: str) -> None: ...
428+
path: StrPath
429+
def __init__(self, path: StrPath) -> None: ...
430430

431431
class PEP440Warning(RuntimeWarning): ...
432432

433433
parse_version = packaging_version.Version
434434

435-
def yield_lines(iterable: _NestedStr) -> Generator[str, None, None]: ...
435+
def yield_lines(iterable: _NestedStr) -> chain[str]: ...
436436
def split_sections(s: _NestedStr) -> Generator[tuple[str | None, list[str]], None, None]: ...
437437
def safe_name(name: str) -> str: ...
438438
def safe_version(version: str) -> str: ...

0 commit comments

Comments
 (0)