o
    NK&h                     @   sx   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
mZ ddlmZmZmZ ddlmZ G dd	 d	eZdS )
z"Copyright (C) 2020 Nidhal Baccouri    N)ListOptional)BaseTranslator)	BASE_URLSQCRI_ENV_VARQCRI_LANGUAGE_TO_CODE)ApiKeyExceptionServerExceptionTranslationNotFound)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
edee
 defddZedd Zdd Zedd Zd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 ) QcriTranslatorzg
    class that wraps functions, which use the QRCI translator under the hood to translate word(s)
    enNsourcetargetapi_keyc                    sR   |st t|| _dddd| _d| ji| _t jd	td||t	d| dS )
zq
        @param api_key: your qrci api key.
        Get one for free here https://mt.qcri.org/api/v1/ref
        getLanguagePairs
getDomains	translate)get_languagesget_domainsr   keyQCRI)base_urlr   r   	languagesN )
r   r   r   api_endpointsparamssuper__init__r   getr   )selfr   r   r   kwargs	__class__r   G/var/www/html/venv/lib/python3.10/site-packages/deep_translator/qcri.pyr      s    
zQcriTranslator.__init__Tendpointr   return_textc              
   C   sX   |s| j }ztj| jj| j| d|d}|r|jW S |W S  ty+ } z|d }~ww )N)r%   )r   )r   requestsr   	_base_urlformatr   text	Exception)r    r%   r   r&   reser   r   r$   _get:   s   zQcriTranslator._getc                 C      |   S N)get_supported_languagesr    r   r   r$   r   K      zQcriTranslator.languagesc                 C   s   |  d}|S )Nr   )r.   )r    domainsr   r   r$   r   O   s   
zQcriTranslator.get_domainsc                 C   r/   r0   )r   r2   r   r   r$   r4   S   r3   zQcriTranslator.domainsr*   returnc                 K   s   | j | j d| j |d |d}z
| jd|dd}W n ty&   tdw t|jdr4t|j d S | }|	d	}|sCt
||S )
N-domain)r   langpairr7   r*   r   F)r   r&   i  )status_codetranslatedText)r   _source_targetr.   ConnectionErrorr	   r   r9   jsonr   r
   )r    r*   r!   r   responser,   translationr   r   r$   r   W   s"   
zQcriTranslator.translatepathc                 K      | j |fi |S r0   )_translate_file)r    rA   r!   r   r   r$   translate_filem   s   zQcriTranslator.translate_filebatchc                 K   rB   )z
        translate a batch of texts
        @domain: domain
        @param batch: list of texts to translate
        @return: list of translations
        )_translate_batch)r    rE   r!   r   r   r$   translate_batchp   s   zQcriTranslator.translate_batch)NT)__name__
__module____qualname____doc__osgetenvr   strr   r   dictboolr.   propertyr   r   r4   r   rD   r   rG   __classcell__r   r   r"   r$   r      s:    
"


"r   )__copyright__rL   typingr   r   r'   deep_translator.baser   deep_translator.constantsr   r   r   deep_translator.exceptionsr   r	   r
   deep_translator.validater   r   r   r   r   r$   <module>   s    