diff --git a/litellm/integrations/mavvrik/__init__.py b/litellm/integrations/mavvrik/__init__.py index 2074004012e..c98aebf22ec 100644 --- a/litellm/integrations/mavvrik/__init__.py +++ b/litellm/integrations/mavvrik/__init__.py @@ -275,6 +275,8 @@ class Service: if not data and not self._settings.has_env_vars: raise ValueError("Mavvrik not configured. Call POST /mavvrik/init first.") + self._settings._ensure_prisma_client() + date_str = date_str or self._yesterday() effective_limit = limit or MAVVRIK_MAX_FETCHED_DATA_RECORDS @@ -326,6 +328,8 @@ class Service: if not data and not self._settings.has_env_vars: raise ValueError("Mavvrik not configured. Call POST /mavvrik/init first.") + self._settings._ensure_prisma_client() + date_str = date_str or self._yesterday() effective_limit = limit or MAVVRIK_MAX_FETCHED_DATA_RECORDS diff --git a/litellm/integrations/mavvrik/exporter.py b/litellm/integrations/mavvrik/exporter.py index 8a2117d11dd..bde7109a73f 100644 --- a/litellm/integrations/mavvrik/exporter.py +++ b/litellm/integrations/mavvrik/exporter.py @@ -14,9 +14,11 @@ Internal methods: _get_usage_data(date_str, limit) → DataFrame _to_csv(df, connection_id) → str -DB not connected: all methods log a warning and return empty/None — never raise. -The scheduler skips the date gracefully; user-triggered endpoints surface the -missing-DB error through Settings._ensure_prisma_client() before reaching here. +DB not connected: + _get_usage_data / _to_csv — log warning and return empty/None (scheduler path). + _stream_pages — raises RuntimeError (propagates to Orchestrator try/except). + Service.export / dry_run — call Settings._ensure_prisma_client() before reaching here, + so they raise before the exporter is called. polars is an optional [proxy] dependency — imported lazily inside methods so SDK-only users are not affected when Logger is imported via custom_logger_registry.