§
    û�ÄjI  ã                   óª   — d Z dZddlmZmZmZ ddlZddlmZ ddl	m
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mZ  G d„ de¦  «        ZdS )z
pons translator API
z"Copyright (C) 2020 Nidhal Baccourié    )ÚListÚOptionalÚUnionN)ÚBeautifulSoup)Úrequote_uri)ÚBaseTranslator)Ú	BASE_URLSÚPONS_CODES_TO_LANGUAGES)ÚElementNotFoundInGetRequestÚNotValidPayloadÚRequestErrorÚTooManyRequestsÚTranslationNotFound)Úis_emptyÚis_input_validÚrequest_failedc            
       óž   ‡ — e Zd ZdZ	 	 ddededee         fˆ fd„Z	 dd	ed
ede	ee
e         f         fd„Zde
e         de
e         fd„Zˆ xZS )ÚPonsTranslatorz<
    class that uses PONS translator to translate words
    ÚenNÚsourceÚtargetÚproxiesc                 óŠ   •— || _          t          ¦   «         j        dt          j        d¦  «        t
          ||ddddidœ|¤Ž dS )zy
        @param source: source language to translate from
        @param target: target language to translate to
        ÚPONSNÚdivÚclassr   )Úbase_urlÚ	languagesr   r   Úpayload_keyÚelement_tagÚelement_query© )r   ÚsuperÚ__init__r	   Úgetr
   )Úselfr   r   r   ÚkwargsÚ	__class__s        €úEC:\Projects\Historical\venv\Lib\site-packages\deep_translator/pons.pyr$   zPonsTranslator.__init__   si   ø€ ð ˆŒØ�‰ŒÔð 		
Ý”] 6Ñ*Ô*Ý-ØØØØØ" HÐ-ð		
ð 		
ð ð		
ð 		
ð 		
ð 		
ð 		
ó    FÚwordÚ
return_allÚreturnc                 óª  — t          |d¬¦  «        �rÀ|                      ¦   «         st          |¦  «        r|S | j        › | j        › d| j        › d|› �}t          |¦  «        }t          j        || j	        ¬¦  «        }|j
        dk    rt          ¦   «         ‚t          |j
        ¬¦  «        rt          ¦   «         ‚t          |j        d¦  «        }|                     d	d
di¦  «                             | j        | j        ¦  «        }|                     ¦   «          |st+          |¦  «        ‚g }|D ]k}	g }
|	                     d¦  «        D ])}|
                     |                     ¦   «         ¦  «         Œ*|                     d                     |
¦  «        ¦  «         Œl|st+          |¦  «        ‚d„ |D ¦   «         }|st3          |¦  «        ‚|r|n|d         S dS )a  
        function that uses PONS to translate a word
        @param word: word to translate
        @type word: str
        @param return_all: set to True to return all synonym of the translated word
        @type return_all: bool
        @return: str: translated word
        é2   )Ú	max_charsú-ú/)r   i­  )Ústatus_codezhtml.parserr   r   Úresult_listÚaú c                 ó<   — g | ]}|rt          |¦  «        d k    ¯|‘ŒS )é   )Úlen)Ú.0r+   s     r)   ú
<listcomp>z,PonsTranslator.translate.<locals>.<listcomp>`   s2   € ð ð ð Ø°dðÝ?BÀ4¹y¼yÈ1º}¸}�¸}¸}¸}r*   r   N)r   Ú_same_source_targetr   Ú	_base_urlÚ_sourceÚ_targetr   Úrequestsr%   r   r3   r   r   r   r   ÚtextÚfindÚfindAllÚ_element_tagÚ_element_queryÚcloser   ÚappendÚget_textÚjoinr   )r&   r+   r,   r'   ÚurlÚresponseÚsoupÚelementsÚfiltered_elementsÚelÚtempÚeÚ	word_lists                r)   Ú	translatezPonsTranslator.translate5   s	  € õ ˜$¨"Ð-Ñ-Ô-ñ '	=Ø×'Ò'Ñ)Ô)ð ­X°d©^¬^ð Ø�Ø”^ÐI T¤\ÐIÐI°D´LÐIÐIÀ4ÐIÐIˆCÝ˜cÑ"Ô"ˆCÝ”| C°´Ð>Ñ>Ô>ˆHàÔ# sÒ*Ð*Ý%Ñ'Ô'Ð'å¨(Ô*>Ð?Ñ?Ô?ð %Ý"‘n”nÐ$å  ¤°Ñ>Ô>ˆDØ—y’y ¨°-Ð(@ÑAÔA×IÒIØÔ! 4Ô#6ñô ˆHð �NŠNÑÔÐàð 8Ý1°$Ñ7Ô7Ð7à "ÐØð 9ð 9�Ø�ØŸš C™œð .ð .�AØ—K’K §
¢
¡¤Ñ-Ô-Ð-Ð-Ø!×(Ò(¨¯ª°$©¬Ñ8Ô8Ð8Ð8à$ð 8Ý1°$Ñ7Ô7Ð7ðð Ø!2ðñ ô ˆIð ð 0Ý)¨$Ñ/Ô/Ð/à *Ð<�9�9°	¸!´Ð<ðO'	=ð '	=r*   Úwordsc                 óz   — |st          |¦  «        ‚g }|D ]$}|                      | j        dd|i|¤Ž¦  «         Œ%|S )zÜ
        translate a batch of words together by providing them in a list
        @param words: list of words you want to translate
        @param kwargs: additional args
        @return: list of translated words
        r+   r"   )r   rG   rS   )r&   rT   r'   Útranslated_wordsr+   s        r)   Útranslate_wordszPonsTranslator.translate_wordsi   se   € ð ð 	)Ý! %Ñ(Ô(Ð(àÐØð 	Ið 	IˆDØ×#Ò# N D¤NÐ$GÐ$G¸Ð$GÀÐ$GÐ$GÑHÔHÐHÐHØÐr*   )r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Údictr$   Úboolr   r   rS   rW   Ú__classcell__)r(   s   @r)   r   r      sâ   ø€ € € € € ðð ð Ø"&ð	
ð 
àð
ð ð
ð ˜$”ð	
ð 
ð 
ð 
ð 
ð 
ð0 -2ð2=ð 2=Øð2=Ø%)ð2=à	ˆs�D˜”Iˆ~Ô	ð2=ð 2=ð 2=ð 2=ðh  T¨#¤Yð  ¸TÀ#¼Yð  ð  ð  ð  ð  ð  ð  ð  r*   r   )r[   Ú__copyright__Útypingr   r   r   r@   Úbs4r   Úrequests.utilsr   Údeep_translator.baser   Údeep_translator.constantsr	   r
   Údeep_translator.exceptionsr   r   r   r   r   Údeep_translator.validater   r   r   r   r"   r*   r)   ú<module>rh      s0  ððð ð 5€à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à €€€Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &à /Ð /Ð /Ð /Ð /Ð /Ø HÐ HÐ HÐ HÐ HÐ HÐ HÐ Hðð ð ð ð ð ð ð ð ð ð ð ð ð ð NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mð] ð ] ð ] ð ] ð ] �^ñ ] ô ] ð ] ð ] ð ] r*   