From 512fc79e9cbab16f5ae8bfd66127b9243de1f58c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bern=C3=A1t=20G=C3=A1bor?= Date: Fri, 25 Jul 2025 10:42:39 -0700 Subject: [PATCH] Don't pass in hte filter argument to tar.extractall on old Python versions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Bernát Gábor --- .pre-commit-config.yaml | 4 ++-- docs/changelog/3568.bugfix.rst | 1 + .../python/virtual_env/package/cmd_builder.py | 13 ++++++++----- 3 files changed, 11 insertions(+), 7 deletions(-) create mode 100644 docs/changelog/3568.bugfix.rst diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 95551d61f..c0640d6ff 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -25,9 +25,9 @@ repos: - repo: https://github.com/astral-sh/ruff-pre-commit rev: "v0.12.4" hooks: - - id: ruff-format - - id: ruff + - id: ruff-check args: ["--fix", "--unsafe-fixes", "--exit-non-zero-on-fix"] + - id: ruff-format - repo: https://github.com/asottile/blacken-docs rev: 1.19.1 hooks: diff --git a/docs/changelog/3568.bugfix.rst b/docs/changelog/3568.bugfix.rst new file mode 100644 index 000000000..d7f6b6941 --- /dev/null +++ b/docs/changelog/3568.bugfix.rst @@ -0,0 +1 @@ +Don't pass in the filter argument to tar.extractall on old Python versions - by :user:`gaborbernat`. diff --git a/src/tox/tox_env/python/virtual_env/package/cmd_builder.py b/src/tox/tox_env/python/virtual_env/package/cmd_builder.py index 250f89fc5..6c7dc5626 100644 --- a/src/tox/tox_env/python/virtual_env/package/cmd_builder.py +++ b/src/tox/tox_env/python/virtual_env/package/cmd_builder.py @@ -108,13 +108,16 @@ def extract_install_info(self, for_env: EnvConfigSet, path: Path) -> list[Packag if not work_dir.exists(): # pragma: no branch work_dir.mkdir() with tarfile.open(str(path), "r:gz") as tar: - tar.extractall( # noqa: S202 - path=str(work_dir), - filter=tarfile.data_filter - if sys.version_info >= (3, 11, 4) + kwargs = {} + if ( + sys.version_info >= (3, 11, 4) or (3, 10, 12) <= sys.version_info < (3, 11) or (3, 9, 17) <= sys.version_info < (3, 10) - else None, + ) is not None: + kwargs["filter"] = tarfile.data_filter + tar.extractall( # noqa: S202 + path=str(work_dir), + **kwargs, # type: ignore[arg-type] ) # the register run env is guaranteed to be called before this assert self._sdist_meta_tox_env is not None # noqa: S101