Files
resume/resume/utils/env.py
Pavel Sobolev d5ff05abdb add linters
2025-11-13 01:33:00 +03:00

53 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""Утилиты чтения переменных окружения с безопасным логированием."""
from __future__ import annotations
import logging
import os
logger = logging.getLogger(__name__)
def env_bool(name: str, default: bool = False) -> bool:
"""Получить булево значение из переменной окружения.
Args:
name (str): Имя переменной окружения.
default (bool): Значение по умолчанию, если переменная не установлена.
Returns:
bool: Значение переменной, интерпретированное как булево. Строка "true" (в любом регистре)
трактуется как True, остальные значения — как False.
"""
val = os.getenv(name)
if val is None:
if logger.isEnabledFor(logging.INFO):
logger.info(f"ENV {name} отсутствует; используется default={default}")
return default
result = val.lower() == "true"
if logger.isEnabledFor(logging.INFO):
logger.info(f"ENV {name} интерпретирован как bool={result}")
return result
def env_list(name: str, default: list[str] | None = None) -> list[str]:
"""Получить список строк из переменной окружения (разделитель — запятая).
Args:
name (str): Имя переменной окружения.
default (list[str] | None): Значение по умолчанию, если переменная пустая или отсутствует.
Returns:
list[str]: Список строк после split по запятой и trim пробелов. Пустые элементы исключаются.
"""
raw = os.getenv(name)
if not raw:
result = default or []
if logger.isEnabledFor(logging.INFO):
logger.info(f"ENV {name} пуст/отсутствует; список (len={len(result)}) из default")
return result
parts = [item.strip() for item in raw.split(",") if item.strip()]
if logger.isEnabledFor(logging.INFO):
logger.info(f"ENV {name} разобран как список (len={len(parts)})")
return parts