§
    û�Äjù  ã                   óv   — d Z dZddlmZmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ ddlmZmZ  G d„ d	e¦  «        Zd
S )zbase translator classz"Copyright (C) 2020 Nidhal Baccourié    )ÚABCÚabstractmethod)ÚPath)ÚListÚOptionalÚUnion)ÚGOOGLE_LANGUAGES_TO_CODES)ÚInvalidSourceOrTargetLanguageÚLanguageNotSupportedExceptionc                   óœ  ‡ — e Zd ZdZdedddddfdedededed	ee         d
ee         dee         fˆ fd„Ze	d„ ¦   «         Z
e
j        d„ ¦   «         Z
e	d„ ¦   «         Zej        d„ ¦   «         Zd„ Zd„ Zdefd„Z	 d#dedeeef         fd„Zdedefd„Zededefd„¦   «         Zdefd„Zdefd„Zdedefd „Zd!ee         dee         fd"„Zˆ xZS )$ÚBaseTranslatorzX
    Abstract class that serve as a base translator for other different translators
    NÚautoÚenÚbase_urlÚ	languagesÚsourceÚtargetÚpayload_keyÚelement_tagÚelement_queryc                 ó|  •— || _         || _        t          | j                             ¦   «         ¦  «        | _        |st          |¦  «        ‚|st          |¦  «        ‚|                      ||¦  «        \  | _        | _        || _	        || _
        || _        || _        t          ¦   «                              ¦   «          dS )zy
        @param source: source language to translate from
        @param target: target language to translate to
        N)Ú	_base_urlÚ
_languagesÚlistÚkeysÚ_supported_languagesr
   Ú_map_language_to_codeÚ_sourceÚ_targetÚ_url_paramsÚ_element_tagÚ_element_queryr   ÚsuperÚ__init__)
Úselfr   r   r   r   r   r   r   Ú
url_paramsÚ	__class__s
            €úEC:\Projects\Historical\venv\Lib\site-packages\deep_translator/base.pyr$   zBaseTranslator.__init__   s·   ø€ ð "ˆŒØ#ˆŒÝ$(¨¬×)=Ò)=Ñ)?Ô)?Ñ$@Ô$@ˆÔ!Øð 	8Ý/°Ñ7Ô7Ð7Øð 	8Ý/°Ñ7Ô7Ð7à%)×%?Ò%?ÀÈÑ%OÔ%OÑ"ˆŒ�d”lØ%ˆÔØ'ˆÔØ+ˆÔØ&ˆÔÝ‰Œ×ÒÑÔÐÐÐó    c                 ó   — | j         S ©N©r   ©r%   s    r(   r   zBaseTranslator.source3   ó
   € àŒ|Ðr)   c                 ó   — || _         d S r+   r,   ©r%   Úlangs     r(   r   zBaseTranslator.source7   ó   € àˆŒˆˆr)   c                 ó   — | j         S r+   ©r   r-   s    r(   r   zBaseTranslator.target;   r.   r)   c                 ó   — || _         d S r+   r4   r0   s     r(   r   zBaseTranslator.target?   r2   r)   c                 ó   — | j         j        S r+   )r'   Ú__name__r-   s    r(   Ú_typezBaseTranslator._typeC   s   € ØŒ~Ô&Ð&r)   c              '   óæ   K  — |D ]k}|| j                              ¦   «         v s|dk    r|V — Œ(|| j                              ¦   «         v r| j         |         V — ŒSt          |d| j         › �¬¦  «        ‚dS )a   
        map language to its corresponding code (abbreviation) if the language was passed
        by its full name by the user
        @param languages: list of languages
        @return: mapped value of the language or raise an exception if the language is
        not supported
        r   zSNo support for the provided language.
Please select on of the supported languages:
)ÚmessageN)r   Úvaluesr   r   )r%   r   Úlanguages      r(   r   z$BaseTranslator._map_language_to_codeF   s¬   è è € ð "ð 	ð 	ˆHØ˜4œ?×1Ò1Ñ3Ô3Ð3Ð3°xÀ6Ò7IÐ7IØ����Ø˜Tœ_×1Ò1Ñ3Ô3Ð3Ð3Ø”o hÔ/Ð/Ð/Ð/Ð/å3Øð)à”ð)ð )ðñ ô ð ð	ð 	r)   Úreturnc                 ó"   — | j         | j        k    S r+   )r   r   r-   s    r(   Ú_same_source_targetz"BaseTranslator._same_source_target[   s   € ØŒ|˜tœ|Ò+Ð+r)   FÚas_dictc                 ó"   — |s| j         n| j        S )zè
        return the supported languages by the Google translator
        @param as_dict: if True, the languages will be returned as a dictionary
        mapping languages to their abbreviations
        @return: list or dict
        )r   r   )r%   r@   Úkwargss      r(   Úget_supported_languagesz&BaseTranslator.get_supported_languages^   s   € ð 18ÐLˆtÔ(Ð(¸T¼_ÐLr)   r<   c                 ó‚   — |dk    s6|| j                              ¦   «         v s|| j                              ¦   «         v rdS dS )z£
        check if the language is supported by the translator
        @param language: a string for 1 language
        @return: bool or raise an Exception
        r   TF)r   r   r;   )r%   r<   rB   s      r(   Úis_language_supportedz$BaseTranslator.is_language_supportedi   sK   € ð ˜ÒÐØ˜4œ?×/Ò/Ñ1Ô1Ð1Ð1Ø˜4œ?×1Ò1Ñ3Ô3Ð3Ð3à�4à�5r)   Útextc                 ó    — t          d¦  «        S )zÓ
        translate a text using a translator under the hood and return
        the translated text
        @param text: text to translate
        @param kwargs: additional arguments
        @return: str
        z+You need to implement the translate method!)ÚNotImplemented)r%   rF   rB   s      r(   Ú	translatezBaseTranslator.translatex   s   € õ ÐKÑLÔLÐLr)   Úfc                 ó4   — dd l }|                     |¦  «        S ©Nr   )Údocx2txtÚprocess)r%   rJ   rM   s      r(   Ú
_read_docxzBaseTranslator._read_docxƒ   s   € Øˆˆˆà×Ò Ñ"Ô"Ð"r)   c                 óv   — dd l }|                     |¦  «        }|j        d         }|                     ¦   «         S rL   )ÚpypdfÚ	PdfReaderÚpagesÚextract_text)r%   rJ   rQ   ÚreaderÚpages        r(   Ú	_read_pdfzBaseTranslator._read_pdfˆ   s9   € Øˆˆˆà—’ Ñ#Ô#ˆØŒ|˜AŒˆØ× Ò Ñ"Ô"Ð"r)   Úpathc                 ó.  — t          |t          ¦  «        st          |¦  «        }|                     ¦   «         st          d¦  «         t	          d¦  «         |j        }|dk    r$|                      t          |¦  «        ¬¦  «        }nz|dk    r$|                      t          |¦  «        ¬¦  «        }nPt          |dd¬¦  «        5 }| 
                    ¦   «                              ¦   «         }d	d	d	¦  «         n# 1 swxY w Y   |                      |¦  «        S )
