protocols.py 689 Bytes
"""Protocols for translation service backends."""

from __future__ import annotations

from typing import List, Optional, Protocol, Sequence, Union, runtime_checkable


TranslateInput = Union[str, Sequence[str]]
TranslateOutput = Union[Optional[str], List[Optional[str]]]


@runtime_checkable
class TranslationBackendProtocol(Protocol):
    """Shared protocol implemented by translation backends."""

    model: str

    @property
    def supports_batch(self) -> bool:
        ...

    def translate(
        self,
        text: TranslateInput,
        target_lang: str,
        source_lang: Optional[str] = None,
        scene: Optional[str] = None,
    ) -> TranslateOutput:
        ...