From 5946e13ad44e668d28ac597f9092121b74835cb9 Mon Sep 17 00:00:00 2001 From: Avasam Date: Thu, 23 Nov 2023 16:53:18 -0500 Subject: [PATCH 1/4] Update setuptools to v69 --- stubs/setuptools/METADATA.toml | 4 +- stubs/setuptools/pkg_resources/__init__.pyi | 2 +- .../_vendor/packaging/__init__.pyi | 8 --- .../_vendor/packaging/markers.pyi | 13 ---- .../_vendor/packaging/requirements.pyi | 14 ---- .../_vendor/packaging/specifiers.pyi | 66 ------------------- .../_vendor/packaging/version.pyi | 49 -------------- .../setuptools/_distutils/_modified.pyi | 9 +++ stubs/setuptools/setuptools/dep_util.pyi | 5 +- stubs/setuptools/setuptools/errors.pyi | 2 + stubs/setuptools/setuptools/modified.pyi | 8 +++ 11 files changed, 26 insertions(+), 154 deletions(-) delete mode 100644 stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi delete mode 100644 stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi delete mode 100644 stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi delete mode 100644 stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi delete mode 100644 stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi create mode 100644 stubs/setuptools/setuptools/_distutils/_modified.pyi create mode 100644 stubs/setuptools/setuptools/modified.pyi diff --git a/stubs/setuptools/METADATA.toml b/stubs/setuptools/METADATA.toml index d1530b871eb0..0638a089e987 100644 --- a/stubs/setuptools/METADATA.toml +++ b/stubs/setuptools/METADATA.toml @@ -1,7 +1,7 @@ -version = "68.2.*" +version = "69.0.*" upstream_repository = "https://github.com/pypa/setuptools" -partial_stub = true [tool.stubtest] # darwin is equivalent to linux for OS-specific methods platforms = ["linux", "win32"] +stubtest_requirements = ["packaging"] diff --git a/stubs/setuptools/pkg_resources/__init__.pyi b/stubs/setuptools/pkg_resources/__init__.pyi index 6dfa2c50fba1..97709e84a023 100644 --- a/stubs/setuptools/pkg_resources/__init__.pyi +++ b/stubs/setuptools/pkg_resources/__init__.pyi @@ -9,7 +9,7 @@ from re import Pattern from typing import IO, Any, ClassVar, Protocol, TypeVar, overload, type_check_only from typing_extensions import Literal, Self, TypeAlias -from ._vendor.packaging import requirements as packaging_requirements, version as packaging_version +from packaging import requirements as packaging_requirements, version as packaging_version _T = TypeVar("_T") _D = TypeVar("_D", bound=Distribution) diff --git a/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi b/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi deleted file mode 100644 index 1981f2d9b273..000000000000 --- a/stubs/setuptools/pkg_resources/_vendor/packaging/__init__.pyi +++ /dev/null @@ -1,8 +0,0 @@ -__title__: str -__summary__: str -__uri__: str -__version__: str -__author__: str -__email__: str -__license__: str -__copyright__: str diff --git a/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi b/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi deleted file mode 100644 index 0a7acbbf3a75..000000000000 --- a/stubs/setuptools/pkg_resources/_vendor/packaging/markers.pyi +++ /dev/null @@ -1,13 +0,0 @@ -__all__ = ["InvalidMarker", "UndefinedComparison", "UndefinedEnvironmentName", "Marker", "default_environment"] - -class InvalidMarker(ValueError): ... -class UndefinedComparison(ValueError): ... -class UndefinedEnvironmentName(ValueError): ... - -def default_environment() -> dict[str, str]: ... - -class Marker: - def __init__(self, marker: str) -> None: ... - def __hash__(self) -> int: ... - def __eq__(self, other: object) -> bool: ... - def evaluate(self, environment: dict[str, str] | None = None) -> bool: ... diff --git a/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi b/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi deleted file mode 100644 index 4f909fa75a23..000000000000 --- a/stubs/setuptools/pkg_resources/_vendor/packaging/requirements.pyi +++ /dev/null @@ -1,14 +0,0 @@ -from .markers import Marker -from .specifiers import SpecifierSet - -class InvalidRequirement(ValueError): ... - -class Requirement: - name: str - url: str | None - extras: set[str] - specifier: SpecifierSet - marker: Marker | None - def __init__(self, requirement_str: str) -> None: ... - def __hash__(self) -> int: ... - def __eq__(self, other: object) -> bool: ... diff --git a/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi b/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi deleted file mode 100644 index ec86ea306e74..000000000000 --- a/stubs/setuptools/pkg_resources/_vendor/packaging/specifiers.pyi +++ /dev/null @@ -1,66 +0,0 @@ -import abc -from collections.abc import Iterable, Iterator -from typing import TypeVar -from typing_extensions import TypeAlias - -from .version import Version - -# These exist at runtime, hence the public names -UnparsedVersion: TypeAlias = Version | str -UnparsedVersionVar = TypeVar("UnparsedVersionVar", bound=UnparsedVersion) # noqa: Y001 - -class InvalidSpecifier(ValueError): ... - -class BaseSpecifier(metaclass=abc.ABCMeta): - @abc.abstractmethod - def __str__(self) -> str: ... - @abc.abstractmethod - def __hash__(self) -> int: ... - @abc.abstractmethod - def __eq__(self, other: object) -> bool: ... - @property - @abc.abstractmethod - def prereleases(self) -> bool | None: ... - @prereleases.setter - def prereleases(self, value: bool) -> None: ... - @abc.abstractmethod - def contains(self, item: str, prereleases: bool | None = None) -> bool: ... - @abc.abstractmethod - def filter(self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None) -> Iterator[UnparsedVersionVar]: ... - -class Specifier(BaseSpecifier): - def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: ... - @property # type: ignore[override] - def prereleases(self) -> bool: ... - @prereleases.setter - def prereleases(self, value: bool) -> None: ... - @property - def operator(self) -> str: ... - @property - def version(self) -> str: ... - def __str__(self) -> str: ... # noqa: Y029 # needed as it's abstract on the superclass - def __hash__(self) -> int: ... - def __eq__(self, other: object) -> bool: ... - def __contains__(self, item: Version | str) -> bool: ... - def contains(self, item: UnparsedVersion, prereleases: bool | None = None) -> bool: ... - def filter(self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None) -> Iterator[UnparsedVersionVar]: ... - -class SpecifierSet(BaseSpecifier): - def __init__(self, spec: str = "", prereleases: bool | None = None) -> None: ... - @property - def prereleases(self) -> bool | None: ... - @prereleases.setter - def prereleases(self, value: bool) -> None: ... - @property - def operator(self) -> str: ... - @property - def version(self) -> str: ... - def __str__(self) -> str: ... # noqa: Y029 # needed as it's abstract on the superclass - def __hash__(self) -> int: ... - def __and__(self, other: SpecifierSet | str) -> SpecifierSet: ... - def __len__(self) -> int: ... - def __iter__(self) -> Iterator[Specifier]: ... - def __eq__(self, other: object) -> bool: ... - def __contains__(self, item: UnparsedVersion) -> bool: ... - def contains(self, item: UnparsedVersion, prereleases: bool | None = None, installed: bool | None = None) -> bool: ... - def filter(self, iterable: Iterable[UnparsedVersionVar], prereleases: bool | None = None) -> Iterator[UnparsedVersionVar]: ... diff --git a/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi b/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi deleted file mode 100644 index e05866730dbe..000000000000 --- a/stubs/setuptools/pkg_resources/_vendor/packaging/version.pyi +++ /dev/null @@ -1,49 +0,0 @@ -from typing_extensions import Final - -__all__ = ["VERSION_PATTERN", "parse", "Version", "InvalidVersion"] - -def parse(version: str) -> Version: ... - -class InvalidVersion(ValueError): ... - -VERSION_PATTERN: Final[str] - -class _BaseVersion: - def __hash__(self) -> int: ... - def __lt__(self, other: _BaseVersion) -> bool: ... - def __le__(self, other: _BaseVersion) -> bool: ... - def __ge__(self, other: _BaseVersion) -> bool: ... - def __gt__(self, other: _BaseVersion) -> bool: ... - def __eq__(self, other: object) -> bool: ... - def __ne__(self, other: object) -> bool: ... - -class Version(_BaseVersion): - def __init__(self, version: str) -> None: ... - @property - def epoch(self) -> int: ... - @property - def release(self) -> tuple[int, ...]: ... - @property - def pre(self) -> tuple[str, int] | None: ... - @property - def post(self) -> int | None: ... - @property - def dev(self) -> int | None: ... - @property - def local(self) -> str | None: ... - @property - def public(self) -> str: ... - @property - def base_version(self) -> str: ... - @property - def is_prerelease(self) -> bool: ... - @property - def is_postrelease(self) -> bool: ... - @property - def is_devrelease(self) -> bool: ... - @property - def major(self) -> int: ... - @property - def minor(self) -> int: ... - @property - def micro(self) -> int: ... diff --git a/stubs/setuptools/setuptools/_distutils/_modified.pyi b/stubs/setuptools/setuptools/_distutils/_modified.pyi new file mode 100644 index 000000000000..577154a3ca1a --- /dev/null +++ b/stubs/setuptools/setuptools/_distutils/_modified.pyi @@ -0,0 +1,9 @@ +import functools +from typing_extensions import Literal + +def newer(source, target): ... +def newer_pairwise(sources, targets, newer=...): ... +def newer_group(sources, target, missing: Literal["error", "newer", "ignore"] = "error"): ... + +# def newer_pairwise_group(sources, targets, *, newer=...): ... +newer_pairwise_group = functools.partial(newer_pairwise, newer=newer_group) diff --git a/stubs/setuptools/setuptools/dep_util.pyi b/stubs/setuptools/setuptools/dep_util.pyi index 0ac008029257..ea0c59619722 100644 --- a/stubs/setuptools/setuptools/dep_util.pyi +++ b/stubs/setuptools/setuptools/dep_util.pyi @@ -1 +1,4 @@ -def newer_pairwise_group(sources_groups, targets): ... +from ._distutils._modified import ( + newer_group as newer_group, + newer_pairwise_group as newer_pairwise_group, +) diff --git a/stubs/setuptools/setuptools/errors.pyi b/stubs/setuptools/setuptools/errors.pyi index 003874563c7c..9723a11d514f 100644 --- a/stubs/setuptools/setuptools/errors.pyi +++ b/stubs/setuptools/setuptools/errors.pyi @@ -18,5 +18,7 @@ TemplateError = _distutils_errors.DistutilsTemplateError UnknownFileError = _distutils_errors.UnknownFileError BaseError = _distutils_errors.DistutilsError +class InvalidConfigError(OptionError): ... +class RemovedConfigError(OptionError): ... class RemovedCommandError(BaseError, RuntimeError): ... class PackageDiscoveryError(BaseError, RuntimeError): ... diff --git a/stubs/setuptools/setuptools/modified.pyi b/stubs/setuptools/setuptools/modified.pyi new file mode 100644 index 000000000000..ab0f268875b0 --- /dev/null +++ b/stubs/setuptools/setuptools/modified.pyi @@ -0,0 +1,8 @@ +from ._distutils._modified import ( + newer as newer, + newer_pairwise as newer_pairwise, + newer_group as newer_group, + newer_pairwise_group as newer_pairwise_group, +) + +__all__ = ["newer", "newer_pairwise", "newer_group", "newer_pairwise_group"] From 3cfd95a9fc4856e9c564d8cf6ec249e2fc4c954b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 23 Nov 2023 22:17:57 +0000 Subject: [PATCH 2/4] [pre-commit.ci] auto fixes from pre-commit.com hooks --- stubs/setuptools/setuptools/dep_util.pyi | 5 +---- stubs/setuptools/setuptools/modified.pyi | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/stubs/setuptools/setuptools/dep_util.pyi b/stubs/setuptools/setuptools/dep_util.pyi index ea0c59619722..0891d9775f47 100644 --- a/stubs/setuptools/setuptools/dep_util.pyi +++ b/stubs/setuptools/setuptools/dep_util.pyi @@ -1,4 +1 @@ -from ._distutils._modified import ( - newer_group as newer_group, - newer_pairwise_group as newer_pairwise_group, -) +from ._distutils._modified import newer_group as newer_group, newer_pairwise_group as newer_pairwise_group diff --git a/stubs/setuptools/setuptools/modified.pyi b/stubs/setuptools/setuptools/modified.pyi index ab0f268875b0..3148cc626dc6 100644 --- a/stubs/setuptools/setuptools/modified.pyi +++ b/stubs/setuptools/setuptools/modified.pyi @@ -1,7 +1,7 @@ from ._distutils._modified import ( newer as newer, - newer_pairwise as newer_pairwise, newer_group as newer_group, + newer_pairwise as newer_pairwise, newer_pairwise_group as newer_pairwise_group, ) From 3acee2ce51f4ef9238b860aa40312ea155724cb7 Mon Sep 17 00:00:00 2001 From: Avasam Date: Thu, 23 Nov 2023 17:26:29 -0500 Subject: [PATCH 3/4] Go with allowlist entry instead for mypy support --- stubs/setuptools/@tests/stubtest_allowlist.txt | 4 ++++ stubs/setuptools/setuptools/_distutils/_modified.pyi | 5 +---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/stubs/setuptools/@tests/stubtest_allowlist.txt b/stubs/setuptools/@tests/stubtest_allowlist.txt index 79dcad433a95..0acd265e8cb5 100644 --- a/stubs/setuptools/@tests/stubtest_allowlist.txt +++ b/stubs/setuptools/@tests/stubtest_allowlist.txt @@ -42,6 +42,10 @@ setuptools._distutils.dist.Distribution.get_requires setuptools._distutils.dist.Distribution.get_provides setuptools._distutils.dist.Distribution.get_obsoletes +# Is a functools.partial, so stubtest says "is not a function" +setuptools.dep_util.newer_pairwise_group +setuptools.modified.newer_pairwise_group + # Private modules setuptools.config._validate_pyproject.* setuptools.command.build_py.build_py.existing_egg_info_dir diff --git a/stubs/setuptools/setuptools/_distutils/_modified.pyi b/stubs/setuptools/setuptools/_distutils/_modified.pyi index 577154a3ca1a..39b853256ed4 100644 --- a/stubs/setuptools/setuptools/_distutils/_modified.pyi +++ b/stubs/setuptools/setuptools/_distutils/_modified.pyi @@ -1,9 +1,6 @@ -import functools from typing_extensions import Literal def newer(source, target): ... def newer_pairwise(sources, targets, newer=...): ... def newer_group(sources, target, missing: Literal["error", "newer", "ignore"] = "error"): ... - -# def newer_pairwise_group(sources, targets, *, newer=...): ... -newer_pairwise_group = functools.partial(newer_pairwise, newer=newer_group) +def newer_pairwise_group(sources, targets, *, newer=...): ... From f6432389a654f860e09b6d856ad657965d578ce7 Mon Sep 17 00:00:00 2001 From: Avasam Date: Thu, 23 Nov 2023 21:38:23 -0500 Subject: [PATCH 4/4] mypy needs packaging too --- stubs/setuptools/METADATA.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stubs/setuptools/METADATA.toml b/stubs/setuptools/METADATA.toml index 0638a089e987..75e84e2773ac 100644 --- a/stubs/setuptools/METADATA.toml +++ b/stubs/setuptools/METADATA.toml @@ -1,7 +1,7 @@ version = "69.0.*" upstream_repository = "https://github.com/pypa/setuptools" +requires = ["packaging"] [tool.stubtest] # darwin is equivalent to linux for OS-specific methods platforms = ["linux", "win32"] -stubtest_requirements = ["packaging"]