
    Fg                       S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SK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Jr  S SKJr  S SKJr  S SKJr  S SKJr  S S	KJrJ r J!r!J"r"J#r#J$r$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.  \(       a  S SK/J0r0  Sr1Sr2Sr3Sr4Sr5Sr6Sr7Sr8Sr9Sr:Sr;Sr<Sr=Sr>Sr?Sr@SrA\,R                  \,R                  \,R                  \,R                  \,R                  /rG " S S\#SS9rHSdS jrI\I" 5       rJ " S  S!\K5      rL " S" S#\K5      rM " S$ S%\K5      rN " S& S'\K5      rO " S( S)\P\5      rQ " S* S+\5      rR\ " S, S-5      5       rS\ " S. S/5      5       rTS0 rU\ " S1 S25      5       rV\ " S3 S45      5       rWSeS5 jrXSfS6 jrYSfS7 jrZ Sg         ShS8 jjr[                      SiS9 jr\                  SjS: jr]        SkS; jr^                  SlS< jr_          SmS= jr`S> raSgSnS? jjrb So       SpS@ jjrcSqSA jrdSrSB jreSsSC jrfStSD jrgSuSE jrhSvSF jriSgSuSG jjrjSwSH jrkSxSySI jjrlSzSJ jrm   S{       S|SK jjrnSgS}SL jjroS~SM jrp  S     SSN jjrqSSO jrr " SP SQ\s5      rtSSR jru/ SSQrv\vST   rwSSU jrxSSV jrySSW jrzSSX jr{SSY jr|        SSZ jr}SS[ jr~SeS\ jrSeS] jrSeS^ jrSeS_ jr1 S`krSSa jrSSb jr        SSc jrg)    )annotationsN)Callable	Coroutine)	dataclassfield)datetime)Enum)Path)Lock)	TYPE_CHECKINGAnyLiteralOptional	TypedDictUnionget_args
get_originget_type_hints)
SpaceStage)WebSocketCommonProtocol)ParameterInfozapi/predict/z
queue/joinz
queue/datauploadloginconfigzinfo?all_endpoints=Truezinfo?serialize=Falsez0https://gradio-space-api-fetcher-v2.hf.space/apiresetzhttps://hf.space/{}zheartbeat/{session_hash}cancelstatec                  z    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S	\S
'   S\S'   S\S'   S\S'   S\S'   S\S'   Srg)MessageG   strmsgdict[str, Any]outputevent_idintrankfloatrank_eta
queue_sizeboolsuccess
list[dict]progress_dataloglevel N)__name__
__module____qualname____firstlineno____annotations____static_attributes__r1       d/Users/admin/workspace/ai/PDFMathTranslate/myenv/lib/python3.13/site-packages/gradio_client/utils.pyr   r   G   s6    	HM
IOOM	HJr8   r   F)totalc                      [         R                  " [        S5      R                  S5      R	                  5       n [
        R                  " U 5      nUR                  SS5      nU$ ! [         a     gf = f)Nzpackage.jsonutf-8version )	pkgutilget_datar2   decodestripjsonloadsget	Exception)package_json_datapackage_datar=   s      r9   get_package_versionrI   T   sj    X~6==gFLLN 	 zz"34""9b1 s   A!A$ $
A10A1c                      \ rS rSrSrSrg)TooManyRequestsErrorc   z.Raised when the API returns a 429 status code.r1   Nr2   r3   r4   r5   __doc__r7   r1   r8   r9   rK   rK   c   s    8r8   rK   c                      \ rS rSrSrSrg)
QueueErrori   zMRaised when the queue is full or there is an issue adding a job to the queue.r1   NrM   r1   r8   r9   rP   rP   i   s    Wr8   rP   c                      \ rS rSrSrSrg)InvalidAPIEndpointErroro   z(Raised when the API endpoint is invalid.r1   NrM   r1   r8   r9   rS   rS   o   s    2r8   rS   c                      \ rS rSrSrSrg)SpaceDuplicationErroru   z:Raised when something goes wrong with a Space Duplication.r1   NrM   r1   r8   r9   rV   rV   u   s    Dr8   rV   c                  L    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSrSrSrSrg)ServerMessage{   	send_hash
queue_full
estimation	send_dataprocess_startsprocess_generatingprocess_completedr/   progress	heartbeatzServer stopped unexpectedly.unexpected_errorclose_streamprocess_streamingr1   N)r2   r3   r4   r5   r[   r\   r]   r^   r_   r`   ra   r/   rb   rc   server_stoppedrd   re   rf   r7   r1   r8   r9   rY   rY   {   sL    IJJI%N-+
CHI3N)!L+r8   rY   c                  v    \ rS rSrSrSrSrSrSrSr	Sr
S	rS
rSrSrSr\SS j5       rSS jr\SS j5       rSrg)Status   z'Status codes presented to client users.STARTINGJOINING_QUEUE
QUEUE_FULLIN_QUEUESENDING_DATA
PROCESSING	ITERATINGPROGRESSFINISHED	CANCELLEDLOGc           
     T   [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  [         R                  [         R                  /
nUR                  U 5      $ )z'Order of messages. Helpful for testing.)ri   rk   rl   rm   rn   ro   rp   rr   rq   rs   rt   index)statusorders     r9   orderingStatus.ordering   sn     OO  OOOOOO
 {{6""r8   c                H    U R                  U 5      U R                  U5      :  $ N)rz   )selfothers     r9   __lt__Status.__lt__   s    }}T"T]]5%999r8   c                d   [         R                  [        R                  [         R                  [        R
                  [         R                  [        R                  [         R                  [        R                  [         R                  [        R                  [         R                  [        R                  [         R                  [        R                  [         R                   [        R"                  [         R$                  [        R&                  [         R(                  [        R                  0
U    $ )zKMap the raw message from the backend to the status code presented to users.)rY   r[   ri   rl   r\   rm   r]   rn   r^   ro   r_   rp   r`   rq   ra   rs   rb   rr   r/   ru   rg   )r"   s    r9   msg_to_statusStatus.msg_to_status   s     ##V%9%9$$f&7&7$$foo##V%8%8((&*;*;,,f.>.>++V__""FOOvzz((&//
  	r8   r1   N)rx   ri   returnr&   )r   ri   )r"   r!   r   ri   )r2   r3   r4   r5   rN   rk   rl   rm   rn   ro   rp   rq   rr   rs   rt   ru   staticmethodrz   r   r   r7   r1   r8   r9   ri   ri      sg    1H#MJH!LJIHHI
