U
    di!                     @   s  d dl mZmZ ddlmZ dddddd	d
dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|d}d~ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddМZG dd҄ deZdS )   )AutoModelForSeq2SeqLMAutoTokenizer   )PipelineToolZace_ArabZace_LatnZacm_ArabZacq_ArabZaeb_ArabZafr_LatnZajp_ArabZaka_LatnZamh_EthiZapc_ArabZarb_ArabZarb_LatnZars_ArabZary_ArabZarz_ArabZasm_BengZast_LatnZawa_DevaZayr_LatnZazb_ArabZazj_LatnZbak_CyrlZbam_LatnZban_LatnZbel_CyrlZbem_LatnZben_BengZbho_DevaZbjn_ArabZbjn_LatnZbod_TibtZbos_LatnZbug_LatnZbul_CyrlZcat_LatnZceb_LatnZces_LatnZcjk_LatnZckb_ArabZcrh_LatnZcym_LatnZdan_LatnZdeu_LatnZdik_LatnZdyu_LatnZdzo_TibtZell_GrekZeng_LatnZepo_LatnZest_LatnZeus_LatnZewe_LatnZfao_LatnZfij_LatnZfin_LatnZfon_LatnZfra_LatnZfur_LatnZfuv_LatnZgla_LatnZgle_LatnZglg_LatnZgrn_LatnZguj_GujrZhat_LatnZhau_LatnZheb_HebrZhin_DevaZhne_DevaZhrv_LatnZhun_LatnZhye_ArmnZibo_LatnZilo_LatnZind_LatnZisl_LatnZita_LatnZjav_LatnZjpn_JpanZkab_LatnZkac_LatnZkam_LatnZkan_KndaZkas_ArabZkas_DevaZkat_GeorZknc_ArabZknc_LatnZkaz_CyrlZkbp_LatnZkea_LatnZkhm_KhmrZkik_LatnZkin_LatnZkir_CyrlZkmb_LatnZkmr_LatnZkon_LatnZkor_HangZlao_LaooZlij_LatnZlim_LatnZlin_LatnZlit_LatnZlmo_LatnZltg_LatnZltz_LatnZlua_LatnZlug_LatnZluo_LatnZlus_LatnZlvs_LatnZmag_DevaZmai_DevaZmal_MlymZmar_DevaZmin_ArabZmin_LatnZmkd_CyrlZplt_LatnZmlt_LatnZmni_BengZkhk_CyrlZmos_LatnZmri_LatnZmya_MymrZnld_LatnZnno_LatnZnob_LatnZnpi_DevaZnso_LatnZnus_LatnZnya_LatnZoci_LatnZgaz_LatnZory_OryaZpag_LatnZpan_GuruZpap_LatnZpes_ArabZpol_LatnZpor_LatnZprs_ArabZpbt_ArabZquy_LatnZron_LatnZrun_LatnZrus_CyrlZsag_LatnZsan_DevaZsat_OlckZscn_LatnZshn_MymrZsin_SinhZslk_LatnZslv_LatnZsmo_LatnZsna_LatnZsnd_ArabZsom_LatnZsot_LatnZspa_LatnZals_LatnZsrd_LatnZsrp_CyrlZssw_LatnZsun_LatnZswe_LatnZswh_LatnZszl_LatnZtam_TamlZtat_CyrlZtel_TeluZtgk_CyrlZtgl_LatnZtha_ThaiZtir_EthiZtaq_LatnZtaq_TfngZtpi_LatnZtsn_LatnZtso_LatnZtuk_LatnZtum_LatnZtur_LatnZtwi_LatnZtzm_TfngZuig_ArabZukr_CyrlZumb_LatnZurd_ArabZuzn_LatnZvec_LatnZvie_LatnZwar_LatnZwol_LatnZxho_LatnZydd_HebrZyor_LatnZyue_HantZzho_HansZzho_HantZzsm_LatnZzul_Latn)zAcehnese ArabiczAcehnese LatinzMesopotamian ArabiczTa'izzi-Adeni ArabiczTunisian ArabicZ	AfrikaanszSouth Levantine ArabicZAkanZAmhariczNorth Levantine ArabiczModern Standard Arabicz Modern Standard Arabic RomanizedzNajdi ArabiczMoroccan ArabiczEgyptian ArabicZAssameseZAsturianZAwadhizCentral AymarazSouth AzerbaijanizNorth AzerbaijaniZBashkirZBambaraZBalineseZ
BelarusianZBembaZBengaliZBhojpurizBanjar ArabiczBanjar LatinzStandard TibetanZBosnianZBuginese	BulgarianZCatalanZCebuanoZCzechZChokwezCentral KurdishzCrimean TatarZWelshZDanishZGermanzSouthwestern DinkaZDyulaZDzongkhaGreekZEnglishZ	EsperantoZEstonianZBasqueZEweZFaroeseZFijianZFinnishZFonZFrenchZFriulianzNigerian FulfuldezScottish GaelicZIrishZGalicianZGuaraniZGujaratizHaitian CreoleZHausaHebrewZHindiZChhattisgarhiZCroatianZ	HungarianZArmenianZIgboZIlocanoZ
IndonesianZ	IcelandicZItalianZJavaneseJapaneseZKabyleZJingphoZKambaZKannadazKashmiri ArabiczKashmiri DevanagariZGeorgianzCentral Kanuri ArabiczCentral Kanuri LatinZKazakhu   KabiyèZKabuverdianuZKhmerZKikuyuZKinyarwandaZKyrgyzZKimbunduzNorthern KurdishZKikongoKoreanZLaoZLigurianZ
LimburgishZLingalaZ
LithuanianZLombardZ	LatgalianZLuxembourgishz
Luba-KasaiZGandaZLuoZMizozStandard LatvianZMagahiZMaithiliZ	MalayalamZMarathizMinangkabau Arabic zMinangkabau LatinZ
MacedonianzPlateau MalagasyZMaltesezMeitei BengalizHalh MongolianZMossiZMaoriZBurmeseZDutchzNorwegian Nynorsku   Norwegian BokmålZNepalizNorthern SothoZNuerZNyanjaZOccitanzWest Central OromoZOdiaZ
PangasinanzEastern PanjabiZ
PapiamentozWestern PersianZPolishZ
PortugueseZDarizSouthern PashtozAyacucho QuechuaZRomanianZRundiRussianZSangoZSanskritZSantaliZSicilianZShanZSinhalaZSlovakZ	SlovenianZSamoanZShonaZSindhiZSomalizSouthern SothoZSpanishzTosk AlbanianZ	SardinianZSerbianZSwatiZ	SundaneseZSwedishZSwahiliZSilesianZTamilZTatarZTeluguZTajikZTagalogThaiZTigrinyazTamasheq LatinzTamasheq Tifinaghz	Tok PisinZTswanaZTsongaZTurkmenZTumbukaTurkishZTwizCentral Atlas TamazightZUyghurZ	UkrainianZUmbunduZUrduzNorthern UzbekZVenetianZ
VietnameseZWarayZWolofZXhosazEastern YiddishZYorubazYue ChinesezChinese SimplifiedzChinese TraditionalzStandard MalayZZuluc                   @   sr   e Zd ZdZeZdZdee  dZ	dZ
eZeZddddd	ddd
ddZdZdd Zdd Zdd ZdS )TranslationToolz
    Example:

    ```py
    from transformers.agents import TranslationTool

    translator = TranslationTool()
    translator("This is a super nice API!", src_lang="English", tgt_lang="French")
    ```
    z facebook/nllb-200-distilled-600MzThis is a tool that translates text from a language to another.Both `src_lang`and `tgt_lang` should belong to this list of languages: .Z
