taskcluster-taskgraph 14.2.0__tar.gz → 14.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 (259) hide show
  1. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.pre-commit-config.yaml +3 -3
  2. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/CHANGELOG.md +25 -7
  3. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/PKG-INFO +3 -1
  4. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/getting-started.rst +51 -56
  5. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/pyproject.toml +2 -3
  6. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/__init__.py +1 -1
  7. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/registry.py +1 -2
  8. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/create.py +2 -3
  9. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/decision.py +2 -2
  10. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/docker.py +4 -4
  11. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/main.py +9 -7
  12. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/morph.py +4 -5
  13. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/parameters.py +1 -2
  14. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/docker_image.py +1 -2
  15. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/__init__.py +1 -1
  16. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/common.py +1 -2
  17. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/run_task.py +2 -13
  18. taskcluster_taskgraph-14.3.0/src/taskgraph/util/json.py +73 -0
  19. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/system-setup.sh +1 -1
  20. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/check/kind.yml +1 -1
  21. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_run_run_task.py +17 -7
  22. taskcluster_taskgraph-14.3.0/test/test_util_json.py +76 -0
  23. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/uv.lock +181 -1
  24. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.codespell-ignore-words.txt +0 -0
  25. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/CODEOWNERS +0 -0
  26. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/codeql-analysis.yml +0 -0
  27. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/pre-commit-autoupdate.yml +0 -0
  28. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/pre-commit.yml +0 -0
  29. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/pypi-publish.yml +0 -0
  30. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.gitignore +0 -0
  31. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.hatch_build.py +0 -0
  32. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.readthedocs.yaml +0 -0
  33. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.taskcluster.yml +0 -0
  34. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.yamllint +0 -0
  35. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/CODE_OF_CONDUCT.md +0 -0
  36. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/CONTRIBUTING.rst +0 -0
  37. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/LICENSE +0 -0
  38. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/Makefile +0 -0
  39. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/README.rst +0 -0
  40. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/index.rst +0 -0
  41. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/kind.rst +0 -0
  42. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/loading.rst +0 -0
  43. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/optimization.rst +0 -0
  44. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/scopes.rst +0 -0
  45. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/task-graphs.rst +0 -0
  46. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/taskcluster.rst +0 -0
  47. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/transforms.rst +0 -0
  48. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/conf.py +0 -0
  49. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/contributing.rst +0 -0
  50. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/glossary.rst +0 -0
  51. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/bootstrap-taskgraph.rst +0 -0
  52. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/create-actions.rst +0 -0
  53. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/create-tasks.rst +0 -0
  54. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/debugging.rst +0 -0
  55. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/docker.rst +0 -0
  56. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/index.rst +0 -0
  57. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/run-locally.rst +0 -0
  58. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/send-notifications.rst +0 -0
  59. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/use-fetches.rst +0 -0
  60. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/index.rst +0 -0
  61. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/cli.rst +0 -0
  62. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/index.rst +0 -0
  63. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/migrations.rst +0 -0
  64. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/optimization-strategies.rst +0 -0
  65. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/parameters.rst +0 -0
  66. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/modules.rst +0 -0
  67. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.actions.rst +0 -0
  68. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.loader.rst +0 -0
  69. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.optimize.rst +0 -0
  70. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.rst +0 -0
  71. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.transforms.rst +0 -0
  72. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.transforms.run.rst +0 -0
  73. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.util.rst +0 -0
  74. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/chunking.rst +0 -0
  75. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/from_deps.rst +0 -0
  76. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/index.rst +0 -0
  77. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/matrix.rst +0 -0
  78. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/task_context.rst +0 -0
  79. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/connecting-taskcluster.rst +0 -0
  80. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/creating-a-task-graph.rst +0 -0
  81. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/example-taskcluster.yml +0 -0
  82. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/index.rst +0 -0
  83. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/make.bat +0 -0
  84. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/README.md +0 -0
  85. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/pyproject.toml +0 -0
  86. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/__init__.py +0 -0
  87. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py +0 -0
  88. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/vcs.py +0 -0
  89. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/uv.lock +0 -0
  90. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/__init__.py +0 -0
  91. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
  92. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/cancel.py +0 -0
  93. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/cancel_all.py +0 -0
  94. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
  95. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/retrigger.py +0 -0
  96. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/util.py +0 -0
  97. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/config.py +0 -0
  98. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/filter_tasks.py +0 -0
  99. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/generator.py +0 -0
  100. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/graph.py +0 -0
  101. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/loader/__init__.py +0 -0
  102. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/loader/default.py +0 -0
  103. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/loader/transform.py +0 -0
  104. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/optimize/__init__.py +0 -0
  105. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/optimize/base.py +0 -0
  106. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/optimize/strategies.py +0 -0
  107. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/fetch-content +0 -0
  108. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/hgrc +0 -0
  109. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
  110. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/run-task +0 -0
  111. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/target_tasks.py +0 -0
  112. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/task.py +0 -0
  113. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/taskgraph.py +0 -0
  114. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/__init__.py +0 -0
  115. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/base.py +0 -0
  116. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
  117. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/chunking.py +0 -0
  118. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/code_review.py +0 -0
  119. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/fetch.py +0 -0
  120. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/from_deps.py +0 -0
  121. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/matrix.py +0 -0
  122. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/notify.py +0 -0
  123. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/index_search.py +0 -0
  124. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/toolchain.py +0 -0
  125. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/task.py +0 -0
  126. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/task_context.py +0 -0
  127. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/__init__.py +0 -0
  128. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/archive.py +0 -0
  129. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/attributes.py +0 -0
  130. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/cached_tasks.py +0 -0
  131. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/caches.py +0 -0
  132. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/copy.py +0 -0
  133. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/dependencies.py +0 -0
  134. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/docker.py +0 -0
  135. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/hash.py +0 -0
  136. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/keyed_by.py +0 -0
  137. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/parameterization.py +0 -0
  138. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/path.py +0 -0
  139. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/python_path.py +0 -0
  140. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/readonlydict.py +0 -0
  141. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/schema.py +0 -0
  142. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/set_name.py +0 -0
  143. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/shell.py +0 -0
  144. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/taskcluster.py +0 -0
  145. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/taskgraph.py +0 -0
  146. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/templates.py +0 -0
  147. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/time.py +0 -0
  148. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/treeherder.py +0 -0
  149. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/vcs.py +0 -0
  150. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/verify.py +0 -0
  151. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/workertypes.py +0 -0
  152. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/yaml.py +0 -0
  153. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/config.yml +0 -0
  154. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/REGISTRY +0 -0
  155. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/Dockerfile +0 -0
  156. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/HASH +0 -0
  157. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/README.md +0 -0
  158. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/VERSION +0 -0
  159. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/fetch/Dockerfile +0 -0
  160. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/image_builder/README.rst +0 -0
  161. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/Dockerfile +0 -0
  162. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/README +0 -0
  163. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/insert-indexes.js +0 -0
  164. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/package.json +0 -0
  165. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/yarn.lock +0 -0
  166. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/python/Dockerfile +0 -0
  167. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/run-task/Dockerfile +0 -0
  168. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/run-task/system-setup.sh +0 -0
  169. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/skopeo/Dockerfile +0 -0
  170. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/skopeo/policy.json +0 -0
  171. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/skopeo/push_image.sh +0 -0
  172. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/codecov/kind.yml +0 -0
  173. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/complete/kind.yml +0 -0
  174. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/doc/kind.yml +0 -0
  175. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/docker-image/kind.yml +0 -0
  176. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/fetch/kind.yml +0 -0
  177. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/push-image/kind.yml +0 -0
  178. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/test/kind.yml +0 -0
  179. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/scripts/codecov-upload.py +0 -0
  180. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/scripts/external_tools/tooltool.py +0 -0
  181. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/__init__.py +0 -0
  182. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/custom_parameters.py +0 -0
  183. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/custom_target_tasks.py +0 -0
  184. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/transforms/push_image.py +0 -0
  185. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-pull-request-untrusted.yml +0 -0
  186. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-pull-request.yml +0 -0
  187. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-push.yml +0 -0
  188. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-release-pytest-taskgraph.yml +0 -0
  189. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-release-taskcluster-taskgraph.yml +0 -0
  190. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/cookiecutter.json +0 -0
  191. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/hooks/post_gen_project.py +0 -0
  192. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/config.yml +0 -0
  193. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/docker/linux/Dockerfile +0 -0
  194. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/docker-image/kind.yml +0 -0
  195. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/hello/kind.yml +0 -0
  196. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/{{cookiecutter.project_slug}}_taskgraph/transforms/hello.py +0 -0
  197. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster.github.yml +0 -0
  198. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/__init__.py +0 -0
  199. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/automationrelevance.json +0 -0
  200. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/conftest.py +0 -0
  201. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/task_context.yml +0 -0
  202. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/config.yml +0 -0
  203. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world/Dockerfile +0 -0
  204. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world-tag/Dockerfile +0 -0
  205. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world-tag/REGISTRY +0 -0
  206. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world-tag/VERSION +0 -0
  207. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/scripts/toolchain/run.ps1 +0 -0
  208. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/scripts/toolchain/run.sh +0 -0
  209. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/test_taskgraph/transforms/foo.py +0 -0
  210. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/testmod/thing.py +0 -0
  211. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/mockedopen.py +0 -0
  212. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
  213. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_actions_registry.py +0 -0
  214. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_config.py +0 -0
  215. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_create.py +0 -0
  216. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_decision.py +0 -0
  217. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_docker.py +0 -0
  218. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_generator.py +0 -0
  219. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_graph.py +0 -0
  220. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_main.py +0 -0
  221. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_morph.py +0 -0
  222. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_optimize.py +0 -0
  223. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_optimize_strategies.py +0 -0
  224. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_parameters.py +0 -0
  225. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_scripts_fetch_content.py +0 -0
  226. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_scripts_run_task.py +0 -0
  227. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_target_tasks.py +0 -0
  228. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_taskgraph.py +0 -0
  229. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transform_chunking.py +0 -0
  230. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transform_docker_image.py +0 -0
  231. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transform_task_context.py +0 -0
  232. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_base.py +0 -0
  233. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_cached_tasks.py +0 -0
  234. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_fetch.py +0 -0
  235. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_from_deps.py +0 -0
  236. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_matrix.py +0 -0
  237. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_notify.py +0 -0
  238. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_run.py +0 -0
  239. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_run_toolchain.py +0 -0
  240. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_task.py +0 -0
  241. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_archive.py +0 -0
  242. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_attributes.py +0 -0
  243. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_cached_tasks.py +0 -0
  244. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_copy.py +0 -0
  245. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_dependencies.py +0 -0
  246. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_docker.py +0 -0
  247. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_parameterization.py +0 -0
  248. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_path.py +0 -0
  249. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_python_path.py +0 -0
  250. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_readonlydict.py +0 -0
  251. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_schema.py +0 -0
  252. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_taskcluster.py +0 -0
  253. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_templates.py +0 -0
  254. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_time.py +0 -0
  255. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_treeherder.py +0 -0
  256. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_vcs.py +0 -0
  257. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_verify.py +0 -0
  258. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_workertypes.py +0 -0
  259. {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_yaml.py +0 -0
@@ -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.11.4
16
+ rev: v0.11.7
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.6.12
22
+ rev: 0.7.2
23
23
  hooks:
24
24
  - id: uv-lock
25
25
  - repo: https://github.com/adrienverge/yamllint.git
@@ -37,7 +37,7 @@ repos:
37
37
  test/test_util_path.py
38
38
  )$
