Spaces:
Sleeping
Sleeping
| """Environment helpers for LLM provider configuration.""" | |
| from __future__ import annotations | |
| import os | |
| import shlex | |
| from pathlib import Path | |
| def load_project_dotenv(dotenv_path: str | Path = ".env", *, override: bool = False) -> Path | None: | |
| """Load simple shell-style KEY=value lines into ``os.environ``.""" | |
| path = Path(dotenv_path).expanduser().resolve() | |
| if not path.exists(): | |
| return None | |
| for raw_line in path.read_text(encoding="utf-8").splitlines(): | |
| parsed = parse_dotenv_line(raw_line) | |
| if parsed is None: | |
| continue | |
| key, value = parsed | |
| if not override and key in os.environ: | |
| continue | |
| os.environ[key] = value | |
| return path | |
| def parse_dotenv_line(raw_line: str) -> tuple[str, str] | None: | |
| line = raw_line.strip() | |
| if not line or line.startswith("#"): | |
| return None | |
| if line.startswith("export "): | |
| line = line[len("export ") :].strip() | |
| if "=" not in line: | |
| return None | |
| key, value = line.split("=", 1) | |
| key = key.strip() | |
| if not key: | |
| return None | |
| return key, _parse_env_value(value.strip()) | |
| def _parse_env_value(value: str) -> str: | |
| if not value: | |
| return "" | |
| try: | |
| parsed = shlex.split(value, posix=True) | |
| except ValueError: | |
| return value | |
| if len(parsed) == 1: | |
| return parsed[0] | |
| return value | |