fix: fallback to repo .env for reader pipeline settings
This commit is contained in:
@@ -6,6 +6,8 @@ from datetime import date, datetime, timezone
|
||||
from pathlib import Path
|
||||
from typing import Any
|
||||
|
||||
from dotenv import dotenv_values
|
||||
|
||||
from summary_mcp.core.keyword_index import persist_keyword_indexes
|
||||
from summary_mcp.core.pipeline import extract_content
|
||||
from summary_mcp.core.summary_loop import resolve_llm_settings, run_loop_payload
|
||||
@@ -40,6 +42,7 @@ DEFAULT_TERM_ALIASES_PATH = REPO_ROOT / "configs" / "term_aliases.json"
|
||||
DEFAULT_TERM_STOPWORDS_PATH = REPO_ROOT / "configs" / "term_stopwords.json"
|
||||
DEFAULT_TERM_DAILY_DIR = DATA_ROOT / "daily"
|
||||
DEFAULT_TERM_STATS_PATH = DATA_ROOT / "term_stats.json"
|
||||
DEFAULT_DOTENV_PATH = REPO_ROOT / ".env"
|
||||
WORKFLOW_NAME = "freshrss_daily_digest"
|
||||
RUN_TYPE = "daily_digest"
|
||||
FETCH_STAGE = "fetch_feed"
|
||||
@@ -59,14 +62,27 @@ def _load_json(path: Path) -> dict[str, Any]:
|
||||
return json.loads(path.read_text(encoding="utf-8-sig"))
|
||||
|
||||
|
||||
def _load_required_env(name: str, value: str | None) -> str:
|
||||
def _load_repo_dotenv() -> dict[str, str]:
|
||||
if not DEFAULT_DOTENV_PATH.exists():
|
||||
return {}
|
||||
return {
|
||||
key: value
|
||||
for key, value in dotenv_values(DEFAULT_DOTENV_PATH).items()
|
||||
if isinstance(key, str) and isinstance(value, str) and value
|
||||
}
|
||||
|
||||
|
||||
def _load_required_env(name: str, value: str | None, dotenv_map: dict[str, str] | None = None) -> str:
|
||||
if value:
|
||||
return value
|
||||
env_value = os.environ.get(name)
|
||||
if env_value:
|
||||
return env_value
|
||||
dotenv_value = (dotenv_map or {}).get(name)
|
||||
if dotenv_value:
|
||||
return dotenv_value
|
||||
raise RuntimeError(
|
||||
f"Missing required value '{name}': not passed as argument and not set as environment variable."
|
||||
f"Missing required value '{name}': not passed as argument, not set as environment variable, and not found in {DEFAULT_DOTENV_PATH}."
|
||||
)
|
||||
|
||||
|
||||
@@ -243,9 +259,10 @@ def run_freshrss_pipeline(
|
||||
|
||||
try:
|
||||
run_store.start_stage(FETCH_STAGE, outputs={"output_dir": str(resolved_output_dir)})
|
||||
resolved_api_base_url = _load_required_env("FRESHRSS_API_BASE_URL", api_base_url)
|
||||
resolved_username = _load_required_env("FRESHRSS_USERNAME", username)
|
||||
resolved_api_password = _load_required_env("FRESHRSS_API_PASSWORD", api_password)
|
||||
dotenv_map = _load_repo_dotenv()
|
||||
resolved_api_base_url = _load_required_env("FRESHRSS_API_BASE_URL", api_base_url, dotenv_map)
|
||||
resolved_username = _load_required_env("FRESHRSS_USERNAME", username, dotenv_map)
|
||||
resolved_api_password = _load_required_env("FRESHRSS_API_PASSWORD", api_password, dotenv_map)
|
||||
resolved_llm_api_key, resolved_llm_model, resolved_llm_api_url = resolve_llm_settings(
|
||||
api_key=llm_api_key,
|
||||
model=llm_model,
|
||||
|
||||
Reference in New Issue
Block a user