taskcluster-taskgraph 24.2.3__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.
Files changed (270) hide show
  1. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.github/workflows/codeql-analysis.yml +4 -4
  2. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.github/workflows/codspeed.yml +3 -3
  3. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.github/workflows/pypi-publish.yml +9 -9
  4. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.pre-commit-config.yaml +3 -3
  5. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/CHANGELOG.md +13 -0
  6. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/PKG-INFO +2 -2
  7. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/pyproject.toml +1 -1
  8. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/graph.py +18 -14
  9. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/fetch-content +66 -1
  10. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/run-task +301 -24
  11. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/task.py +2 -1
  12. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/fetch/Dockerfile +1 -1
  13. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/Dockerfile +1 -1
  14. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/package.json +1 -1
  15. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/yarn.lock +10 -10
  16. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/run-task/Dockerfile +1 -1
  17. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/skopeo/Dockerfile +3 -3
  18. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_graph.py +60 -0
  19. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_scripts_run_task.py +301 -0
  20. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/uv.lock +998 -715
  21. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.codespell-ignore-words.txt +0 -0
  22. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.github/CODEOWNERS +0 -0
  23. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.gitignore +0 -0
  24. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.readthedocs.yaml +0 -0
  25. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.taskcluster.yml +0 -0
  26. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/.yamllint +0 -0
  27. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/CODE_OF_CONDUCT.md +0 -0
  28. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/CONTRIBUTING.rst +0 -0
  29. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/LICENSE +0 -0
  30. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/Makefile +0 -0
  31. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/README.rst +0 -0
  32. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/index.rst +0 -0
  33. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/kind.rst +0 -0
  34. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/loading.rst +0 -0
  35. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/optimization.rst +0 -0
  36. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/overview.rst +0 -0
  37. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/scopes.rst +0 -0
  38. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/task-graphs.rst +0 -0
  39. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/concepts/transforms.rst +0 -0
  40. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/conf.py +0 -0
  41. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/contributing.rst +0 -0
  42. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/glossary.rst +0 -0
  43. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/bootstrap-taskgraph.rst +0 -0
  44. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/create-actions.rst +0 -0
  45. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/create-tasks.rst +0 -0
  46. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/debugging.rst +0 -0
  47. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/define-schemas.rst +0 -0
  48. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/docker.rst +0 -0
  49. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/index.rst +0 -0
  50. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/load-task-locally.rst +0 -0
  51. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/resolve-keyed-by.rst +0 -0
  52. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/run-locally.rst +0 -0
  53. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/send-notifications.rst +0 -0
  54. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/howto/use-fetches.rst +0 -0
  55. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/index.rst +0 -0
  56. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/cli.rst +0 -0
  57. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/index.rst +0 -0
  58. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/migrations.rst +0 -0
  59. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/optimization-strategies.rst +0 -0
  60. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/parameters.rst +0 -0
  61. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/modules.rst +0 -0
  62. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.actions.rst +0 -0
  63. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.loader.rst +0 -0
  64. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.optimize.rst +0 -0
  65. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.rst +0 -0
  66. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.transforms.rst +0 -0
  67. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.transforms.run.rst +0 -0
  68. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/source/taskgraph.util.rst +0 -0
  69. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/chunking.rst +0 -0
  70. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/from_deps.rst +0 -0
  71. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/index.rst +0 -0
  72. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/matrix.rst +0 -0
  73. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/reference/transforms/task_context.rst +0 -0
  74. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/tutorials/connecting-taskcluster.rst +0 -0
  75. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/tutorials/creating-a-task-graph.rst +0 -0
  76. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/tutorials/example-taskcluster.yml +0 -0
  77. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/tutorials/getting-started.rst +0 -0
  78. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/docs/tutorials/index.rst +0 -0
  79. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/make.bat +0 -0
  80. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/README.md +0 -0
  81. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/pyproject.toml +0 -0
  82. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/__init__.py +0 -0
  83. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py +0 -0
  84. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/vcs.py +0 -0
  85. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/README.md +0 -0
  86. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/pyproject.toml +0 -0
  87. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/__init__.py +0 -0
  88. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/autoschema.py +0 -0
  89. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/renovate.json +0 -0
  90. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/__init__.py +0 -0
  91. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/__init__.py +0 -0
  92. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
  93. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/cancel.py +0 -0
  94. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/cancel_all.py +0 -0
  95. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
  96. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/registry.py +0 -0
  97. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/retrigger.py +0 -0
  98. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/actions/util.py +0 -0
  99. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/config.py +0 -0
  100. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/create.py +0 -0
  101. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/decision.py +0 -0
  102. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/docker.py +0 -0
  103. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/filter_tasks.py +0 -0
  104. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/generator.py +0 -0
  105. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/loader/__init__.py +0 -0
  106. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/loader/default.py +0 -0
  107. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/loader/transform.py +0 -0
  108. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/main.py +0 -0
  109. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/morph.py +0 -0
  110. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/optimize/__init__.py +0 -0
  111. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/optimize/base.py +0 -0
  112. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/optimize/strategies.py +0 -0
  113. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/parameters.py +0 -0
  114. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/hgrc +0 -0
  115. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
  116. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/target_tasks.py +0 -0
  117. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/task.py +0 -0
  118. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/taskgraph.py +0 -0
  119. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/__init__.py +0 -0
  120. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/base.py +0 -0
  121. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
  122. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/chunking.py +0 -0
  123. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/code_review.py +0 -0
  124. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/docker_image.py +0 -0
  125. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/fetch.py +0 -0
  126. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/from_deps.py +0 -0
  127. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/matrix.py +0 -0
  128. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/notify.py +0 -0
  129. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/__init__.py +0 -0
  130. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/common.py +0 -0
  131. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/index_search.py +0 -0
  132. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/run_task.py +0 -0
  133. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/run/toolchain.py +0 -0
  134. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/transforms/task_context.py +0 -0
  135. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/__init__.py +0 -0
  136. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/archive.py +0 -0
  137. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/attributes.py +0 -0
  138. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/cached_tasks.py +0 -0
  139. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/caches.py +0 -0
  140. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/copy.py +0 -0
  141. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/dependencies.py +0 -0
  142. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/docker.py +0 -0
  143. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/hash.py +0 -0
  144. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/json.py +0 -0
  145. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/keyed_by.py +0 -0
  146. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/parameterization.py +0 -0
  147. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/path.py +0 -0
  148. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/python_path.py +0 -0
  149. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/readonlydict.py +0 -0
  150. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/schema.py +0 -0
  151. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/set_name.py +0 -0
  152. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/shell.py +0 -0
  153. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/task_context.py +0 -0
  154. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/taskcluster.py +0 -0
  155. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/taskgraph.py +0 -0
  156. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/templates.py +0 -0
  157. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/time.py +0 -0
  158. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/treeherder.py +0 -0
  159. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/vcs.py +0 -0
  160. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/verify.py +0 -0
  161. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/workertypes.py +0 -0
  162. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/src/taskgraph/util/yaml.py +0 -0
  163. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/config.yml +0 -0
  164. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/REGISTRY +0 -0
  165. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/Dockerfile +0 -0
  166. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/HASH +0 -0
  167. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/README.md +0 -0
  168. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/VERSION +0 -0
  169. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/decision/system-setup.sh +0 -0
  170. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/image_builder/README.rst +0 -0
  171. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/README +0 -0
  172. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/index-task/insert-indexes.js +0 -0
  173. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/python/Dockerfile +0 -0
  174. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/run-task/system-setup.sh +0 -0
  175. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/skopeo/policy.json +0 -0
  176. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/docker/skopeo/push_image.sh +0 -0
  177. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/check/kind.yml +0 -0
  178. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/codecov/kind.yml +0 -0
  179. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/complete/kind.yml +0 -0
  180. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/doc/kind.yml +0 -0
  181. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/docker-image/kind.yml +0 -0
  182. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/fetch/kind.yml +0 -0
  183. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/push-image/kind.yml +0 -0
  184. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/test/kind.yml +0 -0
  185. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/test/linux.yml +0 -0
  186. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/kinds/test/windows.yml +0 -0
  187. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/scripts/codecov-upload.py +0 -0
  188. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/__init__.py +0 -0
  189. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/custom_parameters.py +0 -0
  190. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/custom_target_tasks.py +0 -0
  191. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/transforms/add_pr_route.py +0 -0
  192. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/self_taskgraph/transforms/push_image.py +0 -0
  193. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-pull-request-untrusted.yml +0 -0
  194. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-pull-request.yml +0 -0
  195. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-push.yml +0 -0
  196. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-release-pytest-taskgraph.yml +0 -0
  197. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/taskcluster/test/params/main-repo-release-taskcluster-taskgraph.yml +0 -0
  198. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/cookiecutter.json +0 -0
  199. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/hooks/post_gen_project.py +0 -0
  200. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/config.yml +0 -0
  201. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/docker/linux/Dockerfile +0 -0
  202. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/docker-image/kind.yml +0 -0
  203. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/hello/kind.yml +0 -0
  204. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster/{{cookiecutter.project_slug}}_taskgraph/transforms/hello.py +0 -0
  205. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/template/{{cookiecutter.project_name}}/taskcluster.github.yml +0 -0
  206. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/__init__.py +0 -0
  207. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/automationrelevance.json +0 -0
  208. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/conftest.py +0 -0
  209. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/task_context.yml +0 -0
  210. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/config.yml +0 -0
  211. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world/Dockerfile +0 -0
  212. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world-tag/Dockerfile +0 -0
  213. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world-tag/REGISTRY +0 -0
  214. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/docker/hello-world-tag/VERSION +0 -0
  215. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/kinds/docker-image/kind.yml +0 -0
  216. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/scripts/toolchain/run.ps1 +0 -0
  217. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/scripts/toolchain/run.sh +0 -0
  218. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/taskcluster/test_taskgraph/transforms/foo.py +0 -0
  219. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/data/testmod/thing.py +0 -0
  220. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/mockedopen.py +0 -0
  221. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
  222. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_actions_registry.py +0 -0
  223. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_config.py +0 -0
  224. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_create.py +0 -0
  225. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_decision.py +0 -0
  226. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_docker.py +0 -0
  227. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_generator.py +0 -0
  228. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_graph_perf.py +0 -0
  229. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_main.py +0 -0
  230. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_morph.py +0 -0
  231. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_optimize.py +0 -0
  232. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_optimize_strategies.py +0 -0
  233. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_parameters.py +0 -0
  234. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_scripts_fetch_content.py +0 -0
  235. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_target_tasks.py +0 -0
  236. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_taskgraph.py +0 -0
  237. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transform_chunking.py +0 -0
  238. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transform_docker_image.py +0 -0
  239. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transform_task_context.py +0 -0
  240. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_base.py +0 -0
  241. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_cached_tasks.py +0 -0
  242. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_fetch.py +0 -0
  243. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_from_deps.py +0 -0
  244. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_matrix.py +0 -0
  245. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_notify.py +0 -0
  246. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_run.py +0 -0
  247. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_run_run_task.py +0 -0
  248. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_run_toolchain.py +0 -0
  249. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_transforms_task.py +0 -0
  250. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_archive.py +0 -0
  251. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_attributes.py +0 -0
  252. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_cached_tasks.py +0 -0
  253. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_copy.py +0 -0
  254. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_dependencies.py +0 -0
  255. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_docker.py +0 -0
  256. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_json.py +0 -0
  257. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_keyed_by.py +0 -0
  258. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_parameterization.py +0 -0
  259. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_path.py +0 -0
  260. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_python_path.py +0 -0
  261. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_readonlydict.py +0 -0
  262. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_schema.py +0 -0
  263. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_taskcluster.py +0 -0
  264. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_templates.py +0 -0
  265. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_time.py +0 -0
  266. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_treeherder.py +0 -0
  267. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_vcs.py +0 -0
  268. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_verify.py +0 -0
  269. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_workertypes.py +0 -0
  270. {taskcluster_taskgraph-24.2.3 → taskcluster_taskgraph-24.3.0}/test/test_util_yaml.py +0 -0
