§
    û�Äj¢  ã                   ó–   — 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mZ ddlmZmZmZmZ ddlmZmZmZ  G d	„ d
e¦  «        ZdS )z
LibreTranslate API
z"Copyright (C) 2020 Nidhal Baccourié    N)ÚListÚOptional)ÚBaseTranslator)Ú	BASE_URLSÚLIBRE_ENV_VARÚLIBRE_LANGUAGES_TO_CODES)ÚApiKeyExceptionÚAuthorizationExceptionÚServerExceptionÚTranslationNotFound)Úis_emptyÚis_input_validÚrequest_failedc                   óÂ   ‡ — e Zd ZdZdd ej        ed¦  «        ddfdededee         d	e	d
ee         f
ˆ fd„Z
dedefd„Zdedefd„Zdee         dee         fd„Zˆ xZS )ÚLibreTranslatorzd
    class that wraps functions, which use libre translator under the hood to translate text(s)
    ÚenÚesNTÚsourceÚtargetÚapi_keyÚuse_free_apiÚ
custom_urlc                 óô   •— |st          t          ¬¦  «        ‚|| _        |st          j        d¦  «        nt          j        d¦  «        }t          ¦   «                              |s|n|||t          ¬¦  «         dS )a  
        @param api_key: your api key
        @param source: source language to translate from
        List of LibreTranslate endpoint can be found at :
        https://github.com/LibreTranslate/LibreTranslate#mirrors
        Some require an API key
        @param target: target language to translate to
        @param use_free_api: set True if you want to use the free api.
        This means a url that does not require and api key would be used
        @param custom_url: you can use a custom endpoint
        )Úenv_varÚLIBREÚ
LIBRE_FREE)Úbase_urlr   r   Ú	languagesN)r	   r   r   r   ÚgetÚsuperÚ__init__r   )	Úselfr   r   r   r   r   ÚkwargsÚurlÚ	__class__s	           €úFC:\Projects\Historical\venv\Lib\site-packages\deep_translator/libre.pyr!   zLibreTranslator.__init__   s’   ø€ ð( ð 	9Ý!­-Ð8Ñ8Ô8Ð8àˆŒð  ð-�IŒM˜'Ñ"Ô"Ð"å”˜|Ñ,Ô,ð 	õ
 	‰Œ×ÒØ *Ð:�S�S°
ØØÝ.ð	 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    ÚtextÚreturnc                 ó  — t          |¦  «        rû|                      ¦   «         st          |¦  «        r|S d}|| j        | j        ddœ}| j        r
| j        |d<   	 t          j        | j        |z   |¬¦  «        }n# t          $ r t          d¦  «        ‚w xY w|j        dk    rt          | j        ¦  «        ‚t          |j        ¬¦  «        rt          |j        ¦  «        ‚|                     ¦   «         }|st          |¦  «        ‚|d	         S d
S )z¡
        function that uses microsoft translate to translate a text
        @param text: desired text to translate
        @return: str: translated text
        Ú	translater(   )Úqr   r   Úformatr   )Úparamsi÷  i“  )Ústatus_codeÚtranslatedTextN)r   Ú_same_source_targetr   Ú_sourceÚ_targetr   ÚrequestsÚpostÚ	_base_urlÚConnectionErrorr   r/   r
   r   Újsonr   )r"   r(   r#   Útranslate_endpointr.   ÚresponseÚress          r&   r+   zLibreTranslator.translateC   sJ  € õ ˜$ÑÔð  	)Ø×'Ò'Ñ)Ô)ð ­X°d©^¬^ð Ø�à!,ÐàØœ,Øœ,Ø ð	ð ˆFð Œ|ð 1Ø$(¤L��yÑ!ð+Ý#œ=Ø”NÐ%7Ñ7Àðñ ô ��øõ #ð +ð +ð +Ý% cÑ*Ô*Ð*ð+øøøð Ô# sÒ*Ð*Ý,¨T¬\Ñ:Ô:Ð:Ý¨HÔ,@ÐAÑAÔAð <Ý% hÔ&:Ñ;Ô;Ð;à—-’-‘/”/ˆCØð 0Ý)¨$Ñ/Ô/Ð/àÐ'Ô(Ð(ðA 	)ð  	)s   ÁA9 Á9BÚpathc                 ó   —  | j         |fi |¤ŽS )z¯
        translate directly from file
        @param path: path to the target file
        @type path: str
        @param kwargs: additional args
        @return: str
        )Ú_translate_file)r"   r<   r#   s      r&   Útranslate_filezLibreTranslator.translate_filek   s   € ð $ˆtÔ# DÐ3Ð3¨FÐ3Ð3Ð3r'   Úbatchc                 ó   —  | j         |fi |¤ŽS )z‹
        translate a list of texts
        @param batch: list of texts you want to translate
        @return: list of translations
        )Ú_translate_batch)r"   r@   r#   s      r&   Útranslate_batchzLibreTranslator.translate_batchu   s   € ð %ˆtÔ$ UÐ5Ð5¨fÐ5Ð5Ð5r'   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚosÚgetenvr   Ústrr   Úboolr!   r+   r?   r   rC   Ú__classcell__)r%   s   @r&   r   r      s  ø€ € € € € ðð ð ØØ!* ¤¨=¸$Ñ!?Ô!?Ø!Ø$(ð"
ð "
àð"
ð ð"
ð ˜#”ð	"
ð
 ð"
ð ˜S”Mð"
ð "
ð "
ð "
ð "
ð "
ðH&)˜cð &)°ð &)ð &)ð &)ð &)ðP4 3ð 4°Sð 4ð 4ð 4ð 4ð6 T¨#¤Yð 6¸TÀ#¼Yð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r'   r   )rG   Ú__copyright__rH   Útypingr   r   r4   Údeep_translator.baser   Údeep_translator.constantsr   r   r   Údeep_translator.exceptionsr	   r
   r   r   Údeep_translator.validater   r   r   r   © r'   r&   ú<module>rT      s  ððð ð 5€à 	€	€	€	Ø !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à €€€à /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð
ð ð ð ð ð ð ð ð ð ð ð ð NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mða6ð a6ð a6ð a6ð a6�nñ a6ô a6ð a6ð a6ð a6r'   