Convert a dataset name so that it is valid under Dagster's naming convention.
Parameters
| Name |
Type |
Description |
Default |
name
|
str
|
|
required
|
Returns
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
View on GitHub
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
|