mirror of
https://github.com/OpenBMB/ChatDev.git
synced 2026-04-25 11:18:06 +00:00
37 lines
1.0 KiB
Python
Executable File
37 lines
1.0 KiB
Python
Executable File
"""Environment loading utilities for root-level vars interpolation."""
|
|
|
|
|
|
import os
|
|
from pathlib import Path
|
|
from typing import Dict
|
|
|
|
_DOTENV_LOADED = False
|
|
|
|
|
|
def load_dotenv_file(dotenv_path: Path | None = None) -> None:
|
|
"""Populate ``os.environ`` with key/value pairs from a .env file once per process."""
|
|
global _DOTENV_LOADED
|
|
if _DOTENV_LOADED:
|
|
return
|
|
|
|
path = dotenv_path or Path(".env")
|
|
if path.exists():
|
|
for line in path.read_text(encoding="utf-8").splitlines():
|
|
stripped = line.strip()
|
|
if not stripped or stripped.startswith("#"):
|
|
continue
|
|
if "=" not in stripped:
|
|
continue
|
|
key, value = stripped.split("=", 1)
|
|
key = key.strip()
|
|
value = value.strip().strip('"').strip("'")
|
|
os.environ.setdefault(key, value)
|
|
|
|
_DOTENV_LOADED = True
|
|
|
|
|
|
def build_env_var_map(extra_vars: Dict[str, str] | None = None) -> Dict[str, str]:
|
|
merged: Dict[str, str] = dict(os.environ)
|
|
merged.update(extra_vars or {})
|
|
return merged
|