Configuration Source of Truth

Maintain configuration in a single, consistent way across the codebase: - **Use explicit defaults + safe fallbacks:** If function parameters accept `None`, resolve them via config defaults (and document why). Prefer provider-specific keys so changing one provider doesn’t silently alter another.

copy reviewer prompt

Prompt

Reviewer Prompt

Maintain configuration in a single, consistent way across the codebase:

  • Use explicit defaults + safe fallbacks: If function parameters accept None, resolve them via config defaults (and document why). Prefer provider-specific keys so changing one provider doesn’t silently alter another.
  • Avoid duplicated “source of truth”: If base URLs / endpoints / constants are repeated across modules, centralize them (e.g., one dict/module imported everywhere) rather than copying per file.
  • Stay aligned with shared validation: When configs are meant to represent “valid” values (e.g., model names), mirror the upstream/default config + validators. If you need to change allowed values, do it via the upstream/shared change—not by diverging locally.

Example pattern (provider-specific defaults + None fallback):

def get_global_news(curr_date, look_back_days: int | None = 7, limit: int | None = 50) -> dict:
    # Resolve None via provider-specific config keys
    if look_back_days is None:
        look_back_days = DEFAULT_CONFIG.get("global_news_look_back_days", 7)
    if limit is None:
        # Keep Alpha Vantage historical default separate from other providers
        limit = DEFAULT_CONFIG.get("av_global_news_limit", 50)
    ...

Follow-up actions when issues are found:

  • If you add a new provider, update the centralized config mapping once (and remove/avoid duplicating URLs elsewhere).
  • If you adjust valid model/provider values, open an upstream-wide PR so validators/defaults stay consistent.

Source discussions