kernels-bot's picture
Uploaded using `kernel-builder`.
89181fc verified
Raw
History Blame
2.07 kB
def _sanitize_constexpr_value(value):
if value is None:
return "NONE"
if isinstance(value, bool):
return str(int(value))
if isinstance(value, int):
return str(value)
if isinstance(value, float):
if value.is_integer():
return str(int(value))
return str(value)
# for lists, tuples, sets - recursively join each
if isinstance(value, (list, tuple, set)):
items = sorted(value, key=str) if isinstance(value, set) else value
sanitized_items = [_sanitize_constexpr_value(item) for item in items]
joined = "_".join(sanitized_items)
return joined if joined else "NONE"
if isinstance(value, str):
cleaned_value = "".join(ch if ch.isalnum() else "_" for ch in value).strip("_")
return cleaned_value.upper() if cleaned_value else "NONE"
cleaned_value = "".join(ch if ch.isalnum() else "_" for ch in str(value)).strip("_")
return cleaned_value.upper() if cleaned_value else "NONE"
def make_kernel_repr(base_name, config_keys, name_key=None):
# When name_key is set, the base name is taken from the matching constexpr
# kwarg at call time (falling back to base_name if missing/empty). Lets a
# single shared kernel produce caller-specific names in compiled artifacts.
def _repr(specialization):
constants = specialization.constants
name = base_name
if name_key is not None:
override = constants.get(name_key, None)
if override:
cleaned = "".join(
ch if ch.isalnum() or ch == "_" else "_" for ch in str(override)
)
if cleaned:
name = cleaned
name_parts = []
for key in config_keys:
value = constants.get(key, None)
symbol = _sanitize_constexpr_value(value)
name_parts.append(f"{key}_{symbol}")
if not name_parts:
return name
suffix = "_".join(name_parts)
return f"{name}_{suffix}"
return _repr