§
    û�Äj_  ã                   óŽ   — d Z dZddl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mZ dd	lmZmZmZ  G d
„ de	¦  «        ZdS )z
google translator API
z"Copyright (C) 2020 Nidhal Baccourié    )ÚListÚOptionalN)ÚBeautifulSoup)ÚBaseTranslator)Ú	BASE_URLS)Ú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	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 )ÚGoogleTranslatorzd
    class that wraps functions, which use Google Translate under the hood to translate text(s)
    ÚautoÚenNÚsourceÚtargetÚproxiesc           
      ó�   •— || _          t          ¦   «         j        d	t          j        d¦  «        ||dddiddœ|¤Ž ddi| _        dS )
zy
        @param source: source language to translate from
        @param target: target language to translate to
        ÚGOOGLE_TRANSLATEÚdivÚclassÚt0Úq)Úbase_urlr   r   Úelement_tagÚelement_queryÚpayload_keyzresult-containerN© )r   ÚsuperÚ__init__r   ÚgetÚ_alt_element_query)Úselfr   r   r   ÚkwargsÚ	__class__s        €úGC:\Projects\Historical\venv\Lib\site-packages\deep_translator/google.pyr!   zGoogleTranslator.__init__   sr   ø€ ð ˆŒØ�‰ŒÔð 	
Ý”]Ð#5Ñ6Ô6ØØØØ" D˜/Øð	
ð 	
ð ð	
ð 	
ð 	
ð $+Ð,>Ð"?ˆÔÐÐó    ÚtextÚreturnc                 ó¾  — t          |d¬¦  «        �rJ|                     ¦   «         }|                      ¦   «         st          |¦  «        r|S | j        | j        d<   | j        | j        d<   | j        r|| j        | j        <   t          j	        | j
        | j        | j        ¬¦  «        }|j        dk    rt          ¦   «         ‚t          |j        ¬¦  «        rt          ¦   «         ‚t!          |j        d¦  «        }|                     | j        | j        ¦  «        }|                     ¦   «          |s1|                     | j        | j        ¦  «        }|st/          |¦  «        ‚|                     d	¬
¦  «        |                     ¦   «         k    r½d                     d„ |                     ¦   «         D ¦   «         ¦  «        }d                     d„ |                     d	¬
¦  «        D ¦   «         ¦  «        }|rQ|rQ||k    rM| j        | j        d<   d| j        vr|                     ¦   «         S | j        d= |                      |¦  «        S dS dS dS |                     d	¬
¦  «        S dS )zƒ
        function to translate a text
        @param text: desired text to translate
        @return: str: translated text
        iˆ  )Ú	max_charsÚtlÚsl)Úparamsr   i­  )Ústatus_codezhtml.parserT)ÚstripÚ c              3   óB   K  — | ]}|                      ¦   «         ¯|V — Œd S ©N©Úisalnum©Ú.0Úchs     r'   ú	<genexpr>z-GoogleTranslator.translate.<locals>.<genexpr>V   sC   è è € ð -ð -Ø°·²±´ð-Øð-ð -ð -ð -ð -ð -r(   c              3   óB   K  — | ]}|                      ¦   «         ¯|V — Œd S r4   r5   r7   s     r'   r:   z-GoogleTranslator.translate.<locals>.<genexpr>Y   sC   è è € ð +ð +ØÀÇÂÁÄð+Øð+ð +ð +ð +ð +ð +r(   ÚhlN)r   r1   Ú_same_source_targetr   Ú_targetÚ_url_paramsÚ_sourcer   Úrequestsr"   Ú	_base_urlr   r0   r	   r   r   r   r)   ÚfindÚ_element_tagÚ_element_queryÚcloser#   r
   Úget_textÚjoinÚ	translate)r$   r)   r%   ÚresponseÚsoupÚelementÚto_translate_alphaÚtranslated_alphas           r'   rI   zGoogleTranslator.translate3   s�  € õ ˜$¨$Ð/Ñ/Ô/ñ /	4Ø—:’:‘<”<ˆDØ×'Ò'Ñ)Ô)ð ­X°d©^¬^ð Ø�Ø%)¤\ˆDÔ˜TÑ"Ø%)¤\ˆDÔ˜TÑ"àÔð :Ø59�Ô  Ô!1Ñ2å”|Ø” tÔ'7ÀÄðñ ô ˆHð Ô# sÒ*Ð*Ý%Ñ'Ô'Ð'å¨(Ô*>Ð?Ñ?Ô?ð %Ý"‘n”nÐ$å  ¤°Ñ>Ô>ˆDà—i’i Ô 1°4Ô3FÑGÔGˆGØ�NŠNÑÔÐàð 4ØŸ)š) DÔ$5°tÔ7NÑOÔO�Øð 4Ý-¨dÑ3Ô3Ð3Ø×Ò dÐÑ+Ô+¨t¯zªz©|¬|Ò;Ð;Ø%'§W¢Wð -ð -Ø!%§¢¡¤ð-ñ -ô -ñ &ô &Ð"ð $&§7¢7ð +ð +Ø!(×!1Ò!1¸Ð!1Ñ!=Ô!=ð+ñ +ô +ñ $ô $Ð ð 'ð	0à(ð	0ð +Ð.>Ò>Ð>à-1¬\�DÔ$ TÑ*Ø 4Ô#3Ð3Ð3Ø#Ÿzšz™|œ|Ð+ØÔ(¨Ð.ØŸ>š>¨$Ñ/Ô/Ð/ð	0ð 	0ð 	0ð 	0ð ?Ð>ð ×'Ò'¨dÐ'Ñ3Ô3Ð3ð_/	4ð /	4r(   Ú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$   rO   r%   s      r'   Útranslate_filezGoogleTranslator.translate_filej   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$   rS   r%   s      r'   Útranslate_batchz GoogleTranslator.translate_batcht   s   € ð %ˆtÔ$ UÐ5Ð5¨fÐ5Ð5Ð5r(   )r   r   N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ústrr   Údictr!   rI   rR   r   rV   Ú__classcell__)r&   s   @r'   r   r      sð   ø€ € € € € ðð ð ØØ"&ð	@ð @àð@ð ð@ð ˜$”ð	@ð @ð @ð @ð @ð @ð054˜cð 54°ð 54ð 54ð 54ð 54ðn4 3ð 4°Sð 4ð 4ð 4ð 4ð6 T¨#¤Yð 6¸TÀ#¼Yð 6ð 6ð 6ð 6ð 6ð 6ð 6ð 6r(   r   )rZ   Ú__copyright__Útypingr   r   rA   Úbs4r   Údeep_translator.baser   Údeep_translator.constantsr   Údeep_translator.exceptionsr   r	   r
   Údeep_translator.validater   r   r   r   r   r(   r'   ú<module>re      sþ   ððð ð 5€à !Ð !Ð !Ð !Ð !Ð !Ð !Ð !à €€€Ø Ð Ð Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /Ø /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð
 NÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ MÐ Mðd6ð d6ð d6ð d6ð d6�~ñ d6ô d6ð d6ð d6ð d6r(   