taskcluster-taskgraph 24.2.2__tar.gz → 24.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/workflows/codeql-analysis.yml +4 -4
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/workflows/codspeed.yml +3 -3
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/workflows/pypi-publish.yml +9 -9
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.pre-commit-config.yaml +3 -3
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/CHANGELOG.md +19 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/PKG-INFO +2 -2
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/pyproject.toml +1 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/graph.py +18 -14
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/fetch-content +66 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/robustcheckout.py +78 -6
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/run-task +301 -24
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/task.py +2 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/fetch/Dockerfile +1 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/Dockerfile +1 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/package.json +1 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/yarn.lock +10 -10
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/run-task/Dockerfile +1 -1
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/skopeo/Dockerfile +3 -3
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_graph.py +60 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_scripts_run_task.py +301 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/uv.lock +998 -715
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.codespell-ignore-words.txt +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/CODEOWNERS +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.gitignore +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.readthedocs.yaml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.taskcluster.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.yamllint +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/CODE_OF_CONDUCT.md +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/CONTRIBUTING.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/LICENSE +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/Makefile +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/README.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/index.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/kind.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/loading.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/optimization.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/overview.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/scopes.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/task-graphs.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/concepts/transforms.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/conf.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/contributing.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/glossary.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/bootstrap-taskgraph.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/create-actions.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/create-tasks.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/debugging.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/define-schemas.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/docker.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/index.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/load-task-locally.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/resolve-keyed-by.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/run-locally.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/send-notifications.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/howto/use-fetches.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/index.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/cli.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/index.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/migrations.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/optimization-strategies.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/parameters.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/modules.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.actions.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.loader.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.optimize.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.transforms.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.transforms.run.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.util.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/chunking.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/from_deps.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/index.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/matrix.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/task_context.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/tutorials/connecting-taskcluster.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/tutorials/creating-a-task-graph.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/tutorials/example-taskcluster.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/tutorials/getting-started.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/docs/tutorials/index.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/make.bat +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/vcs.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/autoschema.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/renovate.json +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/cancel.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/cancel_all.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/registry.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/retrigger.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/util.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/config.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/create.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/decision.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/docker.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/filter_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/generator.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/loader/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/loader/default.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/loader/transform.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/main.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/morph.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/optimize/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/optimize/base.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/optimize/strategies.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/parameters.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/hgrc +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/target_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/task.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/taskgraph.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/base.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/chunking.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/code_review.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/docker_image.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/fetch.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/from_deps.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/matrix.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/notify.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/common.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/index_search.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/run_task.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/toolchain.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/task_context.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/archive.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/attributes.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/cached_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/caches.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/copy.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/dependencies.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/docker.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/hash.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/json.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/keyed_by.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/parameterization.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/path.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/python_path.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/readonlydict.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/schema.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/set_name.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/shell.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/task_context.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/taskcluster.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/taskgraph.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/templates.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/time.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/treeherder.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/vcs.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/verify.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/workertypes.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/yaml.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/REGISTRY +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/Dockerfile +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/HASH +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/README.md +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/VERSION +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/system-setup.sh +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/image_builder/README.rst +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/README +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/insert-indexes.js +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/python/Dockerfile +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/run-task/system-setup.sh +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/skopeo/policy.json +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/skopeo/push_image.sh +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/check/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/codecov/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/complete/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/doc/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/fetch/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/push-image/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/test/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/test/linux.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/test/windows.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/scripts/codecov-upload.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/custom_parameters.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/custom_target_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/transforms/add_pr_route.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/transforms/push_image.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-pull-request-untrusted.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-pull-request.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-push.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-release-pytest-taskgraph.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-release-taskcluster-taskgraph.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/cookiecutter.json +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/hooks/post_gen_project.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/docker/linux/Dockerfile +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/hello/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/{{cookiecutter.project_slug}}_taskgraph/transforms/hello.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster.github.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/__init__.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/automationrelevance.json +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/conftest.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/task_context.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world/Dockerfile +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world-tag/Dockerfile +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world-tag/REGISTRY +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world-tag/VERSION +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/scripts/toolchain/run.ps1 +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/scripts/toolchain/run.sh +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/test_taskgraph/transforms/foo.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/data/testmod/thing.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/mockedopen.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_actions_registry.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_config.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_create.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_decision.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_docker.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_generator.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_graph_perf.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_main.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_morph.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_optimize.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_optimize_strategies.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_parameters.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_scripts_fetch_content.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_target_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_taskgraph.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transform_chunking.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transform_docker_image.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transform_task_context.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_base.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_cached_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_fetch.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_from_deps.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_matrix.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_notify.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_run.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_run_run_task.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_run_toolchain.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_transforms_task.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_archive.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_attributes.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_cached_tasks.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_copy.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_dependencies.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_docker.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_json.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_keyed_by.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_parameterization.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_path.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_python_path.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_readonlydict.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_schema.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_taskcluster.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_templates.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_time.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_treeherder.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_vcs.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_verify.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_workertypes.py +0 -0
- {taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/test/test_util_yaml.py +0 -0
{taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/workflows/codeql-analysis.yml
RENAMED
|
@@ -39,10 +39,10 @@ jobs:
|
|
|
39
39
|
|
|
40
40
|
steps:
|
|
41
41
|
- name: Checkout repository
|
|
42
|
-
uses: actions/checkout@
|
|
42
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
43
43
|
# Initializes the CodeQL tools for scanning.
|
|
44
44
|
- name: Initialize CodeQL
|
|
45
|
-
uses: github/codeql-action/init@
|
|
45
|
+
uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
|
46
46
|
with:
|
|
47
47
|
languages: ${{ matrix.language }}
|
|
48
48
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
@@ -55,7 +55,7 @@ jobs:
|
|
|
55
55
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
56
56
|
# If this step fails, then you should remove it and run the build manually (see below)
|
|
57
57
|
- name: Autobuild
|
|
58
|
-
uses: github/codeql-action/autobuild@
|
|
58
|
+
uses: github/codeql-action/autobuild@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
|
59
59
|
|
|
60
60
|
# ℹ️ Command-line programs to run using the OS shell.
|
|
61
61
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
|
@@ -67,4 +67,4 @@ jobs:
|
|
|
67
67
|
# echo "Run, Build Application using script"
|
|
68
68
|
# ./location_of_script_within_repo/buildscript.sh
|
|
69
69
|
- name: Perform CodeQL Analysis
|
|
70
|
-
uses: github/codeql-action/analyze@
|
|
70
|
+
uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
{taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/workflows/codspeed.yml
RENAMED
|
@@ -18,14 +18,14 @@ jobs:
|
|
|
18
18
|
contents: read # required for actions/checkout
|
|
19
19
|
id-token: write # required for OIDC authentication with CodSpeed
|
|
20
20
|
steps:
|
|
21
|
-
- uses: actions/checkout@
|
|
22
|
-
- uses: astral-sh/setup-uv@
|
|
21
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
22
|
+
- uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
|
|
23
23
|
with:
|
|
24
24
|
python-version: "3.12"
|
|
25
25
|
- name: Install dependencies
|
|
26
26
|
run: uv sync
|
|
27
27
|
- name: Run benchmarks
|
|
28
|
-
uses: CodSpeedHQ/action@
|
|
28
|
+
uses: CodSpeedHQ/action@373d6868929f444bc08d901fd0eb0ad52a8875ea # v5.2.1
|
|
29
29
|
with:
|
|
30
30
|
mode: simulation
|
|
31
31
|
run: uv run pytest test/ --codspeed
|
{taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/.github/workflows/pypi-publish.yml
RENAMED
|
@@ -12,8 +12,8 @@ jobs:
|
|
|
12
12
|
id-token: write
|
|
13
13
|
steps:
|
|
14
14
|
- name: Checkout sources
|
|
15
|
-
uses: actions/checkout@
|
|
16
|
-
- uses: actions/setup-python@
|
|
15
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
16
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
17
17
|
with:
|
|
18
18
|
python-version: '3.14'
|
|
19
19
|
cache: 'pip'
|
|
@@ -28,7 +28,7 @@ jobs:
|
|
|
28
28
|
# Renovate offsets that by bumping the pinned SHA (tracked via the
|
|
29
29
|
# trailing `# vX.Y.Z` comment), so merge those bump PRs promptly.
|
|
30
30
|
- name: Publish package distributions to PyPI
|
|
31
|
-
uses: pypa/gh-action-pypi-publish@
|
|
31
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
32
32
|
pypi-publish-pytest-taskgraph:
|
|
33
33
|
name: upload release to PyPI
|
|
34
34
|
if: startsWith(github.ref, 'refs/tags/pytest-taskgraph')
|
|
@@ -38,8 +38,8 @@ jobs:
|
|
|
38
38
|
id-token: write
|
|
39
39
|
steps:
|
|
40
40
|
- name: Checkout sources
|
|
41
|
-
uses: actions/checkout@
|
|
42
|
-
- uses: actions/setup-python@
|
|
41
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
42
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
43
43
|
with:
|
|
44
44
|
python-version: '3.14'
|
|
45
45
|
cache: 'pip'
|
|
@@ -49,7 +49,7 @@ jobs:
|
|
|
49
49
|
pip install build
|
|
50
50
|
python -m build
|
|
51
51
|
- name: Publish package distributions to PyPI
|
|
52
|
-
uses: pypa/gh-action-pypi-publish@
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
53
53
|
with:
|
|
54
54
|
packages-dir: packages/pytest-taskgraph/dist
|
|
55
55
|
pypi-publish-sphinx-taskgraph:
|
|
@@ -61,8 +61,8 @@ jobs:
|
|
|
61
61
|
id-token: write
|
|
62
62
|
steps:
|
|
63
63
|
- name: Checkout sources
|
|
64
|
-
uses: actions/checkout@
|
|
65
|
-
- uses: actions/setup-python@
|
|
64
|
+
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
65
|
+
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0
|
|
66
66
|
with:
|
|
67
67
|
python-version: '3.14'
|
|
68
68
|
cache: 'pip'
|
|
@@ -72,6 +72,6 @@ jobs:
|
|
|
72
72
|
pip install build
|
|
73
73
|
python -m build
|
|
74
74
|
- name: Publish package distributions to PyPI
|
|
75
|
-
uses: pypa/gh-action-pypi-publish@
|
|
75
|
+
uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2
|
|
76
76
|
with:
|
|
77
77
|
packages-dir: packages/sphinx-taskgraph/dist
|
|
@@ -13,13 +13,13 @@ repos:
|
|
|
13
13
|
exclude: template
|
|
14
14
|
- id: check-added-large-files
|
|
15
15
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
16
|
-
rev: v0.
|
|
16
|
+
rev: v0.16.5
|
|
17
17
|
hooks:
|
|
18
18
|
- id: ruff
|
|
19
19
|
args: [--fix, --exit-non-zero-on-fix]
|
|
20
20
|
- id: ruff-format
|
|
21
21
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
22
|
-
rev: 0.
|
|
22
|
+
rev: 0.12.8
|
|
23
23
|
hooks:
|
|
24
24
|
- id: uv-lock
|
|
25
25
|
- repo: https://github.com/adrienverge/yamllint.git
|
|
@@ -28,7 +28,7 @@ repos:
|
|
|
28
28
|
- id: yamllint
|
|
29
29
|
exclude: template
|
|
30
30
|
- repo: https://github.com/codespell-project/codespell
|
|
31
|
-
rev: v2.4.
|
|
31
|
+
rev: v2.4.3
|
|
32
32
|
hooks:
|
|
33
33
|
- id: codespell
|
|
34
34
|
entry: codespell -I .codespell-ignore-words.txt
|
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## [24.3.0] - 2026-09-17
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- Git sparse checkout support (#1039)
|
|
8
|
+
- Support for checking out git trees in parallel (#1041)
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Improve performance of Graph.transitive_closure (#1014)
|
|
13
|
+
- Don't assume treeherder.group-names exists in graph config (#1024)
|
|
14
|
+
- Avoid seeking during tarball extraction on Windows in fetch-content (#1042)
|
|
15
|
+
|
|
16
|
+
## [24.2.3] - 2026-07-29
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Vendor latest robustcheckout
|
|
21
|
+
|
|
3
22
|
## [24.2.2] - 2026-07-28
|
|
4
23
|
|
|
5
24
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version: 24.
|
|
3
|
+
Version: 24.3.0
|
|
4
4
|
Summary: Build taskcluster taskgraphs
|
|
5
5
|
Project-URL: Repository, https://github.com/taskcluster/taskgraph
|
|
6
6
|
Project-URL: Issues, https://github.com/taskcluster/taskgraph/issues
|
|
@@ -61,20 +61,24 @@ class Graph(_Graph):
|
|
|
61
61
|
f"Unknown nodes in transitive closure: {nodes - self.nodes}"
|
|
62
62
|
)
|
|
63
63
|
|
|
64
|
-
#
|
|
65
|
-
#
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
64
|
+
# Build an adjacency map keyed by the node to expand from. This reduces
|
|
65
|
+
# traversal below from O(V·E) -> O(V+E).
|
|
66
|
+
adjacency = collections.defaultdict(list)
|
|
67
|
+
for edge in self.edges:
|
|
68
|
+
left, right, _ = edge
|
|
69
|
+
adjacency[right if reverse else left].append(edge)
|
|
70
|
+
|
|
71
|
+
new_nodes = set(nodes)
|
|
72
|
+
new_edges = set()
|
|
73
|
+
queue = collections.deque(nodes)
|
|
74
|
+
while queue:
|
|
75
|
+
node = queue.popleft()
|
|
76
|
+
for edge in adjacency.get(node, ()):
|
|
77
|
+
new_edges.add(edge)
|
|
78
|
+
neighbor = edge[0] if reverse else edge[1]
|
|
79
|
+
if neighbor not in new_nodes:
|
|
80
|
+
new_nodes.add(neighbor)
|
|
81
|
+
queue.append(neighbor)
|
|
78
82
|
return Graph(new_nodes, new_edges)
|
|
79
83
|
|
|
80
84
|
def _visit(self, reverse):
|
{taskcluster_taskgraph-24.2.2 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/fetch-content
RENAMED
|
@@ -18,6 +18,7 @@ import os
|
|
|
18
18
|
import pathlib
|
|
19
19
|
import random
|
|
20
20
|
import re
|
|
21
|
+
import shutil
|
|
21
22
|
import ssl
|
|
22
23
|
import stat
|
|
23
24
|
import subprocess
|
|
@@ -377,6 +378,70 @@ def archive_type(path: pathlib.Path):
|
|
|
377
378
|
return None
|
|
378
379
|
|
|
379
380
|
|
|
381
|
+
class TarFile(tarfile.TarFile):
|
|
382
|
+
# When a tarball contains symbolic links, the python tarfile module ends up
|
|
383
|
+
# trying to seek in the tar, which doesn't quite work when the tar is a
|
|
384
|
+
# stream (which it is when decompressing at the same time). We wrap TarFile
|
|
385
|
+
# so as to handle the symbolic link situation ourselves, and when we can't
|
|
386
|
+
# create symbolic links (e.g. on Windows), we instead create a copy of the
|
|
387
|
+
# file the link points to.
|
|
388
|
+
def _do_extract(
|
|
389
|
+
self, extract, member, path="", set_attrs=True, numeric_owner=False, **kwargs
|
|
390
|
+
):
|
|
391
|
+
deferred_links = getattr(self, "_deferred_links", None)
|
|
392
|
+
if not isinstance(member, tarfile.TarInfo):
|
|
393
|
+
member = self.getmember(member)
|
|
394
|
+
targetpath = os.path.normcase(os.path.join(path, member.name))
|
|
395
|
+
|
|
396
|
+
if deferred_links is not None and member.issym():
|
|
397
|
+
if os.path.lexists(targetpath):
|
|
398
|
+
# Avoid FileExistsError on following os.symlink.
|
|
399
|
+
os.unlink(targetpath)
|
|
400
|
+
try:
|
|
401
|
+
os.symlink(member.linkname, targetpath)
|
|
402
|
+
except (NotImplementedError, OSError):
|
|
403
|
+
# On Windows, os.symlink can fail, in this case fallback to
|
|
404
|
+
# creating a copy. If the destination was not already created,
|
|
405
|
+
# defer the link creation.
|
|
406
|
+
source = os.path.normcase(
|
|
407
|
+
os.path.join(os.path.dirname(targetpath), member.linkname)
|
|
408
|
+
)
|
|
409
|
+
|
|
410
|
+
if source in self._extracted_members:
|
|
411
|
+
shutil.copy(source, targetpath)
|
|
412
|
+
self.chown(member, targetpath, numeric_owner)
|
|
413
|
+
else:
|
|
414
|
+
deferred_links.setdefault(source, []).append(
|
|
415
|
+
(member, targetpath, numeric_owner)
|
|
416
|
+
)
|
|
417
|
+
return
|
|
418
|
+
|
|
419
|
+
extract(member, path, set_attrs, numeric_owner=numeric_owner, **kwargs)
|
|
420
|
+
if deferred_links is not None:
|
|
421
|
+
for tarinfo, linkpath, numeric_owner in deferred_links.pop(targetpath, []):
|
|
422
|
+
shutil.copy(targetpath, linkpath)
|
|
423
|
+
self.chown(tarinfo, linkpath, numeric_owner)
|
|
424
|
+
self._extracted_members.add(targetpath)
|
|
425
|
+
|
|
426
|
+
def extract(self, *args, **kwargs):
|
|
427
|
+
self._do_extract(super(TarFile, self).extract, *args, **kwargs)
|
|
428
|
+
|
|
429
|
+
# extractall in versions for cpython that implement PEP 706 call _extract_one
|
|
430
|
+
# instead of extract.
|
|
431
|
+
def _extract_one(self, *args, **kwargs):
|
|
432
|
+
self._do_extract(super(TarFile, self)._extract_one, *args, **kwargs)
|
|
433
|
+
|
|
434
|
+
def extractall(self, *args, **kwargs):
|
|
435
|
+
self._deferred_links = {}
|
|
436
|
+
self._extracted_members = set()
|
|
437
|
+
super(TarFile, self).extractall(*args, **kwargs)
|
|
438
|
+
for links in self._deferred_links.values():
|
|
439
|
+
for tarinfo, linkpath, numeric_owner in links:
|
|
440
|
+
log(f"Cannot create dangling symbolic link: {linkpath}")
|
|
441
|
+
delattr(self, "_deferred_links")
|
|
442
|
+
delattr(self, "_extracted_members")
|
|
443
|
+
|
|
444
|
+
|
|
380
445
|
def extract_archive(path, dest_dir):
|
|
381
446
|
"""Extract an archive to a destination directory."""
|
|
382
447
|
|
|
@@ -398,7 +463,7 @@ def extract_archive(path, dest_dir):
|
|
|
398
463
|
# also not much slower on Windows, presumably because of the
|
|
399
464
|
# notoriously bad I/O).
|
|
400
465
|
if sys.platform == "win32":
|
|
401
|
-
tar =
|
|
466
|
+
tar = TarFile.open(fileobj=ifh, mode="r|")
|
|
402
467
|
tar.extractall(str(dest_dir))
|
|
403
468
|
args = []
|
|
404
469
|
else:
|
|
@@ -18,6 +18,7 @@ import random
|
|
|
18
18
|
import re
|
|
19
19
|
import socket
|
|
20
20
|
import ssl
|
|
21
|
+
import stat
|
|
21
22
|
import time
|
|
22
23
|
|
|
23
24
|
from mercurial.i18n import _
|
|
@@ -38,6 +39,22 @@ from mercurial import (
|
|
|
38
39
|
vfs,
|
|
39
40
|
)
|
|
40
41
|
|
|
42
|
+
# TRACKING hg72 - `hg.repository`/`hg.peer` moved to `mercurial.repo.factory`.
|
|
43
|
+
try:
|
|
44
|
+
from mercurial.repo import factory as _repofactory
|
|
45
|
+
|
|
46
|
+
_repository = _repofactory.repository
|
|
47
|
+
_peer = _repofactory.peer
|
|
48
|
+
except ImportError:
|
|
49
|
+
_repository = hg.repository
|
|
50
|
+
_peer = hg.peer
|
|
51
|
+
|
|
52
|
+
# TRACKING hg72 - `hg.clone` moved to `mercurial.cmd_impls.clone.clone`.
|
|
53
|
+
try:
|
|
54
|
+
from mercurial.cmd_impls.clone import clone as _clone
|
|
55
|
+
except ImportError:
|
|
56
|
+
_clone = hg.clone
|
|
57
|
+
|
|
41
58
|
# Causes worker to purge caches on process exit and for task to retry.
|
|
42
59
|
EXIT_PURGE_CACHE = 72
|
|
43
60
|
|
|
@@ -67,6 +84,57 @@ def peerlookup(remote, v):
|
|
|
67
84
|
return e.callcommand(b"lookup", {b"key": v}).result()
|
|
68
85
|
|
|
69
86
|
|
|
87
|
+
def remove_dangling_links(ui, path):
|
|
88
|
+
"""On Windows, remove dangling symlinks and junctions under ``path``.
|
|
89
|
+
|
|
90
|
+
npm's ``file:`` protocol dependencies create directory junctions in
|
|
91
|
+
``node_modules/`` with absolute targets. When a Taskcluster cache
|
|
92
|
+
is restored to a different task directory those targets no longer
|
|
93
|
+
exist, and Mercurial's purge crashes in ``vfs.listdir()`` with
|
|
94
|
+
``FileNotFoundError``. Removing them first lets purge proceed.
|
|
95
|
+
"""
|
|
96
|
+
if os.name != "nt":
|
|
97
|
+
return
|
|
98
|
+
|
|
99
|
+
ui.write(b"windows detected, removing dangling links\n")
|
|
100
|
+
|
|
101
|
+
stack = [path]
|
|
102
|
+
while stack:
|
|
103
|
+
dirpath = stack.pop()
|
|
104
|
+
try:
|
|
105
|
+
entries = os.scandir(dirpath)
|
|
106
|
+
except OSError:
|
|
107
|
+
continue
|
|
108
|
+
|
|
109
|
+
with entries:
|
|
110
|
+
for entry in entries:
|
|
111
|
+
p = entry.path
|
|
112
|
+
try:
|
|
113
|
+
attrs = entry.stat(follow_symlinks=False).st_file_attributes
|
|
114
|
+
except OSError:
|
|
115
|
+
continue
|
|
116
|
+
|
|
117
|
+
if attrs & stat.FILE_ATTRIBUTE_REPARSE_POINT:
|
|
118
|
+
if not os.path.exists(p):
|
|
119
|
+
ui.write(
|
|
120
|
+
b"(removing dangling link %s)\n"
|
|
121
|
+
% os.fsencode(os.path.relpath(p, path))
|
|
122
|
+
)
|
|
123
|
+
try:
|
|
124
|
+
os.rmdir(p)
|
|
125
|
+
except OSError:
|
|
126
|
+
os.remove(p)
|
|
127
|
+
continue
|
|
128
|
+
|
|
129
|
+
try:
|
|
130
|
+
is_dir = entry.is_dir(follow_symlinks=False)
|
|
131
|
+
except OSError:
|
|
132
|
+
continue
|
|
133
|
+
|
|
134
|
+
if is_dir:
|
|
135
|
+
stack.append(p)
|
|
136
|
+
|
|
137
|
+
|
|
70
138
|
@command(
|
|
71
139
|
b"robustcheckout",
|
|
72
140
|
[
|
|
@@ -427,7 +495,7 @@ def _docheckout(
|
|
|
427
495
|
def handlerepoerror(e):
|
|
428
496
|
if pycompat.bytestr(e) == _(b"abandoned transaction found"):
|
|
429
497
|
ui.warn(b"(abandoned transaction found; trying to recover)\n")
|
|
430
|
-
repo =
|
|
498
|
+
repo = _repository(ui, dest)
|
|
431
499
|
if not repo.recover():
|
|
432
500
|
ui.warn(b"(could not recover repo state; deleting shared store)\n")
|
|
433
501
|
with timeit("remove_unrecovered_shared_store", "remove-store"):
|
|
@@ -535,7 +603,7 @@ def _docheckout(
|
|
|
535
603
|
cloneurl = upstream or url
|
|
536
604
|
|
|
537
605
|
try:
|
|
538
|
-
clonepeer =
|
|
606
|
+
clonepeer = _peer(ui, {}, cloneurl)
|
|
539
607
|
rootnode = peerlookup(clonepeer, b"0")
|
|
540
608
|
except error.RepoLookupError:
|
|
541
609
|
raise error.Abort(b"unable to resolve root revision from clone source")
|
|
@@ -623,12 +691,12 @@ def _docheckout(
|
|
|
623
691
|
ui.write(b"(cloning from upstream repo %s)\n" % upstream)
|
|
624
692
|
|
|
625
693
|
if not storevfs.exists():
|
|
626
|
-
behaviors.add(
|
|
694
|
+
behaviors.add("create-store")
|
|
627
695
|
|
|
628
696
|
try:
|
|
629
697
|
with timeit("clone", "clone"):
|
|
630
698
|
shareopts = {b"pool": sharebase, b"mode": b"identity"}
|
|
631
|
-
res =
|
|
699
|
+
res = _clone(
|
|
632
700
|
ui,
|
|
633
701
|
{},
|
|
634
702
|
clonepeer,
|
|
@@ -667,7 +735,7 @@ def _docheckout(
|
|
|
667
735
|
# The destination .hg directory should exist. Now make sure we have the
|
|
668
736
|
# wanted revision.
|
|
669
737
|
|
|
670
|
-
repo =
|
|
738
|
+
repo = _repository(ui, dest)
|
|
671
739
|
|
|
672
740
|
# We only pull if we are using symbolic names or the requested revision
|
|
673
741
|
# doesn't exist.
|
|
@@ -694,7 +762,7 @@ def _docheckout(
|
|
|
694
762
|
|
|
695
763
|
remote = None
|
|
696
764
|
try:
|
|
697
|
-
remote =
|
|
765
|
+
remote = _peer(repo, {}, url)
|
|
698
766
|
pullrevs = [peerlookup(remote, revision or branch)]
|
|
699
767
|
checkoutrevision = hex(pullrevs[0])
|
|
700
768
|
if branch:
|
|
@@ -741,6 +809,10 @@ def _docheckout(
|
|
|
741
809
|
# guaranteed to not have conflicts on `hg update`.
|
|
742
810
|
if purge and not created:
|
|
743
811
|
ui.write(b"(purging working directory)\n")
|
|
812
|
+
|
|
813
|
+
with timeit("purge", "dangling_link_remove"):
|
|
814
|
+
remove_dangling_links(ui, dest)
|
|
815
|
+
|
|
744
816
|
purge = getattr(commands, "purge", None)
|
|
745
817
|
if not purge:
|
|
746
818
|
purge = extensions.find(b"purge").purge
|