Skip to content

Commit c343b26

Browse files
authored
Only use tarfile.data_filter when it's available (#3566)
Signed-off-by: Bernát Gábor <[email protected]>
1 parent 753dd62 commit c343b26

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

docs/changelog/3565.bugfix.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
Use `tarfile.data_filter <https://docs.python.org/3/library/tarfile.html#tarfile.data_filter>`_ with ``extractall``
2+
only on supported Python versions:
3+
4+
- ``>= 3.11.4``
5+
- ``>= 3.10.12`` and ``< 3.11``
6+
- ``>= 3.9.17`` and ``< 3.10``
7+
8+
by :user:`gaborbernat`.

src/tox/tox_env/python/virtual_env/package/cmd_builder.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from __future__ import annotations
22

33
import glob
4+
import sys
45
import tarfile
56
from abc import ABC
67
from functools import partial
@@ -107,7 +108,14 @@ def extract_install_info(self, for_env: EnvConfigSet, path: Path) -> list[Packag
107108
if not work_dir.exists(): # pragma: no branch
108109
work_dir.mkdir()
109110
with tarfile.open(str(path), "r:gz") as tar:
110-
tar.extractall(path=str(work_dir), filter=tarfile.data_filter) # noqa: S202
111+
tar.extractall( # noqa: S202
112+
path=str(work_dir),
113+
filter=tarfile.data_filter
114+
if sys.version_info >= (3, 11, 4)
115+
or (3, 10, 12) <= sys.version_info < (3, 11)
116+
or (3, 9, 17) <= sys.version_info < (3, 10)
117+
else None,
118+
)
111119
# the register run env is guaranteed to be called before this
112120
assert self._sdist_meta_tox_env is not None # noqa: S101
113121
with self._sdist_meta_tox_env.display_context(self._has_display_suspended):

0 commit comments

Comments
 (0)