- 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
41 lines
1.2 KiB
Python
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()]()
|