mod_env.py 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. """
  2. Переменные окружения для контейнеризации.
  3. """
  4. import os
  5. from .mod_result import Result
  6. def env_str(name_env: str) -> Result[str]:
  7. """Возвращает строку из переменной окружения"""
  8. param = os.getenv(name_env)
  9. if param is None or param == "":
  10. return Result(err=f"env_str(): env {name_env} not set")
  11. return Result(result=param)
  12. def env_int(name_env: str) -> Result[int]:
  13. """Возвращает целое из переменной окружения"""
  14. param: str | None = os.getenv(name_env)
  15. if param is None or param == "":
  16. return Result(err=f"env_int(): env {name_env} not set")
  17. iparam = 0
  18. err = ""
  19. try:
  20. iparam = int(param) # type: ignore
  21. except TypeError as e:
  22. err = f"env_int(): in convert str to int, err=\n\t{e}"
  23. except ValueError as e:
  24. err = f"env_int(): in convert str to int, err=\n\t{e}"
  25. if err != "":
  26. return Result(err=err)
  27. return Result(result=iparam)
  28. def env_float(name_env: str) -> Result[float]:
  29. """Возвращает вещественное из переменной окружения"""
  30. param: str | None = os.getenv(name_env)
  31. if param is None or param == "":
  32. return Result(err=f"env_float(): env {name_env} not set")
  33. iparam = 0
  34. err = ""
  35. try:
  36. iparam = float(param) # type: ignore
  37. except TypeError as e:
  38. err = f"env_float(): in convert str to float, err=\n\t{e}"
  39. except ValueError as e:
  40. err = f"env_float(): in convert str to float, err=\n\t{e}"
  41. if err != "":
  42. return Result(err=err)
  43. return Result(result=iparam)
  44. def env_bool(name_env: str) -> Result[bool]:
  45. """Возвращает строку из переменной окружения"""
  46. param: str | None = os.getenv(name_env)
  47. if param is None:
  48. return Result(err=f"env_bool(): env {name_env} is None")
  49. param = param.upper()
  50. if param == "TRUE":
  51. return Result(result=True)
  52. if param == "FALSE":
  53. return Result(result=False)
  54. return Result(err=f"env_bool(): env {name_env} bad, val={param}")