cognee/cognee/tasks/translation/providers/__init__.py
andikarachman 69c25b43d7 refactor: address code review feedback
- Made is_available() abstract in base.py with proper implementation in providers
- Added original_error parameter to UnsupportedLanguageError and TranslationConfigError
- Added Field validation for confidence_threshold bounds (0.0-1.0)
- Changed @lru_cache to @lru_cache() for explicit style
- Added get_translation_provider to __all__ in providers/__init__.py
- Replaced deprecated asyncio.get_event_loop() with get_running_loop()
- Added debug logging to is_available() in GoogleTranslationProvider
- Added TODO comment for confidence score improvement in OpenAIProvider
- Added None check for read_query_prompt() with fallback default prompt
- Moved ClientSession outside batch loop in AzureTranslationProvider
- Fixed Optional[float] type annotation in detect_language()
- Added Note section documenting in-place mutation in translate_content()
- Added test_confidence_threshold_validation() for bounds testing
- Added descriptive assertion messages to config tests
- Converted all async tests to use @pytest.mark.asyncio decorators
- Replaced manual skip checks with @pytest.mark.skipif
- Removed manual main() blocks, tests now pytest-only
- Changed Chinese language assertion to use startswith('zh') for flexibility
2026-01-04 12:06:50 +07:00

41 lines
1.2 KiB
Python

from .base import TranslationProvider, TranslationResult
from .openai_provider import OpenAITranslationProvider
from .google_provider import GoogleTranslationProvider
from .azure_provider import AzureTranslationProvider
__all__ = [
"TranslationProvider",
"TranslationResult",
"OpenAITranslationProvider",
"GoogleTranslationProvider",
"AzureTranslationProvider",
"get_translation_provider",
]
def get_translation_provider(provider_name: str) -> TranslationProvider:
"""
Factory function to get the appropriate translation provider.
Args:
provider_name: Name of the provider ("openai", "google", or "azure")
Returns:
TranslationProvider instance
Raises:
ValueError: If the provider name is not recognized
"""
providers = {
"openai": OpenAITranslationProvider,
"google": GoogleTranslationProvider,
"azure": AzureTranslationProvider,
}
if provider_name.lower() not in providers:
raise ValueError(
f"Unknown translation provider: {provider_name}. "
f"Available providers: {list(providers.keys())}"
)
return providers[provider_name.lower()]()