From 5349827daa8a1de35fbaac7b87b632a12100d2cd Mon Sep 17 00:00:00 2001 From: Avasam Date: Fri, 9 Aug 2024 15:20:30 -0400 Subject: [PATCH 1/2] Configure Ruff/Isort for consistent imports accounting for distutils hack --- ruff.toml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/ruff.toml b/ruff.toml index 09f256d5cb..b55b4e8067 100644 --- a/ruff.toml +++ b/ruff.toml @@ -14,6 +14,7 @@ extend-select = [ "ANN2", # missing-return-type-* "FA", # flake8-future-annotations "F404", # late-future-import + "I", # isort "PYI", # flake8-pyi "UP", # pyupgrade "TRY", @@ -56,6 +57,16 @@ ignore = [ "setuptools/__init__.py" = ["E402"] "pkg_resources/__init__.py" = ["E402"] +[lint.isort] +combine-as-imports = true +split-on-trailing-comma = false +# Force Ruff/isort to always import setuptools before distutils in tests as long as distutils_hack is supported +# This also ensures _distutils_hack is imported before distutils +# https://github.com/pypa/setuptools/issues/4137 +section-order = ["future", "standard-library", "eager", "third-party", "first-party", "local-folder", "delayed"] +sections.eager = ["_distutils_hack"] +sections.delayed = ["distutils"] + [lint.flake8-annotations] ignore-fully-untyped = true From 9081bcf14925cb6575a03184737ae79247acb3e8 Mon Sep 17 00:00:00 2001 From: Avasam Date: Fri, 9 Aug 2024 15:21:19 -0400 Subject: [PATCH 2/2] Apply Ruff/Isort --- _distutils_hack/__init__.py | 3 +- conftest.py | 1 - pkg_resources/__init__.py | 76 ++++++------- .../tests/test_find_distributions.py | 5 +- pkg_resources/tests/test_pkg_resources.py | 23 ++-- pkg_resources/tests/test_resources.py | 18 ++-- pkg_resources/tests/test_working_set.py | 2 +- setuptools/__init__.py | 10 +- setuptools/_core_metadata.py | 7 +- setuptools/_entry_points.py | 9 +- setuptools/_imp.py | 6 +- setuptools/_importlib.py | 1 - setuptools/_path.py | 3 +- setuptools/_reqs.py | 3 +- setuptools/archive_util.py | 11 +- setuptools/build_meta.py | 14 +-- setuptools/command/__init__.py | 3 +- setuptools/command/_requirestxt.py | 2 +- setuptools/command/alias.py | 4 +- setuptools/command/bdist_egg.py | 15 +-- setuptools/command/bdist_rpm.py | 4 +- setuptools/command/bdist_wheel.py | 11 +- setuptools/command/build.py | 1 + setuptools/command/build_clib.py | 2 +- setuptools/command/build_ext.py | 16 +-- setuptools/command/build_py.py | 15 +-- setuptools/command/develop.py | 15 ++- setuptools/command/dist_info.py | 5 +- setuptools/command/easy_install.py | 102 +++++++++--------- setuptools/command/editable_wheel.py | 28 +---- setuptools/command/egg_info.py | 33 +++--- setuptools/command/install.py | 10 +- setuptools/command/install_egg_info.py | 7 +- setuptools/command/install_lib.py | 5 +- setuptools/command/install_scripts.py | 6 +- setuptools/command/register.py | 6 +- setuptools/command/rotate.py | 7 +- setuptools/command/sdist.py | 7 +- setuptools/command/setopt.py | 13 +-- setuptools/command/upload.py | 6 +- setuptools/command/upload_docs.py | 18 ++-- setuptools/compat/py310.py | 1 - setuptools/compat/py311.py | 4 +- setuptools/config/_apply_pyprojecttoml.py | 19 ++-- setuptools/config/expand.py | 21 ++-- setuptools/config/pyprojecttoml.py | 6 +- setuptools/config/setupcfg.py | 14 +-- setuptools/depends.py | 9 +- setuptools/discovery.py | 8 +- setuptools/dist.py | 30 +++--- setuptools/errors.py | 1 - setuptools/extension.py | 10 +- setuptools/glob.py | 2 +- setuptools/installer.py | 7 +- setuptools/launch.py | 2 +- setuptools/logging.py | 6 +- setuptools/modified.py | 2 +- setuptools/monkey.py | 1 - setuptools/msvc.py | 13 +-- setuptools/namespaces.py | 4 +- setuptools/package_index.py | 46 ++++---- setuptools/sandbox.py | 19 ++-- setuptools/tests/__init__.py | 1 - setuptools/tests/compat/py39.py | 1 - setuptools/tests/config/downloads/preload.py | 1 - .../tests/config/test_apply_pyprojecttoml.py | 9 +- setuptools/tests/config/test_expand.py | 3 +- setuptools/tests/config/test_pyprojecttoml.py | 7 +- setuptools/tests/config/test_setupcfg.py | 8 +- setuptools/tests/contexts.py | 8 +- setuptools/tests/environment.py | 4 +- setuptools/tests/fixtures.py | 6 +- setuptools/tests/integration/helpers.py | 2 +- setuptools/tests/server.py | 4 +- setuptools/tests/test_archive_util.py | 2 +- setuptools/tests/test_bdist_deprecations.py | 2 +- setuptools/tests/test_bdist_wheel.py | 5 +- setuptools/tests/test_build.py | 2 +- setuptools/tests/test_build_clib.py | 5 +- setuptools/tests/test_build_ext.py | 9 +- setuptools/tests/test_build_meta.py | 10 +- setuptools/tests/test_build_py.py | 4 +- setuptools/tests/test_config_discovery.py | 16 +-- setuptools/tests/test_core_metadata.py | 8 +- setuptools/tests/test_develop.py | 10 +- setuptools/tests/test_dist.py | 17 ++- setuptools/tests/test_dist_info.py | 2 +- setuptools/tests/test_distutils_adoption.py | 3 +- setuptools/tests/test_easy_install.py | 36 +++---- setuptools/tests/test_editable_install.py | 18 ++-- setuptools/tests/test_egg_info.py | 13 +-- setuptools/tests/test_extern.py | 3 +- setuptools/tests/test_find_packages.py | 3 +- setuptools/tests/test_find_py_modules.py | 2 +- setuptools/tests/test_install_scripts.py | 1 + setuptools/tests/test_integration.py | 3 +- setuptools/tests/test_logging.py | 4 +- setuptools/tests/test_manifest.py | 14 +-- setuptools/tests/test_msvc14.py | 6 +- setuptools/tests/test_namespaces.py | 2 +- setuptools/tests/test_packageindex.py | 7 +- setuptools/tests/test_register.py | 8 +- setuptools/tests/test_sdist.py | 21 ++-- setuptools/tests/test_setuptools.py | 14 +-- setuptools/tests/test_upload.py | 8 +- setuptools/tests/test_virtualenv.py | 5 +- setuptools/tests/test_warnings.py | 1 - setuptools/tests/test_wheel.py | 16 +-- setuptools/tests/test_windows_wrappers.py | 6 +- setuptools/unicode_utils.py | 2 +- setuptools/wheel.py | 11 +- tools/build_launchers.py | 3 +- tools/finalize.py | 3 +- tools/ppc64le-patch.py | 2 +- 114 files changed, 542 insertions(+), 577 deletions(-) diff --git a/_distutils_hack/__init__.py b/_distutils_hack/__init__.py index 35ab5cad49..b05d04e98e 100644 --- a/_distutils_hack/__init__.py +++ b/_distutils_hack/__init__.py @@ -1,7 +1,6 @@ # don't import any costly modules -import sys import os - +import sys report_url = ( "https://github.com/pypa/setuptools/issues/new?" diff --git a/conftest.py b/conftest.py index 532e83112a..01ed2fa2e6 100644 --- a/conftest.py +++ b/conftest.py @@ -2,7 +2,6 @@ import pytest - pytest_plugins = 'setuptools.tests.fixtures' diff --git a/pkg_resources/__init__.py b/pkg_resources/__init__.py index f4206c493d..8bbf249371 100644 --- a/pkg_resources/__init__.py +++ b/pkg_resources/__init__.py @@ -22,68 +22,66 @@ from __future__ import annotations -from abc import ABC import sys +from abc import ABC if sys.version_info < (3, 8): # noqa: UP036 # Check for unsupported versions raise RuntimeError("Python 3.8 or later is required") -import os +import _imp +import collections +import email.parser +import errno +import functools +import importlib +import importlib.abc +import importlib.machinery +import inspect import io -import time +import ntpath +import operator +import os +import pkgutil +import platform +import plistlib +import posixpath import re +import stat +import tempfile +import textwrap +import time import types +import warnings +import zipfile +import zipimport +from pkgutil import get_importer from typing import ( + TYPE_CHECKING, Any, BinaryIO, - Literal, + Callable, Dict, + Iterable, Iterator, + Literal, Mapping, MutableSequence, NamedTuple, NoReturn, - Tuple, - Union, - TYPE_CHECKING, Protocol, - Callable, - Iterable, + Tuple, TypeVar, + Union, overload, ) -import zipfile -import zipimport -import warnings -import stat -import functools -import pkgutil -import operator -import platform -import collections -import plistlib -import email.parser -import errno -import tempfile -import textwrap -import inspect -import ntpath -import posixpath -import importlib -import importlib.abc -import importlib.machinery -from pkgutil import get_importer - -import _imp sys.path.extend(((vendor_path := os.path.join(os.path.dirname(os.path.dirname(__file__)), 'setuptools', '_vendor')) not in sys.path) * [vendor_path]) # fmt: skip # workaround for #4476 sys.modules.pop('backports', None) # capture these to bypass sandboxing -from os import utime -from os import open as os_open -from os.path import isdir, split +from os import open as os_open, utime # isort: skip +from os.path import isdir, split # isort: skip try: from os import mkdir, rename, unlink @@ -93,20 +91,16 @@ # no write support, probably under GAE WRITE_SUPPORT = False -from jaraco.text import ( - yield_lines, - drop_comment, - join_continuation, -) import packaging.markers import packaging.requirements import packaging.specifiers import packaging.utils import packaging.version +from jaraco.text import drop_comment, join_continuation, yield_lines from platformdirs import user_cache_dir as _user_cache_dir if TYPE_CHECKING: - from _typeshed import BytesPath, StrPath, StrOrBytesPath + from _typeshed import BytesPath, StrOrBytesPath, StrPath from typing_extensions import Self, TypeAlias warnings.warn( diff --git a/pkg_resources/tests/test_find_distributions.py b/pkg_resources/tests/test_find_distributions.py index 8263ca6c41..301b36d6cd 100644 --- a/pkg_resources/tests/test_find_distributions.py +++ b/pkg_resources/tests/test_find_distributions.py @@ -1,8 +1,9 @@ -from pathlib import Path import shutil +from pathlib import Path + import pytest -import pkg_resources +import pkg_resources TESTS_DATA_DIR = Path(__file__).parent / 'data' diff --git a/pkg_resources/tests/test_pkg_resources.py b/pkg_resources/tests/test_pkg_resources.py index 424d5ac44b..023adf60b0 100644 --- a/pkg_resources/tests/test_pkg_resources.py +++ b/pkg_resources/tests/test_pkg_resources.py @@ -1,28 +1,23 @@ from __future__ import annotations import builtins -import sys -import tempfile -import os -import zipfile import datetime +import os import plistlib -import subprocess import stat -import distutils.dist -import distutils.command.install_egg_info - +import subprocess +import sys +import tempfile +import zipfile from unittest import mock -from pkg_resources import ( - DistInfoDistribution, - Distribution, - EggInfoDistribution, -) - import pytest import pkg_resources +from pkg_resources import DistInfoDistribution, Distribution, EggInfoDistribution + +import distutils.command.install_egg_info +import distutils.dist class EggRemover(str): diff --git a/pkg_resources/tests/test_resources.py b/pkg_resources/tests/test_resources.py index 9837c2719d..3b67296952 100644 --- a/pkg_resources/tests/test_resources.py +++ b/pkg_resources/tests/test_resources.py @@ -1,23 +1,23 @@ +import itertools import os -import sys -import string import platform -import itertools +import string +import sys import pytest from packaging.specifiers import SpecifierSet import pkg_resources from pkg_resources import ( - parse_requirements, - VersionConflict, - parse_version, Distribution, EntryPoint, Requirement, - safe_version, - safe_name, + VersionConflict, WorkingSet, + parse_requirements, + parse_version, + safe_name, + safe_version, ) @@ -862,8 +862,8 @@ def test_path_order(self, symlinked_tmpdir): (subpkg / '__init__.py').write_text(vers_str % number, encoding='utf-8') with pytest.warns(DeprecationWarning, match="pkg_resources.declare_namespace"): - import nspkg.subpkg import nspkg + import nspkg.subpkg expected = [str(site.realpath() / 'nspkg') for site in site_dirs] assert nspkg.__path__ == expected assert nspkg.subpkg.__version__ == 1 diff --git a/pkg_resources/tests/test_working_set.py b/pkg_resources/tests/test_working_set.py index 57f62b5492..0537bb69a4 100644 --- a/pkg_resources/tests/test_working_set.py +++ b/pkg_resources/tests/test_working_set.py @@ -1,7 +1,7 @@ +import functools import inspect import re import textwrap -import functools import pytest diff --git a/setuptools/__init__.py b/setuptools/__init__.py index 84294edb31..73de2a03d3 100644 --- a/setuptools/__init__.py +++ b/setuptools/__init__.py @@ -2,30 +2,30 @@ from __future__ import annotations -from abc import ABC, abstractmethod import functools import os import re import sys +from abc import ABC, abstractmethod from typing import TYPE_CHECKING, TypeVar, overload - sys.path.extend(((vendor_path := os.path.join(os.path.dirname(os.path.dirname(__file__)), 'setuptools', '_vendor')) not in sys.path) * [vendor_path]) # fmt: skip # workaround for #4476 sys.modules.pop('backports', None) import _distutils_hack.override # noqa: F401 -import distutils.core -from distutils.errors import DistutilsOptionError from . import logging, monkey -from .version import __version__ as __version__ from .depends import Require from .discovery import PackageFinder, PEP420PackageFinder from .dist import Distribution from .extension import Extension +from .version import __version__ as __version__ from .warnings import SetuptoolsDeprecationWarning +import distutils.core +from distutils.errors import DistutilsOptionError + __all__ = [ 'setup', 'Distribution', diff --git a/setuptools/_core_metadata.py b/setuptools/_core_metadata.py index 82ec19fc75..2e9c48a77b 100644 --- a/setuptools/_core_metadata.py +++ b/setuptools/_core_metadata.py @@ -13,15 +13,16 @@ from email.message import Message from tempfile import NamedTemporaryFile -from distutils.util import rfc822_escape - -from . import _normalization, _reqs from packaging.markers import Marker from packaging.requirements import Requirement from packaging.utils import canonicalize_name, canonicalize_version from packaging.version import Version + +from . import _normalization, _reqs from .warnings import SetuptoolsDeprecationWarning +from distutils.util import rfc822_escape + def get_metadata_version(self): mv = getattr(self, 'metadata_version', None) diff --git a/setuptools/_entry_points.py b/setuptools/_entry_points.py index 5de12582be..e785fc7df8 100644 --- a/setuptools/_entry_points.py +++ b/setuptools/_entry_points.py @@ -1,13 +1,14 @@ import functools -import operator import itertools +import operator -from .errors import OptionError -from jaraco.text import yield_lines from jaraco.functools import pass_none +from jaraco.text import yield_lines +from more_itertools import consume + from ._importlib import metadata from ._itertools import ensure_unique -from more_itertools import consume +from .errors import OptionError def ensure_valid(ep): diff --git a/setuptools/_imp.py b/setuptools/_imp.py index 38b146fc4d..bddbf6a683 100644 --- a/setuptools/_imp.py +++ b/setuptools/_imp.py @@ -3,14 +3,12 @@ from the deprecated imp module. """ -import os -import importlib.util import importlib.machinery +import importlib.util +import os import tokenize - from importlib.util import module_from_spec - PY_SOURCE = 1 PY_COMPILED = 2 C_EXTENSION = 3 diff --git a/setuptools/_importlib.py b/setuptools/_importlib.py index b2d5b5b84a..5317be0fa0 100644 --- a/setuptools/_importlib.py +++ b/setuptools/_importlib.py @@ -1,6 +1,5 @@ import sys - if sys.version_info < (3, 10): import importlib_metadata as metadata # pragma: no cover else: diff --git a/setuptools/_path.py b/setuptools/_path.py index bd9378761b..dd4a9db8cb 100644 --- a/setuptools/_path.py +++ b/setuptools/_path.py @@ -3,7 +3,7 @@ import contextlib import os import sys -from typing import Union, TYPE_CHECKING +from typing import TYPE_CHECKING, Union if TYPE_CHECKING: from typing_extensions import TypeAlias @@ -11,7 +11,6 @@ from more_itertools import unique_everseen - if sys.version_info >= (3, 9): StrPath: TypeAlias = Union[str, os.PathLike[str]] # Same as _typeshed.StrPath else: diff --git a/setuptools/_reqs.py b/setuptools/_reqs.py index cdea95fa3d..2d09244b43 100644 --- a/setuptools/_reqs.py +++ b/setuptools/_reqs.py @@ -1,7 +1,8 @@ from __future__ import annotations from functools import lru_cache -from typing import Callable, Iterable, Iterator, TypeVar, Union, overload, TYPE_CHECKING +from typing import TYPE_CHECKING, Callable, Iterable, Iterator, TypeVar, Union, overload + import jaraco.text as text from packaging.requirements import Requirement diff --git a/setuptools/archive_util.py b/setuptools/archive_util.py index 6b8460bd92..e4acd75f9b 100644 --- a/setuptools/archive_util.py +++ b/setuptools/archive_util.py @@ -1,15 +1,16 @@ """Utilities for extracting common archive formats""" -import zipfile -import tarfile +import contextlib import os -import shutil import posixpath -import contextlib -from distutils.errors import DistutilsError +import shutil +import tarfile +import zipfile from ._path import ensure_directory +from distutils.errors import DistutilsError + __all__ = [ "unpack_archive", "unpack_zipfile", diff --git a/setuptools/build_meta.py b/setuptools/build_meta.py index d8ab28be74..7663306862 100644 --- a/setuptools/build_meta.py +++ b/setuptools/build_meta.py @@ -28,24 +28,26 @@ from __future__ import annotations +import contextlib import io import os import shlex -import sys -import tokenize import shutil -import contextlib +import sys import tempfile +import tokenize import warnings from pathlib import Path -from typing import TYPE_CHECKING, Dict, Iterator, List, Union, Iterable +from typing import TYPE_CHECKING, Dict, Iterable, Iterator, List, Union import setuptools -import distutils + from . import errors -from ._path import same_path, StrPath +from ._path import StrPath, same_path from ._reqs import parse_strings from .warnings import SetuptoolsDeprecationWarning + +import distutils from distutils.util import strtobool if TYPE_CHECKING: diff --git a/setuptools/command/__init__.py b/setuptools/command/__init__.py index 5acd7687d6..bf011e896d 100644 --- a/setuptools/command/__init__.py +++ b/setuptools/command/__init__.py @@ -1,6 +1,7 @@ -from distutils.command.bdist import bdist import sys +from distutils.command.bdist import bdist + if 'egg' not in bdist.format_commands: try: bdist.format_commands['egg'] = ('bdist_egg', "Python .egg file") diff --git a/setuptools/command/_requirestxt.py b/setuptools/command/_requirestxt.py index ef35d183e8..b87476d6f4 100644 --- a/setuptools/command/_requirestxt.py +++ b/setuptools/command/_requirestxt.py @@ -14,10 +14,10 @@ from itertools import filterfalse from typing import Dict, Mapping, TypeVar -from .. import _reqs from jaraco.text import yield_lines from packaging.requirements import Requirement +from .. import _reqs # dict can work as an ordered set _T = TypeVar("_T") diff --git a/setuptools/command/alias.py b/setuptools/command/alias.py index e7b4d5456a..4eed652381 100644 --- a/setuptools/command/alias.py +++ b/setuptools/command/alias.py @@ -1,6 +1,6 @@ -from distutils.errors import DistutilsOptionError +from setuptools.command.setopt import config_file, edit_config, option_base -from setuptools.command.setopt import edit_config, option_base, config_file +from distutils.errors import DistutilsOptionError def shquote(arg): diff --git a/setuptools/command/bdist_egg.py b/setuptools/command/bdist_egg.py index 559f7d6032..f3b7150208 100644 --- a/setuptools/command/bdist_egg.py +++ b/setuptools/command/bdist_egg.py @@ -2,20 +2,21 @@ Build .egg distributions""" -from distutils.dir_util import remove_tree, mkpath -from distutils import log -from types import CodeType -import sys +import marshal import os import re +import sys import textwrap -import marshal +from sysconfig import get_path, get_python_version +from types import CodeType -from setuptools.extension import Library from setuptools import Command +from setuptools.extension import Library + from .._path import ensure_directory -from sysconfig import get_path, get_python_version +from distutils import log +from distutils.dir_util import mkpath, remove_tree def _get_purelib(): diff --git a/setuptools/command/bdist_rpm.py b/setuptools/command/bdist_rpm.py index 70ed6b6097..abf2b88bfc 100644 --- a/setuptools/command/bdist_rpm.py +++ b/setuptools/command/bdist_rpm.py @@ -1,7 +1,7 @@ -import distutils.command.bdist_rpm as orig - from ..warnings import SetuptoolsDeprecationWarning +import distutils.command.bdist_rpm as orig + class bdist_rpm(orig.bdist_rpm): """ diff --git a/setuptools/command/bdist_wheel.py b/setuptools/command/bdist_wheel.py index de6440f22f..eca5568aad 100644 --- a/setuptools/command/bdist_wheel.py +++ b/setuptools/command/bdist_wheel.py @@ -16,19 +16,20 @@ import warnings from email.generator import BytesGenerator, Generator from email.policy import EmailPolicy -from distutils import log from glob import iglob from shutil import rmtree from typing import TYPE_CHECKING, Callable, Iterable, Literal, Sequence, cast from zipfile import ZIP_DEFLATED, ZIP_STORED -from .. import Command, __version__ -from .egg_info import egg_info as egg_info_cls +from packaging import tags, version as _packaging_version from wheel.metadata import pkginfo_to_metadata -from packaging import tags -from packaging import version as _packaging_version from wheel.wheelfile import WheelFile +from .. import Command, __version__ +from .egg_info import egg_info as egg_info_cls + +from distutils import log + if TYPE_CHECKING: from _typeshed import ExcInfo diff --git a/setuptools/command/build.py b/setuptools/command/build.py index bc765a17ae..fd53fae8ca 100644 --- a/setuptools/command/build.py +++ b/setuptools/command/build.py @@ -1,6 +1,7 @@ from __future__ import annotations from typing import Protocol + from distutils.command.build import build as _build _ORIGINAL_SUBCOMMANDS = {"build_py", "build_clib", "build_ext", "build_scripts"} diff --git a/setuptools/command/build_clib.py b/setuptools/command/build_clib.py index acd4d1d3ba..5366b0c5c6 100644 --- a/setuptools/command/build_clib.py +++ b/setuptools/command/build_clib.py @@ -1,6 +1,6 @@ import distutils.command.build_clib as orig -from distutils.errors import DistutilsSetupError from distutils import log +from distutils.errors import DistutilsSetupError try: from distutils._modified import newer_pairwise_group diff --git a/setuptools/command/build_ext.py b/setuptools/command/build_ext.py index 0a2af0dd53..51c1771a33 100644 --- a/setuptools/command/build_ext.py +++ b/setuptools/command/build_ext.py @@ -1,24 +1,26 @@ from __future__ import annotations +import itertools import os import sys -import itertools from importlib.machinery import EXTENSION_SUFFIXES from importlib.util import cache_from_source as _compiled_file_name -from typing import Iterator from pathlib import Path - -from distutils.ccompiler import new_compiler -from distutils.sysconfig import customize_compiler, get_config_var -from distutils import log +from typing import Iterator from setuptools.dist import Distribution from setuptools.errors import BaseError from setuptools.extension import Extension, Library +from distutils import log +from distutils.ccompiler import new_compiler +from distutils.sysconfig import customize_compiler, get_config_var + try: # Attempt to use Cython for building extensions, if available - from Cython.Distutils.build_ext import build_ext as _build_ext # type: ignore[import-not-found] # Cython not installed on CI tests + from Cython.Distutils.build_ext import ( # type: ignore[import-not-found] # Cython not installed on CI tests + build_ext as _build_ext, + ) # Additionally, assert that the compiler module will load # also. Ref #1229. diff --git a/setuptools/command/build_py.py b/setuptools/command/build_py.py index 0cdb64f424..e6d9656f10 100644 --- a/setuptools/command/build_py.py +++ b/setuptools/command/build_py.py @@ -1,15 +1,12 @@ from __future__ import annotations -from functools import partial -from glob import glob -from distutils.util import convert_path -import distutils.command.build_py as orig -import os import fnmatch -import textwrap -import distutils.errors import itertools +import os import stat +import textwrap +from functools import partial +from glob import glob from pathlib import Path from typing import Iterable, Iterator @@ -18,6 +15,10 @@ from ..dist import Distribution from ..warnings import SetuptoolsDeprecationWarning +import distutils.command.build_py as orig +import distutils.errors +from distutils.util import convert_path + _IMPLICIT_DATA_FILES = ('*.pyi', 'py.typed') diff --git a/setuptools/command/develop.py b/setuptools/command/develop.py index 55f24f396c..1938434b3a 100644 --- a/setuptools/command/develop.py +++ b/setuptools/command/develop.py @@ -1,17 +1,16 @@ -from distutils.util import convert_path -from distutils import log -from distutils.errors import DistutilsOptionError -import os import glob +import os -from setuptools.command.easy_install import easy_install -from setuptools import _normalization -from setuptools import _path -from setuptools import namespaces import setuptools +from setuptools import _normalization, _path, namespaces +from setuptools.command.easy_install import easy_install from ..unicode_utils import _read_utf8_with_fallback +from distutils import log +from distutils.errors import DistutilsOptionError +from distutils.util import convert_path + class develop(namespaces.DevelopInstaller, easy_install): """Set up package for development""" diff --git a/setuptools/command/dist_info.py b/setuptools/command/dist_info.py index 2adc1c46f3..1db3fbf6bd 100644 --- a/setuptools/command/dist_info.py +++ b/setuptools/command/dist_info.py @@ -6,14 +6,15 @@ import os import shutil from contextlib import contextmanager -from distutils import log -from distutils.core import Command from pathlib import Path from typing import cast from .. import _normalization from .egg_info import egg_info as egg_info_cls +from distutils import log +from distutils.core import Command + class dist_info(Command): """ diff --git a/setuptools/command/easy_install.py b/setuptools/command/easy_install.py index 74b79d1adc..54d1e48449 100644 --- a/setuptools/command/easy_install.py +++ b/setuptools/command/easy_install.py @@ -12,73 +12,69 @@ from __future__ import annotations -from collections.abc import Iterable -from glob import glob -from distutils.util import get_platform -from distutils.util import convert_path, subst_vars -from distutils.errors import ( - DistutilsArgError, - DistutilsOptionError, - DistutilsError, - DistutilsPlatformError, -) -from distutils import log, dir_util -from distutils.command.build_scripts import first_line_re -from distutils.command import install -import sys +import configparser +import contextlib +import io import os -from typing import TYPE_CHECKING -import zipimport -import shutil -import tempfile -import zipfile -import re -import stat import random -import textwrap -import warnings +import re +import shlex +import shutil import site +import stat import struct -import contextlib import subprocess -import shlex -import io -import configparser +import sys import sysconfig - +import tempfile +import textwrap +import warnings +import zipfile +import zipimport +from collections.abc import Iterable +from glob import glob from sysconfig import get_path +from typing import TYPE_CHECKING -from setuptools import Command -from setuptools.sandbox import run_setup -from setuptools.command import setopt -from setuptools.archive_util import unpack_archive -from setuptools.package_index import ( - PackageIndex, - parse_requirement_arg, - URL_SCHEME, -) -from setuptools.command import bdist_egg, egg_info -from setuptools.warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning -from setuptools.wheel import Wheel +from jaraco.text import yield_lines + +import pkg_resources from pkg_resources import ( - normalize_path, - resource_string, - get_distribution, - find_distributions, - Environment, - Requirement, + DEVELOP_DIST, Distribution, - PathMetadata, - EggMetadata, - WorkingSet, DistributionNotFound, + EggMetadata, + Environment, + PathMetadata, + Requirement, VersionConflict, - DEVELOP_DIST, + WorkingSet, + find_distributions, + get_distribution, + normalize_path, + resource_string, ) -import pkg_resources -from ..compat import py39, py311 +from setuptools import Command +from setuptools.archive_util import unpack_archive +from setuptools.command import bdist_egg, egg_info, setopt +from setuptools.package_index import URL_SCHEME, PackageIndex, parse_requirement_arg +from setuptools.sandbox import run_setup +from setuptools.warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning +from setuptools.wheel import Wheel + from .._path import ensure_directory -from jaraco.text import yield_lines +from ..compat import py39, py311 + +from distutils import dir_util, log +from distutils.command import install +from distutils.command.build_scripts import first_line_re +from distutils.errors import ( + DistutilsArgError, + DistutilsError, + DistutilsOptionError, + DistutilsPlatformError, +) +from distutils.util import convert_path, get_platform, subst_vars if TYPE_CHECKING: from typing_extensions import Self diff --git a/setuptools/command/editable_wheel.py b/setuptools/command/editable_wheel.py index abc7b9f2c8..46852c1a94 100644 --- a/setuptools/command/editable_wheel.py +++ b/setuptools/command/editable_wheel.py @@ -12,8 +12,8 @@ from __future__ import annotations -import logging import io +import logging import os import shutil import traceback @@ -23,32 +23,14 @@ from itertools import chain, starmap from pathlib import Path from tempfile import TemporaryDirectory -from typing import ( - TYPE_CHECKING, - Iterable, - Iterator, - Mapping, - Protocol, - TypeVar, - cast, -) - -from .. import ( - Command, - _normalization, - _path, - errors, - namespaces, -) +from typing import TYPE_CHECKING, Iterable, Iterator, Mapping, Protocol, TypeVar, cast + +from .. import Command, _normalization, _path, errors, namespaces from .._path import StrPath from ..compat import py39 from ..discovery import find_package_path from ..dist import Distribution -from ..warnings import ( - InformationOnly, - SetuptoolsDeprecationWarning, - SetuptoolsWarning, -) +from ..warnings import InformationOnly, SetuptoolsDeprecationWarning, SetuptoolsWarning from .build import build as build_cls from .build_py import build_py as build_py_cls from .dist_info import dist_info as dist_info_cls diff --git a/setuptools/command/egg_info.py b/setuptools/command/egg_info.py index 8a2d42ea04..794ecd3dc3 100644 --- a/setuptools/command/egg_info.py +++ b/setuptools/command/egg_info.py @@ -2,35 +2,36 @@ Create a distribution's .egg-info directory and contents""" -from distutils.filelist import FileList as _FileList -from distutils.errors import DistutilsInternalError -from distutils.util import convert_path -from distutils import log -import distutils.errors -import distutils.filelist +import collections import functools import os import re import sys import time -import collections -from .._importlib import metadata -from .. import _entry_points, _normalization -from . import _requirestxt +import packaging +import packaging.requirements +import packaging.version +import setuptools.unicode_utils as unicode_utils from setuptools import Command -from setuptools.command.sdist import sdist -from setuptools.command.sdist import walk_revctrl -from setuptools.command.setopt import edit_config from setuptools.command import bdist_egg +from setuptools.command.sdist import sdist, walk_revctrl +from setuptools.command.setopt import edit_config from setuptools.dist import Distribution -import setuptools.unicode_utils as unicode_utils from setuptools.glob import glob -import packaging.requirements -import packaging.version +from .. import _entry_points, _normalization +from .._importlib import metadata from ..warnings import SetuptoolsDeprecationWarning +from . import _requirestxt + +import distutils.errors +import distutils.filelist +from distutils import log +from distutils.errors import DistutilsInternalError +from distutils.filelist import FileList as _FileList +from distutils.util import convert_path PY_MAJOR = '{}.{}'.format(*sys.version_info) diff --git a/setuptools/command/install.py b/setuptools/command/install.py index 12ef06f542..e2ec1abdde 100644 --- a/setuptools/command/install.py +++ b/setuptools/command/install.py @@ -1,18 +1,20 @@ from __future__ import annotations -from collections.abc import Callable -from distutils.errors import DistutilsArgError -import inspect import glob +import inspect import platform -import distutils.command.install as orig +from collections.abc import Callable from typing import Any, ClassVar, cast import setuptools + from ..dist import Distribution from ..warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning from .bdist_egg import bdist_egg as bdist_egg_cls +import distutils.command.install as orig +from distutils.errors import DistutilsArgError + # Prior to numpy 1.9, NumPy relies on the '_install' name, so provide it for # now. See https://github.com/pypa/setuptools/issues/199/ _install = orig.install diff --git a/setuptools/command/install_egg_info.py b/setuptools/command/install_egg_info.py index a1d2e8184f..be47254f00 100644 --- a/setuptools/command/install_egg_info.py +++ b/setuptools/command/install_egg_info.py @@ -1,11 +1,12 @@ -from distutils import log, dir_util import os -from setuptools import Command -from setuptools import namespaces +from setuptools import Command, namespaces from setuptools.archive_util import unpack_archive + from .._path import ensure_directory +from distutils import dir_util, log + class install_egg_info(namespaces.Installer, Command): """Install an .egg-info directory for the package""" diff --git a/setuptools/command/install_lib.py b/setuptools/command/install_lib.py index d1577384df..292f07ab6e 100644 --- a/setuptools/command/install_lib.py +++ b/setuptools/command/install_lib.py @@ -1,12 +1,14 @@ from __future__ import annotations + import os import sys from itertools import product, starmap -import distutils.command.install_lib as orig from .._path import StrPath from ..dist import Distribution +import distutils.command.install_lib as orig + class install_lib(orig.install_lib): """Don't add compiled flags to filenames of non-Python files""" @@ -107,6 +109,7 @@ def copy_tree( # Exclude namespace package __init__.py* files from the output from setuptools.archive_util import unpack_directory + from distutils import log outfiles: list[str] = [] diff --git a/setuptools/command/install_scripts.py b/setuptools/command/install_scripts.py index fa5de91f46..7b90611d1c 100644 --- a/setuptools/command/install_scripts.py +++ b/setuptools/command/install_scripts.py @@ -1,13 +1,14 @@ from __future__ import annotations -from distutils import log -import distutils.command.install_scripts as orig import os import sys from .._path import ensure_directory from ..dist import Distribution +import distutils.command.install_scripts as orig +from distutils import log + class install_scripts(orig.install_scripts): """Do normal script install, plus any egg_info wrapper scripts""" @@ -32,6 +33,7 @@ def run(self) -> None: def _install_ep_scripts(self): # Delay import side-effects from pkg_resources import Distribution, PathMetadata + from . import easy_install as ei ei_cmd = self.get_finalized_command("egg_info") diff --git a/setuptools/command/register.py b/setuptools/command/register.py index beee9782e7..575790e5f2 100644 --- a/setuptools/command/register.py +++ b/setuptools/command/register.py @@ -1,8 +1,8 @@ -from distutils import log -import distutils.command.register as orig - from setuptools.errors import RemovedCommandError +import distutils.command.register as orig +from distutils import log + class register(orig.register): """Formerly used to register packages on PyPI.""" diff --git a/setuptools/command/rotate.py b/setuptools/command/rotate.py index 064d7959ff..dcdfafbcf7 100644 --- a/setuptools/command/rotate.py +++ b/setuptools/command/rotate.py @@ -1,13 +1,14 @@ from __future__ import annotations -from distutils.util import convert_path -from distutils import log -from distutils.errors import DistutilsOptionError import os import shutil from setuptools import Command +from distutils import log +from distutils.errors import DistutilsOptionError +from distutils.util import convert_path + class rotate(Command): """Delete older distributions""" diff --git a/setuptools/command/sdist.py b/setuptools/command/sdist.py index ca0f712792..23393c0797 100644 --- a/setuptools/command/sdist.py +++ b/setuptools/command/sdist.py @@ -1,13 +1,14 @@ -from distutils import log -import distutils.command.sdist as orig -import os import contextlib +import os from itertools import chain from .._importlib import metadata from ..dist import Distribution from .build import _ORIGINAL_SUBCOMMANDS +import distutils.command.sdist as orig +from distutils import log + _default_revctrl = list diff --git a/setuptools/command/setopt.py b/setuptools/command/setopt.py index 3d8181d2fa..b2653bd466 100644 --- a/setuptools/command/setopt.py +++ b/setuptools/command/setopt.py @@ -1,14 +1,15 @@ -from abc import ABC -from distutils.util import convert_path -from distutils import log -from distutils.errors import DistutilsOptionError -import distutils -import os import configparser +import os +from abc import ABC from .. import Command from ..unicode_utils import _cfg_read_utf8_with_fallback +import distutils +from distutils import log +from distutils.errors import DistutilsOptionError +from distutils.util import convert_path + __all__ = ['config_file', 'edit_config', 'option_base', 'setopt'] diff --git a/setuptools/command/upload.py b/setuptools/command/upload.py index e05c82ae0f..649b41fa30 100644 --- a/setuptools/command/upload.py +++ b/setuptools/command/upload.py @@ -1,9 +1,9 @@ -from distutils import log -from distutils.command import upload as orig - from setuptools.dist import Distribution from setuptools.errors import RemovedCommandError +from distutils import log +from distutils.command import upload as orig + class upload(orig.upload): """Formerly used to upload packages to PyPI.""" diff --git a/setuptools/command/upload_docs.py b/setuptools/command/upload_docs.py index 32c9abd796..3c2946cfc8 100644 --- a/setuptools/command/upload_docs.py +++ b/setuptools/command/upload_docs.py @@ -4,23 +4,23 @@ sites other than PyPi such as devpi). """ -from base64 import standard_b64encode -from distutils import log -from distutils.errors import DistutilsOptionError -import os -import zipfile -import tempfile -import shutil -import itertools import functools import http.client +import itertools +import os +import shutil +import tempfile import urllib.parse +import zipfile +from base64 import standard_b64encode from .._importlib import metadata from ..warnings import SetuptoolsDeprecationWarning - from .upload import upload +from distutils import log +from distutils.errors import DistutilsOptionError + def _encode(s): return s.encode('utf-8', 'surrogateescape') diff --git a/setuptools/compat/py310.py b/setuptools/compat/py310.py index cc875c004b..b3912f8e02 100644 --- a/setuptools/compat/py310.py +++ b/setuptools/compat/py310.py @@ -1,6 +1,5 @@ import sys - __all__ = ['tomllib'] diff --git a/setuptools/compat/py311.py b/setuptools/compat/py311.py index cd5abc5407..52b58af32a 100644 --- a/setuptools/compat/py311.py +++ b/setuptools/compat/py311.py @@ -2,10 +2,10 @@ import shutil import sys -from typing import Any, Callable, TYPE_CHECKING +from typing import TYPE_CHECKING, Any, Callable if TYPE_CHECKING: - from _typeshed import StrOrBytesPath, ExcInfo + from _typeshed import ExcInfo, StrOrBytesPath from typing_extensions import TypeAlias # Same as shutil._OnExcCallback from typeshed diff --git a/setuptools/config/_apply_pyprojecttoml.py b/setuptools/config/_apply_pyprojecttoml.py index 20f36e85aa..8224a02631 100644 --- a/setuptools/config/_apply_pyprojecttoml.py +++ b/setuptools/config/_apply_pyprojecttoml.py @@ -17,23 +17,19 @@ from inspect import cleandoc from itertools import chain from types import MappingProxyType -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Dict, - Mapping, - Union, -) +from typing import TYPE_CHECKING, Any, Callable, Dict, Mapping, Union + from .._path import StrPath from ..errors import RemovedConfigError from ..warnings import SetuptoolsWarning if TYPE_CHECKING: - from distutils.dist import _OptionsList + from typing_extensions import TypeAlias + from setuptools._importlib import metadata from setuptools.dist import Distribution - from typing_extensions import TypeAlias + + from distutils.dist import _OptionsList EMPTY: Mapping = MappingProxyType({}) # Immutable dict-like _ProjectReadmeValue: TypeAlias = Union[str, Dict[str, str]] @@ -262,9 +258,10 @@ def _copy_command_options(pyproject: dict, dist: Distribution, filename: StrPath def _valid_command_options(cmdclass: Mapping = EMPTY) -> dict[str, set[str]]: - from .._importlib import metadata from setuptools.dist import Distribution + from .._importlib import metadata + valid_options = {"global": _normalise_cmd_options(Distribution.global_options)} unloaded_entry_points = metadata.entry_points(group='distutils.commands') diff --git a/setuptools/config/expand.py b/setuptools/config/expand.py index de6339fa42..dfee1c5d37 100644 --- a/setuptools/config/expand.py +++ b/setuptools/config/expand.py @@ -25,28 +25,20 @@ import os import pathlib import sys -from glob import iglob from configparser import ConfigParser +from glob import iglob from importlib.machinery import ModuleSpec, all_suffixes from itertools import chain -from typing import ( - TYPE_CHECKING, - Any, - Callable, - Iterable, - Iterator, - Mapping, - TypeVar, -) from pathlib import Path from types import ModuleType +from typing import TYPE_CHECKING, Any, Callable, Iterable, Iterator, Mapping, TypeVar -from distutils.errors import DistutilsOptionError - -from .._path import same_path as _same_path, StrPath +from .._path import StrPath, same_path as _same_path from ..discovery import find_package_path from ..warnings import SetuptoolsWarning +from distutils.errors import DistutilsOptionError + if TYPE_CHECKING: from setuptools.dist import Distribution @@ -287,8 +279,9 @@ def find_packages( :rtype: list """ + from more_itertools import always_iterable, unique_everseen + from setuptools.discovery import construct_package_dir - from more_itertools import unique_everseen, always_iterable if namespaces: from setuptools.discovery import PEP420PackageFinder as PackageFinder diff --git a/setuptools/config/pyprojecttoml.py b/setuptools/config/pyprojecttoml.py index b7d521b7ad..943b9f5a00 100644 --- a/setuptools/config/pyprojecttoml.py +++ b/setuptools/config/pyprojecttoml.py @@ -21,13 +21,13 @@ from ..errors import FileError, InvalidConfigError from ..warnings import SetuptoolsWarning from . import expand as _expand -from ._apply_pyprojecttoml import _PREVIOUSLY_DEFINED, _MissingDynamic -from ._apply_pyprojecttoml import apply as _apply +from ._apply_pyprojecttoml import _PREVIOUSLY_DEFINED, _MissingDynamic, apply as _apply if TYPE_CHECKING: - from setuptools.dist import Distribution from typing_extensions import Self + from setuptools.dist import Distribution + _logger = logging.getLogger(__name__) diff --git a/setuptools/config/setupcfg.py b/setuptools/config/setupcfg.py index 5a3b7478a0..e825477043 100644 --- a/setuptools/config/setupcfg.py +++ b/setuptools/config/setupcfg.py @@ -15,12 +15,11 @@ import functools import os from collections import defaultdict -from functools import partial -from functools import wraps +from functools import partial, wraps from typing import ( TYPE_CHECKING, - Callable, Any, + Callable, Dict, Generic, Iterable, @@ -30,20 +29,21 @@ Union, ) -from .._path import StrPath -from ..errors import FileError, OptionError from packaging.markers import default_environment as marker_env from packaging.requirements import InvalidRequirement, Requirement from packaging.specifiers import SpecifierSet from packaging.version import InvalidVersion, Version + +from .._path import StrPath +from ..errors import FileError, OptionError from ..warnings import SetuptoolsDeprecationWarning from . import expand if TYPE_CHECKING: - from distutils.dist import DistributionMetadata - from setuptools.dist import Distribution + from distutils.dist import DistributionMetadata + SingleCommandOptions = Dict["str", Tuple["str", Any]] """Dict that associate the name of the options of a particular command to a tuple. The first element of the tuple indicates the origin of the option value diff --git a/setuptools/depends.py b/setuptools/depends.py index 871a0925ef..9398b95331 100644 --- a/setuptools/depends.py +++ b/setuptools/depends.py @@ -1,13 +1,12 @@ -import sys -import marshal import contextlib import dis +import marshal +import sys - -from . import _imp -from ._imp import find_module, PY_COMPILED, PY_FROZEN, PY_SOURCE from packaging.version import Version +from . import _imp +from ._imp import PY_COMPILED, PY_FROZEN, PY_SOURCE, find_module __all__ = ['Require', 'find_module'] diff --git a/setuptools/discovery.py b/setuptools/discovery.py index 3179852c69..577be2f16b 100644 --- a/setuptools/discovery.py +++ b/setuptools/discovery.py @@ -44,16 +44,12 @@ from fnmatch import fnmatchcase from glob import glob from pathlib import Path -from typing import ( - TYPE_CHECKING, - Iterable, - Iterator, - Mapping, -) +from typing import TYPE_CHECKING, Iterable, Iterator, Mapping import _distutils_hack.override # noqa: F401 from ._path import StrPath + from distutils import log from distutils.util import convert_path diff --git a/setuptools/dist.py b/setuptools/dist.py index 03017e56e1..b2250e3476 100644 --- a/setuptools/dist.py +++ b/setuptools/dist.py @@ -10,31 +10,33 @@ from pathlib import Path from typing import TYPE_CHECKING, MutableMapping -import distutils.cmd -import distutils.command -import distutils.core -import distutils.dist -import distutils.log -from distutils.debug import DEBUG -from distutils.errors import DistutilsOptionError, DistutilsSetupError -from distutils.fancy_getopt import translate_longopt -from distutils.util import strtobool - from more_itertools import partition, unique_everseen from ordered_set import OrderedSet from packaging.markers import InvalidMarker, Marker from packaging.specifiers import InvalidSpecifier, SpecifierSet from packaging.version import Version -from . import _entry_points -from . import _reqs -from . import command as _ # noqa -- imported for side-effects +from . import ( + _entry_points, + _reqs, + command as _, # noqa: F401 # imported for side-effects +) from ._importlib import metadata -from .config import setupcfg, pyprojecttoml +from .config import pyprojecttoml, setupcfg from .discovery import ConfigDiscovery from .monkey import get_unpatched from .warnings import InformationOnly, SetuptoolsDeprecationWarning +import distutils.cmd +import distutils.command +import distutils.core +import distutils.dist +import distutils.log +from distutils.debug import DEBUG +from distutils.errors import DistutilsOptionError, DistutilsSetupError +from distutils.fancy_getopt import translate_longopt +from distutils.util import strtobool + __all__ = ['Distribution'] sequence = tuple, list diff --git a/setuptools/errors.py b/setuptools/errors.py index 67a5a1df10..dd4e58e9fc 100644 --- a/setuptools/errors.py +++ b/setuptools/errors.py @@ -5,7 +5,6 @@ from distutils import errors as _distutils_errors - # Re-export errors from distutils to facilitate the migration to PEP632 ByteCompileError = _distutils_errors.DistutilsByteCompileError diff --git a/setuptools/extension.py b/setuptools/extension.py index 96d392ef2b..b9fff2367f 100644 --- a/setuptools/extension.py +++ b/setuptools/extension.py @@ -1,13 +1,15 @@ from __future__ import annotations -import re + import functools -import distutils.core -import distutils.errors -import distutils.extension +import re from typing import TYPE_CHECKING from .monkey import get_unpatched +import distutils.core +import distutils.errors +import distutils.extension + def _have_cython(): """ diff --git a/setuptools/glob.py b/setuptools/glob.py index a184c0b643..ffe0ae92cb 100644 --- a/setuptools/glob.py +++ b/setuptools/glob.py @@ -6,9 +6,9 @@ * Hidden files are not ignored. """ +import fnmatch import os import re -import fnmatch __all__ = ["glob", "iglob", "escape"] diff --git a/setuptools/installer.py b/setuptools/installer.py index a6aff723c2..ce3559cd93 100644 --- a/setuptools/installer.py +++ b/setuptools/installer.py @@ -3,13 +3,14 @@ import subprocess import sys import tempfile -from distutils import log -from distutils.errors import DistutilsError from functools import partial from . import _reqs -from .wheel import Wheel from .warnings import SetuptoolsDeprecationWarning +from .wheel import Wheel + +from distutils import log +from distutils.errors import DistutilsError def _fixup_find_links(find_links): diff --git a/setuptools/launch.py b/setuptools/launch.py index 0208fdf33b..56c7d035f1 100644 --- a/setuptools/launch.py +++ b/setuptools/launch.py @@ -6,8 +6,8 @@ # Note that setuptools gets imported implicitly by the # invocation of this script using python -m setuptools.launch -import tokenize import sys +import tokenize def run(): diff --git a/setuptools/logging.py b/setuptools/logging.py index ceca99ca76..e9674c5a81 100644 --- a/setuptools/logging.py +++ b/setuptools/logging.py @@ -1,9 +1,11 @@ -import sys import inspect import logging -import distutils.log +import sys + from . import monkey +import distutils.log + def _not_warning(record): return record.levelno < logging.WARNING diff --git a/setuptools/modified.py b/setuptools/modified.py index af6ceeac89..245a61580b 100644 --- a/setuptools/modified.py +++ b/setuptools/modified.py @@ -1,7 +1,7 @@ from ._distutils._modified import ( newer, - newer_pairwise, newer_group, + newer_pairwise, newer_pairwise_group, ) diff --git a/setuptools/monkey.py b/setuptools/monkey.py index e513f95245..abcc2755be 100644 --- a/setuptools/monkey.py +++ b/setuptools/monkey.py @@ -14,7 +14,6 @@ import distutils.filelist - _T = TypeVar("_T") __all__: list[str] = [] diff --git a/setuptools/msvc.py b/setuptools/msvc.py index 2768059213..ca332d59aa 100644 --- a/setuptools/msvc.py +++ b/setuptools/msvc.py @@ -13,19 +13,20 @@ from __future__ import annotations -import json -from os import listdir, pathsep -from os.path import join, isfile, isdir, dirname -from subprocess import CalledProcessError import contextlib -import platform import itertools +import json +import platform import subprocess -import distutils.errors +from os import listdir, pathsep +from os.path import dirname, isdir, isfile, join +from subprocess import CalledProcessError from typing import TYPE_CHECKING from more_itertools import unique_everseen +import distutils.errors + # https://github.com/python/mypy/issues/8166 if not TYPE_CHECKING and platform.system() == 'Windows': import winreg diff --git a/setuptools/namespaces.py b/setuptools/namespaces.py index 2f2c1cfbe1..e82439e3ef 100644 --- a/setuptools/namespaces.py +++ b/setuptools/namespaces.py @@ -1,9 +1,9 @@ -import os -from distutils import log import itertools +import os from .compat import py39 +from distutils import log flatten = itertools.chain.from_iterable diff --git a/setuptools/package_index.py b/setuptools/package_index.py index c24c783762..a66cbb2e61 100644 --- a/setuptools/package_index.py +++ b/setuptools/package_index.py @@ -1,49 +1,49 @@ """PyPI and direct package downloading.""" -import sys -import subprocess -import os -import re -import io -import shutil -import socket import base64 -import hashlib -import itertools import configparser +import hashlib import html import http.client +import io +import itertools +import os +import re +import shutil +import socket +import subprocess +import sys +import urllib.error import urllib.parse import urllib.request -import urllib.error +from fnmatch import translate from functools import wraps +from more_itertools import unique_everseen + import setuptools from pkg_resources import ( - CHECKOUT_DIST, - Distribution, BINARY_DIST, - normalize_path, + CHECKOUT_DIST, + DEVELOP_DIST, + EGG_DIST, SOURCE_DIST, + Distribution, Environment, + Requirement, find_distributions, + normalize_path, + parse_version, safe_name, safe_version, to_filename, - Requirement, - DEVELOP_DIST, - EGG_DIST, - parse_version, ) -from distutils import log -from distutils.errors import DistutilsError -from fnmatch import translate from setuptools.wheel import Wheel -from more_itertools import unique_everseen - -from .unicode_utils import _read_utf8_with_fallback, _cfg_read_utf8_with_fallback +from .unicode_utils import _cfg_read_utf8_with_fallback, _read_utf8_with_fallback +from distutils import log +from distutils.errors import DistutilsError EGG_FRAGMENT = re.compile(r'^egg=([-A-Za-z0-9_.+!]+)$') HREF = re.compile(r"""href\s*=\s*['"]?([^'"> ]+)""", re.I) diff --git a/setuptools/sandbox.py b/setuptools/sandbox.py index 31ba1e3f8d..5ba32a89b3 100644 --- a/setuptools/sandbox.py +++ b/setuptools/sandbox.py @@ -1,22 +1,23 @@ from __future__ import annotations -from abc import ABC -import os -import sys -import tempfile -import operator +import builtins +import contextlib import functools import itertools -import re -import contextlib +import operator +import os import pickle +import re +import sys +import tempfile import textwrap -import builtins +from abc import ABC import pkg_resources -from distutils.errors import DistutilsError from pkg_resources import working_set +from distutils.errors import DistutilsError + if sys.platform.startswith('java'): import org.python.modules.posix.PosixModule as _os else: diff --git a/setuptools/tests/__init__.py b/setuptools/tests/__init__.py index 415ece4234..eb70bfb711 100644 --- a/setuptools/tests/__init__.py +++ b/setuptools/tests/__init__.py @@ -3,7 +3,6 @@ import pytest - __all__ = ['fail_on_ascii'] if sys.version_info >= (3, 11): diff --git a/setuptools/tests/compat/py39.py b/setuptools/tests/compat/py39.py index 9c86065cd2..1fdb9dac1f 100644 --- a/setuptools/tests/compat/py39.py +++ b/setuptools/tests/compat/py39.py @@ -1,4 +1,3 @@ from jaraco.test.cpython import from_test_support, try_import - os_helper = try_import('os_helper') or from_test_support('can_symlink') diff --git a/setuptools/tests/config/downloads/preload.py b/setuptools/tests/config/downloads/preload.py index d559beff33..8eeb5dd75d 100644 --- a/setuptools/tests/config/downloads/preload.py +++ b/setuptools/tests/config/downloads/preload.py @@ -13,7 +13,6 @@ from . import retrieve_file, urls_from_file - if __name__ == "__main__": urls = urls_from_file(Path(sys.argv[1])) list(map(retrieve_file, urls)) diff --git a/setuptools/tests/config/test_apply_pyprojecttoml.py b/setuptools/tests/config/test_apply_pyprojecttoml.py index 6650a657d3..156823533a 100644 --- a/setuptools/tests/config/test_apply_pyprojecttoml.py +++ b/setuptools/tests/config/test_apply_pyprojecttoml.py @@ -15,20 +15,17 @@ import pytest from ini2toml.api import LiteTranslator - from packaging.metadata import Metadata import setuptools # noqa ensure monkey patch to metadata -from setuptools.dist import Distribution -from setuptools.config import setupcfg, pyprojecttoml -from setuptools.config import expand -from setuptools.config._apply_pyprojecttoml import _MissingDynamic, _some_attrgetter from setuptools.command.egg_info import write_requirements +from setuptools.config import expand, pyprojecttoml, setupcfg +from setuptools.config._apply_pyprojecttoml import _MissingDynamic, _some_attrgetter +from setuptools.dist import Distribution from setuptools.errors import RemovedConfigError from .downloads import retrieve_file, urls_from_file - HERE = Path(__file__).parent EXAMPLES_FILE = "setupcfg_examples.txt" diff --git a/setuptools/tests/config/test_expand.py b/setuptools/tests/config/test_expand.py index b309a1ce7c..f51d2008d0 100644 --- a/setuptools/tests/config/test_expand.py +++ b/setuptools/tests/config/test_expand.py @@ -4,10 +4,11 @@ import pytest -from distutils.errors import DistutilsOptionError from setuptools.config import expand from setuptools.discovery import find_package_path +from distutils.errors import DistutilsOptionError + def write_files(files, root_dir): for file, content in files.items(): diff --git a/setuptools/tests/config/test_pyprojecttoml.py b/setuptools/tests/config/test_pyprojecttoml.py index bf8cae5a24..bb15ce10de 100644 --- a/setuptools/tests/config/test_pyprojecttoml.py +++ b/setuptools/tests/config/test_pyprojecttoml.py @@ -7,18 +7,17 @@ import tomli_w from path import Path +import setuptools # noqa: F401 # force distutils.core to be patched from setuptools.config.pyprojecttoml import ( _ToolsTypoInMetadata, - read_configuration, - expand_configuration, apply_configuration, + expand_configuration, + read_configuration, validate, ) from setuptools.dist import Distribution from setuptools.errors import OptionError - -import setuptools # noqa -- force distutils.core to be patched import distutils.core EXAMPLE = """ diff --git a/setuptools/tests/config/test_setupcfg.py b/setuptools/tests/config/test_setupcfg.py index 0074fe2308..2c50ee2db7 100644 --- a/setuptools/tests/config/test_setupcfg.py +++ b/setuptools/tests/config/test_setupcfg.py @@ -5,14 +5,16 @@ from unittest.mock import Mock, patch import pytest +from packaging.requirements import InvalidRequirement -from distutils.errors import DistutilsOptionError, DistutilsFileError -from setuptools.dist import Distribution, _Distribution from setuptools.config.setupcfg import ConfigHandler, read_configuration -from packaging.requirements import InvalidRequirement +from setuptools.dist import Distribution, _Distribution from setuptools.warnings import SetuptoolsDeprecationWarning + from ..textwrap import DALS +from distutils.errors import DistutilsFileError, DistutilsOptionError + class ErrConfigHandler(ConfigHandler): """Erroneous handler. Fails to implement required methods.""" diff --git a/setuptools/tests/contexts.py b/setuptools/tests/contexts.py index 112cdf4b28..97cceea0e7 100644 --- a/setuptools/tests/contexts.py +++ b/setuptools/tests/contexts.py @@ -1,10 +1,10 @@ -import tempfile +import contextlib +import io import os import shutil -import sys -import contextlib import site -import io +import sys +import tempfile from filelock import FileLock diff --git a/setuptools/tests/environment.py b/setuptools/tests/environment.py index b9de4fda6b..ed5499ef7d 100644 --- a/setuptools/tests/environment.py +++ b/setuptools/tests/environment.py @@ -1,8 +1,8 @@ import os -import sys import subprocess +import sys import unicodedata -from subprocess import Popen as _Popen, PIPE as _PIPE +from subprocess import PIPE as _PIPE, Popen as _Popen import jaraco.envs diff --git a/setuptools/tests/fixtures.py b/setuptools/tests/fixtures.py index a2870f11e1..a5472984b5 100644 --- a/setuptools/tests/fixtures.py +++ b/setuptools/tests/fixtures.py @@ -1,11 +1,11 @@ -import os import contextlib -import sys +import os import subprocess +import sys from pathlib import Path -import pytest import path +import pytest from . import contexts, environment diff --git a/setuptools/tests/integration/helpers.py b/setuptools/tests/integration/helpers.py index 615c43b2e0..77b196e029 100644 --- a/setuptools/tests/integration/helpers.py +++ b/setuptools/tests/integration/helpers.py @@ -8,8 +8,8 @@ import os import subprocess import tarfile -from zipfile import ZipFile from pathlib import Path +from zipfile import ZipFile def run(cmd, env=None): diff --git a/setuptools/tests/server.py b/setuptools/tests/server.py index 8cb735f1e6..15bbc3b1f0 100644 --- a/setuptools/tests/server.py +++ b/setuptools/tests/server.py @@ -1,9 +1,9 @@ """Basic http server for tests to simulate PyPI or custom indexes""" +import http.server import os -import time import threading -import http.server +import time import urllib.parse import urllib.request diff --git a/setuptools/tests/test_archive_util.py b/setuptools/tests/test_archive_util.py index 06d7f05aa0..e3efc62889 100644 --- a/setuptools/tests/test_archive_util.py +++ b/setuptools/tests/test_archive_util.py @@ -1,5 +1,5 @@ -import tarfile import io +import tarfile import pytest diff --git a/setuptools/tests/test_bdist_deprecations.py b/setuptools/tests/test_bdist_deprecations.py index f2b99b053b..d9d67b0616 100644 --- a/setuptools/tests/test_bdist_deprecations.py +++ b/setuptools/tests/test_bdist_deprecations.py @@ -5,8 +5,8 @@ import pytest -from setuptools.dist import Distribution from setuptools import SetuptoolsDeprecationWarning +from setuptools.dist import Distribution @pytest.mark.skipif(sys.platform == 'win32', reason='non-Windows only') diff --git a/setuptools/tests/test_bdist_wheel.py b/setuptools/tests/test_bdist_wheel.py index 3ca277ba15..a1e3d9a73e 100644 --- a/setuptools/tests/test_bdist_wheel.py +++ b/setuptools/tests/test_bdist_wheel.py @@ -16,9 +16,9 @@ import jaraco.path import pytest +from packaging import tags import setuptools -from distutils.core import run_setup from setuptools.command.bdist_wheel import ( bdist_wheel, get_abi_tag, @@ -26,7 +26,8 @@ remove_readonly_exc, ) from setuptools.dist import Distribution -from packaging import tags + +from distutils.core import run_setup DEFAULT_FILES = { "dummy_dist-1.0.dist-info/top_level.txt", diff --git a/setuptools/tests/test_build.py b/setuptools/tests/test_build.py index 141522efd4..f0f1d9dcf2 100644 --- a/setuptools/tests/test_build.py +++ b/setuptools/tests/test_build.py @@ -1,6 +1,6 @@ from setuptools import Command -from setuptools.dist import Distribution from setuptools.command.build import build +from setuptools.dist import Distribution def test_distribution_gives_setuptools_build_obj(tmpdir_cwd): diff --git a/setuptools/tests/test_build_clib.py b/setuptools/tests/test_build_clib.py index 2c5b956c7c..b5315df4f6 100644 --- a/setuptools/tests/test_build_clib.py +++ b/setuptools/tests/test_build_clib.py @@ -1,12 +1,13 @@ +import random from unittest import mock import pytest -import random -from distutils.errors import DistutilsSetupError from setuptools.command.build_clib import build_clib from setuptools.dist import Distribution +from distutils.errors import DistutilsSetupError + class TestBuildCLib: @mock.patch('setuptools.command.build_clib.newer_pairwise_group') diff --git a/setuptools/tests/test_build_ext.py b/setuptools/tests/test_build_ext.py index 943fc6df2f..814fbd86aa 100644 --- a/setuptools/tests/test_build_ext.py +++ b/setuptools/tests/test_build_ext.py @@ -1,21 +1,20 @@ import os import sys -import distutils.command.build_ext as orig -from distutils.sysconfig import get_config_var from importlib.util import cache_from_source as _compiled_file_name +import pytest from jaraco import path from setuptools.command.build_ext import build_ext, get_abi3_suffix from setuptools.dist import Distribution -from setuptools.extension import Extension from setuptools.errors import CompileError +from setuptools.extension import Extension from . import environment from .textwrap import DALS -import pytest - +import distutils.command.build_ext as orig +from distutils.sysconfig import get_config_var IS_PYPY = '__pypy__' in sys.builtin_module_names diff --git a/setuptools/tests/test_build_meta.py b/setuptools/tests/test_build_meta.py index 16f75f8763..c34f711662 100644 --- a/setuptools/tests/test_build_meta.py +++ b/setuptools/tests/test_build_meta.py @@ -1,14 +1,14 @@ +import contextlib +import importlib import os -import sys +import re import shutil import signal +import sys import tarfile -import importlib -import contextlib from concurrent import futures -import re -from zipfile import ZipFile from pathlib import Path +from zipfile import ZipFile import pytest from jaraco import path diff --git a/setuptools/tests/test_build_py.py b/setuptools/tests/test_build_py.py index 6900fdefbd..b8cd77dc0b 100644 --- a/setuptools/tests/test_build_py.py +++ b/setuptools/tests/test_build_py.py @@ -1,12 +1,12 @@ import os -import stat import shutil +import stat import warnings from pathlib import Path from unittest.mock import Mock -import pytest import jaraco.path +import pytest from setuptools import SetuptoolsDeprecationWarning from setuptools.dist import Distribution diff --git a/setuptools/tests/test_config_discovery.py b/setuptools/tests/test_config_discovery.py index ff9e672b68..af172953e3 100644 --- a/setuptools/tests/test_config_discovery.py +++ b/setuptools/tests/test_config_discovery.py @@ -3,22 +3,22 @@ from configparser import ConfigParser from itertools import product +import jaraco.path +import pytest +from path import Path + +import setuptools # noqa: F401 # force distutils.core to be patched from setuptools.command.sdist import sdist -from setuptools.dist import Distribution from setuptools.discovery import find_package_path, find_parent_package +from setuptools.dist import Distribution from setuptools.errors import PackageDiscoveryError -import setuptools # noqa -- force distutils.core to be patched -import distutils.core - -import pytest -import jaraco.path -from path import Path - from .contexts import quiet from .integration.helpers import get_sdist_members, get_wheel_members, run from .textwrap import DALS +import distutils.core + class TestFindParentPackage: def test_single_package(self, tmp_path): diff --git a/setuptools/tests/test_core_metadata.py b/setuptools/tests/test_core_metadata.py index eaabf20a9d..3e2ce65ea3 100644 --- a/setuptools/tests/test_core_metadata.py +++ b/setuptools/tests/test_core_metadata.py @@ -1,17 +1,15 @@ import functools -import io import importlib +import io from email import message_from_string import pytest - from packaging.metadata import Metadata -from setuptools import sic, _reqs -from setuptools.dist import Distribution +from setuptools import _reqs, sic from setuptools._core_metadata import rfc822_escape, rfc822_unescape from setuptools.command.egg_info import egg_info, write_requirements - +from setuptools.dist import Distribution EXAMPLE_BASE_INFO = dict( name="package", diff --git a/setuptools/tests/test_develop.py b/setuptools/tests/test_develop.py index 6f17beb703..929fa9c285 100644 --- a/setuptools/tests/test_develop.py +++ b/setuptools/tests/test_develop.py @@ -1,18 +1,18 @@ """develop tests""" import os -import sys -import subprocess import pathlib import platform +import subprocess +import sys import pytest +from setuptools._path import paths_on_pythonpath from setuptools.command.develop import develop from setuptools.dist import Distribution -from setuptools._path import paths_on_pythonpath -from . import contexts -from . import namespaces + +from . import contexts, namespaces SETUP_PY = """\ from setuptools import setup diff --git a/setuptools/tests/test_dist.py b/setuptools/tests/test_dist.py index 99cd582501..a5a5e7606d 100644 --- a/setuptools/tests/test_dist.py +++ b/setuptools/tests/test_dist.py @@ -1,20 +1,19 @@ import collections -import re import os -import urllib.request +import re import urllib.parse -from distutils.errors import DistutilsSetupError -from setuptools.dist import ( - check_package_data, - check_specifier, -) +import urllib.request + +import pytest + from setuptools import Distribution +from setuptools.dist import check_package_data, check_specifier -from .textwrap import DALS from .test_easy_install import make_nspkg_sdist from .test_find_packages import ensure_files +from .textwrap import DALS -import pytest +from distutils.errors import DistutilsSetupError def test_dist_fetch_build_egg(tmpdir): diff --git a/setuptools/tests/test_dist_info.py b/setuptools/tests/test_dist_info.py index 44be6c3284..6e109c9db2 100644 --- a/setuptools/tests/test_dist_info.py +++ b/setuptools/tests/test_dist_info.py @@ -11,8 +11,8 @@ import pkg_resources from setuptools.archive_util import unpack_archive -from .textwrap import DALS +from .textwrap import DALS read = partial(pathlib.Path.read_text, encoding="utf-8") diff --git a/setuptools/tests/test_distutils_adoption.py b/setuptools/tests/test_distutils_adoption.py index 74883d2199..0b020ba9fc 100644 --- a/setuptools/tests/test_distutils_adoption.py +++ b/setuptools/tests/test_distutils_adoption.py @@ -1,11 +1,10 @@ import os -import sys import platform +import sys import textwrap import pytest - IS_PYPY = '__pypy__' in sys.builtin_module_names _TEXT_KWARGS = {"text": True, "encoding": "utf-8"} # For subprocess.run diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index 7346a07929..ca6af9667e 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -1,42 +1,42 @@ """Easy install Tests""" -import sys -import os -import tempfile -import site import contextlib -import tarfile -import logging -import itertools -import distutils.errors import io -from typing import NamedTuple -import zipfile -import time +import itertools +import logging +import os +import pathlib import re +import site import subprocess -import pathlib +import sys +import tarfile +import tempfile +import time import warnings +import zipfile from pathlib import Path +from typing import NamedTuple from unittest import mock import pytest from jaraco import path -from setuptools import sandbox -from setuptools.sandbox import run_setup +import pkg_resources import setuptools.command.easy_install as ei +from pkg_resources import Distribution as PRDistribution, normalize_path, working_set +from setuptools import sandbox from setuptools.command.easy_install import PthDistributions from setuptools.dist import Distribution -from pkg_resources import normalize_path, working_set -from pkg_resources import Distribution as PRDistribution -from setuptools.tests.server import MockServer, path_to_url +from setuptools.sandbox import run_setup from setuptools.tests import fail_on_ascii -import pkg_resources +from setuptools.tests.server import MockServer, path_to_url from . import contexts from .textwrap import DALS +import distutils.errors + @pytest.fixture(autouse=True) def pip_disable_index(monkeypatch): diff --git a/setuptools/tests/test_editable_install.py b/setuptools/tests/test_editable_install.py index 24c10a5054..287367ac18 100644 --- a/setuptools/tests/test_editable_install.py +++ b/setuptools/tests/test_editable_install.py @@ -1,8 +1,8 @@ import os +import platform import stat -import sys import subprocess -import platform +import sys from copy import deepcopy from importlib import import_module from importlib.machinery import EXTENSION_SUFFIXES @@ -11,31 +11,31 @@ from unittest.mock import Mock from uuid import uuid4 -from distutils.core import run_setup - import jaraco.envs import jaraco.path import pytest from path import Path as _Path -from . import contexts, namespaces - from setuptools._importlib import resources as importlib_resources from setuptools.command.editable_wheel import ( _DebuggingTips, - _LinkTree, - _TopLevelFinder, _encode_pth, - _find_virtual_namespaces, _find_namespaces, _find_package_roots, + _find_virtual_namespaces, _finder_template, + _LinkTree, + _TopLevelFinder, editable_wheel, ) from setuptools.dist import Distribution from setuptools.extension import Extension from setuptools.warnings import SetuptoolsDeprecationWarning +from . import contexts, namespaces + +from distutils.core import run_setup + @pytest.fixture(params=["strict", "lenient"]) def editable_opts(request): diff --git a/setuptools/tests/test_egg_info.py b/setuptools/tests/test_egg_info.py index 856dd127bc..6e8d0c68c3 100644 --- a/setuptools/tests/test_egg_info.py +++ b/setuptools/tests/test_egg_info.py @@ -1,11 +1,11 @@ from __future__ import annotations -import sys import ast -import os import glob +import os import re import stat +import sys import time from pathlib import Path from unittest import mock @@ -14,16 +14,11 @@ from jaraco import path from setuptools import errors -from setuptools.command.egg_info import ( - egg_info, - manifest_maker, - write_entries, -) +from setuptools.command.egg_info import egg_info, manifest_maker, write_entries from setuptools.dist import Distribution -from . import environment +from . import contexts, environment from .textwrap import DALS -from . import contexts class Environment(str): diff --git a/setuptools/tests/test_extern.py b/setuptools/tests/test_extern.py index da01b25b98..105279d084 100644 --- a/setuptools/tests/test_extern.py +++ b/setuptools/tests/test_extern.py @@ -1,9 +1,10 @@ import importlib import pickle -from setuptools import Distribution import ordered_set +from setuptools import Distribution + def test_reimport_extern(): ordered_set2 = importlib.import_module(ordered_set.__name__) diff --git a/setuptools/tests/test_find_packages.py b/setuptools/tests/test_find_packages.py index 0f4e2bef89..9fd9f8f663 100644 --- a/setuptools/tests/test_find_packages.py +++ b/setuptools/tests/test_find_packages.py @@ -6,8 +6,7 @@ import pytest -from setuptools import find_packages -from setuptools import find_namespace_packages +from setuptools import find_namespace_packages, find_packages from setuptools.discovery import FlatLayoutPackageFinder from .compat.py39 import os_helper diff --git a/setuptools/tests/test_find_py_modules.py b/setuptools/tests/test_find_py_modules.py index 2459c98fa3..8034b54429 100644 --- a/setuptools/tests/test_find_py_modules.py +++ b/setuptools/tests/test_find_py_modules.py @@ -6,8 +6,8 @@ from setuptools.discovery import FlatLayoutModuleFinder, ModuleFinder -from .test_find_packages import ensure_files from .compat.py39 import os_helper +from .test_find_packages import ensure_files class TestModuleFinder: diff --git a/setuptools/tests/test_install_scripts.py b/setuptools/tests/test_install_scripts.py index 595b7ade67..2ae5496525 100644 --- a/setuptools/tests/test_install_scripts.py +++ b/setuptools/tests/test_install_scripts.py @@ -6,6 +6,7 @@ from setuptools.command.install_scripts import install_scripts from setuptools.dist import Distribution + from . import contexts diff --git a/setuptools/tests/test_integration.py b/setuptools/tests/test_integration.py index 78f459d018..b0e7d67b5e 100644 --- a/setuptools/tests/test_integration.py +++ b/setuptools/tests/test_integration.py @@ -10,11 +10,10 @@ import pytest -from setuptools.command.easy_install import easy_install from setuptools.command import easy_install as easy_install_pkg +from setuptools.command.easy_install import easy_install from setuptools.dist import Distribution - pytestmark = pytest.mark.skipif( 'platform.python_implementation() == "PyPy" and platform.system() == "Windows"', reason="pypa/setuptools#2496", diff --git a/setuptools/tests/test_logging.py b/setuptools/tests/test_logging.py index cf89b3bd00..e01df7277c 100644 --- a/setuptools/tests/test_logging.py +++ b/setuptools/tests/test_logging.py @@ -5,7 +5,6 @@ import pytest - IS_PYPY = '__pypy__' in sys.builtin_module_names @@ -25,6 +24,7 @@ def test_verbosity_level(tmp_path, monkeypatch, flag, expected_level): """Make sure the correct verbosity level is set (issue #3038)""" import setuptools # noqa: F401 # import setuptools to monkeypatch distutils + import distutils # <- load distutils after all the patches take place logger = logging.Logger(__name__) @@ -61,7 +61,9 @@ def test_patching_does_not_cause_problems(): # Ensure `dist.log` is only patched if necessary import _distutils_hack + import setuptools.logging + from distutils import dist setuptools.logging.configure() diff --git a/setuptools/tests/test_manifest.py b/setuptools/tests/test_manifest.py index f3eba733d9..ae5572b83c 100644 --- a/setuptools/tests/test_manifest.py +++ b/setuptools/tests/test_manifest.py @@ -3,22 +3,22 @@ from __future__ import annotations import contextlib +import io +import itertools +import logging import os import shutil import sys import tempfile -import itertools -import io -import logging -from distutils import log -from distutils.errors import DistutilsTemplateError + +import pytest from setuptools.command.egg_info import FileList, egg_info, translate_pattern from setuptools.dist import Distribution from setuptools.tests.textwrap import DALS -import pytest - +from distutils import log +from distutils.errors import DistutilsTemplateError IS_PYPY = '__pypy__' in sys.builtin_module_names diff --git a/setuptools/tests/test_msvc14.py b/setuptools/tests/test_msvc14.py index 4b8344539f..57d3cc38e8 100644 --- a/setuptools/tests/test_msvc14.py +++ b/setuptools/tests/test_msvc14.py @@ -3,10 +3,12 @@ """ import os -from distutils.errors import DistutilsPlatformError -import pytest import sys +import pytest + +from distutils.errors import DistutilsPlatformError + @pytest.mark.skipif(sys.platform != "win32", reason="These tests are only for win32") class TestMSVC14: diff --git a/setuptools/tests/test_namespaces.py b/setuptools/tests/test_namespaces.py index 56689301da..a0f4120bf7 100644 --- a/setuptools/tests/test_namespaces.py +++ b/setuptools/tests/test_namespaces.py @@ -1,5 +1,5 @@ -import sys import subprocess +import sys from setuptools._path import paths_on_pythonpath diff --git a/setuptools/tests/test_packageindex.py b/setuptools/tests/test_packageindex.py index f5f37e0563..e1f8458674 100644 --- a/setuptools/tests/test_packageindex.py +++ b/setuptools/tests/test_packageindex.py @@ -1,13 +1,14 @@ -import distutils.errors -import urllib.request -import urllib.error import http.client +import urllib.error +import urllib.request from inspect import cleandoc import pytest import setuptools.package_index +import distutils.errors + class TestPackageIndex: def test_regex(self): diff --git a/setuptools/tests/test_register.py b/setuptools/tests/test_register.py index ed85e9bbd3..0c7d109d31 100644 --- a/setuptools/tests/test_register.py +++ b/setuptools/tests/test_register.py @@ -1,11 +1,11 @@ -from setuptools.command.register import register -from setuptools.dist import Distribution -from setuptools.errors import RemovedCommandError - from unittest import mock import pytest +from setuptools.command.register import register +from setuptools.dist import Distribution +from setuptools.errors import RemovedCommandError + class TestRegister: def test_register_exception(self): diff --git a/setuptools/tests/test_sdist.py b/setuptools/tests/test_sdist.py index 096cdc3924..2df202fd18 100644 --- a/setuptools/tests/test_sdist.py +++ b/setuptools/tests/test_sdist.py @@ -1,32 +1,31 @@ """sdist tests""" +import contextlib +import io +import logging import os import sys +import tarfile import tempfile import unicodedata -import contextlib -import io -import tarfile -import logging -import distutils from inspect import cleandoc from unittest import mock +import jaraco.path import pytest -from distutils.core import run_setup -from setuptools import Command +from setuptools import Command, SetuptoolsDeprecationWarning from setuptools._importlib import metadata -from setuptools import SetuptoolsDeprecationWarning -from setuptools.command.sdist import sdist from setuptools.command.egg_info import manifest_maker +from setuptools.command.sdist import sdist from setuptools.dist import Distribution from setuptools.extension import Extension from setuptools.tests import fail_on_ascii -from .text import Filenames -import jaraco.path +from .text import Filenames +import distutils +from distutils.core import run_setup SETUP_ATTRS = { 'name': 'sdist_test', diff --git a/setuptools/tests/test_setuptools.py b/setuptools/tests/test_setuptools.py index 9865ee847c..6af1d98c6b 100644 --- a/setuptools/tests/test_setuptools.py +++ b/setuptools/tests/test_setuptools.py @@ -1,22 +1,22 @@ """Tests for the 'setuptools' package""" +import os import re import sys -import os -import distutils.core -import distutils.cmd -from distutils.errors import DistutilsSetupError -from distutils.core import Extension from zipfile import ZipFile import pytest +from packaging.version import Version import setuptools -import setuptools.dist import setuptools.depends as dep +import setuptools.dist from setuptools.depends import Require -from packaging.version import Version +import distutils.cmd +import distutils.core +from distutils.core import Extension +from distutils.errors import DistutilsSetupError @pytest.fixture(autouse=True) diff --git a/setuptools/tests/test_upload.py b/setuptools/tests/test_upload.py index 4ed59bc24d..cbcd455c41 100644 --- a/setuptools/tests/test_upload.py +++ b/setuptools/tests/test_upload.py @@ -1,11 +1,11 @@ -from setuptools.command.upload import upload -from setuptools.dist import Distribution -from setuptools.errors import RemovedCommandError - from unittest import mock import pytest +from setuptools.command.upload import upload +from setuptools.dist import Distribution +from setuptools.errors import RemovedCommandError + class TestUpload: def test_upload_exception(self): diff --git a/setuptools/tests/test_virtualenv.py b/setuptools/tests/test_virtualenv.py index 4554581ed0..cdc10f5004 100644 --- a/setuptools/tests/test_virtualenv.py +++ b/setuptools/tests/test_virtualenv.py @@ -1,9 +1,8 @@ import os -import sys import subprocess -from urllib.request import urlopen +import sys from urllib.error import URLError - +from urllib.request import urlopen import pytest diff --git a/setuptools/tests/test_warnings.py b/setuptools/tests/test_warnings.py index ac6d07795e..41193d4f71 100644 --- a/setuptools/tests/test_warnings.py +++ b/setuptools/tests/test_warnings.py @@ -4,7 +4,6 @@ from setuptools.warnings import SetuptoolsDeprecationWarning, SetuptoolsWarning - _EXAMPLES = { "default": dict( args=("Hello {x}", "\n\t{target} {v:.1f}"), diff --git a/setuptools/tests/test_wheel.py b/setuptools/tests/test_wheel.py index cc5d54b6d9..ee46f664e4 100644 --- a/setuptools/tests/test_wheel.py +++ b/setuptools/tests/test_wheel.py @@ -2,31 +2,31 @@ from __future__ import annotations -from distutils.sysconfig import get_config_var -from distutils.util import get_platform import contextlib -import pathlib -import stat import glob import inspect import os +import pathlib import shutil +import stat import subprocess import sys -from typing import Any import zipfile +from typing import Any import pytest from jaraco import path - -from pkg_resources import Distribution, PathMetadata, PY_MAJOR -from packaging.utils import canonicalize_name from packaging.tags import parse_tag +from packaging.utils import canonicalize_name + +from pkg_resources import PY_MAJOR, Distribution, PathMetadata from setuptools.wheel import Wheel from .contexts import tempdir from .textwrap import DALS +from distutils.sysconfig import get_config_var +from distutils.util import get_platform WHEEL_INFO_TESTS = ( ('invalid.whl', ValueError), diff --git a/setuptools/tests/test_windows_wrappers.py b/setuptools/tests/test_windows_wrappers.py index b272689351..4a112baf75 100644 --- a/setuptools/tests/test_windows_wrappers.py +++ b/setuptools/tests/test_windows_wrappers.py @@ -13,15 +13,15 @@ """ import pathlib -import sys import platform -import textwrap import subprocess +import sys +import textwrap import pytest -from setuptools.command.easy_install import nt_quote_arg import pkg_resources +from setuptools.command.easy_install import nt_quote_arg pytestmark = pytest.mark.skipif(sys.platform != 'win32', reason="Windows only") diff --git a/setuptools/unicode_utils.py b/setuptools/unicode_utils.py index 696b34c46a..862d79e898 100644 --- a/setuptools/unicode_utils.py +++ b/setuptools/unicode_utils.py @@ -1,5 +1,5 @@ -import unicodedata import sys +import unicodedata from configparser import ConfigParser from .compat import py39 diff --git a/setuptools/wheel.py b/setuptools/wheel.py index a05cd98d1f..69a73df244 100644 --- a/setuptools/wheel.py +++ b/setuptools/wheel.py @@ -1,26 +1,25 @@ """Wheels support.""" +import contextlib import email -import itertools import functools +import itertools import os import posixpath import re import zipfile -import contextlib -from packaging.version import Version as parse_version from packaging.tags import sys_tags from packaging.utils import canonicalize_name - -from distutils.util import get_platform +from packaging.version import Version as parse_version import setuptools -from setuptools.command.egg_info import write_requirements, _egg_basename from setuptools.archive_util import _unpack_zipfile_obj +from setuptools.command.egg_info import _egg_basename, write_requirements from .unicode_utils import _read_utf8_with_fallback +from distutils.util import get_platform WHEEL_NAME = re.compile( r"""^(?P.+?)-(?P\d.*?) diff --git a/tools/build_launchers.py b/tools/build_launchers.py index c673445365..a8b85c5f55 100644 --- a/tools/build_launchers.py +++ b/tools/build_launchers.py @@ -17,15 +17,14 @@ - C++ ATL for latest v143 build tools (ARM64) """ -import os import functools import itertools +import os import pathlib import shutil import subprocess import tempfile - BUILD_TARGETS = ["cli", "gui"] GUI = {"cli": 0, "gui": 1} BUILD_PLATFORMS = ["Win32", "x64", "arm64"] diff --git a/tools/finalize.py b/tools/finalize.py index 3ba5d16ac7..d646e67cd0 100644 --- a/tools/finalize.py +++ b/tools/finalize.py @@ -5,14 +5,13 @@ __requires__ = ['bump2version', 'towncrier', 'jaraco.develop>=7.21'] -import subprocess import pathlib import re +import subprocess import sys from jaraco.develop import towncrier - bump_version_command = [ sys.executable, '-m', diff --git a/tools/ppc64le-patch.py b/tools/ppc64le-patch.py index 2a8ff8e0a0..a0b04ce502 100644 --- a/tools/ppc64le-patch.py +++ b/tools/ppc64le-patch.py @@ -6,9 +6,9 @@ TODO: is someone tracking this issue? Maybe just move to bionic? """ -import subprocess import collections import os +import subprocess def patch():