# This patch combines two upstream fixes (mainly for tests), adapting to # changes in Python 3.12: # - Python 3.12 raises a warning if tarfile filter is not set for extractall. # Tests do this, and fail on this warning. # Set a "fully trusted" filter. (The tests create the archive, so it is # trusted.) # - https://github.com/pypa/setuptools/pull/3917 # - Python 3.12 venv no longer installs setuptools and wheel into new virtual # environments. Adjust tests that assumed the old behaviour. # Also, setting setuptools.__version__ assumed setuptools is installed. # Set a valid dummy value if that's not the case. # - https://github.com/pypa/setuptools/pull/3915 From 13887c8defa8f2042a5824da4fa049461e3718ac Mon Sep 17 00:00:00 2001 From: Steve Kowalik Date: Wed, 3 May 2023 12:02:19 +1000 Subject: [PATCH] tests: Add extraction_filter for tarfile Python 3.12, and earlier via security backports now issue an DeprecationWarning when calling tarfile.extractall without an extraction filter set. Since the only place we've called extractall is literally right after we've created the archive, use a fully trusted filter. This can be replaced with a filter argument to extractall in future. --- setuptools/tests/test_easy_install.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setuptools/tests/test_easy_install.py b/setuptools/tests/test_easy_install.py index 0ee9bea909..709964b3ac 100644 --- a/setuptools/tests/test_easy_install.py +++ b/setuptools/tests/test_easy_install.py @@ -697,6 +697,7 @@ def test_setup_requires_override_nspkg(self, use_setup_cfg): foobar_1_dir = os.path.join(temp_dir, 'foo.bar-0.1') os.mkdir(foobar_1_dir) with tarfile.open(foobar_1_archive) as tf: + tf.extraction_filter = (lambda member, path: member) tf.extractall(foobar_1_dir) sys.path.insert(1, foobar_1_dir) From 1bef1e2e793ca59828d7911f702ce05c098c0a74 Mon Sep 17 00:00:00 2001 From: Anderson Bravalheri Date: Fri, 28 Apr 2023 12:20:33 +0100 Subject: [PATCH 1/3] Adequate venv fixtures to the latest change in virtualenv Since version v20.23.0, `virtualenv` will no longer include `wheel` and `setuptools` in the created folders. Some tests in the setuptools test suite assume that these packages are always present. So we need to adequate these tests. --- setuptools/tests/fixtures.py | 4 +++- setuptools/tests/test_virtualenv.py | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/setuptools/tests/fixtures.py b/setuptools/tests/fixtures.py index 25ab49fd22..f1cfc66c81 100644 --- a/setuptools/tests/fixtures.py +++ b/setuptools/tests/fixtures.py @@ -105,6 +105,8 @@ def venv(tmp_path, setuptools_wheel): """Virtual env with the version of setuptools under test installed""" env = environment.VirtualEnv() env.root = path.Path(tmp_path / 'venv') + env.create_opts = ['--no-setuptools', '--wheel=bundle'] + # TODO: Use `--no-wheel` when setuptools implements its own bdist_wheel env.req = str(setuptools_wheel) # In some environments (eg. downstream distro packaging), # where tox isn't used to run tests and PYTHONPATH is set to point to @@ -125,7 +127,7 @@ def venv_without_setuptools(tmp_path): """Virtual env without any version of setuptools installed""" env = environment.VirtualEnv() env.root = path.Path(tmp_path / 'venv_without_setuptools') - env.create_opts = ['--no-setuptools'] + env.create_opts = ['--no-setuptools', '--no-wheel'] env.ensure_env() return env diff --git a/setuptools/tests/test_virtualenv.py b/setuptools/tests/test_virtualenv.py index acfe04e9dd..b17be9ef2b 100644 --- a/setuptools/tests/test_virtualenv.py +++ b/setuptools/tests/test_virtualenv.py @@ -174,8 +174,8 @@ def sdist(distname, version): def test_test_command_install_requirements(venv, tmpdir, tmpdir_cwd): - # Ensure pip/wheel packages are installed. - venv.run(["python", "-c", "__import__('pkg_resources').require(['pip', 'wheel'])"]) + # Ensure pip is installed. + venv.run(["python", "-c", "import pip"]) # disable index URL so bits and bobs aren't requested from PyPI with contexts.environment(PYTHONPATH=None, PIP_NO_INDEX="1"): _check_test_command_install_requirements(venv, tmpdir) From 70ed7894801a308d93b1d155b30ac58d8ef0accd Mon Sep 17 00:00:00 2001 From: Anderson Bravalheri Date: Tue, 2 May 2023 17:16:33 +0100 Subject: [PATCH 2/3] Add news fragment --- changelog.d/3915.misc.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/3915.misc.rst diff --git a/changelog.d/3915.misc.rst b/changelog.d/3915.misc.rst new file mode 100644 index 0000000000..cd962b2c6e --- /dev/null +++ b/changelog.d/3915.misc.rst @@ -0,0 +1 @@ +Adequate tests to the latest changes in ``virtualenv`` for Python 3.12. From 3f172826492e99470db75a74cdaa5494ec3e932c Mon Sep 17 00:00:00 2001 From: Anderson Bravalheri Date: Thu, 27 Apr 2023 16:30:41 +0100 Subject: [PATCH 3/3] Attempt to use a valid PEP 440 version fallback --- setuptools/version.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setuptools/version.py b/setuptools/version.py index 75b2a14959..ec253c4144 100644 --- a/setuptools/version.py +++ b/setuptools/version.py @@ -1,6 +1,6 @@ from ._importlib import metadata try: - __version__ = metadata.version('setuptools') + __version__ = metadata.version('setuptools') or '0.dev0+unknown' except Exception: - __version__ = 'unknown' + __version__ = '0.dev0+unknown'