39
39
  - repo: https://github.com/compilerla/conventional-pre-commit
40
- rev: v4.0.0
40
+ rev: v4.1.0
41
41
  hooks:
42
42
  - id: conventional-pre-commit
43
43
  stages: [commit-msg]
@@ -1,35 +1,53 @@
1
1
  # Change Log
2
2
 
3
- ## [14.2.0] - 2025-04-10
3
+ ## [14.3.0] - 2025-05-28
4
4
 
5
- ## Fixed
5
+ ### Fixed
6
+
7
+ - MAX_ROUTES bumped up to actual limit of 64
8
+
9
+ ### Added
10
+
11
+ - `load-task` command now accepts a `--user` flag to run in container as
12
+ - optionally use `orjson` for faster json operations if available
13
+
14
+ ## [14.2.1] - 2025-05-13
15
+
16
+ ### Fixed
17
+
18
+ - Revert "generic-worker will now verify run-task/fetch-content integrity" from
19
+ 14.2.0 for being broken
20
+
21
+ ## [14.2.0] - 2025-05-12
22
+
23
+ ### Fixed
6
24
 
7
25
  - fix actions scope check on mercurial (#686)
8
26
 
9
- ## Changed
27
+ ### Changed
10
28
 
11
29
  - generic-worker will now verify run-task/fetch-content integrity (#666)
12
30
 
13
- ## Added
31
+ ### Added
14
32
 
15
33
  - new 'load-task' command to debug tasks locally (#680)
16
34
 
17
35
  ## [14.1.1] - 2025-04-10
18
36
 
19
- ## Fixed
37
+ ### Fixed
20
38
 
21
39
  - ensure GraphConfig.root_dir is an absolute path (#673)
22
40
 
23
41
  ## [14.1.0] - 2025-04-07
24
42
 
25
- ## Added
43
+ ### Added
26
44
 
27
45
  - allow task-priority to be keyed by level (#653)
28
46
  - implement `taskgraph action` command to generate actions.json on the command line (#645)
29
47
  - pass push.base_revision to in-tree-action hook (#656)
30
48
  - support for `volume` artifact type (#667)
31
49
 
32
- ## Fixed
50
+ ### Fixed
33
51
 
34
52
  - bug deleting long path names with forward slashes on Windows (#661)
35
53
  - replace deprecated datetime.utcnow() with timezone-aware alternative (#652)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskcluster-taskgraph
3
- Version: 14.2.0
3
+ Version: 14.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
@@ -29,6 +29,8 @@ Requires-Dist: taskcluster-urls>=11.0
29
29
  Requires-Dist: voluptuous>=0.12.1
30
30
  Provides-Extra: load-image
31
31
  Requires-Dist: zstandard; extra == 'load-image'
32
+ Provides-Extra: orjson
33
+ Requires-Dist: orjson; extra == 'orjson'
32
34
  Description-Content-Type: text/x-rst
33
35
 
34
36
 
@@ -13,91 +13,86 @@ with your repo in as few steps as possible.
13
13
 
14
14
  There are three steps to getting running tasks:
15
15
 
16
- 1. Install Taskcluster Github
16
+ 1. Define Tasks
17
17
  2. Request Permissions
18
- 3. Define Tasks
18
+ 3. Install Taskcluster Github
19
19
 
20
20
  Let's dive into each!
21
21
 
22
- Install Taskcluster Github
23
- --------------------------
22
+ Create Tasks
23
+ ------------
24
24
 
25
- .. note::
25
+ The first step is to define your tasks. You'll need:
26
26
 
27
- If you are not using Github, skip to the next section.
27
+ 1. A :term:`Decision Task` defined in ``.taskcluster.yml``
28
+ 2. A Taskgraph setup in the ``taskcluster`` directory
28
29
 
29
- Each Taskcluster deployment has an associated Github app that needs to be added
30
- to your repo. Some apps for known Taskcluster deployments are as follows:
30
+ Luckily Taskgraph provides an ``init`` command that can generate both of these
31
+ things automatically! Run:
31
32
 
32
- .. list-table:: Taskcluster Github Apps
33
- :widths: 20 60
34
- :header-rows: 1
33
+ .. code-block:: shell
34
+
35
+ $ pip install taskcluster-taskgraph
36
+ $ taskgraph init
35
37
 
36
- * - Instance
37
- - Github App
38
- * - `Firefox-CI <https://firefox-ci-tc.services.mozilla.com>`_
39
- - https://github.com/apps/firefoxci-taskcluster
40
- * - `Community <https://community-tc.services.mozilla.com>`_
41
- - https://github.com/apps/community-tc-integration
38
+ This will automatically generate all the necessary files. Commit what was
39
+ generated:
42
40
 
43
- Follow the link to the Github app for your deployment and click ``Configure``
44
- near the top right. Then select the repository you'd like to enable. If you are
45
- not an admin of the organization you are enabling the repo for, this will send
46
- a request to your Github administrators.
41
+ .. code-block:: shell
47
42
 
48
- .. note::
43
+ $ git add .
44
+ $ git commit -m "Add Taskcluster files"
49
45
 
50
- If you do not see a ``Configure`` button, contact your Github administrators
51
- for assistance.
46
+ Land your changes on the default branch (typically ``main``). Nothing will
47
+ happen yet, but we need that ``.taskcluster.yml`` file to exist at the root of
48
+ the repository for the next step.
52
49
 
53
50
  Request Permissions
54
51
  -------------------
55
52
 
56
- Your repository is now connected to Taskcluster, but it won't have permission
57
- to run anything. In the Taskcluster world, permissions are also known as
58
- :term:`scopes <Scope>`. So the next step is to contact your Taskcluster
59
- administrators and request scopes for your project so that it has access to the
60
- resources it needs to run tasks.
53
+ Your repository now has some tasks defined, but it won't have permission to run
54
+ anything. In the Taskcluster world, permissions are also known as :term:`scopes
55
+ <Scope>`. So the next step is to contact your Taskcluster administrators and
56
+ request scopes for your project so that it has access to the resources it needs
57
+ to run tasks.
61
58
 
62
- Each Taskcluster instance can be managed differently, but here are the processes
63
- to request scopes for some known Taskcluster deployments:
59
+ .. note::
64
60
 
65
- .. list-table:: Taskcluster Github Apps
66
- :widths: 20 60
67
- :header-rows: 1
61
+ For Mozilla's `Firefox-CI <https://firefox-ci-tc.services.mozilla.com>`_ instance,
62
+ file a bug under `Release Engineering :: Firefox-CI Administration
63
+ <https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering&component=Firefox-CI%20Administration>`_
68
64
 
69
- * - Instance
70
- - Process
71
- * - `Firefox-CI <https://firefox-ci-tc.services.mozilla.com>`_
72
- - `File a Bug <https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering&component=Firefox-CI%20Administration>`_
73
- * - `Community <https://community-tc.services.mozilla.com>`_
74
- - `File an Issue <https://github.com/taskcluster/community-tc-config/issues/new>`_
65
+ Use a title such as: *Please setup `org/my-repo` with Taskcluster*.
75
66
 
76
- Use a title such as: *Please setup `org/my-repo` with Taskcluster*.
67
+ Install Taskcluster Github
68
+ --------------------------
77
69
 
78
- Create Tasks
79
- ------------
70
+ .. note::
80
71
 
81
- The last step is to define your tasks. You'll need:
72
+ If you are not using Github, skip this section and reach out to your
73
+ Taskcluster administrators, there may be other steps to integrate your
74
+ repository.
82
75
 
83
- 1. A :term:`Decision Task` defined in ``.taskcluster.yml``
84
- 2. A Taskgraph setup in the ``taskcluster`` directory
76
+ Each Taskcluster deployment has an associated Github app that needs to be added
77
+ to your repo. If you are unsure which app your deployment uses, ask your
78
+ Taskcluster administrators.
85
79
 
86
- Luckily Taskgraph provides an ``init`` command that can generate both of these
87
- things automatically! Run:
80
+ .. note::
88
81
 
89
- .. code-block:: shell
82
+ The Github app for Mozilla's `Firefox-CI
83
+ <https://firefox-ci-tc.services.mozilla.com>`_ instance can be found here:
90
84
 
91
- $ pip install taskcluster-taskgraph
92
- $ taskgraph init
85
+ https://github.com/apps/firefoxci-taskcluster
93
86
 
94
- This will automatically generate all the necessary files. Commit what was
95
- generated:
87
+ Open the page of the Github app for your deployment and click ``Configure``
88
+ near the top right. Then select the repository you'd like to enable. If you are
89
+ not an admin of the organization you are enabling the repo for, this will send
90
+ a request to your Github administrators.
96
91
 
97
- .. code-block:: shell
92
+ .. note::
98
93
 
99
- $ git add .
100
- $ git commit -m "Add Taskcluster files"
94
+ If you do not see a ``Configure`` button, contact your Github administrators
95
+ for assistance.
101
96
 
102
97
  Now when you push, you should have a working Decision task that generates a
103
98
  ``hello-world`` task as well as a ``docker-image`` task that it depends on!
@@ -34,9 +34,8 @@ dependencies = [
34
34
  dynamic = ["version"] # set in src/taskgraph/__init__.py
35
35
 
36
36
  [project.optional-dependencies]
37
- load-image = [
38
- "zstandard"
39
- ]
37
+ load-image = ["zstandard"]
38
+ orjson = ["orjson"]
40
39
 
41
40
  [project.scripts]
42
41
  taskgraph = "taskgraph.main:main"
@@ -2,7 +2,7 @@
2
2
  # License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
 
5
- __version__ = "14.2.0"
5
+ __version__ = "14.3.0"
6
6
 
7
7
  # Maximum number of dependencies a single task can have
8
8
  # https://docs.taskcluster.net/docs/reference/platform/queue/api#createTask
@@ -4,7 +4,6 @@
4
4
 
5
5
 
6
6
  import functools
7
- import json
8
7
  from collections import namedtuple
9
8
  from types import FunctionType
10
9
 
@@ -13,7 +12,7 @@ from mozilla_repo_urls import parse
13
12
  from taskgraph import create
14
13
  from taskgraph.config import load_graph_config
15
14
  from taskgraph.parameters import Parameters
16
- from taskgraph.util import hash, taskcluster, yaml
15
+ from taskgraph.util import hash, json, taskcluster, yaml
17
16
  from taskgraph.util.python_path import import_sibling_modules
18
17
 
19
18
  actions = []
@@ -3,7 +3,6 @@
3
3
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
 
5
5
 
6
- import json
7
6
  import logging
8
7
  import os
9
8
  import sys
@@ -11,6 +10,7 @@ from concurrent import futures
11
10
 
12
11
  from slugid import nice as slugid
13
12
 
13
+ from taskgraph.util import json
14
14
  from taskgraph.util.parameterization import resolve_timestamps
15
15
  from taskgraph.util.taskcluster import CONCURRENCY, get_session
16
16
  from taskgraph.util.time import current_json_time
@@ -116,8 +116,7 @@ def create_task(session, task_id, label, task_def):
116
116
  [task_id, task_def],
117
117
  sys.stdout,
118
118
  sort_keys=True,
119
- indent=4,
120
- separators=(",", ": "),
119
+ indent=2,
121
120
  )
122
121
  # add a newline
123
122
  print("")
@@ -3,7 +3,6 @@
3
3
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
 
5
5
 
6
- import json
7
6
  import logging
8
7
  import os
9
8
  import pathlib
@@ -19,6 +18,7 @@ from taskgraph.create import create_tasks
19
18
  from taskgraph.generator import TaskGraphGenerator
20
19
  from taskgraph.parameters import Parameters, get_version
21
20
  from taskgraph.taskgraph import TaskGraph
21
+ from taskgraph.util import json
22
22
  from taskgraph.util.python_path import find_object
23
23
  from taskgraph.util.schema import Schema, validate_schema
24
24
  from taskgraph.util.vcs import Repository, get_repository
@@ -374,7 +374,7 @@ def write_artifact(filename, data):
374
374
  yaml.safe_dump(data, f, allow_unicode=True, default_flow_style=False)
375
375
  elif filename.endswith(".json"):
376
376
  with open(path, "w") as f:
377
- json.dump(data, f, sort_keys=True, indent=2, separators=(",", ": "))
377
+ json.dump(data, f, sort_keys=True, indent=2)
378
378
  elif filename.endswith(".gz"):
379
379
  import gzip
380
380
 
@@ -3,7 +3,6 @@
3
3
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
 
5
5
 
6
- import json
7
6
  import os
8
7
  import shlex
9
8
  import subprocess
@@ -18,7 +17,7 @@ try:
18
17
  except ImportError as e:
19
18
  zstd = e
20
19
 
21
- from taskgraph.util import docker
20
+ from taskgraph.util import docker, json
22
21
  from taskgraph.util.taskcluster import (
23
22
  get_artifact_url,
24
23
  get_root_url,
@@ -251,7 +250,8 @@ def _index(l: List, s: str) -> Optional[int]:
251
250
  pass
252
251
 
253
252
 
254
- def load_task(task_id, remove=True):
253
+ def load_task(task_id, remove=True, user=None):
254
+ user = user or "worker"
255
255
  task_def = get_task_definition(task_id)
256
256
 
257
257
  if (
@@ -316,7 +316,7 @@ def load_task(task_id, remove=True):
316
316
  image_tag,
317
317
  "bash",
318
318
  "-c",
319
- f"{shlex.join(command)} && cd $TASK_WORKDIR && su -p worker",
319
+ f"{shlex.join(command)} && cd $TASK_WORKDIR && su -p {user}",
320
320
  ]
321
321
 
322
322
  if remove:
@@ -4,7 +4,6 @@
4
4
 
5
5
  import argparse
6
6
  import atexit
7
- import json
8
7
  import logging
9
8
  import os
10
9
  import re
@@ -56,9 +55,9 @@ def format_taskgraph_labels(taskgraph):
56
55
 
57
56
 
58
57
  def format_taskgraph_json(taskgraph):
59
- return json.dumps(
60
- taskgraph.to_json(), sort_keys=True, indent=2, separators=(",", ": ")
61
- )
58
+ from taskgraph.util import json
59
+
60
+ return json.dumps(taskgraph.to_json(), sort_keys=True, indent=2)
62
61
 
63
62
 
64
63
  def format_taskgraph_yaml(taskgraph):
@@ -667,11 +666,12 @@ def image_digest(args):
667
666
  default=True,
668
667
  help="Keep the docker container after exiting.",
669
668
  )
669
+ @argument("--user", default=None, help="Container user to start shell with.")
670
670
  def load_task(args):
671
671
  from taskgraph.docker import load_task
672
672
 
673
673
  validate_docker()
674
- return load_task(args["task_id"], remove=args["remove"])
674
+ return load_task(args["task_id"], remove=args["remove"], user=args["user"])
675
675
 
676
676
 
677
677
  @command("decision", help="Run the decision task")
@@ -756,6 +756,7 @@ def actions(args):
756
756
  from taskgraph.actions import render_actions_json
757
757
  from taskgraph.generator import TaskGraphGenerator
758
758
  from taskgraph.parameters import parameters_loader
759
+ from taskgraph.util import json
759
760
 
760
761
  if args.pop("verbose", False):
761
762
  logging.root.setLevel(logging.DEBUG)
@@ -765,7 +766,7 @@ def actions(args):
765
766
  tgg = TaskGraphGenerator(root_dir=args.get("root"), parameters=parameters)
766
767
 
767
768
  actions = render_actions_json(tgg.parameters, tgg.graph_config, "DECISION-TASK")
768
- print(json.dumps(actions, sort_keys=True, indent=2, separators=(",", ": ")))
769
+ print(json.dumps(actions, sort_keys=True, indent=2))
769
770
  except Exception:
770
771
  traceback.print_exc()
771
772
  sys.exit(1)
@@ -783,6 +784,7 @@ def actions(args):
783
784
  def action_callback(options):
784
785
  from taskgraph.actions import trigger_action_callback
785
786
  from taskgraph.actions.util import get_parameters
787
+ from taskgraph.util import json
786
788
 
787
789
  try:
788
790
  # the target task for this action (or null if it's a group action)
@@ -832,7 +834,7 @@ def test_action_callback(options):
832
834
  import taskgraph.actions
833
835
  import taskgraph.parameters
834
836
  from taskgraph.config import load_graph_config
835
- from taskgraph.util import yaml
837
+ from taskgraph.util import json, yaml
836
838
 
837
839
  def load_data(filename):
838
840
  with open(filename) as f:
@@ -30,7 +30,7 @@ from .util.workertypes import get_worker_type
30
30
 
31
31
  here = os.path.abspath(os.path.dirname(__file__))
32
32
  logger = logging.getLogger(__name__)
33
- MAX_ROUTES = 10
33
+ MAX_ROUTES = 64
34
34
 
35
35
  registered_morphs = []
36
36
 
@@ -155,10 +155,9 @@ def make_index_task(parent_task, taskgraph, label_to_taskid, parameters, graph_c
155
155
  @register_morph
156
156
  def add_index_tasks(taskgraph, label_to_taskid, parameters, graph_config):
157
157
  """
158
- The TaskCluster queue only allows 10 routes on a task, but we have tasks
159
- with many more routes, for purposes of indexing. This graph morph adds
160
- "index tasks" that depend on such tasks and do the index insertions
161
- directly, avoiding the limits on task.routes.
158
+ The TaskCluster queue only allows 64 routes on a task. In the event a task
159
+ exceeds this limit, this graph morph adds "index tasks" that depend on it
160
+ and do the index insertions directly, avoiding the limit on task.routes.
162
161
  """
163
162
  logger.debug("Morphing: adding index tasks")
164
163
 
@@ -4,7 +4,6 @@
4
4
 
5
5
  import gzip
6
6
  import hashlib
7
- import json
8
7
  import os
9
8
  import time
10
9
  from datetime import datetime
@@ -18,7 +17,7 @@ from urllib.request import urlopen
18
17
  import mozilla_repo_urls
19
18
  from voluptuous import ALLOW_EXTRA, Any, Optional, Required, Schema
20
19
 
21
- from taskgraph.util import yaml
20
+ from taskgraph.util import json, yaml
22
21
  from taskgraph.util.readonlydict import ReadOnlyDict
23
22
  from taskgraph.util.schema import validate_schema
24
23
  from taskgraph.util.taskcluster import find_task_id, get_artifact_url
@@ -2,8 +2,6 @@
2
2
  # License, v. 2.0. If a copy of the MPL was not distributed with this
3
3
  # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
4
 
5
-
6
- import json
7
5
  import logging
8
6
  import os
9
7
  import re
@@ -12,6 +10,7 @@ from voluptuous import Optional, Required
12
10
 
13
11
  import taskgraph
14
12
  from taskgraph.transforms.base import TransformSequence
13
+ from taskgraph.util import json
15
14
  from taskgraph.util.docker import create_context_tar, generate_context_hash
16
15
  from taskgraph.util.schema import Schema
17
16
 
@@ -10,7 +10,6 @@ run-using handlers in `taskcluster/taskgraph/transforms/run`.
10
10
  """
11
11
 
12
12
  import copy
13
- import json
14
13
  import logging
15
14
 
16
15
  from voluptuous import Exclusive, Extra, Optional, Required
@@ -18,6 +17,7 @@ from voluptuous import Exclusive, Extra, Optional, Required
18
17
  from taskgraph.transforms.base import TransformSequence
19
18
  from taskgraph.transforms.cached_tasks import order_tasks
20
19
  from taskgraph.transforms.task import task_description_schema
20
+ from taskgraph.util import json
21
21
  from taskgraph.util import path as mozpath
22
22
  from taskgraph.util.python_path import import_sibling_modules
23
23
  from taskgraph.util.schema import Schema, validate_schema
@@ -7,11 +7,10 @@ worker implementation they operate on, and take the same three parameters, for
7
7
  consistency.
8
8
  """
9
9
 
10
- import json
11
10
  from typing import Any, Dict, List, Union
12
11
 
13
12
  from taskgraph.transforms.base import TransformConfig
14
- from taskgraph.util import path
13
+ from taskgraph.util import json, path
15
14
  from taskgraph.util.caches import CACHES, get_checkout_dir
16
15
  from taskgraph.util.taskcluster import get_artifact_prefix
17
16
 
@@ -6,9 +6,7 @@ Support for running tasks that are invoked via the `run-task` script.
6
6
  """
7
7
 
8
8
  import dataclasses
9
- import hashlib
10
9
  import os
11
- from pathlib import Path
12
10
 
13
11
  from voluptuous import Any, Optional, Required
14
12
 
@@ -27,9 +25,6 @@ EXEC_COMMANDS = {
27
25
  "powershell": ["powershell.exe", "-ExecutionPolicy", "Bypass"],
28
26
  }
29
27
 
30
- RUN_TASK_PATH = Path(__file__).parent.parent.parent / "run-task" / "run-task"
31
- FETCH_CONTENT_PATH = Path(__file__).parent.parent.parent / "run-task" / "fetch-content"
32
-
33
28
  run_task_schema = Schema(
34
29
  {
35
30
  Required("using"): "run-task",
@@ -174,14 +169,10 @@ def generic_worker_run_task(config, task, taskdesc):
174
169
  common_setup(config, task, taskdesc, command)
175
170
 
176
171
  worker.setdefault("mounts", [])
177
- run_task_sha256 = hashlib.sha256(RUN_TASK_PATH.read_bytes()).hexdigest()
178
- fetch_content_sha256 = hashlib.sha256(FETCH_CONTENT_PATH.read_bytes()).hexdigest()
179
172
  worker["mounts"].append(
180
173
  {
181
174
  "content": {
182
- "taskId": {"task-reference": "<decision>"},
183
- "artifact": "public/run-task",
184
- "sha256": run_task_sha256,
175
+ "url": script_url(config, "run-task"),
185
176
  },
186
177
  "file": "./run-task",
187
178
  }
@@ -190,9 +181,7 @@ def generic_worker_run_task(config, task, taskdesc):
190
181
  worker["mounts"].append(
191
182
  {
192
183
  "content": {
193
- "taskId": {"task-reference": "<decision>"},
194
- "artifact": "public/fetch-content",
195
- "sha256": fetch_content_sha256,
184
+ "url": script_url(config, "fetch-content"),
196
185
  },
197
186
  "file": "./fetch-content",
198
187
  }
@@ -0,0 +1,73 @@
1
+ # This Source Code Form is subject to the terms of the Mozilla Public
2
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
3
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
4
+
5
+ """
6
+ This module is a compatibility shim between stdlib json and orjson.
7
+ It uses orjson if available, and falls back to stdlib json.
8
+
9
+ It only supports features and parameters that both modules support,
10
+ and attempts to produce identical output regardless of which module
11
+ is used.
12
+
13
+ The interface is a subset of what's supported by stdlib json.
14
+ """
15
+
16
+ from __future__ import annotations
17
+
18
+ import json
19
+ from typing import TYPE_CHECKING, Any, Callable
20
+
21
+ if TYPE_CHECKING:
22
+ from _typeshed import SupportsRead, SupportsWrite
23
+
24
+ try:
25
+ import orjson
26
+ except ImportError:
27
+ orjson = None
28
+
29
+
30
+ def loads(s: str | bytes | bytearray) -> Any:
31
+ if orjson:
32
+ return orjson.loads(s)
33
+
34
+ return json.loads(s)
35
+
36
+
37
+ def load(fh: SupportsRead[str | bytes]) -> Any:
38
+ if orjson:
39
+ return loads(fh.read())
40
+ return json.load(fh)
41
+
42
+
43
+ def dumps(
44
+ obj: Any,
45
+ default: Callable[[Any], Any] | None = None,
46
+ indent: int | None = None,
47
+ sort_keys: bool = False,
48
+ ) -> str:
49
+ if indent and indent != 2:
50
+ raise ValueError("An indent other than 2 is not supported!")
51
+
52
+ if orjson:
53
+ option = 0
54
+ if indent:
55
+ option |= orjson.OPT_INDENT_2
56
+
57
+ if sort_keys:
58
+ option |= orjson.OPT_SORT_KEYS
59
+
60
+ return orjson.dumps(obj, default=default, option=option).decode("utf-8")
61
+
62
+ separators = (",", ": ") if indent else (",", ":")
63
+ return json.dumps(
64
+ obj,
65
+ default=default,
66
+ indent=indent,
67
+ sort_keys=sort_keys,
68
+ separators=separators,
69
+ )
70
+
71
+
72
+ def dump(obj: Any, fh: SupportsWrite[str], **kwargs) -> None:
73
+ fh.write(dumps(obj, **kwargs))
@@ -9,7 +9,7 @@ apt-get install -y --force-yes --no-install-recommends \
9
9
  python3-pip
10
10
 
11
11
  pushd /setup/taskgraph
12
- uv export --no-cache --no-dev > /setup/requirements.txt
12
+ uv export --no-cache --extra orjson --no-dev > /setup/requirements.txt
13
13
  uv pip install --no-cache --system --break-system-packages -r /setup/requirements.txt
14
14
  uv pip install --no-cache --system --break-system-packages --no-deps .
15
15
  popd