36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
"""Загрузка секретов: переменные окружения + файл .env в корне проекта.
|
|
|
|
Ключи НЕ хранятся в коде. Порядок:
|
|
1) переменная окружения (OPENROUTER_API_KEY=...);
|
|
2) файл .env в корне проекта (строка вида OPENROUTER_API_KEY=sk-or-...).
|
|
|
|
Файл .env.example — шаблон: cp .env.example .env и вписать свой ключ.
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
from pathlib import Path
|
|
|
|
_PROJECT_ROOT = Path(__file__).resolve().parents[2]
|
|
|
|
|
|
def get_secret(name: str) -> str | None:
|
|
"""Взять секрет из окружения или .env (первый источник побеждает)."""
|
|
value = os.environ.get(name)
|
|
if value:
|
|
return value.strip()
|
|
|
|
env_file = _PROJECT_ROOT / ".env"
|
|
if env_file.is_file():
|
|
for line in env_file.read_text(encoding="utf-8").splitlines():
|
|
line = line.strip()
|
|
if not line or line.startswith("#") or "=" not in line:
|
|
continue
|
|
key, _, val = line.partition("=")
|
|
if key.strip() == name:
|
|
return val.strip().strip('"').strip("'")
|
|
return None
|
|
|
|
|
|
def get_api_key() -> str | None:
|
|
return get_secret("OPENROUTER_API_KEY") |