"""环境变量读取(bool / int / float / str),避免各模块重复 ``.lower() in (...)`` 等逻辑。""" from __future__ import annotations import os __all__ = ["env_bool", "env_float", "env_int", "env_str"] def env_str(name: str, default: str) -> str: v = os.getenv(name) if v is None or not str(v).strip(): return default return str(v).strip() def env_bool(name: str, default: bool) -> bool: v = os.getenv(name) if v is None: return default return v.lower() in ("1", "true", "yes") def env_int(name: str, default: int) -> int: v = os.getenv(name) if v is None or not str(v).strip(): return default try: return int(v.strip()) except ValueError: return default def env_float(name: str, default: float) -> float: v = os.getenv(name) if v is None or not str(v).strip(): return default try: return float(v.strip()) except ValueError: return default