diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 16ae0d674..ecae4cd1e 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -41,8 +41,11 @@ repos: hooks: - id: conventional-pre-commit stages: [commit-msg] +# TODO remove 'fetch-content' once Gecko no longer needs to use it with Python 3.8 +# https://bugzilla.mozilla.org/show_bug.cgi?id=1990567#c7 exclude: | (?x)^( + src/taskgraph/run-task/fetch-content | src/taskgraph/run-task/robustcheckout.py | taskcluster/scripts/external_tools ) diff --git a/CHANGELOG.md b/CHANGELOG.md index fcef9cf56..ff2cba46e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,15 @@ # Change Log +## [17.1.0] - 2025-10-22 + +### Added + +- Support for "graph_config" verifications + +### Fixed + +- Added Python 3.8 support back to `fetch-content` script for Gecko workaround + ## [17.0.0] - 2025-10-17 ### Changed diff --git a/pyproject.toml b/pyproject.toml index ac58eb09c..bc9efc125 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ ### Project [project] name = "taskcluster-taskgraph" -version = "17.0.0" +version = "17.1.0" description = "Build taskcluster taskgraphs" readme = "README.rst" authors = [ diff --git a/src/taskgraph/run-task/fetch-content b/src/taskgraph/run-task/fetch-content index 0030917cd..bcca069a6 100755 --- a/src/taskgraph/run-task/fetch-content +++ b/src/taskgraph/run-task/fetch-content @@ -413,12 +413,9 @@ def extract_archive(path, dest_dir): raise ValueError(f"unknown archive format: {path}") if args: - with ( - ifh, - subprocess.Popen( - args, cwd=str(dest_dir), bufsize=0, stdin=subprocess.PIPE - ) as p, - ): + with ifh, subprocess.Popen( + args, cwd=str(dest_dir), bufsize=0, stdin=subprocess.PIPE + ) as p: while True: if not pipe_stdin: break @@ -530,13 +527,10 @@ def repack_archive( with rename_after_close(dest, "wb") as fh: ctx = ZstdCompressor() if orig_typ in ("exec", None): - with ( - ctx.stream_writer(fh) as compressor, - tarfile.open( - fileobj=compressor, - mode="w:", - ) as tar, - ): + with ctx.stream_writer(fh) as compressor, tarfile.open( + fileobj=compressor, + mode="w:", + ) as tar: tarinfo = tarfile.TarInfo() tarinfo.name = filter(orig.name) if filter else orig.name st = orig.stat() @@ -549,10 +543,9 @@ def repack_archive( assert typ == "tar" zip = zipfile.ZipFile(ifh) # Convert the zip stream to a tar on the fly. - with ( - ctx.stream_writer(fh) as compressor, - tarfile.open(fileobj=compressor, mode="w:") as tar, - ): + with ctx.stream_writer(fh) as compressor, tarfile.open( + fileobj=compressor, mode="w:" + ) as tar: for zipinfo in zip.infolist(): if zipinfo.is_dir(): continue @@ -594,14 +587,11 @@ def repack_archive( # To apply the filter, we need to open the tar stream and # tweak it. origtar = tarfile.open(fileobj=ifh, mode="r|") - with ( - ctx.stream_writer(fh) as compressor, - tarfile.open( - fileobj=compressor, - mode="w:", - format=origtar.format, - ) as tar, - ): + with ctx.stream_writer(fh) as compressor, tarfile.open( + fileobj=compressor, + mode="w:", + format=origtar.format, + ) as tar: for tarinfo in origtar: if tarinfo.isdir(): continue diff --git a/uv.lock b/uv.lock index b323eb158..569dcb8d5 100644 --- a/uv.lock +++ b/uv.lock @@ -2020,7 +2020,7 @@ wheels = [ [[package]] name = "taskcluster-taskgraph" -version = "17.0.0" +version = "17.1.0" source = { editable = "." } dependencies = [ { name = "appdirs" },