
    Fgt6                        S r SSKJr  SSKrSSKJr  SSKJrJrJ	r	  SSK
r
SSKrSSKrSSKJr  SSKJrJr  SSKJr  SS	KJr  \(       a  SS
KJr   " S S5      rg)zThis module contains the EndpointV3Compatibility class, which is used to connect to Gradio apps running 3.x.x versions of Gradio.    )annotationsN)Path)TYPE_CHECKINGAnyLiteral)version)serializingutils)SerializationSetupError)Communicator)Clientc                      \ rS rSrSrSS jrS rS rSSS jjrSSS jjr	SSS	 jjr
SS
 jr    SS jr      SS jrSS jrSS jrSS jrSS jrSS jrS r  SS jrSS jrS S jrSrg)!EndpointV3Compatibility   zGEndpoint class for connecting to v3 endpoints. Backwards compatibility.c                   Xl         X l        X0l        UR                  S5      n[	        U[
        5      (       a  SU-   OUU l        U R                  U R                  5      U l        U R                  (       a  SOSU l	        / U l
        / U l        UR                  R                  S5      (       d  UR                  S-   OUR                  U l         U R                  5       u  U l        U l        U R                  S   =(       a    U R                  SLU l        UR                  S5      U l        SU l        g ! [&         a
    SU l         N1f = f)Napi_name/wshttp
backend_fnFT)clientfn_index
dependencyget
isinstancestrr   _use_websocketuse_wsprotocolinput_component_typesoutput_component_typessrcendswithroot_url_setup_serializersserializersdeserializersis_validr   r   show_api)selfr   r   r   _argsr   s         l/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/gradio_client/compatibility.py__init__ EndpointV3Compatibility.__init__   s   $ $>>*-(377C(NX 	 ))$//: $%'"&(#06

0C0CC0H0H

S(fjj	" 483J3J3L0Dd0 OOL9XdmmSX>XDM %..6 ' 	"!DM	"s   AD2 2EEc                h    SU R                   R                   SU R                   SU R                   3$ )NzEndpoint src: z, api_name: z, fn_index: )r   r"   r   r   r*   s    r,   __repr__ EndpointV3Compatibility.__repr__2   s0    0T]]O<X\XeXeWfgg    c                "    U R                  5       $ N)r1   r0   s    r,   __str__EndpointV3Compatibility.__str__5   s    }}r3   Nc                >   ^ ^^ T R                  T5      mUUU 4S jnU$ )Nc                   > TR                   (       d  [        R                  " 5       eTR                  " U 6 n TR                  " U 6 n T" U 6 nTR
                  " U6 nT(       aW  TR                     TR                  R                  (       d%  TR                  R                  R                  U5        S S S 5        U$ U$ ! , (       d  f       U$ = fr5   )
r(   r
   InvalidAPIEndpointErrorinsert_state	serializeprocess_predictionslockjoboutputsappend)datapredictions_predicthelperr*   s     r,   _inner:EndpointV3Compatibility.make_end_to_end_fn.<locals>._inner;   s    ==3355$$d+D>>4(D"D/K22K@K [[!::--

**11+> ! ; ![ s   -AB::
C	)make_predict)r*   rE   rF   rD   s   `` @r,   make_end_to_end_fn*EndpointV3Compatibility.make_end_to_end_fn8   s    $$V,	 r3   c                    g r5    )r*   rE   s     r,   make_cancel#EndpointV3Compatibility.make_cancelL   s    r3   c                   ^ ^ SUU 4S jjnU$ )Nc                 j  > [         R                  " U TR                  TR                  R                  S.5      n [         R                  " TR                  TR                  R                  S.5      nTR
                  (       a7  [        R                  " TR                  XT5      nSU;   a  [        US   5      eO[        R                  " TR                  R                  4TR                  R                  U TR                  R                  S.TR                  R                  D6n[         R                   " UR"                  R%                  S5      5      n US   n[3        U5      $ ! [&         a  nTR                  R(                  =(       a9    [*        R,                  " TR                  R(                  5      R.                  (       + nSU;   a?  SUS   ;   a6  U(       a/  [        R0                  " STR                  R(                   S	35      S eSU;   a  [        US   5      S e['        S
U 35      UeS nAff = f)N)rB   r   session_hash)r   rQ   error)headersjsonverifyzutf-8rB   429zToo many requests to the API, please try again later. To avoid being rate-limited, please duplicate the Space using Client.duplicate(z&) and pass in your Hugging Face token.z:Could not find 'data' key in response. Response received: )rT   dumpsr   r   rQ   r   r
   synchronize_async_ws_fn
ValueErrorhttpxpostapi_urlrS   
ssl_verifyhttpx_kwargsloadscontentdecodeKeyErrorspace_idhuggingface_hub
space_infoprivateTooManyRequestsErrortuple)	rB   	hash_dataresultresponseoutputkeis_public_spacerE   r*   s	          r,   rD   6EndpointV3Compatibility.make_predict.<locals>._predictP   s   ::  $$(KK$<$<D 

 $$(KK$<$<I {{00dvVf$$VG_55 % !::KK'' KK//;;11	
 kk.. H$4$4$;$;G$DE" = !  KK(( U+66t{{7K7KLTTT   f$&/)Ao44MMQ[[MaMaLb c?@  	 
 &$VG_54?PQWPXYs   E$ $
H2.B?H--H2returnri   rL   )r*   rE   rD   s   `` r,   rH   $EndpointV3Compatibility.make_predictO   s    -	! -	!^ r3   c                n    U R                  5       " U6 n[        U R                  S   5      S:X  a  US   $ U$ )z`Needed for gradio.load(), which has a slightly different signature for serializing/deserializingr@      r   )rH   lenr   )r*   rB   r@   s      r,   _predict_resolve(EndpointV3Compatibility._predict_resolve   s:    ##%t,ty)*a/1:r3   c           
       ^^ U(       d  / $ / n/ m[        U5       Hj  u  mn[        U[        5      (       d  U/nU HF  nUR                  S[	        U5      R
                  [        US5      445        TR                  T5        MH     Ml     [        R                  " U R                  R                  4U R                  R                  UU R                  R                  S.U R                  R                  D6nUR                  S:w  a  UnU$ / nUR                  5       n[        U5       H  u  mn[        U[        5      (       aa  [        U5       VV	s/ s H  u  pTU   T:X  d  M  U	PM     n
nn	[!        X:SS9 VV	s/ s H  u  pISU	[	        U5      R
                  S S.PM!     nnn	O9[#        UU4S	 j[        U5       5       5      n	SU	[	        U5      R
                  S S.nUR                  U5        M     U$ s  sn	nf s  sn	nf )
Nfilesrb)rS   rz   rU      FstrictT)is_filename	orig_namerB   c              3  B   >#    U  H  u  pTU   T:X  d  M  Uv   M     g 7fr5   rL   ).0ixoiindicess      r,   	<genexpr>2EndpointV3Compatibility._upload.<locals>.<genexpr>   s#     R,=52PQAQQQ,=s   	)	enumerater   listrA   r   r   openr[   r\   r   
upload_urlrS   r^   r_   status_coderT   zipnext)r*   
file_pathsrz   fsfruploadedrk   r   r   rm   resr   r   s               @@r,   _uploadEndpointV3Compatibility._upload   s    I
 z*EArb$''TgQd1dm'DEFq!  + JJKK""
KK'';;))	

 kk&&
 ==C!H2 / HVVXF":.2b$''-6v->S->EB'"+QRBRa->FS %(5$A %BDA (,$%)-a$(	 %B  C RIf,=RRA#' !%)"X]] $	C $) /* ' Ts   G1!G17&G7c                j    Sn[        U R                  5       H  u  pEUS;   d  M  X   X$'   US-  nM     g)zAHelper function to modify the input data with the uploaded files.r   fileuploadbuttonru   N)r   r    )r*   rz   rB   file_counterr   ts         r,   _add_uploaded_files_to_data3EndpointV3Compatibility._add_uploaded_files_to_data   s=     d889DA,,-! :r3   c                    [        U5      n[        U R                  5       H-  u  p#U[        R                  :X  d  M  UR                  US 5        M/     [        U5      $ r5   )r   r   r    r
   STATE_COMPONENTinsertri   )r*   rB   r   input_component_types       r,   r;   $EndpointV3Compatibility.insert_state   sL    Dz'01K1K'L#A#u'<'<<At$ (M T{r3   c                    [        XR                  SS9 VVs/ s H  u  p#U[        R                  ;  d  M  UPM     nnn[	        U5      $ s  snnf )NFr}   )r   r!   r
   SKIP_COMPONENTSri   )r*   rB   docts       r,   remove_skipped_components1EndpointV3Compatibility.remove_skipped_components   sR     d$?$?N
N%/// N 	 

 T{
s
   A
A
c                    [        U R                   Vs/ s H  nU[        R                  ;  d  M  UPM     sn5      S:X  a  US   $ U$ s  snf )Nru   r   )rv   r!   r
   r   )r*   rB   r   s      r,   reduce_singleton_output/EndpointV3Compatibility.reduce_singleton_output   sZ      $:::%"7"77 :  7NKs
   AAc           	        [        U5      [        U R                  5      :w  a-  [        S[        U R                  5       S[        U5       35      e[        XR                  SS9 VVs/ s H  u  p#US;   d  M  UPM     nnnU R                  U5      n[        U5      nU R                  XQ5        [        [        U R                  USS9 VVs/ s H  u  pgUR                  U5      PM     snn5      nU$ s  snnf s  snnf )N	Expected z arguments, got Fr}   r   )
rv   r&   rZ   r   r    r   r   r   ri   r<   )	r*   rB   r   r   rz   uploaded_filessr   r   s	            r,   r<   !EndpointV3Compatibility.serialize   s    t9D,,--C 0 0122B3t9+N  D"<"<UK
K,, K 	 

 e,Dz((>(+D,<,<d5(QR(QQ[[^(QR
 
 Ss   'C17C1
C7
c                   [        U5      [        U R                  5      :w  a-  [        S[        U R                  5       S[        U5       35      e[        [	        U R                  USS9 VVs/ s HI  u  p#UR                  UU R                  R                  U R                  R                  U R                  S9PMK     snn5      nU$ s  snnf )Nr   z outputs, got Fr}   )save_dirhf_tokenr$   )
rv   r'   rZ   ri   r   deserializer   
output_dirr   r$   )r*   rB   r   r   r@   s        r,   r   #EndpointV3Compatibility.deserialize   s    t9D..//C 2 234N3t9+N     2 2DG HDA ![[33![[11!]]	   H

 s   -AC
c                    U R                   R                  (       a  U R                  " U6 nU R                  " U6 nU R                  " U6 nU$ r5   )r   download_filesr   r   r   )r*   rC   s     r,   r=   +EndpointV3Compatibility.process_predictions  sE    ;;%%**K8K44kB22K@r3   c                f   U R                   S   n/ nU H  nU R                  R                  S    H  nUS   U:X  d  M  US   nU R                  R	                  U5        UR                  S5      (       a<  US   nU[        R                  ;  a  [        SU S35      e[        R                  U   nO7U[        R                  ;   a  [        R                  U   nO[        SU S35      eUR	                  U" 5       5        M     M     U R                   S	   n/ n	U GH  nU R                  R                  S    H  nUS   U:X  d  M  US   nU R                  R	                  U5        UR                  S5      (       a<  US   nU[        R                  ;  a  [        SU S35      e[        R                  U   n
O\U[        R                  ;   a  [        R                  n
O7U[        R                  ;   a  [        R                  U   n
O[        SU S35      eU	R	                  U
" 5       5        M     GM     X)4$ )
Ninputs
componentsidtype
serializerzUnknown serializer: z4, you may need to update your gradio_client version.zUnknown component: r@   )r   r   configr    rA   r   r	   SERIALIZER_MAPPINGr   COMPONENT_MAPPINGr!   r
   r   SimpleSerializable)r*   r   r&   r   	componentcomponent_nameserializer_namer   r@   r'   deserializers              r,   r%   *EndpointV3Compatibility._setup_serializers  s(    *A![[//=	T?a'%.v%6N..55nE }}\22*3L*A*+2P2PP"9"66GG{ |#  &1%C%CO%T
';+H+HH%0%B%B>%R
51.1AAuv   &&z|4# > ( //),A![[//=	T?a'%.v%6N//66~F }}\22*3L*A*+2P2PP"9"66GG{ |#  (3'E'Eo'V'5+@+@@'2'E'E';+H+HH'2'D'D^'T51.1AAuv  "((8' > , ))r3   c                @   U R                   R                  R                  SS5      n[        R                  " U R                   R                  R                  SS5      5      [        R
                  " S5      :  nUR                  SS5      SLnU=(       a    U=(       a    U$ )Nenable_queueFr   z2.0z3.2queue)r   r   r   r   parseVersion)r*   r   queue_enabledqueue_uses_websocketdependency_uses_queues        r,   r   &EndpointV3Compatibility._use_websocketF  s    **..~uE&}}KK""9e4 
__U# $ !+w >e KO!5O:OOr3   c                :  #    [         R                  " U R                  R                  SU R                  R                  SS9 IS h  vN n[
        R                  " XAX#5      I S h  vN sS S S 5      IS h  vN   $  N4 N N	! , IS h  vN  (       d  f       g = f7f)N
   i   @)open_timeoutextra_headersmax_size)
websocketsconnectr   ws_urlrS   r
   get_pred_from_ws)r*   rB   rj   rE   	websockets        r,   rY   EndpointV3Compatibility._ws_fnN  sy     %%KK++--'	
 

 //	SS
 
 
 T
 
 
 
sZ   ABA;B
B%A=&B)B5A?6B=B?BBB
BB)r   r   r   r   r'   r   r    r(   r!   r   r$   r&   r)   r   )r   r   r   intr   dictr5   )rE   zCommunicator | None)rr   r   )r   zlist[str | list[str]]rr   Clist[str | list[str]] | list[dict[str, Any] | list[dict[str, Any]]])rz   r   rB   z	list[Any]rr   Nonerq   )rr   zEtuple[list[serializing.Serializable], list[serializing.Serializable]])r   r   rr   bool)rE   r   )__name__
__module____qualname____firstlineno____doc__r-   r1   r6   rI   rM   rH   rw   r   r   r;   r   r   r<   r   r=   r%   r   rY   __static_attributes__rL   r3   r,   r   r      s    Q.h(0d2/2	L2h
"R
" 
" 
	
"&$2*	N2*hPTr3   r   )r   
__future__r   rT   pathlibr   typingr   r   r   r[   re   r   	packagingr   gradio_clientr	   r
   gradio_client.exceptionsr   gradio_client.utilsr   r   r   rL   r3   r,   <module>r      sG    H "   . .     , < $}T }Tr3   