""" DeepCoin .env 로드 (프로젝트 루트 기준). config·HTS·스크립트 진입 전에 한 번 호출하면 cwd와 무관하게 동일한 설정을 사용합니다. """ from __future__ import annotations from pathlib import Path from deepcoin.paths import PROJECT_ROOT _ENV_LOADED = False ENV_FILE = PROJECT_ROOT / ".env" def load_project_env(*, override: bool = False) -> bool: """ PROJECT_ROOT/.env 를 python-dotenv로 로드합니다. Args: override: True면 기존 OS 환경 변수를 .env 값으로 덮어씀. Returns: .env 파일이 존재해 로드 시도했으면 True, 없으면 False. """ global _ENV_LOADED if _ENV_LOADED and not override: return ENV_FILE.is_file() try: from dotenv import load_dotenv except ImportError: _ENV_LOADED = True return False if ENV_FILE.is_file(): load_dotenv(ENV_FILE, override=override) _ENV_LOADED = True return True _ENV_LOADED = True return False def env_status() -> dict[str, str | bool]: """디버그용 .env 상태.""" return { "project_root": str(PROJECT_ROOT), "env_file": str(ENV_FILE), "env_exists": ENV_FILE.is_file(), "loaded": _ENV_LOADED, }