taskcluster-taskgraph 19.1.0__tar.gz → 19.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/CHANGELOG.md +7 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/PKG-INFO +1 -1
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/pyproject.toml +1 -1
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/task.py +23 -12
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/schema.py +5 -2
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_task.py +34 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_schema.py +42 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/uv.lock +1 -1
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.codespell-ignore-words.txt +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/CODEOWNERS +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/dependabot.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/codeql-analysis.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/pre-commit-autoupdate.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/pre-commit.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/pypi-publish.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.gitignore +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.pre-commit-config.yaml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.readthedocs.yaml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.taskcluster.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.yamllint +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/CODE_OF_CONDUCT.md +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/CONTRIBUTING.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/LICENSE +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/Makefile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/README.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/index.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/kind.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/loading.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/optimization.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/overview.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/scopes.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/task-graphs.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/transforms.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/conf.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/contributing.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/glossary.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/bootstrap-taskgraph.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/create-actions.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/create-tasks.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/debugging.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/docker.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/index.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/load-task-locally.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/resolve-keyed-by.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/run-locally.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/send-notifications.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/use-fetches.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/index.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/cli.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/index.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/migrations.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/optimization-strategies.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/parameters.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/modules.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.actions.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.loader.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.optimize.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.transforms.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.transforms.run.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.util.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/chunking.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/from_deps.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/index.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/matrix.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/task_context.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/connecting-taskcluster.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/creating-a-task-graph.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/example-taskcluster.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/getting-started.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/index.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/make.bat +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/pytest-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/pytest-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/pytest-taskgraph/src/pytest_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/vcs.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/sphinx-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/sphinx-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/autoschema.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/cancel.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/cancel_all.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/registry.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/retrigger.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/util.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/config.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/create.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/decision.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/docker.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/filter_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/generator.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/graph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/loader/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/loader/default.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/loader/transform.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/main.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/morph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/optimize/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/optimize/base.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/optimize/strategies.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/parameters.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/run-task/fetch-content +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/run-task/hgrc +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/run-task/run-task +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/target_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/task.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/taskgraph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/base.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/chunking.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/code_review.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/docker_image.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/fetch.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/from_deps.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/matrix.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/notify.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/run/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/run/common.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/run/index_search.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/run/run_task.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/run/toolchain.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/task_context.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/archive.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/attributes.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/cached_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/caches.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/copy.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/dependencies.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/docker.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/hash.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/json.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/keyed_by.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/parameterization.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/path.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/python_path.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/readonlydict.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/set_name.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/shell.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/taskcluster.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/taskgraph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/templates.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/time.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/treeherder.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/vcs.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/verify.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/workertypes.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/yaml.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/REGISTRY +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/decision/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/decision/HASH +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/decision/README.md +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/decision/VERSION +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/decision/system-setup.sh +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/fetch/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/image_builder/README.rst +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/index-task/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/index-task/README +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/index-task/insert-indexes.js +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/index-task/package.json +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/index-task/yarn.lock +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/python/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/run-task/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/run-task/system-setup.sh +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/skopeo/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/skopeo/policy.json +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/docker/skopeo/push_image.sh +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/check/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/codecov/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/complete/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/doc/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/fetch/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/push-image/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/test/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/test/linux.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/kinds/test/windows.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/scripts/codecov-upload.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/scripts/external_tools/tooltool.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/self_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/self_taskgraph/custom_parameters.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/self_taskgraph/custom_target_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/self_taskgraph/transforms/add_pr_route.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/self_taskgraph/transforms/push_image.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/test/params/main-repo-pull-request-untrusted.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/test/params/main-repo-pull-request.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/test/params/main-repo-push.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/test/params/main-repo-release-pytest-taskgraph.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/taskcluster/test/params/main-repo-release-taskcluster-taskgraph.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/cookiecutter.json +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/hooks/post_gen_project.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/{{cookiecutter.project_name}}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/{{cookiecutter.project_name}}/taskcluster/docker/linux/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/hello/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/{{cookiecutter.project_name}}/taskcluster/{{cookiecutter.project_slug}}_taskgraph/transforms/hello.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/template/{{cookiecutter.project_name}}/taskcluster.github.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/__init__.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/automationrelevance.json +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/conftest.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/task_context.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/docker/hello-world/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/docker/hello-world-tag/Dockerfile +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/docker/hello-world-tag/REGISTRY +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/docker/hello-world-tag/VERSION +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/scripts/toolchain/run.ps1 +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/scripts/toolchain/run.sh +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/taskcluster/test_taskgraph/transforms/foo.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/data/testmod/thing.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/mockedopen.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_actions_registry.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_config.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_create.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_decision.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_docker.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_generator.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_graph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_main.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_morph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_optimize.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_optimize_strategies.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_parameters.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_scripts_fetch_content.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_scripts_run_task.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_target_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_taskgraph.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transform_chunking.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transform_docker_image.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transform_task_context.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_base.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_cached_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_fetch.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_from_deps.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_matrix.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_notify.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_run.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_run_run_task.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_transforms_run_toolchain.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_archive.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_attributes.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_cached_tasks.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_copy.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_dependencies.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_docker.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_json.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_keyed_by.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_parameterization.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_path.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_python_path.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_readonlydict.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_taskcluster.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_templates.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_time.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_treeherder.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_vcs.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_verify.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_workertypes.py +0 -0
- {taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/test/test_util_yaml.py +0 -0
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/task.py
RENAMED
|
@@ -16,11 +16,14 @@ from copy import deepcopy
|
|
|
16
16
|
from dataclasses import dataclass
|
|
17
17
|
from typing import Callable, Literal, Optional, Union
|
|
18
18
|
|
|
19
|
+
import voluptuous
|
|
20
|
+
|
|
19
21
|
from taskgraph.transforms.base import TransformSequence
|
|
20
22
|
from taskgraph.util.hash import hash_path
|
|
21
23
|
from taskgraph.util.keyed_by import evaluate_keyed_by
|
|
22
24
|
from taskgraph.util.schema import (
|
|
23
25
|
IndexSchema,
|
|
26
|
+
LegacySchema,
|
|
24
27
|
OptimizationType,
|
|
25
28
|
Schema,
|
|
26
29
|
TaskPriority,
|
|
@@ -194,6 +197,14 @@ class PayloadBuilder:
|
|
|
194
197
|
|
|
195
198
|
|
|
196
199
|
def payload_builder(name, schema):
|
|
200
|
+
if isinstance(schema, dict):
|
|
201
|
+
schema = LegacySchema(
|
|
202
|
+
{
|
|
203
|
+
voluptuous.Required("implementation"): name,
|
|
204
|
+
voluptuous.Optional("os"): str,
|
|
205
|
+
}
|
|
206
|
+
).extend(schema)
|
|
207
|
+
|
|
197
208
|
def wrap(func):
|
|
198
209
|
assert name not in payload_builders, f"duplicate payload builder name {name}"
|
|
199
210
|
payload_builders[name] = PayloadBuilder(schema, func)
|
|
@@ -232,22 +243,22 @@ DockerImage = Union[str, dict[str, str]]
|
|
|
232
243
|
|
|
233
244
|
class DockerWorkerCacheEntry(Schema):
|
|
234
245
|
# only one type is supported by any of the workers right now
|
|
235
|
-
type: Literal["persistent"]
|
|
246
|
+
type: Literal["persistent"] = "persistent"
|
|
236
247
|
# name of the cache, allowing reuse by subsequent tasks naming the same cache
|
|
237
|
-
name: str
|
|
248
|
+
name: Optional[str] = None
|
|
238
249
|
# location in the task image where the cache will be mounted
|
|
239
|
-
mount_point: str
|
|
250
|
+
mount_point: Optional[str] = None
|
|
240
251
|
# Whether the cache is not used in untrusted environments (like the Try repo).
|
|
241
252
|
skip_untrusted: Optional[bool] = None
|
|
242
253
|
|
|
243
254
|
|
|
244
255
|
class DockerWorkerArtifact(Schema):
|
|
245
256
|
# type of artifact -- simple file, or recursive directory, or a volume mounted directory.
|
|
246
|
-
type: Literal["file", "directory", "volume"]
|
|
257
|
+
type: Optional[Literal["file", "directory", "volume"]] = None
|
|
247
258
|
# task image path from which to read artifact
|
|
248
|
-
path: str
|
|
259
|
+
path: Optional[str] = None
|
|
249
260
|
# name of the produced artifact (root of the names for type=directory)
|
|
250
|
-
name: str
|
|
261
|
+
name: Optional[str] = None
|
|
251
262
|
|
|
252
263
|
|
|
253
264
|
class DockerWorkerPayloadSchema(Schema, forbid_unknown_fields=False, kw_only=True):
|
|
@@ -675,12 +686,12 @@ def build_generic_worker_payload(config, task, task_def):
|
|
|
675
686
|
|
|
676
687
|
|
|
677
688
|
class ReleaseProperties(Schema):
|
|
678
|
-
app_name: str
|
|
679
|
-
app_version: str
|
|
680
|
-
branch: str
|
|
681
|
-
build_id: str
|
|
682
|
-
hash_type: str
|
|
683
|
-
platform: str
|
|
689
|
+
app_name: Optional[str] = None
|
|
690
|
+
app_version: Optional[str] = None
|
|
691
|
+
branch: Optional[str] = None
|
|
692
|
+
build_id: Optional[str] = None
|
|
693
|
+
hash_type: Optional[str] = None
|
|
694
|
+
platform: Optional[str] = None
|
|
684
695
|
|
|
685
696
|
|
|
686
697
|
class UpstreamArtifact(Schema, rename="camel"):
|
|
@@ -48,6 +48,9 @@ def validate_schema(schema, obj, msg_prefix):
|
|
|
48
48
|
# Handle plain Python types (e.g. str, int) via msgspec.convert
|
|
49
49
|
elif isinstance(schema, type):
|
|
50
50
|
msgspec.convert(obj, schema)
|
|
51
|
+
# Handle plain dict schemas (e.g. from downstream payload builders)
|
|
52
|
+
elif isinstance(schema, dict):
|
|
53
|
+
voluptuous.Schema(schema)(obj)
|
|
51
54
|
else:
|
|
52
55
|
raise TypeError(f"Unsupported schema type: {type(schema)}")
|
|
53
56
|
except (
|
|
@@ -316,9 +319,9 @@ class Schema(
|
|
|
316
319
|
|
|
317
320
|
class IndexSchema(Schema):
|
|
318
321
|
# the name of the product this build produces
|
|
319
|
-
product: str
|
|
322
|
+
product: Optional[str] = None
|
|
320
323
|
# the names to use for this task in the TaskCluster index
|
|
321
|
-
job_name: str
|
|
324
|
+
job_name: Optional[str] = None
|
|
322
325
|
# Type of gecko v2 index to use
|
|
323
326
|
type: str = "generic"
|
|
324
327
|
# The rank that the task will receive in the TaskCluster
|
|
@@ -7,6 +7,7 @@ from pathlib import Path
|
|
|
7
7
|
from pprint import pprint
|
|
8
8
|
|
|
9
9
|
import pytest
|
|
10
|
+
import voluptuous
|
|
10
11
|
from pytest_taskgraph import FakeParameters
|
|
11
12
|
|
|
12
13
|
from taskgraph.transforms import task
|
|
@@ -966,3 +967,36 @@ def test_task_priority(run_transform, graph_config, test_task):
|
|
|
966
967
|
assert task_dict["task"]["priority"] == priority
|
|
967
968
|
else:
|
|
968
969
|
assert task_dict["task"]["priority"] == graph_config["task-priority"]
|
|
970
|
+
|
|
971
|
+
|
|
972
|
+
@pytest.fixture
|
|
973
|
+
def dict_schema_builder():
|
|
974
|
+
@task.payload_builder("test-builder", schema={"command": [str]})
|
|
975
|
+
def _builder(config, task, task_def):
|
|
976
|
+
pass
|
|
977
|
+
|
|
978
|
+
yield task.payload_builders["test-builder"].schema
|
|
979
|
+
task.payload_builders.pop("test-builder", None)
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
@pytest.mark.parametrize(
|
|
983
|
+
"payload",
|
|
984
|
+
(
|
|
985
|
+
{"implementation": "test-builder", "command": ["echo"]},
|
|
986
|
+
{"implementation": "test-builder", "command": ["echo"], "os": "linux"},
|
|
987
|
+
),
|
|
988
|
+
)
|
|
989
|
+
def test_dict_schema_accepts_valid_payload(dict_schema_builder, payload):
|
|
990
|
+
dict_schema_builder(payload)
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
@pytest.mark.parametrize(
|
|
994
|
+
"payload",
|
|
995
|
+
(
|
|
996
|
+
{"implementation": "wrong-name", "command": ["echo"]},
|
|
997
|
+
{"command": ["echo"]},
|
|
998
|
+
),
|
|
999
|
+
)
|
|
1000
|
+
def test_dict_schema_rejects_invalid_payload(dict_schema_builder, payload):
|
|
1001
|
+
with pytest.raises(voluptuous.MultipleInvalid):
|
|
1002
|
+
dict_schema_builder(payload)
|
|
@@ -9,6 +9,7 @@ import pytest
|
|
|
9
9
|
|
|
10
10
|
import taskgraph
|
|
11
11
|
from taskgraph.util.schema import (
|
|
12
|
+
IndexSchema,
|
|
12
13
|
Schema,
|
|
13
14
|
optionally_keyed_by,
|
|
14
15
|
resolve_keyed_by,
|
|
@@ -241,6 +242,47 @@ class TestResolveKeyedBy(unittest.TestCase):
|
|
|
241
242
|
)
|
|
242
243
|
|
|
243
244
|
|
|
245
|
+
class TestNestedStructFieldsOptional(unittest.TestCase):
|
|
246
|
+
"""Regression test: bare keys in nested voluptuous dict schemas were optional
|
|
247
|
+
by default. The msgspec migration must preserve this — nested struct fields
|
|
248
|
+
without defaults should not be required."""
|
|
249
|
+
|
|
250
|
+
def test_index_schema_accepts_partial_fields(self):
|
|
251
|
+
"""IndexSchema should accept data with only 'type', omitting product/job-name."""
|
|
252
|
+
|
|
253
|
+
validate_schema(
|
|
254
|
+
IndexSchema,
|
|
255
|
+
{"type": "custom-index"},
|
|
256
|
+
"index schema",
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
def test_index_schema_accepts_all_fields(self):
|
|
260
|
+
"""IndexSchema should still accept full data."""
|
|
261
|
+
|
|
262
|
+
validate_schema(
|
|
263
|
+
IndexSchema,
|
|
264
|
+
{
|
|
265
|
+
"type": "generic",
|
|
266
|
+
"product": "firefox",
|
|
267
|
+
"job-name": "build",
|
|
268
|
+
"rank": "by-tier",
|
|
269
|
+
},
|
|
270
|
+
"index schema",
|
|
271
|
+
)
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
class TestValidateSchemaDictHandler(unittest.TestCase):
|
|
275
|
+
"""validate_schema must accept plain dict schemas passed
|
|
276
|
+
by downstream payload builders without raising TypeError."""
|
|
277
|
+
|
|
278
|
+
def test_dict_schema_valid(self):
|
|
279
|
+
validate_schema({"name": str, "count": int}, {"name": "a", "count": 1}, "pfx")
|
|
280
|
+
|
|
281
|
+
def test_dict_schema_invalid(self):
|
|
282
|
+
with self.assertRaises(Exception):
|
|
283
|
+
validate_schema({"name": str}, {"name": 123}, "pfx")
|
|
284
|
+
|
|
285
|
+
|
|
244
286
|
def test_optionally_keyed_by():
|
|
245
287
|
typ = optionally_keyed_by("foo", str, use_msgspec=True)
|
|
246
288
|
assert msgspec.convert("baz", typ) == "baz"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/codeql-analysis.yml
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/pre-commit.yml
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/.github/workflows/pypi-publish.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/concepts/optimization.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/bootstrap-taskgraph.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/load-task-locally.rst
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/resolve-keyed-by.rst
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/howto/send-notifications.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/modules.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/source/taskgraph.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/chunking.rst
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/index.rst
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/reference/transforms/matrix.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/example-taskcluster.yml
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/docs/tutorials/getting-started.rst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/pytest-taskgraph/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/packages/sphinx-taskgraph/README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/__init__.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/add_new_jobs.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/cancel.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/cancel_all.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/registry.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/actions/retrigger.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/loader/__init__.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/loader/default.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/loader/transform.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/optimize/__init__.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/optimize/base.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/optimize/strategies.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/run-task/fetch-content
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/run-task/run-task
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/__init__.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/base.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/chunking.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/fetch.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/from_deps.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/matrix.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/notify.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/transforms/run/common.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/attributes.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/cached_tasks.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/dependencies.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/keyed_by.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/parameterization.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/python_path.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/readonlydict.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/set_name.py
RENAMED
|
File without changes
|
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/taskcluster.py
RENAMED
|
File without changes
|
{taskcluster_taskgraph-19.1.0 → taskcluster_taskgraph-19.2.0}/src/taskgraph/util/taskgraph.py
RENAMED
|
File without changes
|