@@ -39,10 +39,10 @@ jobs:
39
39
 
40
40
  steps:
41
41
  - name: Checkout repository
42
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
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@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
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@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
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@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
70
+ uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
@@ -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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
22
- - uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
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@a4a36bb07c0638b0b4ca52bf1f3dad1b4289e52f # v4.18.1
28
+ uses: CodSpeedHQ/action@373d6868929f444bc08d901fd0eb0ad52a8875ea # v5.2.1
29
29
  with:
30
30
  mode: simulation
31
31
  run: uv run pytest test/ --codspeed
@@ -12,8 +12,8 @@ jobs:
12
12
  id-token: write
13
13
  steps:
14
14
  - name: Checkout sources
15
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
16
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
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@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
42
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
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@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
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@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
65
- - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
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@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
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.15.20
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.11.26
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.2
31
+ rev: v2.4.3
32
32
  hooks:
33
33
  - id: codespell
34
34
  entry: codespell -I .codespell-ignore-words.txt
@@ -1,5 +1,18 @@
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
+
3
16
  ## [24.2.3] - 2026-07-29
4
17
 
5
18
  ### Fixed
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: taskcluster-taskgraph
3
- Version: 24.2.3
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
@@ -1,7 +1,7 @@
1
1
  ### Project
2
2
  [project]
