feat: centralized environment handling, ensures ZEN_MCP_FORCE_ENV_OVERRIDE is honored correctly

fix: updated tests to override env variables they need instead of relying on the current values from .env
This commit is contained in:
Fahad
2025-10-04 14:28:56 +04:00
parent 4015e917ed
commit 2c534ac06e
24 changed files with 300 additions and 179 deletions

View File

@@ -1,9 +1,10 @@
"""Model provider registry for managing available providers."""
import logging
import os
from typing import TYPE_CHECKING, Optional
from utils.env import get_env
from .base import ModelProvider
from .shared import ProviderType
@@ -102,7 +103,7 @@ class ModelProviderRegistry:
provider = provider_class(api_key=api_key)
else:
# Regular class - need to handle URL requirement
custom_url = os.getenv("CUSTOM_API_URL", "")
custom_url = get_env("CUSTOM_API_URL", "") or ""
if not custom_url:
if api_key: # Key is set but URL is missing
logging.warning("CUSTOM_API_KEY set but CUSTOM_API_URL missing skipping Custom provider")
@@ -116,7 +117,7 @@ class ModelProviderRegistry:
# For Gemini, check if custom base URL is configured
if not api_key:
return None
gemini_base_url = os.getenv("GEMINI_BASE_URL")
gemini_base_url = get_env("GEMINI_BASE_URL")
provider_kwargs = {"api_key": api_key}
if gemini_base_url:
provider_kwargs["base_url"] = gemini_base_url
@@ -327,7 +328,7 @@ class ModelProviderRegistry:
if not env_var:
return None
return os.getenv(env_var)
return get_env(env_var)
@classmethod
def _get_allowed_models_for_provider(cls, provider: ModelProvider, provider_type: ProviderType) -> list[str]: