§
    û�Äj   ã                   óª   — 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
linguee translator API
z"Copyright (C) 2020 Nidhal Baccourié    )ÚListÚOptionalÚUnionN)ÚBeautifulSoup)Úrequote_uri)ÚBaseTranslator)Ú	BASE_URLSÚLINGUEE_LANGUAGES_TO_CODES)Ú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 )ÚLingueeTranslatorzj
    class that wraps functions, which use the linguee translator under the hood to translate word(s)
    ÚenÚdeNÚsourceÚtargetÚproxiesc           	      ó˜   •— || _         t          ¦   «                              t          j        d¦  «        ||t
          dddid¬¦  «         dS )zy
        @param source: source language to translate from
        @param target: target language to translate to
        ÚLINGUEEÚaÚclasszdictLink featuredN)Úbase_urlr   r   Ú	languagesÚelement_tagÚelement_queryÚpayload_key)r   ÚsuperÚ__init__r	   Úgetr
   )Úselfr   r   r   ÚkwargsÚ	__class__s        €úHC:\Projects\Historical\venv\Lib\site-packages\deep_translator/linguee.pyr$   zLingueeTranslator.__init__   s\   ø€ ð ˆŒÝ‰Œ×ÒÝ”] 9Ñ-Ô-ØØÝ0ØØ"Ð$7Ð8Øð 	ñ 	
ô 	
ð 	
ð 	
ð 	
ó    FÚwordÚ
return_allÚreturnc                 ó|  — |                       ¦   «         st          |¦  «        r|S t          |d¬¦  «        �r„| j        › | j        › d| j        › d| j        › d|› �}t          |¦  «        }t          j        || j	        ¬¦  «        }|j
        dk    rt          ¦   «         ‚t          |j
        ¬¦  «        rt          ¦   «         ‚t          |j        d	¦  «        }|                     | j        | j        ¦  «        }|                     ¦   «          |st)          |¦  «        ‚g }|D ]}		 |	                     d
ddi¦  «                             d¬¦  «        }
n# t.          $ r d}
Y nw xY w|                     |	                     d¬¦  «                             |
d¦  «        ¦  «         Œ€|st5          |¦  «        ‚|r|n|d         S dS )a  
        function that uses linguee 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ú-z/search/?source=z&query=)r   i­  )Ústatus_codezhtml.parserÚspanr   ÚplaceholderT)ÚstripÚ r   N)Ú_same_source_targetr   r   Ú	_base_urlÚ_sourceÚ_targetr   Úrequestsr%   r   r2   r   r   r   r   ÚtextÚfind_allÚ_element_tagÚ_element_queryÚcloser   ÚfindÚget_textÚAttributeErrorÚappendÚreplacer   )r&   r+   r,   r'   ÚurlÚresponseÚsoupÚelementsÚfiltered_elementsÚelÚpronouns              r)   Ú	translatezLingueeTranslator.translate4   s  € ð ×#Ò#Ñ%Ô%ð 	­°$©¬ð 	ØˆKå˜$¨"Ð-Ñ-Ô-ñ "	Mà”^Ðm T¤\ÐmÐm°D´LÐmÐmÐRVÔR^ÐmÐmÐgkÐmÐmˆCÝ˜cÑ"Ô"ˆCÝ”| C°´Ð>Ñ>Ô>ˆHàÔ# sÒ*Ð*Ý%Ñ'Ô'Ð'å¨(Ô*>Ð?Ñ?Ô?ð %Ý"‘n”nÐ$å  ¤°Ñ>Ô>ˆDØ—}’} TÔ%6¸Ô8KÑLÔLˆHØ�NŠNÑÔÐàð <Ý1°(Ñ;Ô;Ð;à "ÐØð 	ð 	�ð!Ø ŸgšgØ ¨-Ð 8ñô ç’h T�hÑ*Ô*ð �Gøõ &ð !ð !ð !Ø �G�G�Gð!øøøà!×(Ò(Ø—K’K d�KÑ+Ô+×3Ò3°G¸RÑ@Ô@ñô ð ð ð %ð 0Ý)¨$Ñ/Ô/Ð/à(2ÐLÐ$Ð$Ð8IÈ!Ô8LÐLðE"	Mð "	Ms   Ä",EÅEÅEÚ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   rD   rM   )r&   rN   r'   Útranslated_wordsr+   s        r)   Útranslate_wordsz!LingueeTranslator.translate_wordsf   se   € ð ð 	)Ý! %Ñ(Ô(Ð(àÐØð 	Ið 	IˆDØ×#Ò# N D¤NÐ$GÐ$G¸Ð$GÀÐ$GÐ$GÑHÔHÐHÐHØÐr*   )r   r   N)F)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Údictr$   Úboolr   r   rM   rR   Ú__classcell__)r(   s   @r)   r   r      sí   ø€ € € € € ðð ð ØØ"&ð	
ð 
àð
ð ð
ð ˜$”ð	
ð 
ð 
ð 
ð 
ð 
ð. -2ð0Mð 0MØð0MØ%)ð0Mà	ˆs�D˜”Iˆ~Ô	ð0Mð 0Mð 0Mð 0Mðd  T¨#¤Yð  ¸TÀ#¼Yð  ð  ð  ð  ð  ð  ð  ð  r*   r   )rV   Ú__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   rP   r*   r)   ú<module>rc      s0  ððð ð 5€à (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à €€€Ø Ð Ð Ð Ð Ð Ø &Ð &Ð &Ð &Ð &Ð &à /Ð /Ð /Ð /Ð /Ð /Ø KÐ KÐ KÐ KÐ KÐ KÐ KÐ Kðð ð ð ð ð ð ð ð ð ð ð ð ð ð NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MðZ ð Z ð Z ð Z ð Z ˜ñ Z ô Z ð Z ð Z ð Z r*   