translatorstringzThe text to translate)typedescriptionzbThe language of the text to translate. Written in plain English, such as 'Romanian', or 'Albanian'zhThe language for the desired ouput language. Written in plain English, such as 'Romanian', or 'Albanian')textsrc_langtgt_langc                 C   sX   || j krt| d|| j kr0t| d| j | }| j | }| jj|d||dS )Nz is not a supported language.pt)Zreturn_tensorsr   r   )lang_to_code
ValueErrorZpre_processorZ_build_translation_inputs)selfr   r   r    r   C/tmp/pip-unpacked-wheel-bm_b0l5e/transformers/agents/translation.pyencode  s    



   zTranslationTool.encodec                 C   s   | j jf |S )N)modelgenerate)r   inputsr   r   r   forward  s    zTranslationTool.forwardc                 C   s   | j j|d  ddS )N    T)Zskip_special_tokens)Zpost_processordecodetolist)r   outputsr   r   r   r"     s    zTranslationTool.decodeN)__name__
__module____qualname____doc__LANGUAGE_CODESr   Zdefault_checkpointlistkeysr   namer   Zpre_processor_classr   Zmodel_classr   output_typer   r    r"   r   r   r   r   r      s(   r   N)Zmodels.autor   r   Ztoolsr   r)   r   r   r   r   r   <module>   s    Q