
    _OgW7                         S r SSKrSSKrSSKrSSKrSSKrSSKJrJr  SSKJ	r	  SSK
JrJr  SSKJrJrJrJrJrJrJr  SSKJr  SSKJrJr  S	r " S
 S5      rg)zB
A Translation module.

You can translate text using this module.
    N)ResponseTimeout)
ProxyTypes)urlsutils)DEFAULT_CLIENT_SERVICE_URLSDEFAULT_RAISE_EXCEPTIONDEFAULT_USER_AGENT
DUMMY_DATA	LANGCODES	LANGUAGESSPECIAL_CASES)TokenAcquirer)Detected
Translated)encafrc                      \ rS rSrSr\\\SSSS4S\R                  \
   S\
S\S	\R                  \   S
\R                  \   S\S\4S jjrS\
4S jrS rS rS\
S\
S\
S\R(                  \
\R*                  4   S\R,                  \R.                  \R*                     \4   4
S jrS\
S\
S\
S\R(                  \
\R*                  4   S\R6                  4
S jrS\R.                  \R*                     S\R(                  \
\R*                  4   4S jr\R<                   S"S\
S\
S\
S\R*                  S\4
S jj5       r \R<                    S"S\R.                  \
   S\
S\
S\R*                  S\R.                  \   4
S jj5       r   S#S\RB                  \
\R.                  \
   4   S\
S\
S\R*                  S\RB                  \\R.                  \   4   4
S jjr \R<                  S\
S\R*                  S\"4S j5       r#\R<                  S\R.                  \
   S\R*                  S\R.                  \"   4S j5       r#S\RB                  \
\R.                  \
   4   S\R*                  S\RB                  \"\R.                  \"   4   4S  jr#S!r$g)$
Translator    a:  Google Translate ajax API implementation class

You have to create an instance of Translator to use this API

:param service_urls: google translate url list. URLs will be used randomly.
                     For example ``['translate.google.com', 'translate.google.co.kr']``
                     To preferably use the non webapp api, service url should be translate.googleapis.com
:type service_urls: a sequence of strings

:param user_agent: the User-Agent header to send when making requests.
:type user_agent: :class:`str`

:param proxy: httpx proxy configuration.

:param timeout: Definition of timeout for httpx library.
                Will be used for every request.
:type timeout: number or a double of numbers
:param raise_exception: if `True` then raise exception if smth will go wrong
:type raise_exception: boolean
NT   service_urls
user_agentraise_exceptionproxytimeouthttp2list_operation_max_concurrencyc                    [         R                  " UUSU0S9U l        S/U l        SU l        [        U R                  U R                  S   S9U l        Ub  XPR                  l        U(       aw  Xl        SU l        [        U R                  U R                  S   S9U l        [        U5       H5  n[        R                  " SUS   5      n	U	(       d  M&  S/U l        S	U l          O   X0l        Xpl        g )
Nz
User-Agent)r   r   headersztranslate.google.comwebappr   )clienthost
googleapisztranslate.googleapis.comgtx)httpxAsyncClientr#   r   client_typer   token_acquirerr   	enumerateresearchr   r   )
selfr   r   r   r   r   r   r   tapi_types
             W/Users/admin/workspace/ai/Jarvis/env/lib/python3.13/site-packages/googletrans/client.py__init__Translator.__init__6   s     ''j
 44#+;;T%6%6q%9
 ")KK ,'D"/{{):):1)=#D
 |,99\<?C8)C(DD%',D$ -  /.L+    returnc                     [        U R                  5      S:X  a  U R                  S   $ [        R                  " U R                  5      $ )N   r   )lenr   randomchoicer.   s    r1   _pick_service_urlTranslator._pick_service_urld   s;    t  !Q&$$Q''}}T..//r4   c                    #    U $ 7fN r;   s    r1   
__aenter__Translator.__aenter__i   s
     s   c                 T   #    U R                   R                  5       I S h  vN   g  N7fr?   )r#   aclose)r.   exc_typeexc_valexc_tbs       r1   	__aexit__Translator.__aexit__l   s     kk  """s   (&(textdestsrcoverridec           	        #    SnU R                   S:X  a#  U R                  R                  U5      I S h  vN n[        R                  " U R                   UUUUUS9n[
        R                  R                  U R                  5       S9nU R                  R                  XvS9I S h  vN nUR                  S:X  a;  [        R                  " UR                  5      n	[        U	[        5      (       d  U	/n	X4$ U R                   (       a/  [#        SR                  UR                  U R$                  5      5      eU[&        S   S   S'   [&        U4$  GN N7f)	Nxxxxr"   r#   queryrL   rK   tokenrM   r$   params   z#Unexpected status code "{}" from {}r   )r)   r*   dor   build_paramsr   	TRANSLATEformatr<   r#   getstatus_codeformat_jsonrJ   
isinstancelistr   	Exceptionr   r   )
r.   rJ   rK   rL   rM   rR   rU   urlrdatas
             r1   
_translateTranslator._translateo   s+     x'--0066E####
 nn##)?)?)A#B++//#/55==C$$QVV,DdD))v7N5<<MM4#4#4  #
1a1}9 7 6s#   1EE	A.E"E#B'EEc           	      H  #    SnU R                   S:X  a#  U R                  R                  U5      I Sh  vN n[        R                  " U R                   UUUUUS9n[
        R                  R                  U R                  5       S9nU R                  R                  SXvS9$  Nl7f)z/Async helper for making the translation requestrO   r"   NrP   rS   GETrT   )r)   r*   rW   r   rX   r   rY   rZ   r<   r#   build_request)r.   rJ   rK   rL   rM   rR   rU   ra   s           r1   rh   Translator.build_request   s      x'--0066E####
 nn##)?)?)A#B{{(((CC 7s   1B"B A-B"rc   c                     SSSSSSSSS	S
