-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathintavia_translate_data.py
39 lines (30 loc) · 1.09 KB
/
intavia_translate_data.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from prefect import flow, task, unmapped
from pydantic import BaseModel, Field
from prefect.blocks.system import Secret
import deepl
from enum import Enum
class LangEnum(Enum):
en = "en"
de = "de"
fi = "fi"
nl = "nl"
sl = "sl"
@task(tags=["deepl"], reties=3, retry_dely_seconds=30)
def translate_term(term, translator, source_lang, target_lang):
return translator.translate_text(
term, target_lang=target_lang.upper(), source_lang=source_lang.upper()
)
class Params(BaseModel):
deepl_api_key: str = Field(
..., description="Prefect Secret holding the API key for DeepL"
)
source_lang: LangEnum = Field(..., description="Source language")
target_lang: LangEnum = Field(..., description="Target language")
terms: list[str] = Field(..., description="List of terms to translate")
@flow
def translate_data_flow(params: Params):
api_key = Secret.load(params.deepl_api_key).get()
translator = deepl.Translator(api_key)
return translate_term.map(
params.terms, unmapped(translator), params.source_lang, params.target_lang
)