
    +j                     f   U d dl mZmZmZmZ d dlZd dlZd dlZd dlZd dl	m
Z
mZmZ  ej        e          Zg Zee
         ed<    ej                    Zdaee
df         ed<   de
d	dfd
Zde
d	dfdZd	ee
df         fdZd	efdZddZded	efdZded	ee         fdZded	efdZded	efdZ dS )    )AnyOptionalTupleListN)CacheProviderCacheContext
CacheValue
_providers ._providers_snapshotproviderreturnc                 n   t           5  | t          v r6t                              d| j        j         d           	 ddd           dS t                              |            t          t                    at          	                    d| j        j                    ddd           dS # 1 swxY w Y   dS )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)    
 S Sz!!OOX(:(CXXXYYYS S S S S S S S 	(####J//QH4F4OQQRRRS S S S S S S S S S S S S S S S S Ss   3B*AB**B.1B.c                 d   t           5  	 t                              |            t          t                    at
                              d| j        j                    n8# t          $ r+ t
          
                    d| j        j         d           Y nw xY wd d d            d S # 1 swxY w Y   d S )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 Z	Zh'''"'
"3"3MMW(:L:UWWXXXX 	Z 	Z 	ZOOX(:(CXXXYYYYY	ZZ Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Zs5   B%AA B% 2BB%BB%%B),B)c                      t           S N)r   r       r   _get_cache_providersr#   )   s    r"   c                  *    t          t                    S r!   )boolr   r   r"   r   _has_cache_providersr&   -   s    #$$$r"   c                  |    t           5  t                                           dad d d            d S # 1 swxY w Y   d S )Nr   )r   r
   clearr   r   r"   r   _clear_cache_providersr)   1   s    	 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! !s   155objc           
         t          | t                    rdt          d | D             d           fS t          | t                    rdt          d | D             d           fS t          | t                    rdd	 | D             fS t          | t
                    rd
 | D             S t          | t                    r0dt          d |                                 D             d           iS t          | t          t          t          t          t          d           f          rt          |           j        | fS t          | t                    rd|                                 fS t!          dt          |           j                   )N__frozenset__c                 ,    g | ]}t          |          S r   _canonicalize.0items     r   
<listcomp>z!_canonicalize.<locals>.<listcomp>?        111T]4  111r"   c                 .    t          j        | d          S NT)	sort_keysjsondumpsxs    r   <lambda>z_canonicalize.<locals>.<lambda>@       $*Q$777 r"   )key__set__c                 ,    g | ]}t          |          S r   r.   r0   s     r   r3   z!_canonicalize.<locals>.<listcomp>D   r4   r"   c                 .    t          j        | d          S r6   r8   r;   s    r   r=   z_canonicalize.<locals>.<lambda>E   r>   r"   	__tuple__c                 ,    g | ]}t          |          S r   r.   r0   s     r   r3   z!_canonicalize.<locals>.<listcomp>H   s     BBBdmD11BBBr"   c                 ,    g | ]}t          |          S r   r.   r0   s     r   r3   z!_canonicalize.<locals>.<listcomp>J   s     444d##444r"   __dict__c                 P    g | ]#\  }}t          |          t          |          g$S r   r.   r1   kvs      r   r3   z!_canonicalize.<locals>.<listcomp>M   s1    JJJdamAa 0 01JJJr"   c                 .    t          j        | d          S r6   r8   r;   s    r   r=   z_canonicalize.<locals>.<lambda>N   r>   r"   	__bytes__zCannot canonicalize type: )
isinstance	frozensetsortedsetr   listdictitemsintfloatstrr%   typer   byteshexr   r*   s    r   r/   r/   8   s   
 #y!! L11S11177"
 "
 "
  	 
C		 L611S11177
 
 
  	 
C		 LBBcBBBCC	C		 L444444	C		 
LFJJciikkJJJ77
 
 
  	 
C#uc4d<	=	= LS		"C((	C		 LSWWYY''Jd3ii6HJJKKKr"   	cache_keyc                 ,   	 t          |           }t          j        |dd          }t          j        |                    d                                                    S # t          $ r(}t          	                    d|            Y d }~d S d }~ww xY w)NT),:)r7   
separatorszutf-8zFailed to serialize cache key: )
r/   r9   r:   hashlibsha256encode	hexdigest	Exceptionr   r   )r[   	canonicaljson_stres       r   _serialize_cache_keyrh   X   s    !),,	:i4JOOO~hoog6677AACCC   =!==>>>ttttts   AA! !
B+BBc                    	 | | k    sdS n# t           $ r Y dS w xY wt          | t          t          t          t
          f          rt          d | D                       S t          | t                    r+t          d |                                 D                       S t          | d          rt          | j                  S dS )NTc              3   4   K   | ]}t          |          V  d S r!   _contains_self_unequalr0   s     r   	<genexpr>z)_contains_self_unequal.<locals>.<genexpr>m   s+      @@D)$//@@@@@@r"   c              3   X   K   | ]%\  }}t          |          pt          |          V  &d S r!   rk   rH   s      r   rm   z)_contains_self_unequal.<locals>.<genexpr>o   s>      bbdaQR)!,,I0Fq0I0Ibbbbbbr"   valueF)rd   rM   rN   r   rQ   rP   anyrR   rS   hasattrrl   ro   rZ   s    r   rl   rl   d   s    s

4    tt#	5$455 A@@C@@@@@@#t cbbVYV_V_VaVabbbbbbsG 1%ci0005s    
ro   c                 v    	 dd l n# t          $ r Y dS w xY wdfd| j        D ]} |           S )Nr   c                 \   t          | j                  r.|                                 |                                 z  z  d S t          | t                    r$|                                 D ]} |           d S t          | t          t          f          r| D ]} |           d S d S r!   )rM   Tensornumelelement_sizerR   valuesrQ   r   )r*   rJ   r2   estimatetorchtotals      r   rx   z&_estimate_value_size.<locals>.estimate}   s    c5<(( 	SYY[[3#3#3#5#555EEET"" 	ZZ\\   dE]++ 	  	 	 r"   )ry   ImportErroroutputs)ro   outputrx   ry   rz   s     @@@r   _estimate_value_sizer~   u   s       qq E	 	 	 	 	 	 	 -  Ls   
 
)r   N)!typingr   r   r   r   r`   r9   logging	threadingcomfy_api.latest._cachingr   r   r	   	getLoggerr   r   r
   __annotations__Lockr   r   r   r   r#   r%   r&   r)   r/   rV   rh   rl   rT   r~   r   r"   r   <module>r      s   - - - - - - - - - - - - -        N M M M M M M M M M
'
H
%
% #%
D $ $ $ ).""13 U=#-. 3 3 3	Sm 	S 	S 	S 	S 	SZ Z$ Z Z Z ZeM3$67    %d % % % %! ! ! !Ls Ls L L L L@	C 	HSM 	 	 	 	     "
 s      r"   