SS.n0 nUR                  5        H%  u  pEU[        U5      :  a  X   (       a  X   OS X5'   M'     U$ )Ntranslationzall-translationszoriginal-languagezpossible-translations
confidencezpossible-mistakeslanguagesynonymsdefinitionsexampleszsee-also)r   r7   r                           )itemsr8   )r.   rc   response_parts_name_mappingextraindexcategorys         r1   _parse_extra_dataTranslator._parse_extra_data   sn     !"&"'
# :@@BOE %D	 1dk O  C
 r4   kwargsc                    #    g 7fr?   r@   r.   rJ   rK   rL   r   s        r1   	translateTranslator.translate   s
         c                    #    g 7fr?   r@   r   s        r1   r   r      s
      #&r   c           
      h  ^ ^^^^#    TR                  5       R                  SS5      S   mTR                  5       R                  SS5      S   mTS:w  a=  T[        ;  a3  T[        ;   a
  [        T   mOT[        ;   a
  [        T   mO[        S5      eT[        ;  a3  T[        ;   a
  [        T   mOT[        ;   a
  [        T   mO[        S5      e[        U[        5      (       ap  TR                  ST R                  5      n[        R                  " U5      mUUU UU4S jnU Vs/ s H
  ov" U5      PM     nn[        R                  " U6 I S	h  vN n	U	$ Un
T R                  UTTT5      I S	h  vN u  pS
R                  US    Vs/ s H  oS   (       a  US   OS
PM     sn5      nT R                  U5      n US   mU
n US   S   S   nUc   US   S   S   nT["        ;   a  UU
:X  a  Un[%        TTU
UUUUS9n	U	$ s  snf  N Ns  snf ! [          a     NZf = f! [          a     N\f = f!    NU= f7f)u[  Translate text from source language to destination language

:param text: The source text(s) to be translated. Batch translation is supported via sequence input.
:type text: UTF-8 :class:`str`; :class:`unicode`; string sequence (list, tuple, iterator, generator)

:param dest: The language to translate the source text into.
             The value should be one of the language codes listed in :const:`googletrans.LANGUAGES`
             or one of the language names listed in :const:`googletrans.LANGCODES`.
:param dest: :class:`str`; :class:`unicode`

:param src: The language of the source text.
            The value should be one of the language codes listed in :const:`googletrans.LANGUAGES`
            or one of the language names listed in :const:`googletrans.LANGCODES`.
            If a language is not specified,
            the system will attempt to identify the source language automatically.
:param src: :class:`str`; :class:`unicode`

:rtype: Translated
:rtype: :class:`list` (when a list is passed)

Basic usage:
    >>> from googletrans import Translator
    >>> translator = Translator()
    >>> translator.translate('안녕하세요.')
    <Translated src=ko dest=en text=Good evening. pronunciation=Good evening.>
    >>> translator.translate('안녕하세요.', dest='ja')
    <Translated src=ko dest=ja text=こんにちは。 pronunciation=Kon'nichiwa.>
    >>> translator.translate('veritas lux mea', src='la')
    <Translated src=la dest=en text=The truth is my light pronunciation=The truth is my light>

Advanced usage:
    >>> translations = translator.translate(['The quick brown fox', 'jumps over', 'the lazy dog'], dest='ko')
    >>> for translation in translations:
    ...    print(translation.origin, ' -> ', translation.text)
    The quick brown fox  ->  빠른 갈색 여우
    jumps over  ->  이상 점프
    the lazy dog  ->  게으른 개
_r7   r   autozinvalid source languagezinvalid destination languager   c                    >#    T IS h  vN   TR                   " U 4TTS.TD6I S h  vN sS S S 5      IS h  vN   $  N3 N N	! , IS h  vN  (       d  f       g = f7f)N)rK   rL   )r   )itemrK   r   r.   	semaphorerL   s    r1   translate_with_semaphore6Translator.translate.<locals>.translate_with_semaphore  s=     $9!%!S4S!SF!SS %99S %999sP   A>AAA AAAA AAA
AAAN r   )rL   rK   originrJ   pronunciation
extra_dataresponse)lowersplitr   r   r   
ValueErrorr^   r_   popr   asyncio	Semaphoregatherrd   joinr~   r`   EXCLUDESr   )r.   rJ   rK   rL   r   concurrency_limitr   r   tasksresultr   rc   r   d
translatedr   pronr   s   ` ```            @r1   r   r      sY    Z zz|!!#q)!,iikQ'*&=S	1m##C(	!n !:;;y }$$T*"  !?@@dD!! &

0$2U2U!  ))*;<IT T AEE-d3EE">>511FM#tT3GG WWDGDGqdad2GDE
++D1
	q'C 	71:b>D <Awqz!} 8D !
 [ F1 H E  		  		s   DH2#G=4H2HH2,H-H2HH28H =H2 H H2H+ )H2H2H2
HH2HH2
H(%H2'H((H2+H/-H2c                    #    g 7fr?   r@   r.   rJ   r   s      r1   detectTranslator.detectH  s     ILr   c                    #    g 7fr?   r@   r   s      r1   r   r   K  s
      !$r   c                 8  ^ ^^#    [        U[        5      (       an  TR                  ST R                  5      n[        R
                  " U5      mUU U4S jnU Vs/ s H
  oT" U5      PM     nn[        R                  " U6 I Sh  vN nU$ T R                  USST5      I Sh  vN u  pSn
Sn [        US   S	   5      S
:  a  US   S	   n
US   S   nO#SR                  US   S	   5      n
US   S   S	   n [        XU	S9nU$ s  snf  N Ng! [         a     N!f = f7f)ui  Detect language of the input text

:param text: The source text(s) whose language you want to identify.
             Batch detection is supported via sequence input.
:type text: UTF-8 :class:`str`; :class:`unicode`; string sequence (list, tuple, iterator, generator)

:rtype: Detected
:rtype: :class:`list` (when a list is passed)

Basic usage:
    >>> from googletrans import Translator
    >>> translator = Translator()
    >>> translator.detect('이 문장은 한글로 쓰여졌습니다.')
    <Detected lang=ko confidence=0.27041003>
    >>> translator.detect('この文章は日本語で書かれました。')
    <Detected lang=ja confidence=0.64889508>
    >>> translator.detect('This sentence is written in English.')
    <Detected lang=en confidence=0.22348526>
    >>> translator.detect('Tiu frazo estas skribita en Esperanto.')
    <Detected lang=eo confidence=0.10538048>

Advanced usage:
    >>> langs = translator.detect(['한국어', '日本語', 'English', 'le français'])
    >>> for lang in langs:
    ...    print(lang.lang, lang.confidence)
    ko 1
    ja 0.92929292
    en 0.96954316
    fr 0.043500196
r   c                    >#    T IS h  vN   TR                   " U 40 TD6I S h  vN sS S S 5      IS h  vN   $  N0 N N	! , IS h  vN  (       d  f       g = f7fr?   )r   )r   r   r.   r   s    r1   detect_with_semaphore0Translator.detect.<locals>.detect_with_semaphorew  s6     $9!%T!<V!<< %99< %999sL   A;AA=AA?AAAAA
AANr   r   r   g        rt   r   r7   r   )langrl   r   )r^   r_   r   r   r   r   r   rd   r8   r   r`   r   )r.   rJ   r   r   r   r   r   r   rc   r   rL   rl   r   s   ` `         @r1   r   r   P  s/    B dD!! &

0$2U2U!  ))*;<I= >BBTT*40TEB">>511FM#tT66JJ 
	471:"1gaj!!WR[
ggd1gaj)!!WR[^
 sHM+ C1 K  		s`   ADD*DDD D!
D,%D
 D"D
 4DD

DDDD)r#   r)   r   r   r   r*   )..)r   r   )%__name__
__module____qualname____firstlineno____doc__r   r
   r	   typingSequencestrboolOptionalr   r   intr2   r<   rA   rH   DictAnyTupleListr   rd   r'   Requestrh   r~   overloadr   r   Unionr   r   __static_attributes__r@   r4   r1   r   r       sX   . .I, 7-1,0./,Mooc*,M ,M 	,M
 z*,M ),M ,M ),,M\03 0
#!!"!),!8>CO8T!	fkk&**-x7	8!FDD"D),D8>CO8TD	D*KK

+	S&**_	%4 __58"/2DJJJ	  __ 	&kk#& & 	&
 **& 
Z	 & & 	wll3C 001w w 	w
 **w 
j&++j"99	:wr __LL

LxL L__$KK$$06

$	X	$ $@LLfkk#&6!67@CI::@	hH 55	6@r4   r   )r   r   r9   r,   r   r'   r   r   httpx._typesr   googletransr   r   googletrans.constantsr   r	   r
   r   r   r   r   googletrans.gtokenr   googletrans.modelsr   r   r   r   r@   r4   r1   <module>r      sL      	   # # #   - 3p pr4   