Loading Tasks

The full task graph generation involves creating tasks for each kind. Kinds are ordered to satisfy kind-dependencies, and then the loader specified in kind.yml is used to load the tasks for that kind. It should point to a Python function like:

def loader(cls, kind, path, config, parameters, loaded_tasks):

The kind is the name of the kind; the configuration for that kind named this class.

The path is the path to the configuration directory for the kind. This can be used to load extra data, templates, etc.

The parameters give details on which to base the task generation. See Parameters for details.

At the time this method is called, all kinds on which this kind depends (that is, specified in the kind-dependencies key in config) have already loaded their tasks, and those tasks are available in the list loaded_tasks.

The return value is a list of inputs to the transforms listed in the kind’s transforms property. The specific format for the input depends on the first transform - whatever it expects. The final transform should be taskgraph.transform.task:transforms, which produces the output format the task-graph generation infrastructure expects.

The transforms key in kind.yml is further documented in Transforms. For more information on how all of this works, consult the docstrings and comments in the source code itself.