Skip to content

format_dataset_name

kedro_dagster.utils.format_dataset_name(name)

Convert a dataset name so that it is valid under Dagster's naming convention.

Parameters

Name Type Description Default
name str

Name to format.

required

Returns

Type Description
str

Formatted name.

See Also

kedro_dagster.utils.unformat_asset_name : Inverse operation converting Dagster names back to Kedro names. kedro_dagster.utils.format_node_name : Analogous formatter for Kedro node names.

Source Code

Show/Hide source
def format_dataset_name(name: str) -> str:
    """Convert a dataset name so that it is valid under Dagster's naming convention.

    Parameters
    ----------
    name : str
        Name to format.

    Returns
    -------
    str
        Formatted name.

    See Also
    --------
    `kedro_dagster.utils.unformat_asset_name` :
        Inverse operation converting Dagster names back to Kedro names.
    `kedro_dagster.utils.format_node_name` :
        Analogous formatter for Kedro node names.
    """
    # Special-case Dagster reserved identifiers to avoid conflicts with op/asset arg names
    # See dagster._core.definitions.utils.DISALLOWED_NAMES which includes "input" and "output".
    if name in {"input", "output"}:
        msg = f"Dataset name `{name}` is reserved in Dagster. Please rename your Kedro dataset to avoid conflicts with Dagster's naming convention."
        LOGGER.error(msg)
        raise ValueError(msg)

    dataset_name = name.replace(".", KEDRO_DAGSTER_SEPARATOR)

    if not DAGSTER_ALLOWED_PATTERN.match(dataset_name):
        dataset_name = re.sub(r"[^A-Za-z0-9_]", KEDRO_DAGSTER_SEPARATOR, dataset_name)
        LOGGER.warning(
            f"Dataset name `{name}` is not valid under Dagster's naming convention. "
            "Prefer naming your Kedro datasets with valid Dagster names. "
            f"Dataset named `{name}` has been converted to `{dataset_name}`."
        )

    return dataset_name