3
3
  name = "taskcluster-taskgraph"
4
- version = "24.2.3"
4
+ version = "24.3.0"
5
5
  description = "Build taskcluster taskgraphs"
6
6
  readme = "README.rst"
7
7
  authors = [
@@ -61,20 +61,24 @@ class Graph(_Graph):
61
61
  f"Unknown nodes in transitive closure: {nodes - self.nodes}"
62
62
  )
63
63
 
64
- # generate a new graph by expanding along edges until reaching a fixed
65
- # point
66
- new_nodes, new_edges = nodes, set()
67
- nodes, edges = set(), set()
68
- while (new_nodes, new_edges) != (nodes, edges):
69
- nodes, edges = new_nodes, new_edges
70
- add_edges = {
71
- (left, right, name)
72
- for (left, right, name) in self.edges
73
- if (right if reverse else left) in nodes
74
- }
75
- add_nodes = {(left if reverse else right) for (left, right, _) in add_edges}
76
- new_nodes = nodes | add_nodes
77
- new_edges = edges | add_edges
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):
@@ -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 = tarfile.open(fileobj=ifh, mode="r|")
466
+ tar = TarFile.open(fileobj=ifh, mode="r|")
402
467
  tar.extractall(str(dest_dir))
403
468
  args = []
404
469
  else: