Files
StarAsh042 1042e4d1df feat(core): CSV 读取与参数归一化
CSV 读取要处理编码、列识别与旧版记录解析;参数归一化负责把界面上
可能传来的字符串容错转成 int / float / bool。
2026-10-12 09:12:00 +08:00

46 lines
1.5 KiB
Python

"""节点入参的容错转换。
ComfyUI 本身会按 ``INPUT_TYPES`` 校验类型与范围(见 ``execution.py`` 的
``validate_inputs``),因此这些兜底主要服务于「外部脚本直接调用节点类」的场景:
传进来的可能是 ``None``、字符串或其它可转换的值,这里统一转换并在失败时回退默认值。
各节点共用一份实现,避免两个节点对「参数不是合法整数」的处理出现分歧。
"""
from typing import Any
from .constants import LOGGER
__all__ = ["as_text", "as_int", "as_float", "as_bool"]
def as_text(value: Any) -> str:
"""把可能为 None 的字符串输入安全地转成 str。"""
return "" if value is None else str(value)
def as_int(value: Any, default: int = 0) -> int:
try:
return int(value)
except (TypeError, ValueError):
LOGGER.warning("[RollingArtist] 参数 %r 不是合法整数,回退为默认值 %r", value, default)
return default
def as_float(value: Any, default: float = 0.0) -> float:
try:
return float(value)
except (TypeError, ValueError):
LOGGER.warning("[RollingArtist] 参数 %r 不是合法数值,回退为默认值 %r", value, default)
return default
def as_bool(value: Any, default: bool = True) -> bool:
if value is None:
return default
if isinstance(value, bool):
return value
if isinstance(value, str):
return value.strip().lower() not in ("", "false", "0", "no", "off")
return bool(value)