diff --git a/openagent_eval/providers/retrievers/pgvector.py b/openagent_eval/providers/retrievers/pgvector.py index 3bf580c..a726ee1 100644 --- a/openagent_eval/providers/retrievers/pgvector.py +++ b/openagent_eval/providers/retrievers/pgvector.py @@ -7,6 +7,7 @@ from __future__ import annotations +import importlib.util from typing import TYPE_CHECKING, Any from openagent_eval.exceptions.provider import ( @@ -60,12 +61,15 @@ def __init__( self._conn: Any = None try: - import psycopg - except ImportError as exc: # pragma: no cover - depends on installed dep - raise ImportError( - "psycopg + pgvector are required for the pgvector retriever. " - "Install it with: pip install openagent-eval[pgvector]" - ) from exc + if importlib.util.find_spec("psycopg") is None: # pragma: no cover - depends on installed dep + raise ImportError( + "psycopg + pgvector are required for the pgvector retriever. " + "Install it with: pip install openagent-eval[pgvector]" + ) + except ValueError: # pragma: no cover - mocked module in tests + # importlib.util.find_spec raises ValueError for mocked modules + # (e.g., in tests where psycopg is patched into sys.modules) + pass async def _ensure_connection(self) -> None: """Lazily open the async Postgres connection on first use.