C# # :  r8   ri   c                  \    \ rS rSr% S\S'   S\S'   S\S'   S\S'   S\S	'   \SS
 j5       rSrg)ProgressUnit   zOptional[int]rw   lengthzOptional[str]unitzOptional[float]rb   descc                    U Vs/ s HX  nU " UR                  S5      UR                  S5      UR                  S5      UR                  S5      UR                  S5      S9PMZ     sn$ s  snf )Nrw   r   r   rb   r   )rw   r   r   rb   r   rE   )clsdatads      r9   from_msgProgressUnit.from_msg   sj     	
  eeGnuuXUU6]z*UU6] 	
 		
 	
s   AA'r1   N)r   r-   r   zlist[ProgressUnit])r2   r3   r4   r5   r6   classmethodr   r7   r1   r8   r9   r   r      s2    



 

r8   r   c                  n    \ rS rSr% SrS\S'   S\S'   S\S'   S\S	'   S
\S'   S\S'   S\S'   SrS\S'   Srg)StatusUpdate   zIUpdate message sent from the worker thread to the Job on the main thread.ri   codez
int | Noner'   r*   zfloat | Noneetazbool | Noner,   zdatetime | Nonetimezlist[ProgressUnit] | Noner.   Nztuple[str, str] | Noner/   r1   )r2   r3   r4   r5   rN   r6   r/   r7   r1   r8   r9   r   r      s9    S
L
	
