Skip to content

enumerate_jobs

kedro_azureml_pipeline.factory.enumerate_jobs(config, pipelines=None)

Render every derived binding into a name -> JobConfig map, overlaying literals.

Bindings are derived from the Kedro pipeline namespaces (see :func:_derive_bindings). Literal (non-factory) jobs entries are included and take precedence over rendered ones on a name collision.

Source Code

Source code in src/kedro_azureml_pipeline/factory.py
def enumerate_jobs(config: KedroAzureMLConfig, pipelines: Mapping[str, Any] | None = None) -> dict[str, JobConfig]:
    """Render every derived binding into a ``name -> JobConfig`` map, overlaying literals.

    Bindings are derived from the Kedro pipeline namespaces (see
    :func:`_derive_bindings`). Literal (non-factory) ``jobs`` entries are included
    and take precedence over rendered ones on a name collision.
    """
    factories = {k: v for k, v in config.jobs.items() if is_factory(k)}
    literals = {k: v for k, v in config.jobs.items() if not is_factory(k)}

    rendered: dict[str, JobConfig] = {}
    for binding in _derive_bindings(config, pipelines):
        result = resolve_target(binding, factories)
        if result is None:  # pragma: no cover - defensive; a derived binding always has its own factory
            raise ValueError(f"No job factory matches binding {binding!r}.")
        name, job_config = result
        if name in rendered:  # pragma: no cover - defensive; bindings are de-duplicated before rendering
            raise ValueError(f"Two bindings render to the same job name '{name}'.")
        rendered[name] = job_config

    rendered.update(literals)  # literal jobs win over rendered ones
    return rendered