Skip to content

Commit

Permalink
feat(backport): Use Python 3.12+ tarfile data extraction filter (#2500)
Browse files Browse the repository at this point in the history
* Backport PR #2455
* 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

Co-authored-by: Matthew Feickert <matthew.feickert@cern.ch>
  • Loading branch information
meeseeksmachine and matthewfeickert committed May 30, 2024
1 parent 71b87eb commit 88ba93b
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 88ba93b

Please sign in to comment.