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
View on GitHub
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
|