z¯
        translate directly from file
        @param path: path to the target file
        @type path: str
        @param kwargs: additional args
        @return: str
        zPath to the file is wrong!é   z.docx)rJ   z.pdfÚrzutf-8)ÚencodingN)Ú
isinstancer   ÚexistsÚprintÚexitÚsuffixrO   ÚstrrW   ÚopenÚreadÚstriprI   )r%   rX   rB   ÚextrF   rJ   s         r(   Ú_translate_filezBaseTranslator._translate_file�   s,  € õ ˜$¥Ñ%Ô%ð 	Ý˜‘:”:ˆDà�{Š{‰}Œ}ð 	ÝÐ.Ñ/Ô/Ð/Ý�‰GŒGˆGàŒkˆà�'Š>ˆ>Ø—?’?¥S¨¡Y¤Y�?Ñ/Ô/ˆDˆDà�FŠ]ˆ]Ø—>’>¥C¨¡I¤I�>Ñ.Ô.ˆDˆDå�d˜C¨'Ð2Ñ2Ô2ð (°aØ—v’v‘x”x—~’~Ñ'Ô'�ð(ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (ð �~Š~˜dÑ#Ô#Ð#s   Ã'C7Ã7C;Ã>C;Úbatchc                 óœ   — |st          d¦  «        ‚g }t          |¦  «        D ](\  }} | j        |fi |¤Ž}|                     |¦  «         Œ)|S )z‹
        translate a list of texts
        @param batch: list of texts you want to translate
        @return: list of translations
        z/Enter your text list that you want to translate)Ú	ExceptionÚ	enumeraterI   Úappend)r%   rh   rB   ÚarrÚirF   Ú
translateds          r(   Ú_translate_batchzBaseTranslator._translate_batch«   so   € ð ð 	OÝÐMÑNÔNÐNØˆÝ  Ñ'Ô'ð 	#ð 	#‰GˆAˆtØ'˜œ¨Ð7Ð7°Ð7Ð7ˆJØ�JŠJ�zÑ"Ô"Ð"Ð"Øˆ
r)   )F)r7   Ú
__module__Ú__qualname__Ú__doc__r	   rb   Údictr   r$   Úpropertyr   Úsetterr   r8   r   Úboolr?   r   r   rC   rE   r   rI   rO   rW   rg   r   rp   Ú__classcell__)r'   s   @r(   r   r      sr  ø€ € € € € ðð ð Ø3ØØØ%)Ø%)Ø(,ðð àðð ðð ð	ð
 ðð ˜c”]ðð ˜c”]ðð   ”~ðð ð ð ð ð ð< ðð ñ „Xðð „]ðð ñ „]ðð ðð ñ „Xðð „]ðð ñ „]ðð'ð 'ð 'ðð ð ð*, Tð ,ð ,ð ,ð ,ð $ð	Mð 	MØð	Mà	ˆt�TˆzÔ	ð	Mð 	Mð 	Mð 	Mð¨cð Àð ð ð ð ð ðM˜cð M°ð Mð Mð Mñ „^ðMð#˜Cð #ð #ð #ð #ð
#˜3ð #ð #ð #ð #ð$ Cð $°cð $ð $ð $ð $ð8 d¨3¤ið ¸dÀ3¼ið ð ð ð ð ð ð ð r)   r   N)rs   Ú__copyright__Úabcr   r   Úpathlibr   Útypingr   r   r   Údeep_translator.constantsr	   Údeep_translator.exceptionsr
   r   r   © r)   r(   ú<module>r€      sÐ   ðØ Ð à4€à #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ø (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (Ð (à ?Ð ?Ð ?Ð ?Ð ?Ð ?ðð ð ð ð ð ð ð ðgð gð gð gð g�Sñ gô gð gð gð gr)   