|
1 | 1 | from __future__ import annotations |
2 | 2 |
|
| 3 | +from graphium_core.utils import missing_provider |
| 4 | + |
3 | 5 | from .openai import OpenAIEmbedder, OpenAIEmbedderConfig |
4 | 6 |
|
5 | 7 | __all__ = ['OpenAIEmbedder', 'OpenAIEmbedderConfig'] |
6 | 8 |
|
7 | 9 |
|
8 | | -def _missing_provider(name: str, dependency: str) -> type: |
9 | | - class _MissingProvider: # pragma: no cover - shim for optional extras |
10 | | - def __init__(self, *args, **kwargs): |
11 | | - raise ImportError( |
12 | | - f'{name} requires the optional dependency "{dependency}". ' |
13 | | - f'Install it via `uv sync --extra {dependency}` or the corresponding extras group.' |
14 | | - ) |
15 | | - |
16 | | - _MissingProvider.__name__ = f'Missing{name}' |
17 | | - return _MissingProvider |
18 | | - |
19 | | - |
20 | 10 | try: # pragma: no cover - optional dependency |
21 | 11 | from .gemini import GeminiEmbedder, GeminiEmbedderConfig # type: ignore[unused-import] |
22 | 12 | except ImportError: # pragma: no cover |
23 | | - GeminiEmbedder = _missing_provider('GeminiEmbedder', 'google-genai') # type: ignore[assignment] |
24 | | - GeminiEmbedderConfig = _missing_provider('GeminiEmbedderConfig', 'google-genai') # type: ignore[assignment] |
| 13 | + GeminiEmbedder = missing_provider('GeminiEmbedder', 'google-genai') # type: ignore[assignment] |
| 14 | + GeminiEmbedderConfig = missing_provider('GeminiEmbedderConfig', 'google-genai') # type: ignore[assignment] |
25 | 15 | else: # pragma: no cover |
26 | 16 | __all__.extend(['GeminiEmbedder', 'GeminiEmbedderConfig']) |
27 | 17 |
|
28 | 18 | try: # pragma: no cover - optional dependency |
29 | 19 | from .voyage import VoyageAIEmbedder, VoyageAIEmbedderConfig # type: ignore[unused-import] |
30 | 20 | except ImportError: # pragma: no cover |
31 | | - VoyageAIEmbedder = _missing_provider('VoyageAIEmbedder', 'voyageai') # type: ignore[assignment] |
32 | | - VoyageAIEmbedderConfig = _missing_provider('VoyageAIEmbedderConfig', 'voyageai') # type: ignore[assignment] |
| 21 | + VoyageAIEmbedder = missing_provider('VoyageAIEmbedder', 'voyageai') # type: ignore[assignment] |
| 22 | + VoyageAIEmbedderConfig = missing_provider('VoyageAIEmbedderConfig', 'voyageai') # type: ignore[assignment] |
33 | 23 | else: # pragma: no cover |
34 | 24 | __all__.extend(['VoyageAIEmbedder', 'VoyageAIEmbedderConfig']) |
35 | 25 |
|
36 | 26 | try: # pragma: no cover - optional dependency |
37 | 27 | from .embeddinggemma import EmbeddingGemmaConfig, EmbeddingGemmaEmbedder # type: ignore[unused-import] |
38 | 28 | except ImportError: # pragma: no cover |
39 | | - EmbeddingGemmaEmbedder = _missing_provider('EmbeddingGemmaEmbedder', 'sentence-transformers') # type: ignore[assignment] |
40 | | - EmbeddingGemmaConfig = _missing_provider('EmbeddingGemmaConfig', 'sentence-transformers') # type: ignore[assignment] |
| 29 | + EmbeddingGemmaEmbedder = missing_provider('EmbeddingGemmaEmbedder', 'sentence-transformers') # type: ignore[assignment] |
| 30 | + EmbeddingGemmaConfig = missing_provider('EmbeddingGemmaConfig', 'sentence-transformers') # type: ignore[assignment] |
41 | 31 | else: # pragma: no cover |
42 | 32 | __all__.extend(['EmbeddingGemmaEmbedder', 'EmbeddingGemmaConfig']) |
0 commit comments