,,"&C	&r8   r   c            
     b    [        [        R                  S S S S [        R                  " 5       S S9$ )N)r   r'   r*   r   r,   r   r.   )r   ri   rk   r   nowr1   r8   r9   create_initial_status_updater      s.    __\\^ r8   c                  F    \ rS rSr% Sr\" \S9rS\S'   \" \	S9r
S\S'   Srg	)
	JobStatus   zhThe job status.

Keeps track of the latest status update and intermediate outputs (not yet implements).
)default_factoryr   latest_statusz	list[Any]outputsr1   N)r2   r3   r4   r5   rN   r   r   r   r6   listr   r7   r1   r8   r9   r   r      s(    
 #(8T"UM<Ut4GY4r8   r   c                  l    \ rS rSr% SrS\S'   S\S'   S\S'   S	\S
'   SrS\S'   SrS\S'   SrS\S'   Sr	g)Communicator   zKHelper class to help communicate between the worker thread and main thread.r   lockr   jobzCallable[..., tuple]prediction_processorr!   	reset_urlFr+   should_cancelN
str | Noner%   thread_completer1   )
r2   r3   r4   r5   rN   r6   r   r%   r   r7   r1   r8   r9   r   r      s8    U
J	N..NM4Hj!OT!r8   r   c                P    [        U [        5      (       d  gU R                  S5      $ )zF
Check if the given value is a string that looks like an HTTP(S) URL.
F)zhttp://zhttps://)
isinstancer!   
startswithpossible_urls    r9   is_http_url_liker     s&     lC((""#:;;r8   c                0   SS0n [         R                  " 5        n[         R                  " XS9nUR                  S:X  a"  UR	                  XS9R
                  sSSS5        $ UR
                  sSSS5        $ ! , (       d  f       g= f! [         a     gf = f)zZ
Probe the given URL to see if it responds with a 200 status code (to HEAD, then to GET).
z
User-Agentz8gradio (https://gradio.app/; gradio-team@huggingface.co)headersi  NF)httpxClientheadstatus_coderE   
is_successrF   )r   r   clienthead_requests       r9   	probe_urlr     s~     WXG\\^v ::lDL''3.zz,z@KK ^  **	 ^^
  s:   B =A7	B "A7-	B 7
BB B 
BBc                h    [         R                  " S5        [        U 5      =(       a    [        U 5      $ )z+
Check if the given string is a valid URL.
z^is_valid_url should not be used. Use is_http_url_like() and probe_url(), as suitable, instead.)warningswarnr   r   r   s    r9   is_valid_urlr   %  s-     MM	H L)Ei.EEr8   c                ,  #    Sn0 nU(       Gd  [         R                  " U R                  5       5      nUR                  5       (       Gd  U(       a  UR                     UR
                  (       a  [        R                  " 5        IS h  vN nUR                  UR                  [        R                  " U5      S9nUR                  5         [         R                  " XhSS9I S h  vN   S S S 5      IS h  vN   [        R                  R!                  5       e S S S 5        [         R"                  " S5      I S h  vN   UR                  5       (       d  GM  UR%                  5       n	[        R                  " U	5      nU(       Ga:  UR                     SU;   n
['        [(        R+                  US   5      UR-                  S5      UR-                  S	S 5      UR-                  S
5      [.        R0                  " 5       UR-                  S5      U
(       a  [2        R5                  US   5      OS S9nUR-                  S0 5      R-                  S/ 5      nU(       aS  UR6                  [(        R8                  :w  a5   UR:                  " U6 nUR>                  R@                  RC                  U5        XR>                  l"        S S S 5        US   S:X  a  [G        S5      eUS   S:X  a  U RI                  U5      I S h  vN   O"US   S:X  a  U RI                  U5      I S h  vN   US   S:H  nU(       d  GM  US   $  GN GNM GN@! , IS h  vN  (       d  f       GNV= f! , (       d  f       GNA= f GN+! [<         a  nU/n S nANS nAff = f! , (       d  f       N= f N N7f)NF)rC   T)return_exceptionsg{Gz?r.   r"   r*   r'   r,   r)   r   r*   r'   r,   r   r   r.   r$   r   r\    Queue is full! Please try again.r[   r^   ra   )%asynciocreate_taskrecvdoner   r   r   AsyncClientpostr   rC   rD   r   gather
concurrentfuturesCancelledErrorsleepresultr   ri   r   rE   r   r   r   r   r   rs   r   rF   r   r   appendr   rP   send)	websocketr   	hash_datahelper	completedresptaskhttpr   r"   has_progressstatus_updater$   r   es                  r9   get_pred_from_wsr   0  s     ID ""9>>#34))++[[++ $)#4#4#6#6$$(II & 0 0tzz)7L %. %E
 !KKM")..PT"UUU $7#6 )00??AA , ! --%%%! ))++" kkmzz#.$6 ,--d5k:#xx5&$/ HHY/!,# #/"7"7_8M"N
! (B/33FB?m00FOOC%!'!<!<f!E JJ&&--f5+8

() * ;,&?@@;+%..+++%[K'..&&&K#66	g ih >U $7 V $7#6#6#6	 ![ &* % %"#%# 0 ,&s   AN+ML,MAL5"L/#L5'M2L23"M!N7M"8N:NC!M?0M%?5M?49N-N."NNN'N,M/L52M5M	;L><M	M
M	N%
M</M72M?7M<<M??
N	NNc
                z   SUl         U	R                  [        X6Xx5      n
U	R                  [        U UUUUUUU5	      n[        R
                  R                  X/[        R
                  R                  S9u  pSUl         [        U5      S:w  a  [        S[        U5       S35      eU H  nUR                  5       s  $    g NF)return_whenT   zDid not expect z tasks to be done.)r   submitcheck_for_cancelstream_sse_v0r   r   waitFIRST_COMPLETEDlen
ValueErrorr   )r   r   r   r   sse_urlsse_data_urlr   cookies
ssl_verifyexecutorfuture_cancel
future_sser   _futures                  r9   get_pred_from_sse_v0r   o  s     #FOO&7M 
J   %%	#&&66 & GD "F
4yA~?3t9+5GHII}} r8   c                   SU l         UR                  [        XX&5      nUR                  [        XXE5      n	[        R
                  R                  X/[        R
                  R                  S9u  pSU l         [        U
5      S:w  a  [        S[        U
5       S35      eU
 H,  nUR                  5       nU(       a  UeUR                  5       s  $    g r   )r   r   r   stream_sse_v1plusr   r   r   r   r   r   	exceptionr   )r   r   r   pending_messages_per_eventr%   protocolr   r   r   r   r   r   r   r   s                 r9   get_pred_from_sse_v1plusr     s     #FOO&7M 6xJ   %%	#&&66 & GD "F
4yA~?3t9+5GHII$$&	O}}	 r8   c                    [         R                  " S5        U R                     U R                  (       a
   S S S 5        O:U R                  (       a  [
        R                  R                  5       e S S S 5        Mx  U R                  (       a.  [        R                  " U R                  SU R                  0UUUS9  [
        R                  R                  5       e! , (       d  f       Nm= f)N皙?r%   )rC   r   r   verify)r   r   r   r   r   r   r   r   r%   r   r   r   )r   r   r   r   s       r9   r   r     s     

4[[## [ %% ((7799 &   

foo.	
 


+
+
-- [s   C /C
C%c                    U R                  SUUUUS9 nUR                  5        GHc  n	U	R                  S5      n	[        U	5      S:X  a  M&  U	R	                  S5      (       Ga  [
        R                  " U	SS  5      n
U
S   [        R                  [        R                  4;   a  M  UR                     SU
;   n[        [        R                  U
S   5      U
R                  S	5      U
R                  S
S 5      U
R                  S5      [        R                   " 5       U
R                  S5      U(       a  ["        R%                  U
S   5      OS S9nU
R                  S0 5      R                  S/ 5      nU(       aS  UR&                  [        R(                  :w  a5   UR*                  " U6 nUR.                  R0                  R3                  U5        XR.                  l        S S S 5        UR6                  (       a  [8        R:                  R=                  5       eU
S   S:X  a  [?        S5      eU
S   S:X  a7  U
S   nUUl         U RC                  USU0UEUEUUS9nURE                  5         GM<  U
S   S:X  a  U
S   s  sS S S 5        $ GMX  [G        SU	 35      e   S S S 5        [G        S5      e! [,         a  nU/n S nAGNS nAff = f! , (       d  f       N= f! , (       d  f       NE= f! [8        R:                  R<                   a    e f = f)NGET)paramsr   r   
r   data:   r"   r.   r*   r'   r,   r)   r   r$   r   r\   r   r^   r%   )rC   r   r   ra   zUnexpected message: z*Did not receive process_completed message.)$stream
iter_linesrstripr   r   rC   rD   rY   r/   rc   r   r   ri   r   rE   r   r   r   r   r   rs   r   rF   r   r   r   r   r   r   r   r   rP   r%   r   raise_for_statusr   )r   r   r   r   r   r   r   r   responseliner   r   r   r$   r   r   r%   reqs                     r9   r   r     s   9]]  
  ++-{{4(t9>??7++::d12h/DE{}'8'8-:Q:Q&RR '6$'>(4!'!5!5d5k!B'+xx'=!%&$!7$(HHY$7!) $ 4+ +7*?*?_@U*V!%
) "&(B!7!;!;FB!G!m&8&8FOO&K-)/)D)Df)M #JJ..55f=3@

0) %* --(00??AAE{l2()KLLe3#'
#3*2$kk(",h!L$!L)!L$+$+	 *  ,,.e(;;#H~-g
 
d < %';D6%BCC] .
l EFF- $- -*+-# %
 
n ,, ss   K BK1C!J<J!"5J<BK1	K ;KK !
J9	+J4	.J<4J9	9J<<
K
K
KK  K>c                    X   nS n [        U5      S:  a  UR                  S5      nO[        R                  " S5        M:  Ub  U R                  (       a  [
        R                  R                  5       eU R                     S nUS   [        R                  :X  a3  UR                  S5      nUR                  S5      n	U(       a
  U	(       a  X4n[        [        R                  US   5      UR                  S5      UR                  SS 5      UR                  S5      [        R                   " 5       UR                  S	5      S
U;   a  ["        R%                  US
   5      OS US9n
UR                  S0 5      R                  S/ 5      nUS   [        R&                  :X  a@  US;   a:  Uc  [)        U5      nO+[+        U5       H  u  pX\   n[-        X5      nXU'   XU'   M     U(       aS  U
R.                  [        R0                  :w  a5   U R2                  " U6 nU R6                  R8                  R;                  U5        XR6                  l        S S S 5        US   [        R>                  :X  a  X	 US   $ US   [        R@                  :X  a  [C        S5      eGM  ! [4         a  nU/n S nANS nAff = f! , (       d  f       Nk= f! [
        R                  R                   a    e f = f)Nr   r   r"   r/   r0   r*   r'   r,   r)   r.   )r   r*   r'   r,   r   r   r.   r/   r$   r   )sse_v2zsse_v2.1sse_v3zServer stopped.)"r   popr   r   r   r   r   r   r   rY   r/   rE   r   ri   r   r   r   r   r   r`   r   	enumerate
apply_diffr   rs   r   rF   r   r   r   r   ra   rg   r   )r   r   r%   r   pending_messagespending_responses_for_diffsr"   log_messager/   r0   r   r$   ivalueprev_output
new_outputr   r   s                     r9   r   r     s   >5?&*##$q(&**1-

4 {f44 ((7799"u:!2!22''%.CGGG,Eu'*l ,--c%j9"ww|4.GGI.!
+&#- #/"7"7O8L"M#! 2.2262>u:!A!AAh S G
 3:6:6l3(1&(9HA*E*HK)3K)GJ=G:(21I	 ): m00FOOC%!'!<!<f!E JJ&&--f5+8

(Q R 5z]<<<.88}$U};;; !233o ^ % %"#%K ^ ,, sU   A>J:  E?J) J5J)%J: *%J: 
J&J!J)!J&&J))
J73J: : Kc                b    [         R                  " U 5      n S nU H  u  p4nU" XX55      n M     U $ )Nc                   [        U5      S:X  a   US:X  a  U$ US:X  a  X-   $ [        SU 35      eU n[        [        U5      S-
  5       H
  nXAU      nM     US   nUS:X  a  X4U'   U $ US:X  a  XF==   U-  ss'   U $ US:X  a9  [        U[        5      (       a  UR                  [        U5      U5        U $ X4U'    U $ US:X  a(  [        U[        5      (       a  U[        U5      	 U $ XF	  U $ [        S	U 35      e)
Nr   replacer   zUnsupported action: r   adddeletezUnknown action: )r   r   ranger   r   insertr&   )targetpathactionr  currentr  	last_paths          r9   
apply_editapply_diff.<locals>.apply_edit^  s4   t9>"8#~% #7x!@AAs4y1}%A1g&G & H	Y!&I   x%'  u_'4((s9~u5  &+	"  x'4((C	N+ 	 &  /x899r8   )copydeepcopy)objdiffr&  r#  r"  r  s         r9   r  r  [  s:    
--
CB  $eF2  $ Jr8   c                ,   [        U=(       d    [        R                  " 5       5      [        R                  " S5      -  nUR                  SSS9  U[        U 5      R                  -  n[        R                  " X5        [        UR                  5       5      $ )N   Texist_okparents)r
   tempfile
gettempdirsecrets	token_hexmkdirnameshutilcopy2r!   resolve)	file_pathdir	directorydests       r9   create_tmp_copy_of_filer>    sk    S1H//12W5F5Fr5JJIOOT4O0tI+++D
LL!t||~r8   c                l   Ub  [         R                  " USS9  U(       a  SSU-   0O0 n[        U=(       d    [        R                  " 5       5      [
        R                  " S5      -  nUR                  SSS9  U[        U 5      R                  -  n[        R                  " SXSS	9 nUR                  5         [        US
5       nUR                  5        H  nUR                  U5        M     SSS5        SSS5        [        UR!                  5       5      $ ! , (       d  f       N/= f! , (       d  f       N8= f)z0Kept for backwards compatibility for 3.x spaces.NTr/  AuthorizationBearer r-  r.  r   )r   follow_redirectswb)osmakedirsr
   r1  r2  r3  r4  r5  r6  r   r  r  openiter_rawwriter!   r9  )	url_pathhf_tokenr;  r   r<  r:  r	  fchunks	            r9   download_tmp_copy_of_filerN    s     
C$'9A	H 45rGS1H//12W5F5Fr5JJIOOT4O0DN///I	x4
	!!#)T"a!**, - #	
 y  "## #"	
 
s$   %D%)D+D%
D"	D%%
D3c                    U R                  S5      (       a  g[        R                  " U 5      S   nUb"  UR                  SS5      R                  SS5      nU$ )Nz.vttztext/vttr   zx-wavwavzx-flacflac)endswith	mimetypes
guess_typer  )filenamemimetypes     r9   get_mimetyperW    sU      ##H-a0H##GU3;;HfMOr8   c                    U R                  SS5      n [        R                  " U 5      S   nUS:X  a  gUc  g [        R                  " U5      nUb  UR	                  S5      (       a  USS  nU$ )Nz	audio/wavzaudio/x-wavr   z
audio/flacrQ  .r   )r  rS  rT  guess_extensionr   )encodingtype	extensions      r9   get_extensionr^    ss    ];H)!,D|	))$/I!5!5c!:!:abM	r8   c                \   [        U 5      nU H  nUS:X  a    gUR                  S5      (       aZ  UR                  S5      R                  5       n[	        U 5      R
                  R                  S5      R                  5       nX4:X  a    gM{  Uc  M  UR                  U S35      (       d  M    g   g)NfileTrY  /F)rW  r   lstriplowerr
   suffix)r:  
file_types	mime_type	file_typefile_exts        r9   is_valid_fileri    s    Y'I	$$!((-335II--44S9??AH$ %"y';';ykO'L'L   r8   c                    [        U S5       n[        R                  " UR                  5       5      n[	        US5      n[        [	        U 5      5      nSUb  UOS-   S-   U-    sS S S 5        $ ! , (       d  f       g = f)Nrbr<   r  r>   ;base64,)rG  base64	b64encodereadr!   rW  )rL  r`  encoded_string
base64_strrV  s        r9   encode_file_to_base64rr    sp    	a$))$))+61
A'#/xR9 	
	 
s   AA,,
A:c                    [         R                  " U 5      nUR                  5         [        R                  " UR
                  5      n[        US5      n[        U 5      nSUb  UOS-   S-   U-   $ )Nr<   r  r>   rl  )r   rE   r  rm  rn  contentr!   rW  )urlr   rp  rq  rV  s        r9   encode_url_to_base64rv    sc    99S>D%%dll3N^W-JC Hx38<zIJVr8   c                d    [        U 5      n [        U 5      (       a  [        U 5      $ [        U 5      $ r}   )r!   r   rv  rr  )r"  s    r9   encode_url_or_file_to_base64rx    s,    t9D#D)) &&r8   c              #     #    [        5       nU(       a  SSU-   0O0 n[        R                  " SXS9 nUR                  5        H  nX%-  nUv   M     S S S 5        Uv   g ! , (       d  f       N= f7f)NrA  rB  r   r   )	bytearrayr   r  
iter_bytes)ru  rK  arrr   rr   s         r9   download_byte_streamr~    s_     
+C9A	H 45rG	eS	2aLLNDKCJ # 
3 I	 
3	2s   0A0 AA0
A-)A0c                r    [        U 5      nU R                  SS5      S   n[        R                  " U5      U4$ )N,r   r  )r^  rsplitrm  	b64decode)r[  r]  r   s      r9   decode_base64_to_binaryr    s7    h'I??3"2&DD!9,,r8   c                   [         R                  R                  U 5      u  p#SR                  U Vs/ s H!  oDR	                  5       (       d  US;   d  M  UPM#     sn5      nX#-   n [        U R                  5       5      nXQ:  a@  XQ:  a;  [        U5      S:X  a   U $ USS nX#-   n [        U R                  5       5      nXQ:  a  M;  U $ s  snf )aD  
Strips invalid characters from a filename and ensures it does not exceed the maximum byte length
Invalid characters are any characters that are not alphanumeric or one of the following: . _ -
The filename may include an extension (in which case it is preserved exactly as is), or could be just a name without an extension.
r>   z._- r   Nr  )rE  r"  splitextjoinisalnumr   encode)rU  	max_bytesr6  extcharfilename_lens         r9   !strip_invalid_filename_charactersr    s       *ID77TNTT\\^^tv~DTNODzHx()L&4yA~ O 9DzHx01L & O Os   CCc                    SR                  U  Vs/ s H!  oR                  5       (       d  US;   d  M  UPM#     sn5      R                  SS5      R                  5       $ s  snf )zECleans up a Python parameter name to make the API info more readable.r>   z _ r   )r  r  r  rc  )original_namer  s     r9   sanitize_parameter_namesr    sH     	-R-$<<>>TT\-RS	c		Rs
   AAc                   [        U=(       d    [        R                  " 5       5      [        R                  " S5      -  nUR                  SSS9  [        U 5      u  pVUbJ  UcG  [        U5      R                  nUnSU;   a*  USUR                  S5       nXwR                  S5      S-   S  nUb  [        U5      nUc  [        R                  " SX4S9nO[        R                  " SUSU-   US	9nUR                  U5        UR                  5         U$ )
Nr-  Tr.  rY  r   r   F)r  prefixr;  )r  r  rd  r;  )r
   r1  r2  r3  r4  r5  r  r6  rw   r  NamedTemporaryFilerI  flush)	r[  r:  r;  r  r<  r   r]  rU  file_objs	            r9   decode_base64_to_filer    s    S1H//12W5F5Fr5JJIOOT4O0-h7OD	?''(?a(.."56F !4q!8!:;I26:..
 ..?	
 NN4NNOr8   c                   Ub  [         R                  " USS9  [        R                  " SSUSS9n[	        U [
        5      (       a  [        R                  " U 5      n [        R                  " X5        UR                  5         U$ )NTr@  Fz.jsonzw+)r  rd  r;  mode)
rE  rF  r1  r  r   r!   rC   rD   dumpr  )jsnr;  r  s      r9   dict_or_str_to_json_filer  ;  se    

C$'**W#DH #sjjoIIcNNOr8   c                z    [        U 5       n[        R                  " U5      sS S S 5        $ ! , (       d  f       g = fr}   )rG  rC   load)r:  rL  s     r9   file_to_jsonr  I  s     	iAyy| 
s   ,
:c                   [         R                  R                  US[        S9n [        R
                  " SU  S3SU0US9  g ! [        R                   a(  n[        S[        R                  U 5       S35      UeS nAff = f)	Ngradio_client)tokenlibrary_namelibrary_versionz"https://huggingface.co/api/spaces/z
/sleeptimeseconds)rC   r   z>Could not set sleep timeout on duplicated Space. Please visit z5 to set a timeout manually to reduce billing charges.)
huggingface_hubutilsbuild_hf_headers__version__r   r   HTTPStatusErrorrV   	SPACE_URLformat)space_idrK  timeout_in_secondsr   r   s        r9   set_space_timeoutr  Q  s    
 ##44$# 5 G



0
*E/0	

    #LYM]M]^fMgLh iC C
 	s   A A>#A99A>c                    [         R                  R                  " [         R                  R                  5       U /UQ70 UD6$ )z
Runs async functions in sync scopes. Can be used in any scope.

Example:
    if inspect.iscoroutinefunction(block_fn.fn):
        predictions = utils.synchronize_async(block_fn.fn, *processed_input)

Args:
    func:
    *args:
    **kwargs:
)fsspecasynsyncget_loop)funcargskwargss      r9   synchronize_asyncr  m  s2     ;;FKK002DJ4J6JJr8   c                      \ rS rSrSrg)APIInfoParseErrori}  r1   N)r2   r3   r4   r5   r7   r1   r8   r9   r  r  }  s    r8   r  c                   SU ;   a  gSU ;   a  gSU ;   a  U S   $ U R                  S5      (       a  gU R                  S5      (       a  gU R                  S5      (       a  gU R                  S5      (       a  gSU ;  a  0 $ [        SU  35      e)	Nconstenumr\  $refoneOfanyOfallOfzCannot parse type for )rE   r  )schemas    r9   get_typer    s    &	6	f~	F			G			G			G			v		"8 ABBr8   )a-  Dict(path: str | None (Path to a local file), url: str | None (Publicly available url or base64 encoded image), size: int | None (Size of image in bytes), orig_name: str | None (Original filename), mime_type: str | None (mime type of image), is_stream: bool (Can always be set to False), meta: Dict())a-  dict(path: str | None (Path to a local file), url: str | None (Publicly available url or base64 encoded image), size: int | None (Size of image in bytes), orig_name: str | None (Original filename), mime_type: str | None (mime type of image), is_stream: bool (Can always be set to False), meta: dict())z`Dict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None)zqDict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool)zDict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool, meta: Dict())zdict(path: str, url: str | None, size: int | None, orig_name: str | None, mime_type: str | None, is_stream: bool, meta: dict())r  c                b    [        X R                  S5      5      nUR                  [        S5      $ )N$defsfilepath)_json_schema_to_python_typerE   r  CURRENT_FILE_DATA_FORMAT)r  type_s     r9   json_schema_to_python_typer    s'    '

70CDE==1:>>r8   c           
       ^ U 0 :X  a  g[        U 5      nU0 :X  a  SU R                  S0 5      ;   a  ggUS:X  a$  [        TU S   R                  S5      S      T5      $ US:X  a  g	US
:X  a	  SU S
    S3$ US:X  a:  SSR	                  U S    Vs/ s H  nS[        U5      -   S-   PM     sn5      -   S-   $ US:X  a  gUS:X  a  gUS:X  a  gUS:X  a  gUS:X  a  U R                  S/ 5      nSU;   a5  SR	                  US    Vs/ s H  n[        UT5      PM     sn5      nSU S3$ SU ;   a5  SR	                  U S    Vs/ s H  n[        UT5      PM     sn5      nSU S3$ [        UT5      nSU S3$ US:X  a  S nU R                  S0 5      nUR                  5        V	Vs/ s H&  u  pU	S :w  d  M  U	 S![        UT5       U" U5       3PM(     n
n	nS"U ;   a  U
S#[        U S"   T5       3/-  n
SR	                  U
5      n
S$U
 S%3$ US&;   a0  S'R	                  X    Vs/ s H  n[        UT5      PM     sn5      nU$ US(:X  a%  SR	                  U4S) jX    5       5      nS*U S3nU$ [        S+U  35      es  snf s  snf s  snf s  snn	f s  snf ),z/Convert the json schema into a python type hintr   rC   descriptionz str | float | bool | list | dictr  ra  r  nullNoner  zLiteral[]r  z, 'integerr&   stringr!   booleanr+   numberr(   arrayitemsprefixItemsztuple[zlist[objectc                \    U R                  S5      (       a  SU R                  S5       S3$ S$ )Nr  z ()r>   r   )vs    r9   get_desc-_json_schema_to_python_type.<locals>.get_desc  s.    34553G3GRm,-Q/OROr8   
propertiesr  z: additionalPropertieszstr, zdict(r  )r  r  z | r  c              3  <   >#    U  H  n[        UT5      v   M     g 7fr}   )r  ).0r  defss     r9   	<genexpr>._json_schema_to_python_type.<locals>.<genexpr>  s     U}!4Q==}s   zAll[zCannot parse schema )r  rE   r  splitr  r!   r  r  )r  r  r  r  r  r  elementsr  propsndesr   r   s    `           r9   r  r    s   |VE{VZZr225	&*4v0D0DS0I"0M+NPTUU	&	'	&/*!,,	&v#O1C#a&L3$6#OPPSVV	
 
)		(		)		(		'	

7B'E!yy?D]?ST?S!,Q5?STH H:Q''f$yy?Em?TU?T!,Q5?TUH H:Q''25$?H8*A&&	(		P 

<, 
%G| Hqc/489(1+G% 	 
 "V+3F;Q4RTXYZ[ C iinse1~	$	$zzWA6q$?WX	'	yyUv}UUdV1~"6vh ?@@i $P U
 V
 Xs$   I.
>I39I8I=,I=Jc                >     [        U 5      $ ! [         a    0 s $ f = fr}   )_python_type_to_json_schemarF   )	type_hints    r9   python_type_to_json_schemar    s&    *955 	s   
 c                   U [        S5      L a  SS0$ U [        L a  SS0$ U [        L a  SS0$ U [        L a  SS0$ U [        L a  SS0$ [        U 5      nU[        L a.  [        U 5      n[        U5      S:X  a  S	US
   0$ S[        U5      0$ U[        L d  [        U5      S:X  a  [        U 5      n[        U5      S:X  aI  [        S5      U;   a:  [        S U 5       5      n[        U5      nSU;   a  US   S/US'   U$ SS0U/US'   U$ SU Vs/ s H  n[        U5      PM     sn0$ U[        L a  [        U 5      S
   nS[        U5      S.$ U[        L a>  [        U 5      nSU Vs/ s H  n[        U5      PM     sn[        U5      [        U5      S.$ U[        L a1  [        U 5      u  pU[        La  [        S5      eS[        U	5      S.nU$ [         R"                  " U 5      (       a  [%        U S5      (       a  0 n
/ n['        U 5      nUR)                  5        H  u  p[        U5      X'   [%        U S5      (       a&  U R*                  (       a  UR-                  U5        MG  MI  [%        U S5      (       a   U R.                  U   R0                  (       a  Mz  UR-                  U5        M     SU
S.nU(       a  XS'   U$ U [2        L a  0 $ gs  snf s  snf )z,Convert a Python type hint to a JSON schema.Nr\  r  r  r  r  r  r   r  r   r  |   c              3  D   #    U  H  o[        S 5      Ld  M  Uv   M     g 7fr}   )r\  )r  ts     r9   r  ._python_type_to_json_schema.<locals>.<genexpr>  s     FA4:2Eaas    	 r  r  r  )r\  r  )r\  r  minItemsmaxItemsz0JSON Schema only supports string keys in objectsr  )r\  r  r6   	__total____dataclass_fields__)r\  r  required)r\  r!   r&   r(   r+   r   r   r   r   r   r   nextr  tupledictr   inspectisclasshasattrr   r  r  r   r  defaultr   )r  originliteral_valuestypes
other_typer  r  	item_typekey_type
value_typer  r  hints
field_name
field_types                  r9   r  r    s   DJC!!C	""E!!D	""	"F!),~!#^A.//^,--#f+,#u:?tDzU2FFFJ0<F"(.&!9v M %+F#3V"<wM%H%Q5a8%HII~Y'*	*Ei*PQQ#DIJEq7:EJE
E
	
 	
 ~'	23OPP$?
$K
 y!!gi9J&K&K
y)&+kkm"J%@%LJ"y+..&&OOJ/ ' I'=>> 55jAIII
+ '4 #*=!):C	 [ I Ks   	K  Kc                6   U" U 5      (       a  U" U 5      $ [        U [        5      (       a+  0 nU R                  5        H  u  pE[        XQU5      X4'   M     U$ [        U [        [
        45      (       a(  / nU  H  nUR                  [        XaU5      5        M      U$ U $ )zc
Traverse a JSON object and apply a function to each element that satisfies the is_root condition.
)r   r  r  traverser   r  r   json_objr  is_rootnew_objkeyr  items          r9   r  r  G  s     xH~	Hd	#	#"..*JC#E9GL +	HtUm	,	,DNN8D89 r8   c                z  #    U" U 5      (       a  U" U 5      I Sh  vN $ [        U [        5      (       a3  0 nU R                  5        H  u  pE[        XQU5      I Sh  vN X4'   M     U$ [        U [        [
        45      (       a0  / nU  H&  nUR                  [        XaU5      I Sh  vN 5        M(     U$ U $  N N[ N7f)zi
Traverse a JSON object and apply a async function to each element that satisfies the is_root condition.
N)r   r  r  async_traverser   r  r   r  s          r9   r  r  [  s      x(^##	Hd	#	#"..*JC!/W!EEGL +	HtUm	,	,DNNG!DDE  $ F
 Es4   B;B5?B;B7AB;$B9
%B;7B;9B;c                j   ^ [        X R                  S5      5      m[        U4S j[         5       5      $ )Nr  c              3  ,   >#    U  H	  oT;   v   M     g 7fr}   r1   )r  file_data_formatinfos     r9   r   value_is_file.<locals>.<genexpr>u  s     R@Q,<4'@Qs   )r  rE   anyFILE_DATA_FORMATS)api_infor  s    @r9   value_is_filer  s  s(    &xg1FGDR@QRRRr8   c                    [        U [        [        45      =(       a9    [        U 5      R                  5       =(       a    [        U 5      R	                  5       $ )zh
Check if the given value is a valid str or Path filepath on the local filesystem, e.g. "path/to/file".
)r   r!   r
   existsis_file)ss    r9   is_filepathr!  x  s5     a#t%P$q'..*:PtAw?PPr8   c                n    [        U [        5      =(       a    SU ;   =(       a    [        U S   [        5      $ )z
Check if the given value is a valid FileData object dictionary in versions of Gradio<=4.20, e.g.
{
    "path": "path/to/file",
}
r"  )r   r  r!   r   s    r9   is_file_objr$    s*     aM6Q;M:ai3MMr8   c                    [        U [        5      =(       aJ    SU ;   =(       a>    [        U S   [        5      =(       a$    SU ;   =(       a    U S   R                  SS5      S:H  $ )z
Check if the given value is a valid FileData object dictionary in newer versions of Gradio
where the file objects include a specific "meta" key, e.g.
{
    "path": "path/to/file",
    "meta": {"_type: "gradio.FileData"}
}
r"  meta_typer>   gradio.FileData)r   r  r!   rE   r#  s    r9   is_file_obj_with_metar)    s_     	1d 	<aK	<qy#&	< aK	< fIMM'2&*;;r8   c                d    [        U 5      =(       a    SU ;   =(       a    [        U S   [        5      $ )a  
Check if the given value is a valid FileData object dictionary in newer versions of Gradio
where the file objects include a specific "meta" key, and ALSO include a "url" key, e.g.
{
    "path": "path/to/file",
    "url": "/file=path/to/file",
    "meta": {"_type: "gradio.FileData"}
}
ru  )r)  r   r!   r#  s    r9   is_file_obj_with_urlr+    s(     !#P
Pz!E(C7PPr8   >   boxrowtabformtabsgroupr   columndatasetsidebartabitem	accordioninterpretationc                   [        U 5      nUSS0S.n[        U5      (       a  0 UEUR                  S5      S   US.E$ [        U5      R	                  5       (       a  0 UES[        U5      R
                  0E$ [        SU S	35      e)
Nr'  r(  )r"  r&  ra  r  )	orig_nameru  r9  zFile z; does not exist on local filesystem and is not a valid URL.)r!   r   r  r
   r  r6  r   )filepath_or_urlr   r   s      r9   handle_filer;    s    OA):;<D@$@QWWS\"%5a@@	a		2$2T!W\\22A3QR
 	
r8   c                D    [         R                  " S5        [        U 5      $ )NzXfile() is deprecated and will be removed in a future version. Use handle_file() instead.)r   r   r;  )r:  s    r9   r`  r`    s    MMb ''r8   c                    " S S[         5      n[        U5      nU c  U(       a  [        S5      eU$ [        U5      nXCR                  /[        U 5      U-
  -  -   n0 n/ n[        U 5       Hx  u  pSU	;   a  XU	S   '   UR                  U	S   5        OUR                  S5        U	R                  SS5      (       d  MQ  XH   UR                  :X  d  Me  U	R                  S5      XH'   Mz     UR                  5        H6  u  pX;   a  Xj   U:  a  [        S	U
 S
35      eXXj   '   M)  [        S	U
 S35      e   UR                  U;   a)  [        SXtR                  UR                  5          35      eU$ )Nc                      \ rS rSrSrSrg)!construct_args.<locals>._Keywordsi  NO_VALUEr1   N)r2   r3   r4   r5   r@  r7   r1   r8   r9   	_Keywordsr?    s    r8   rA  zzThis endpoint does not support key-word arguments Please click on 'view API' in the footer of the Gradio app to see usage.parameter_namezargument {index}parameter_has_defaultFparameter_defaultzParameter `zs` is already set as a positional argument. Please click on 'view API' in the footer of the Gradio app to see usage.zl` is not a valid key-word argument. Please click on 'view API' in the footer of the Gradio app to see usage.z)No value provided for required argument: )r	   r   r   r   r@  r  r   rE   r  	TypeErrorrw   )parameters_infor  r  rA  _argsnum_argskwarg_arg_mappingkwarg_namesrw   
param_infor  r  s               r9   construct_argsrL    s   D  JE M  4yH''(C,@8,KLLEK&7z)>Cj)9:;z*:;<12NN2E::	 2 22%>>*=>EL 8 lln
# %0!#  'Z  [  16',-cU  #O  P  % U"7KKPYPbPbDc8d7ef
 	
 Lr8   )r   r!   )r   r+   )r   r!   r   r+   r}   )
r   r   r   r!   r   r!   r   zCommunicator | Noner   r#   )r   httpx.Clientr   r  r   r  r   r   r   r!   r   r!   r   dict[str, str]r   dict[str, str] | Noner   r+   r   %concurrent.futures.ThreadPoolExecutorr   dict[str, Any] | None)r   r   r   rN  r   rO  r   dict[str, list[Message | None]]r%   r!   r   z'Literal['sse_v1', 'sse_v2', 'sse_v2.1']r   r+   r   rP  r   rQ  )r   r   r   rN  r   rO  r   r+   )r   rM  r   r  r   r  r   r   r   r!   r   r!   r   rN  r   rO  r   r#   )
r   r   r   rR  r%   r!   r   z1Literal['sse_v1', 'sse_v2', 'sse_v2.1', 'sse_v3']r   r#   )r:  r!   r;  r   r   r!   )NN)rJ  r!   rK  r   r;  r   r   r!   )rU  r!   r   r   )r[  r!   r   r   )r:  r!   re  z	list[str]r   r+   )rL  
str | Path)ru  r!   )r"  rS  )r[  r!   r   ztuple[bytes, str | None])   )rU  r!   r  r&   r   r!   )r  r!   r   r!   )NNN)r[  r!   r:  r   r;  str | Path | Noner  r   )r  zstr | dict | listr;  rU  )r:  rS  r   zdict | list)Ni,  )r  r!   rK  r   r  r&   )r  r   r   r   )r  r  )r  r   r   r!   )r  r   r   r  )r  r   r  r   r  Callable[..., bool]r   r   )r  r   r  z'Callable[..., Coroutine[Any, Any, Any]]r  rV  r   r   )r  r  r   r+   )r:  rS  )rF  zlist[ParameterInfo] | Noner  r  r  r  r   r   )
__future__r   r   rm  concurrent.futuresr   r(  r  rC   rS  rE  r?   r3  r7  r1  r   r   collections.abcr   r   dataclassesr   r   r   r  r	   pathlibr
   	threadingr   typingr   r   r   r   r   r   r   r   r   fsspec.asynr  r   r  r   websockets.legacy.protocolr   gradio_client.data_classesr   API_URL
SSE_URL_V0SSE_DATA_URL_V0SSE_URLSSE_DATA_URLWS_URL
UPLOAD_URL	LOGIN_URL
CONFIG_URLAPI_INFO_URLRAW_API_INFO_URLSPACE_FETCHER_URL	RESET_URLr  HEARTBEAT_URL
CANCEL_URLSTATE_COMPONENTNO_APP_FILECONFIG_ERRORBUILD_ERRORRUNTIME_ERRORPAUSEDINVALID_RUNTIMEr   rI   r  rF   rK   rP   rS   rV   r!   rY   ri   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r>  rN  rW  r^  ri  rr  rv  rx  r~  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r!  r$  r)  r+  SKIP_COMPONENTSr;  r`  rL  r1   r8   r9   <module>rx     s<   "        	       / (    
 
 
    & >8


	
	
() F 	!	*

iu 
	 "#	9 		 		i 		I 	,C ,"1T 1h 
 
 
* 
' 
' 
'	 5 5 5 	" 	" 	""<F #'	<&<
< <  	<
 <~$$
$ $ 	$
 $ $ $ #$ $ 4$ $N # !@	
  6  4 @... #. 	.0CC
C C 	C
 C C C #C CLDD ?D D @	D
 DN'^ CG$$'$5?$$*


'-( !!	    
  	 F  ! 8K 	
 	C*  -R0 ?
FARM`(
1 ! 		0S
QN$
Q"

(0/07<0FJ0	0r8   