Skip to content

Commit

Permalink
feat: Use Python 3.12+ tarfile data extraction filter (#2455)
Browse files Browse the repository at this point in the history
* In Python 3.12 extraction filters are added and will become default in
  Python 3.14. To start using them for when Python 3.12 support is added, and
  to guard against a Python 3.14 DeprecationWarning, use the data extraction
  filter for extracting tarfiles in pyhf.contrib.utils.download.
   - c.f. https://docs.python.org/3.12/library/tarfile.html#extraction-filters
  • Loading branch information
matthewfeickert authored Mar 15, 2024
1 parent adddb07 commit 50f1076
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/pyhf/contrib/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,12 @@ def download(archive_url, output_directory, force=False, compress=False):
with tarfile.open(
mode="r:*", fileobj=BytesIO(response.content)
) as archive:
archive.extractall(output_directory)
# TODO: Simplify after pyhf is Python 3.12+ only
# c.f. https://docs.python.org/3.12/library/tarfile.html#extraction-filters
if hasattr(tarfile, "data_filter"):
archive.extractall(output_directory, filter="data")
else:
archive.extractall(output_directory)
except tarfile.ReadError:
if not zipfile.is_zipfile(BytesIO(response.content)):
raise exceptions.InvalidArchive(
Expand Down

0 comments on commit 50f1076

Please sign in to comment.