Skip to content

format_node_name

kedro_dagster.utils.format_node_name(name)

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

Parameters

Name Type Description Default
name str

Node name to format.

required

Returns

Type Description
str

Formatted name.

See Also

kedro_dagster.utils.format_dataset_name : Analogous formatter for Kedro dataset names. kedro_dagster.nodes.NodeTranslator.create_op : Uses formatted node names for Dagster op definitions.

Source Code

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

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

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

    See Also
    --------
    `kedro_dagster.utils.format_dataset_name` :
        Analogous formatter for Kedro dataset names.
    `kedro_dagster.nodes.NodeTranslator.create_op` :
        Uses formatted node names for Dagster op definitions.
    """
    dagster_name = name.replace(".", KEDRO_DAGSTER_SEPARATOR)

    if not DAGSTER_ALLOWED_PATTERN.match(dagster_name):
        dagster_name = f"unnamed_node_{hashlib.md5(name.encode('utf-8')).hexdigest()}"
        LOGGER.warning(
            "Node is either unnamed or not in regex ^[A-Za-z0-9_]+$. "
            "Prefer naming your Kedro nodes directly using a `name`. "
            f"Node named `{name}` has been converted to `{dagster_name}`."
        )

    return dagster_name