ó
    ‚¤j‡P  ã                  óÒ  • % S r 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
Jr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKJr  SS	KJr  SS
KJr  S6S jrS6S jrS7S jrS8S jrS9S jr  " S S5      r!\	RD                  " 5       r#S\$S'   Sr%\" 5       r&S\$S'   \RN                  " 5       r(S:S jr) " S S\*5      r+\" SSS9r,S\$S'   \" SSS9r-S \$S!'    " S" S#5      r. " S$ S%5      r/S;S& jr0S<S' jr1        S=S( jr2S>S) jr3 S?SS*.         S@S+ jjjr4            SAS, jr5\" 5        S?SS-SSS..         SBS/ jjj5       r6\" S0S1S2S35       " S4 S55      5       r7g)Cz'Caching utilities for Gradio functions.é    )ÚannotationsN)ÚOrderedDict)ÚCallable)Ú
ContextVar)ÚAny)Údocument)ÚImage)Ú	BaseModelc                óž   • [         R                  " 5       nUR                  [        U 5      R	                  S5      5        UR                  5       $ )Nzutf-8)ÚhashlibÚsha256ÚupdateÚ
_hash_reprÚencodeÚ	hexdigest)ÚobjÚhashers     ÚœC:\Users\johnn\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.13_qbz5n2kfra8p0\LocalCache\local-packages\Python313\site-packages\gradio/caching.pyÚ
cache_hashr      s8   € Ü�^Š^Ó€FØ
‡M�M”*˜S“/×(Ñ(¨Ó1Ô2Ø×ÑÓÐó    c           	     ó°	  • U c  g[        U [        [        [        [        45      (       a  [        U 5      $ [        U [        5      (       a$  [        R                  " U 5      R                  5       $ [        U [        [        45      (       a9  SR                  S U  5       5      n[        U [        5      (       a  SOSnU SU S3$ [        U [        5      (       a>  [        S U R                  5        5       S	 S
9nSR                  S U 5       5      nSU S3$ [        U [         5      (       a'  [        S U  5       5      nSSR                  U5       S3$ [        U ["        R$                  5      (       aP  SU R&                   SU R(                   S[        R                  " U R+                  5       5      R                  5        S3$ [        U [,        R,                  5      (       aP  SU R.                   SU R0                   S[        R                  " U R+                  5       5      R                  5        S3$ [        U [2        R4                  5      (       aí  [7        [        U R8                  5      5      n[        R                  " [2        R:                  R=                  U SS9R?                  5       R+                  5       5      R                  5       n[        R                  " [2        R:                  R=                  U R@                  5      R?                  5       R+                  5       5      R                  5       nSU SU SU S3$ [        U [B        5      (       a  [7        U RE                  5       5      $ [        U [2        RF                  5      (       aä  [7        U RH                  5      n[        R                  " [2        R:                  R=                  U SS9R?                  5       R+                  5       5      R                  5       n[        R                  " [2        R:                  R=                  U R@                  5      R?                  5       R+                  5       5      R                  5       nSU SU SU S3$  [        [K        U 5      5      $ ! [L         a     Of = f[O        U S5      (       a  [7        [Q        U 5      5      $ [M        S[S        U 5      RT                   S35      e)NÚNoneÚ,c              3  ó8   #   • U  H  n[        U5      v •  M     g 7f©N©r   ©Ú.0Úxs     r   Ú	<genexpr>Ú_hash_repr.<locals>.<genexpr>&   s   é € Ð4²¨1œ AŸ˜²ùó   ‚ÚLÚTÚ[Ú]c              3  óR   #   • U  H  u  p[        U5      [        U5      4v •  M     g 7fr   )Úreprr   ©r   ÚkÚvs      r   r    r!   +   s   é € Ð>²+©$¨!Œd�1‹g”z !“}Õ%²+ùs   ‚%'c                ó   • U S   $ ©Nr   © )r   s    r   Ú<lambda>Ú_hash_repr.<locals>.<lambda>,   s   € ˜!˜Aš$r   )Úkeyc              3  ó4   #   • U  H  u  pU S U 3v •  M     g7f)Ú:Nr.   r)   s      r   r    r!   .   s   é € Ð6²©¨˜A˜3˜a ˜s�²ùs   ‚zD{Ú}c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   r   r   s     r   r    r!   1   s   é € Ð2ªc¨”z !—}�}ªcùr"   zS{znp(Ú)zPIL(F)ÚindexzDF(zSeries(Ú__dict__z%gr.cache: cannot hash object of type zA. Preprocess your inputs into hashable types before passing them.)+Ú
isinstanceÚboolÚintÚfloatÚstrr(   Úbytesr   r   r   ÚlistÚtupleÚjoinÚdictÚsortedÚitemsÚsetÚnpÚndarrayÚshapeÚdtypeÚtobytesr	   ÚmodeÚsizeÚpdÚ	DataFramer   ÚcolumnsÚutilÚhash_pandas_objectÚto_numpyr7   r
   Ú
model_dumpÚSeriesÚnameÚhashÚ	TypeErrorÚhasattrÚvarsÚtypeÚ__name__)	r   ÚinnerÚtagÚpairsrD   Úcol_hashÚval_hashÚidx_hashÚ	name_hashs	            r   r   r      sÊ  € Ø
�{ØÜ�#œœc¤5¬#Ð.×/Ñ/Ü�C‹yÐÜ�#”u×ÑÜ�~Š~˜cÓ"×,Ñ,Ó.Ð.Ü�#œœe�}×%Ñ%Ø—‘Ñ4±Ó4Ó4ˆÜ ¤T×*Ñ*‰c°ˆØ��a˜�w˜aÐ Ð Ü�#”t×ÑÜÙ>°#·)±)´+Ó>Ùñ
ˆð —‘Ñ6±Ó6Ó6ˆØ�U�G˜2ˆÐÜ�#”s×ÑÜÑ2©cÓ2Ó2ˆØ�S—X‘X˜e“_Ð% RÐ(Ð(Ü�#”r—z‘z×"Ñ"à�#—)‘)�˜A˜cŸi™i˜[¨¬'¯.ª.¸¿¹»Ó*G×*QÑ*QÓ*SÐ)TÐTUÐVð	
ô �#”u—{‘{×#Ñ#Ø�c—h‘h�Z˜q §¡ 
¨!¬G¯NªN¸3¿;¹;»=Ó,I×,SÑ,SÓ,UÐ+VÐVWÐXÐXÜ�#”r—|‘|×$Ñ$Üœd 3§;¡;Ó/Ó0ˆÜ—>’>Ü�G‰G×&Ñ& s°%Ð&Ð8×AÑAÓC×KÑKÓMó
ç
‰)‹+ð 	ô —>’>Ü�G‰G×&Ñ& s§y¡yÓ1×:Ñ:Ó<×DÑDÓFó
ç
‰)‹+ð 	ð �X�J˜a ˜z¨¨8¨*°AÐ6Ð6Ü�#”y×!Ñ!Ü˜#Ÿ.™.Ó*Ó+Ð+Ü�#”r—y‘y×!Ñ!Ü˜sŸx™xÓ(ˆ	Ü—>’>Ü�G‰G×&Ñ& s°%Ð&Ð8×AÑAÓC×KÑKÓMó
ç
‰)‹+ð 	ô —>’>Ü�G‰G×&Ñ& s§y¡yÓ1×:Ñ:Ó<×DÑDÓFó
ç
‰)‹+ð 	ð ˜˜ 1 X J¨a°¨z¸Ð;Ð;ðÜ”D˜“I‹ÐøÜó Ùðúäˆs�J×ÑÜœ$˜s›)Ó$Ð$Ü
Ø
/´°S³	×0BÑ0BÐ/Cð DJð 	Kóð s   Ñ-R Ò
RÒRc                ó®   ^ ^• [         R                  " T 5      (       a  / mU U4S jnUT4$ [         R                  " T 5      (       a  / mU U4S jnUT4$ T S4$ )z�Wrap a generator to capture all yields and return the final value.

Returns (wrapped_fn, generated_values) or (fn, None) for non-generators.
c                 ól   >• S nTR                  5         T" U 0 UD6 H  nTR                  U5        M     U$ r   ©ÚclearÚappend©ÚargsÚkwargsr   ÚfnÚgenerated_valuess      €€r   ÚwrapperÚ"resolve_generator.<locals>.wrappera   s;   ø€ ØˆAØ×"Ñ"Ô$Ù˜Ð( Ô(�Ø ×'Ñ'¨Ö*ñ )àˆHr   c               Ÿ  ó‚   >#   • S nTR                  5         T" U 0 UD6  S h  v•N nTR                  U5        M   N
 U$ 7fr   re   rh   s      €€r   rm   rn   l   sF   øé € ØˆAØ×"Ñ"Ô$Ù˜tÐ. vÒ.÷ +�aØ ×'Ñ'¨Ö*ñ+Ð.àˆHùs   ƒ?ž<¢:£<¦?º<¼?N)ÚinspectÚisgeneratorfunctionÚisasyncgenfunction)rk   rm   rl   s   ` @r   Úresolve_generatorrs   Y   sb   ù€ ô
 ×"Ò" 2×&Ñ&Ø!#Ðö	ð Ð(Ð(Ð(Ü	×	#Ò	# B×	'Ñ	'ØÐö	ð Ð(Ð(Ð(Øˆtˆ8€Or   c                ó  • [        U [        R                  5      (       a  U R                  $ [        U [        R                  5      (       a9  U R
                  S   U R
                  S   -  [        U R                  5       5      -  $ [        U [        R                  5      (       a  U R                  SS9R                  5       $ [        U [        R                  5      (       a  U R                  SS9$ [        U [        [        45      (       a  [        U 5      $ [        U [        5      (       a  [         R"                  " U 5      $  SS Kn[        XR&                  5      (       a!  U R)                  5       U R+                  5       -  $  [        U [.        5      (       a   [        S U R1                  5        5       5      $ [        U [2        [4        45      (       a  [        S U  5       5      $ [         R"                  " U 5      $ ! [,         a     N„f = f)Nr   é   T)Údeepc              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   ©Ú_estimate_size©r   r+   s     r   r    Ú!_estimate_size.<locals>.<genexpr>Œ   s   é € Ð;ªl¨”> !×$Ð$ªlùr"   c              3  ó8   #   • U  H  n[        U5      v •  M     g 7fr   rx   rz   s     r   r    r{   Ž   s   é € Ð2ªc¨”> !×$Ð$ªcùr"   )r9   rF   rG   Únbytesr	   rL   ÚlenÚgetbandsrM   rN   Úmemory_usageÚsumrT   r>   Ú	bytearrayr=   ÚsysÚ	getsizeofÚtorchÚTensorÚnelementÚelement_sizeÚImportErrorrB   Úvaluesr?   r@   )r   r…   s     r   ry   ry   w   s„  € Ü�#”r—z‘z×"Ñ"Ø�z‰zÐÜ�#”u—{‘{×#Ñ#Ø�x‰x˜‰{˜SŸX™X a™[Ñ(¬3¨s¯|©|«~Ó+>Ñ>Ð>Ü�#”r—|‘|×$Ñ$Ø×Ñ TÐÐ*×.Ñ.Ó0Ð0Ü�#”r—y‘y×!Ñ!Ø×Ñ TÐÐ*Ð*Ü�#œœyÐ)×*Ñ*Ü�3‹xˆÜ�#”s×ÑÜ�}Š}˜SÓ!Ð!ðÛä�cŸ<™<×(Ñ(Ø—<‘<“> C×$4Ñ$4Ó$6Ñ6Ð6ð )ô �#”t×ÑÜÑ;¨c¯j©j¬lÓ;Ó;Ð;Ü�#œœe�}×%Ñ%ÜÑ2©cÓ2Ó2Ð2Ü�=Š=˜ÓÐøô ó Ùðús   Å >G8 Ç8
HÈHc                 óˆ   •  SSK Jn   U R                  R                  S 5      nUb  UR                  $  g ! [
         a     g f = f)Nr   )ÚLocalContext)Úgradio.contextrŒ   ÚrequestÚgetÚsession_hashÚ	Exception)rŒ   Úreqs     r   Ú_get_session_hashr“   ’   sR   € ðÝ/à×"Ñ"×&Ñ& tÓ,ˆØ‰?Ø×#Ñ#Ð#ð ð øô ó ØØðús   ‚/4 ´
AÁ Ac                  ó”   • \ rS rS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S
 jjrSS jrSS jrSrg)Ú_CacheStoreéž   Nc                óä   • Xl         X l        X0l        [        5       U l        0 U l        SU l        [        R                  " 5       U l	        U R                  (       a  [        R                  U 5        g g r-   )Ú	_max_sizeÚ_max_memoryÚ_per_sessionr   Ú_exactÚ_entry_sizesÚ_total_memoryÚ	threadingÚLockÚ_lockÚ_per_session_storesÚadd©ÚselfÚmax_sizeÚ
max_memoryÚper_sessions       r   Ú__init__Ú_CacheStore.__init__Ÿ   sX   € ð "ŒØ%ÔØ'ÔÜ.9«mˆŒØ,.ˆÔØ"#ˆÔÜ—^’^Ó%ˆŒ
Ø××Ü×#Ñ# DÕ)ð r   c                óD   • U=(       d    [        5       =(       d    SnU S3$ )NÚ_globalr3   )r“   )r¤   r�   Úsessions      r   Ú_session_prefixÚ_CacheStore._session_prefix¯   s!   € Ø×BÔ"3Ó"5×B¸ˆØ�˜!ˆ}Ðr   c                óP   • U R                   (       d  U$ U R                  5        U 3$ r   )rš   r­   )r¤   Úkey_hashs     r   Ú_session_keyÚ_CacheStore._session_key³   s)   € Ø× × ØˆOØ×&Ñ&Ó(Ð)¨(¨Ð4Ð4r   c                óø   • U R                  U5      nU R                     X R                  ;   a3  U R                  R                  U5        U R                  U   sS S S 5        $  S S S 5        g ! , (       d  f       g = fr   )r±   r    r›   Úmove_to_end)r¤   r°   Úfull_keys      r   r�   Ú_CacheStore.get¸   sW   € Ø×$Ñ$ XÓ.ˆØ�Z‹ZØŸ;™;Ó&Ø—‘×'Ñ'¨Ô1Ø—{‘{ 8Ñ,÷ ‰Zð ÷	 �ZŽZús   ž9A+Á!A+Á+
A9c                óF  • U R                  U5      nU R                  (       a  [        U5      OSnU R                     X0R                  ;   a|  U =R
                  U R                  R                  US5      -  sl        U R                  R                  U5        X R                  U'   X@R                  U'   U =R
                  U-  sl        O1X R                  U'   X@R                  U'   U =R
                  U-  sl        U R                  5         S S S 5        g ! , (       d  f       g = fr-   )
r±   r™   ry   r    r›   r�   rœ   r�   r´   Ú_evict)r¤   r°   Úentryrµ   Ú
entry_sizes        r   ÚputÚ_CacheStore.putÀ   sÖ   € Ø×$Ñ$ XÓ.ˆØ.2×.>×.>”^ EÔ*ÀAˆ
Ø�Z‹ZØŸ;™;Ó&Ø×"Ò" d×&7Ñ&7×&;Ñ&;¸HÀaÓ&HÑHÕ"Ø—‘×'Ñ'¨Ô1Ø(-—‘˜HÑ%Ø.8×!Ñ! (Ñ+Ø×"Ò" jÑ0Ö"à(-—‘˜HÑ%Ø.8×!Ñ! (Ñ+Ø×"Ò" jÑ0Õ"Ø�K‰KŒM÷ �ZŽZús   ¼CDÄ
D c                ó
  • U R                   (       aò  U R                  S:„  =(       a"    [        U R                   5      U R                  :„  nU R                  S L=(       a8    U R                  U R                  :„  =(       a    [        U R                   5      S:„  nU(       d  U(       d  g U R                   R                  SS9u  p4U =R                  U R                  R                  US5      -  sl        U R                   (       a  Mñ  g g )Nr   ru   F©Úlast)r›   r˜   r~   r™   r�   Úpopitemrœ   Úpop)r¤   Ú
over_countÚover_memoryr1   Ú_s        r   r¸   Ú_CacheStore._evictÐ   sÂ   € Ø�k�kØŸ™¨!Ñ+×Q´°D·K±KÓ0@À4Ç>Á>Ñ0QˆJà× Ñ ¨Ð,÷ )Ø×&Ñ&¨×)9Ñ)9Ñ9÷)ä˜Ÿ™Ó$ qÑ(ð ö
 ¦kØØ—[‘[×(Ñ(¨eÐ(Ð4‰FˆCØ×Ò $×"3Ñ"3×"7Ñ"7¸¸QÓ"?Ñ?Õð �k�k‹kr   c                óÆ   • U R                      U R                  R                  5         U R                  R                  5         SU l        S S S 5        g ! , (       d  f       g = fr-   )r    r›   rf   rœ   r�   ©r¤   s    r   rf   Ú_CacheStore.clearÝ   s=   € Ø�Z‹ZØ�K‰K×ÑÔØ×Ñ×#Ñ#Ô%Ø!"ˆDÔ÷ �ZŽZús   �<AÁ
A c                ó®  • U R                   (       d  g U R                  U5      nU R                     U R                   Vs/ s H  o3R	                  U5      (       d  M  UPM     nnU HN  nU R                  R                  US 5        U =R                  U R                  R                  US5      -  sl        MP     S S S 5        g s  snf ! , (       d  f       g = fr-   )rš   r­   r    r›   Ú
startswithrÁ   r�   rœ   )r¤   r�   Úsession_prefixr1   Úkeys_to_deletes        r   Úclear_sessionÚ_CacheStore.clear_sessionã   s¤   € Ø× × ØØ×-Ñ-¨lÓ;ˆØ�Z‹Zà#Ÿ{š{óÚ*˜¯n©n¸^×.L—™{ð ð ó &�Ø—‘—‘  TÔ*Ø×"Ò" d×&7Ñ&7×&;Ñ&;¸CÀÓ&CÑC×"ñ &÷	 ˆZùò÷ �Zús#   °C¿CÁCÁ"ACÃCÃ
Cc                óØ  • U R                      U R                  (       dB  U R                  R                  5        Vs/ s H  oR	                  S5      PM     snsS S S 5        $ U R                  5       nU R                  R                  5        VVs/ s H.  u  p1UR                  U5      (       d  M  UR	                  S5      PM0     snnsS S S 5        $ s  snf s  snnf ! , (       d  f       g = f)NÚ_key)r    rš   r›   rŠ   r�   r­   rD   rÊ   )r¤   r¹   rË   r1   s       r   ÚkeysÚ_CacheStore.keysï   s«   € Ø�Z‹ZØ×$×$Ø7;·{±{×7IÑ7IÔ7KÓLÒ7K¨eŸ	™	 &Ö)Ñ7KÑL÷ ‰Zð "×1Ñ1Ó3ˆNð #'§+¡+×"3Ñ"3Ô"5ôâ"5‘J�CØ—>‘> .×1ó "�—	‘	˜&Ö!Ù"5ò÷ ‰ZùâLùó÷ �Zús4   �.C»CÁCÁ!-CÂCÂ.CÃCÃCÃ
C)c                óz   • U R                      [        U R                  5      sS S S 5        $ ! , (       d  f       g = fr   )r    r~   r›   rÇ   s    r   Ú__len__Ú_CacheStore.__len__û   s   € Ø�Z‹ZÜ�t—{‘{Ó#÷ �Z�Zús   �,¬
:)rœ   r›   r    r™   r˜   rš   r�   )é€   NF)r¥   r;   r¦   z
int | Noner§   r:   r   )r�   ú
str | NoneÚreturnr=   )r°   r=   rØ   r=   )r°   r=   rØ   údict | None)r°   r=   r¹   r   rØ   r   ©rØ   r   ©r�   r×   rØ   r   ©rØ   z	list[Any]©rØ   r;   )r[   Ú
__module__Ú__qualname__Ú__firstlineno__r¨   r­   r±   r�   r»   r¸   rf   rÍ   rÑ   rÔ   Ú__static_attributes__r.   r   r   r•   r•   ž   s]   † ð Ø!%Ø!ð	*àð*ð ð*ð õ	*ö ô5ô
ôô @ô#ö
Dô
÷$r   r•   zweakref.WeakSet[_CacheStore]r¡   i   z&OrderedDict[tuple[Any, ...], Callable]Ú_cache_wrappersc                óp   • U R                   " U0 UD6nUR                  5         [        UR                  5      $ r   )ÚbindÚapply_defaultsrB   Ú	arguments)Ú	signatureri   rj   Úbounds       r   Ú_normalize_kwargsré     s0   € Ø�NŠN˜DÐ+ FÑ+€EØ	×ÑÔÜ�—‘Ó Ð r   c                  ó   • \ rS rSrSrg)ÚCacheMissErrori  r.   N)r[   rÞ   rß   rà   rá   r.   r   r   rë   rë     s   † Úr   rë   Úgradio_probe_cache_activeF)ÚdefaultzContextVar[bool]Ú_probe_mode_activeÚgradio_manual_cache_usedz"ContextVar[dict[str, bool] | None]Ú_manual_cache_usedc                  ó$   • \ rS rSrSrS rS rSrg)Ú
ProbeCachei   z‡Context manager for probe mode. Wrappers raise CacheMiss instead of
running the function on a miss. Used by the queue for cache bypass.c                ó:   • [         R                  S5      U l        U $ )NT)rî   rE   Ú_tokenrÇ   s    r   Ú	__enter__ÚProbeCache.__enter__$  s   € Ü(×,Ñ,¨TÓ2ˆŒØˆr   c                óB   • [         R                  U R                  5        g©NF)rî   Úresetrô   ©r¤   Úexcs     r   Ú__exit__ÚProbeCache.__exit__(  ó   € Ü× Ñ  §¡Ô-Ør   )rô   N©r[   rÞ   rß   rà   Ú__doc__rõ   rü   rá   r.   r   r   rò   rò      s   † ñKòõr   rò   c                  ó$   • \ rS rSrSrS rS rSrg)ÚTrackManualCacheUsagei-  zLContext manager for tracking whether gr.Cache.get() had a hit during a call.c                ó`   • SS0U l         [        R                  U R                   5      U l        U $ ©NÚusedF)Ú_holderrð   rE   rô   rÇ   s    r   rõ   ÚTrackManualCacheUsage.__enter__0  s(   € Ø �ˆŒÜ(×,Ñ,¨T¯\©\Ó:ˆŒØˆr   c                óB   • [         R                  U R                  5        grø   )rð   rù   rô   rú   s     r   rü   ÚTrackManualCacheUsage.__exit__5  rþ   r   )r  rô   Nrÿ   r.   r   r   r  r  -  s   † ÙVòõ
r   r  c                 ó>   • [         R                  5       n U b  SU S'   g g )NTr  ©rð   r�   ©Úholders    r   Úmark_manual_cache_hitr  :  s$   € Ü×#Ñ#Ó%€FØÑØˆˆvŠð r   c                 ó>   • [         R                  5       n U b  U S   $ S$ r  r  r  s    r   Úused_manual_cacher  @  s$   € Ü×#Ñ#Ó%€FØ#Ñ/ˆ6�&‰>Ð:°UÐ:r   c                ó0   • SSK Jn  [        U U" U5      US9$ )Nr   ©Ú_parse_file_size©r¥   r¦   r§   )Úgradio.utilsr  r•   )r¥   r¦   r§   r  s       r   Ú_make_storer  E  s"   € õ
 .äØÙ# JÓ/Øñð r   c                óR   • [        [        5       H  nUR                  U 5        M     g r   )r?   r¡   rÍ   )r�   Ústores     r   Úclear_session_cachesr  S  s    € ÜÔ)Ö*ˆØ×Ñ˜LÖ)ò +r   ©Útrack_cache_hitsc               ó2  ^ ^^^^^	^
^• [         R                  " T 5      mSU4S jjmS m
U4S jm	[         R                  " T 5      (       a&  [        R                  " T 5      UU	U
U UU4S j5       nU$ [         R
                  " T 5      (       a&  [        R                  " T 5      UU	U
U UU4S j5       nU$ [         R                  " T 5      (       a&  [        R                  " T 5      UU	U
U UU4S j5       nU$ [        R                  " T 5      UU	U
U UU4S j5       nU$ )	Nc                óB   >• Tb  [        T" U 5      5      $ [        U 5      $ r   )r   )Ú
normalizedr1   s    €r   Ú_compute_hashÚ$_make_wrapper.<locals>._compute_hasha  s"   ø€ Ø‰?Ü™c *›oÓ.Ð.Ü˜*Ó%Ð%r   c                 óJ   • [         R                  5       (       a
  [        5       eg r   )rî   r�   rë   r.   r   r   Ú_on_missÚ_make_wrapper.<locals>._on_missf  s   € Ü×!Ñ!×#Ñ#Ü Ó"Ð"ð $r   c                 ó^   >• T (       a%  [         R                  5       (       d  [        5         g g g r   )rî   r�   r  r  s   €r   Ú_on_hitÚ_make_wrapper.<locals>._on_hitj  s#   ø€ ÞÔ$6×$:Ñ$:×$<Ñ$<Ü!Õ#ð %=Ðr   c               ?  ó<  >#   • [        TX5      nT" U5      nTR                  U5      nUb  US    H  nT" 5         Uv •  M     T" 5         g T	" 5         / nT
" S0 UD6 H,  nUR                  [        R                  " U5      5        Uv •  M.     TR                  X6S9  g 7f©NÚyields)r)  r.   ©ré   r�   rg   ÚcopyÚdeepcopyr»   ©ri   rj   r  r°   r¹   ÚvalueÚ
all_yieldsr  r%  r"  Úfuncrç   r  s          €€€€€€r   Úsync_gen_wrapperÚ'_make_wrapper.<locals>.sync_gen_wrapperp  sš   øé € ä*¨9°dÓCˆJÙ$ ZÓ0ˆHØ—I‘I˜hÓ'ˆEØÑ Ø" 8œ_�EÙ”IØ”Kñ -ñ ”	ØÙŒJØˆJÙÑ+ 
Ô+�Ø×!Ñ!¤$§-¢-°Ó"6Ô7Ø”ñ ,ð �I‰I�hˆIÒ2ùs   ƒBBc                óN  >#   • [        TX5      nT" U5      nTR                  U5      nUb   US    H  nT" 5         U7v •  M     T" 5         g T	" 5         / nT
" S0 UD6  S h  v•N nUR                  [        R                  " U5      5        U7v •  M5   N0
 TR                  X6S9  g 7fr(  r*  r-  s          €€€€€€r   Úasync_gen_wrapperÚ(_make_wrapper.<locals>.async_gen_wrapper†  s¢   øé € ä*¨9°dÓCˆJÙ$ ZÓ0ˆHØ—I‘I˜hÓ'ˆEØÑ Ø" 8œ_�EÙ”IØ•Kñ -ñ ”	ØÙŒJØˆJÙ#Ñ1 jÒ1÷ �eØ×!Ñ!¤$§-¢-°Ó"6Ô7Ø•ñÐ1ð �I‰I�hˆIÒ2ùs*   ƒAB%ÁBÁ!BÁ"BÁ%-B%ÂBÂB%c               Ÿ  óÈ   >#   • [        T
X5      nT" U5      nTR                  U5      nUb  T" 5         US   $ T" 5         T	" S0 UD6I S h  v•N nTR                  X5S9  U$  N7f©Nr.  )r.  r.   ©ré   r�   r»   ©ri   rj   r  r°   r¹   Úresultr  r%  r"  r0  rç   r  s         €€€€€€r   Úasync_wrapperÚ$_make_wrapper.<locals>.async_wrapperœ  sl   øé € ä*¨9°dÓCˆJÙ$ ZÓ0ˆHØ—I‘I˜hÓ'ˆEØÑ Ù”	Ø˜W‘~Ð%ÙŒJÙÑ- *Ñ-×-ˆFØ�I‰I�hˆIÑ-ØˆMñ .ùs   ƒAA"Á
A ÁA"c                 ó¬   >• [        T
X5      nT" U5      nTR                  U5      nUb  T" 5         US   $ T" 5         T	" S0 UD6nTR                  X5S9  U$ r7  r8  r9  s         €€€€€€r   Úsync_wrapperÚ#_make_wrapper.<locals>.sync_wrapper­  sa   ø€ ä*¨9°dÓCˆJÙ$ ZÓ0ˆHØ—I‘I˜hÓ'ˆEØÑ Ù”	Ø˜W‘~Ð%ÙŒJÙÑ'˜JÑ'ˆFØ�I‰I�hˆIÑ-ØˆMr   )r  rB   rØ   r=   )rp   rç   rq   Ú	functoolsÚwrapsrr   Úiscoroutinefunction)r0  r  r1   r  r1  r4  r;  r>  r  r%  r"  rç   s   ````    @@@@r   Ú_make_wrapperrC  X  sû   ÿ€ ô ×!Ò! $Ó'€I÷&ò
#õ$ô ×"Ò" 4×(Ñ(ä	�Š˜Ó	÷	3ñ 	3ó 
ð	3ð"  Ðä	×	#Ò	# D×	)Ñ	)ä	�Š˜Ó	÷	3ñ 	3ó 
ð	3ð" !Ð ä	×	$Ò	$ T×	*Ñ	*ä	�Š˜Ó	÷
	ñ 
	ó 
ð
	ð Ðô 
�Š˜Ó	÷
	ñ 
	ó 
ð
	ð Ðr   c               óà  • SSK Jn  [        U 5      Ub  [        U5      OS UU" U5      U4n[           [        R                  U5      nUb   [        R                  U5        UsS S S 5        $ [        X#U5      n[        U UUSS9nX‡l	        U[        U'   [        [        5      [        :”  a,  [        R                  SS9  [        [        5      [        :”  a  M,  UsS S S 5        $ ! , (       d  f       g = f)Nr   r  T)r1   r  Fr¾   )r  r  ÚidÚ_runtime_cache_lockrâ   r�   r´   r  rC  Úcacher~   Ú_RUNTIME_WRAPPER_REGISTRY_MAXrÀ   )	r0  r1   r¥   r¦   r§   r  Úregistry_keyrm   r  s	            r   Ú_get_cached_wrapperrJ  ½  sÙ   € õ .ô 	ˆ4‹Ø‘?Œˆ3Œ¨ØÙ˜Ó$Øð€Lö 
Ü!×%Ñ% lÓ3ˆØÑÜ×'Ñ'¨Ô5Ø÷	 
Ñ	ô
 ˜H°+Ó>ˆÜØØØØ!ñ	
ˆð ŒØ(/Œ˜Ñ%Ü”/Ó"Ô%BÓBÜ×#Ñ#¨Ð#Ñ/ô ”/Ó"Ô%BÕBà÷! 
×	×	ús   ±/CÁ*A(CÃCÃ
C-rÖ   ©r1   r¥   r¦   r§   c               óp   ^^^^• SUUUU4S jjnU b#  [        U 5      (       d  [        S5      eU" U 5      $ U$ )aF  
Decorator that auto-caches function results based on content-hashed inputs. Works with sync/async functions and sync/async generators. For generators, all yielded values are cached and replayed on hit. Cache hits bypass the Gradio queue. It can also be called at runtime as `gr.cache(fn)(*args)` to cache intermediate helper calls.
Parameters:
    fn: The function to cache. When used as @gr.cache without parentheses, this is the decorated function. When used as @gr.cache(...), this is None. When used as `gr.cache(fn)(...)`, this must be a callable.
    key: Optional function that receives the kwargs dict and returns a hashable cache key, e.g. to only cache based on the prompt, pass in: lambda kw: kw["prompt"]
    max_size: Maximum number of cache entries. Least-recently-used entries are evicted when full. Set to 0 for unlimited. Default: 128.
    max_memory: Maximum total memory usage before eviction. Accepts strings like "512mb", "2gb" or integer bytes. When exceeded, least-recently-used entries are evicted. If None, no memory limit is applied. If both max_size and max_memory are set, the cache will evict entries when either limit is reached.
    per_session: When True, each user session gets an isolated cache namespace, preventing cached results from leaking between users. Per-session entries are cleared when the client session disconnects. The max_size and max_memory limits apply to the sum of all entries across all sessions.
Example: (decorator)
    import gradio as gr
    @gr.cache
    def classify(image):
        return model.predict(image)

    @gr.cache(max_size=256, per_session=True)
    def generate(prompt):
        return llm(prompt)
Example: (runtime)
    import gradio as gr
    def chat(message):
        cached_retrieve = gr.cache(retrieve_docs)
        docs = cached_retrieve(message)
        return llm(message, docs)
c                ó   >• [        U TTTTS9$ )NrK  )rJ  )r0  r1   r¦   r¥   r§   s    €€€€r   Ú	decoratorÚcache.<locals>.decorator  s   ø€ Ü"ØØØØ!Ø#ñ
ð 	
r   zogr.cache(...) expected a callable when used at runtime. Use gr.cache(fn)(*args) instead of gr.cache(fn(*args)).)r0  r   rØ   r   )ÚcallablerW   )rk   r1   r¥   r¦   r§   rN  s    ```` r   rG  rG  á  sC   û€ ÷D
ò 
ð 
�~Ü˜�|‰|ÜðJóð ñ ˜‹}ÐØÐr   r�   rE   rÑ   rf   c                  ój   • \ rS rSrSrSSS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rg)ÚCachei  a³  
Thread-safe cache with manual get/set control, injected as a function parameter (add as a default parameter value and Gradio will inject it automatically). Supports per-session isolation so cached data doesn't leak between users, content-aware hashing for ML types (numpy, PIL, pandas), and LRU eviction with memory limits.
Parameters:
    max_size: Maximum number of cache entries. Least-recently-used entries are evicted when full. Set to 0 for unlimited. Default: 128.
    max_memory: Maximum total memory usage before eviction. Accepts strings like "512mb", "2gb" or integer bytes.
    per_session: When True, each user session gets an isolated cache namespace, preventing cached data from leaking between users. Per-session entries are cleared when the client session disconnects. The max_size and max_memory limits still apply to the shared underlying cache store across all sessions. Default: False.
Example:
    import gradio as gr
    def generate(prompt, c=gr.Cache(per_session=True)):
        hit = c.get(prompt)
        if hit is not None:
            return model(prompt, past=hit["kv"])
        output = model(prompt)
        c.set(prompt, kv=model.past_key_values)
        return output
rÖ   NFr  c               ó&   • [        XU5      U l        g r   )r  Ú_storer£   s       r   r¨   ÚCache.__init__)  s   € ô " (¸ÓDˆ�r   c                óÐ   • [        U5      nU R                  R                  U5      nUc  g[        5         UR	                  5        VVs0 s H  u  pEUS:w  d  M  XE_M     snn$ s  snnf )zÝ
Look up a cache entry by key. Returns a dict of stored data, or None on miss. Keys can be any type supported by gr.cache (strings, numbers, numpy arrays, PIL images, etc.).
Parameters:
    key: The cache key to look up.
NrÐ   )r   rT  r�   r  rD   )r¤   r1   r°   r¹   r*   r+   s         r   r�   Ú	Cache.get2  sW   € ô ˜c“?ˆØ—‘—‘ Ó)ˆØ‰=ØÜÔØ!&§¡¤Ô>¢™˜°!°v±+“�’¡Ò>Ð>ùÓ>s   ÁA"ÁA"c                óX   • [        U5      nU R                  R                  " U4SU0UD6  g)z
Store arbitrary keyword data under a key.
Parameters:
    key: The cache key.
    data: Arbitrary keyword arguments to store.
rÐ   N)r   rT  r»   )r¤   r1   Údatar°   s       r   rE   Ú	Cache.set?  s'   € ô ˜c“?ˆØ�‰�Š˜Ñ3 sÐ3¨dÓ3r   c                ó6   • U R                   R                  5       $ )zF
Return all stored raw keys. Useful for iteration or prefix matching.
)rT  rÑ   rÇ   s    r   rÑ   Ú
Cache.keysI  s   € ð �{‰{×ÑÓ!Ð!r   c                ó8   • U R                   R                  5         g)z#
Clear all entries from the cache.
N)rT  rf   rÇ   s    r   rf   ÚCache.clearO  s   € ð 	�‰×ÑÕr   c                ó,   • [        U R                  5      $ r   )r~   rT  rÇ   s    r   rÔ   ÚCache.__len__U  s   € Ü�4—;‘;ÓÐr   )rT  )r¥   r;   r¦   ústr | int | Noner§   r:   )r1   r   rØ   rÙ   )r1   r   rY  r   rØ   r   rÜ   rÚ   rÝ   )r[   rÞ   rß   rà   r   r¨   r�   rE   rÑ   rf   rÔ   rá   r.   r   r   rR  rR    sR   † ñð( Ø'+Ø!ñEð ðEð %ð	Eð
 õEô?ô4ô"ô÷ r   rR  )r   r   rØ   r=   )rk   r   rØ   ztuple[Callable, list | None])r   r   rØ   r;   )rØ   r×   )rç   zinspect.Signatureri   r@   rj   rB   rØ   rB   rÚ   )rØ   r:   )r¥   r;   r¦   ra  r§   r:   rØ   r•   rÛ   r   )
r0  r   r  r•   r1   úCallable | Noner  r:   rØ   r   )r0  r   r1   rb  r¥   r;   r¦   ra  r§   r:   rØ   r   )
rk   rb  r1   rb  r¥   r;   r¦   ra  r§   r:   )8r   Ú
__future__r   r+  r@  r   rp   rƒ   rž   ÚweakrefÚcollectionsr   Úcollections.abcr   Úcontextvarsr   Útypingr   ÚnumpyrF   ÚpandasrM   Úgradio_client.documentationr   ÚPILr	   Úpydanticr
   r   r   rs   ry   r“   r•   ÚWeakSetr¡   Ú__annotations__rH  râ   rŸ   rF  ré   r‘   rë   rî   rð   rò   r  r  r  r  r  rC  rJ  rG  rR  r.   r   r   Ú<module>rp     s8  ðÚ -å "ã Û Û Û Û 
Û Û Ý #Ý $Ý "Ý ã Û Ý 0Ý Ý ôô8ôvô<ô6	÷_$ñ _$ðD 5<·O²OÓ4EÐ Ð1Ó Eð !%Ð Ù:E»-€Ð7Ó Gð  —n’nÓ&Ð ô!ô	�Yô 	ñ (2Ø¨ñ(Ð Ð$ó ñ :DØ¨ñ:Ð Ð6ó ÷

ñ 
÷
ñ 
ôô;ð
Øðà ðð ðð ô	ô*ð  ðbð
 #ñbØ
ðbàðbð 
ðbð
 ðbð öbðJ!Ø
ð!ð 
ð!ð ð	!ð
 !ð!ð ð!ð ô!ñH 
ƒàð1ð  ØØ#'Øñ1Øð1ð 
ð1ð ð	1ð
 !ð1ð õ1ó ð1ñh 
ˆ%�˜ Ó(÷? ð ? ó )ñ? r   