Skip to content

expand_job_factories

kedro_dagster.factory.expand_job_factories(config, pipelines=None)

Expand factory jobs keys into concrete jobs, once, before translation.

Returns config unchanged when it declares no factory keys (expansion is a no-op for the common case). Otherwise returns a copy whose jobs are the concrete jobs from :func:enumerate_jobs (rendered factory jobs plus literal jobs), so every downstream consumer sees only concrete jobs.

Parameters

Name Type Description Default
config KedroDagsterConfig

Parsed Kedro-Dagster configuration, possibly containing factory keys.

required
pipelines Mapping[str, Any] or None

Kedro pipeline registry used to derive bindings. Defaults to the global registry when None.

None

Returns

Type Description
KedroDagsterConfig

Configuration whose jobs contain no {placeholder} keys.

See Also

Source Code

Source code in src/kedro_dagster/factory.py
def expand_job_factories(config: KedroDagsterConfig, pipelines: Mapping[str, Any] | None = None) -> KedroDagsterConfig:
    """Expand factory ``jobs`` keys into concrete jobs, once, before translation.

    Returns *config* unchanged when it declares no factory keys (expansion is a
    no-op for the common case). Otherwise returns a copy whose ``jobs`` are the
    concrete jobs from :func:`enumerate_jobs` (rendered factory jobs plus literal
    jobs), so every downstream consumer sees only concrete jobs.

    Parameters
    ----------
    config : KedroDagsterConfig
        Parsed Kedro-Dagster configuration, possibly containing factory keys.
    pipelines : Mapping[str, Any] or None, optional
        Kedro pipeline registry used to derive bindings. Defaults to the global
        registry when ``None``.

    Returns
    -------
    KedroDagsterConfig
        Configuration whose ``jobs`` contain no ``{placeholder}`` keys.

    See Also
    --------
    `kedro_dagster.factory.enumerate_jobs` :
        Renders the concrete job set consumed here.
    `kedro_dagster.translator.KedroProjectTranslator.to_dagster` :
        Calls this immediately after loading the configuration.
    """
    if not any(is_factory(key) for key in (config.jobs or {})):
        return config
    return config.model_copy(update={"jobs": enumerate_jobs(config, pipelines)})