
    +j                     f   % S SK JrJrJrJr  S SKrS SKrS SKrS SKrS SK	J
r
JrJr  \R                  " \5      r/ r\\
   \S'   \R$                  " 5       rSq\\
S4   \S'   S\
S	S4S
 jrS\
S	S4S jrS	\\
S4   4S jrS	\4S jrSS jrS\S	\4S jrS\S	\\   4S jrS\S	\4S jrS\S	\4S jr g)    )AnyOptionalTupleListN)CacheProviderCacheContext
CacheValue
_providers ._providers_snapshotproviderreturnc                 f   [            U [        ;   a7  [        R                  SU R                  R
                   S35         SSS5        g[        R                  U 5        [        [        5      q[        R                  SU R                  R
                   35        SSS5        g! , (       d  f       g= f)zPRegister an external cache provider. Providers are called in registration order.	Provider z already registeredNzRegistered cache provider: )
_providers_lockr
   _loggerwarning	__class____name__appendtupler   debugr   s    >/home/wildlama/comfy/ComfyUI/comfy_execution/cache_provider.pyregister_cache_providerr      s     
z!OOi(:(:(C(C'DDWXY 
 	(##J/3H4F4F4O4O3PQR 
s   9B"	AB""
B0c                 `   [             [        R                  U 5        [        [        5      q[
        R                  SU R                  R                   35        S S S 5        g ! [         a0    [
        R                  SU R                  R                   S35         NBf = f! , (       d  f       g = f)NzUnregistered cache provider: r   z was not registered)r   r
   remover   r   r   r   r   r   
ValueErrorr   r   s    r   unregister_cache_providerr      s    		Zh'"'
"3MM9(:L:L:U:U9VWX	 

  	ZOOi(:(:(C(C'DDWXY	Z 
s)   BAA""7BBBB
B-c                      [         $ N)r   r       r   _get_cache_providersr#   )   s    r"   c                       [        [        5      $ r!   )boolr   r   r"   r   _has_cache_providersr&   -   s    #$$r"   c                  p    [            [        R                  5         SqS S S 5        g ! , (       d  f       g = f)Nr   )r   r
   clearr   r   r"   r   _clear_cache_providersr)   1   s!    	  
s   '
5objc                    [        U [        5      (       a'  S[        U  Vs/ s H  n[        U5      PM     snS S94$ [        U [        5      (       a'  S[        U  Vs/ s H  n[        U5      PM     snS S94$ [        U [
        5      (       a  SU  Vs/ s H  n[        U5      PM     sn4$ [        U [        5      (       a  U  Vs/ s H  n[        U5      PM     sn$ [        U [        5      (       aD  S[        U R                  5        VVs/ s H  u  p#[        U5      [        U5      /PM     snnS S90$ [        U [        [        [        [        [        S 5      45      (       a  [        U 5      R                  U 4$ [        U [        5      (       a  S	U R!                  5       4$ [#        S
[        U 5      R                   35      es  snf s  snf s  snf s  snf s  snnf )N__frozenset__c                 ,    [         R                  " U SS9$ NT)	sort_keysjsondumpsxs    r   <lambda>_canonicalize.<locals>.<lambda>@       $**Q$7r"   )key__set__c                 ,    [         R                  " U SS9$ r.   r0   r3   s    r   r5   r6   E   r7   r"   	__tuple____dict__c                 ,    [         R                  " U SS9$ r.   r0   r3   s    r   r5   r6   N   r7   r"   	__bytes__zCannot canonicalize type: )
isinstance	frozensetsorted_canonicalizesetr   listdictitemsintfloatstrr%   typer   byteshexr   )r*   itemkvs       r   rB   rB   8   s   
 #y!!-01ST]4 S17"
  	 
C		6-01ST]4 S17
  	 
C		cBcdmD1cBCC	C		034d#44	C		F>AiikJkdamAa 01kJ7
  	 
C#uc4d<	=	=S	""C((	C		SWWY''5d3i6H6H5IJKK- 2
 2 C4 Ks   G
G	
GG"G	cache_keyc                 
    [        U 5      n[        R                  " USSS9n[        R                  " UR                  S5      5      R                  5       $ ! [         a"  n[        R                  SU 35         S nAg S nAff = f)NT),:)r/   
separatorszutf-8zFailed to serialize cache key: )
rB   r1   r2   hashlibsha256encode	hexdigest	Exceptionr   r   )rP   	canonicaljson_stres       r   _serialize_cache_keyr]   X   sk    !),	::i4JO~~hoog67AACC 9!=>s   AA 
B A==Bc                 X    X :X  d  g [        U [        [        [        [
        45      (       a  [        S U  5       5      $ [        U [        5      (       a   [        S U R                  5        5       5      $ [        U S5      (       a  [        U R                  5      $ g! [          a     gf = f)NTc              3   8   #    U  H  n[        U5      v   M     g 7fr!   _contains_self_unequal).0rM   s     r   	<genexpr>)_contains_self_unequal.<locals>.<genexpr>m   s     @CD)$//Cs   c              3   `   #    U  H$  u  p[        U5      =(       d    [        U5      v   M&     g 7fr!   r`   )rb   rN   rO   s      r   rc   rd   o   s(     bVada)!,I0Fq0IIVas   ,.valueF)rY   r?   r@   r   rD   rC   anyrE   rF   hasattrra   rf   )r*   s    r   ra   ra   d   s    
  #	5$455@C@@@#tbVYV_V_VabbbsG%cii00  s   B 
B)(B)rf   c                    ^^^  SS K mSmUUU4S jmU R                   H  nT" U5        M     T$ ! [         a     gf = f)Nr   c                 J  > [        U TR                  5      (       a%  TU R                  5       U R                  5       -  -  mg [        U [        5      (       a   U R                  5        H  nT" U5        M     g [        U [        [        45      (       a  U  H  nT" U5        M     g g r!   )r?   Tensornumelelement_sizerE   valuesrD   r   )r*   rO   rM   estimatetorchtotals      r   ro   &_estimate_value_size.<locals>.estimate}   s}    c5<<((SYY[3#3#3#555ET""ZZ\ "dE]++  ,r"   )rp   ImportErroroutputs)rf   outputro   rp   rq   s     @@@r   _estimate_value_sizerv   u   sH     E	 --  L%  s   0 
==)r   N)!typingr   r   r   r   rU   r1   logging	threadingcomfy_api.latest._cachingr   r   r	   	getLoggerr   r   r
   __annotations__Lockr   r   r   r   r#   r%   r&   r)   rB   rI   r]   ra   rG   rv   r   r"   r   <module>r~      s	   - -     N M


H
% #%
D $.."13 U=#-. 3	Sm 	S 	SZ Z$ ZeM3$67 %d %!Ls Ls L@	C 	HSM 	  "
 s r"   