env_parse.py 986 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """环境变量读取(bool / int / float / str),避免各模块重复 ``.lower() in (...)`` 等逻辑。"""
  2. from __future__ import annotations
  3. import os
  4. __all__ = ["env_bool", "env_float", "env_int", "env_str"]
  5. def env_str(name: str, default: str) -> str:
  6. v = os.getenv(name)
  7. if v is None or not str(v).strip():
  8. return default
  9. return str(v).strip()
  10. def env_bool(name: str, default: bool) -> bool:
  11. v = os.getenv(name)
  12. if v is None:
  13. return default
  14. return v.lower() in ("1", "true", "yes")
  15. def env_int(name: str, default: int) -> int:
  16. v = os.getenv(name)
  17. if v is None or not str(v).strip():
  18. return default
  19. try:
  20. return int(v.strip())
  21. except ValueError:
  22. return default
  23. def env_float(name: str, default: float) -> float:
  24. v = os.getenv(name)
  25. if v is None or not str(v).strip():
  26. return default
  27. try:
  28. return float(v.strip())
  29. except ValueError:
  30. return default