o
    NK&h
                     @   s   d Z dZddlZddlmZmZ ddlZddlmZ ddl	m
Z
mZ ddlmZmZmZmZmZ ddlmZmZ G d	d
 d
eZdS )z
Yandex translator API
z"Copyright (C) 2020 Nidhal Baccouri    N)ListOptional)BaseTranslator)	BASE_URLSYANDEX_ENV_VAR)ApiKeyExceptionRequestErrorServerExceptionTooManyRequestsTranslationNotFound)is_input_validrequest_failedc                       s   e Zd ZdZddeedfdededee f fdd	Z	d
d Z
edd Zeddee fddZddedee fddZ	ddedee defddZdedefddZdee dee fddZ  ZS )YandexTranslatorzm
    class that wraps functions, which use the yandex translator
    under the hood to translate word(s)
    endeNsourcetargetapi_keyc                    sJ   |st t|| _d| _dddd| _t jd	td||d| dS )
z5
        @param api_key: your yandex api key
        zv1.5getLangsdetect	translate)langsr   r   YANDEX)base_urlr   r   N )	r   r   r   api_versionapi_endpointssuper__init__r   get)selfr   r   r   kwargs	__class__r   I/var/www/html/venv/lib/python3.10/site-packages/deep_translator/yandex.pyr      s   

zYandexTranslator.__init__c                 C   s   t dd | jD S )Nc                 s   s    | ]
}| d d V  qdS )-r   N)split).0xr   r   r$   	<genexpr>9   s    z<YandexTranslator._get_supported_languages.<locals>.<genexpr>)setdirsr    r   r   r$   _get_supported_languages8   s   z)YandexTranslator._get_supported_languagesc                 C   s   |   S N)get_supported_languagesr,   r   r   r$   	languages;   s   zYandexTranslator.languagesproxiesc                 C   sz   z| j j| jdd}td| tj|d| ji|d}W n tjjy(   t	dw |
 }t|jdr8t	|j|dS )	Nr   versionendpointzurl: key)paramsr1     )status_coder+   )	_base_urlformatr   printrequestsr   r   
exceptionsConnectionErrorr	   jsonr   r8   )r    r1   urlresponsedatar   r   r$   r+   ?   s   



zYandexTranslator.dirstextc                 C   s   d }|d| j d}z| jj| jdd}tj|||d}W n ty$     ty.   td t	y9   t|j
w | }|d }|d }|d	krMt |sStd
|S )Nplain)rC   r:   r5   r   r2   rB   r1   r7   langcode   i  )r   r9   r:   r   r<   postr   r>   r	   
ValueErrorr8   r?   )r    rC   r1   rA   r6   r@   languager8   r   r   r$   r   R   s2   
zYandexTranslator.detectreturnc                 K   s   t |r]|d| jdkr| jnd| j| j| jd}z| jj| jdd}tj|||d}W n t	y8   t
dw | }|d	 d
krFt |d	 dkrRt
|d	 |d sYt |d S d S )NrD   autoz{}-{})rC   r:   rF   r5   r   r2   rE   r7   rG   i  rH   rC   )r   _source_targetr:   r   r9   r   r<   rI   r>   r	   r?   r
   r   )r    rC   r1   r!   r6   r@   rA   r   r   r$   r   o   s2   
zYandexTranslator.translatepathc                 K      | j |fi |S )zj
        translate from a file
        @param path: path to file
        @return: translated text
        )_translate_file)r    rP   r!   r   r   r$   translate_file      zYandexTranslator.translate_filebatchc                 K   rQ   )z
        translate a batch of texts
        @param batch: list of texts to translate
        @return: list of translations
        )_translate_batch)r    rU   r!   r   r   r$   translate_batch   rT   z YandexTranslator.translate_batchr.   )__name__
__module____qualname____doc__osgetenvr   strr   r   r-   propertyr0   dictr+   r   r   rS   r   rW   __classcell__r   r   r"   r$   r      s8    


!"r   )r[   __copyright__r\   typingr   r   r<   deep_translator.baser   deep_translator.constantsr   r   deep_translator.exceptionsr   r   r	   r
   r   deep_translator.validater   r   r   r   r   r   r$   <module>   s    