
    L3i                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZmZmZmZ d dlZd dlZd dlmZ d dlZd dlZd dlZd dlmZ d dlZd dlmZmZmZm Z m!Z!m"Z"m#Z# d dl$m%Z%m&Z&m'Z'm(Z( d dl)m*Z*m+Z+ d d	l,m-Z- d d
l.m/Z/m0Z0m1Z1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7m8Z8m9Z9m:Z: d dl;m<Z<m=Z= d dl>m?Z?m@Z@mAZB  G d de	      ZC G d deD      ZE G d d      ZF G d de      ZG G d de	      ZH G d d      ZIdZJddi fdZKdZLd ZMd/dZNd ZOd0d ZPd! ZQd" ZRd# ZSd$ ZTd% ZU G d& d'      ZVd( ZWd) ZXd*eeYeZ   df   fd+Z[d,Z\ G d- d.      Z]y)1    N)Enum)ListLiteral
NamedTupleOptionalUnionargs)set_preview_method)
BasicCacheCacheKeySetIDCacheKeySetInputSignature	NullCacheHierarchicalCacheLRUCacheRAMPressureCache)DynamicPromptExecutionBlockerExecutionListget_input_info)GraphBuilderis_link)validate_node_input)get_progress_statereset_progress_stateadd_progress_handlerWebUIProgressHandlerCurrentNodeContext)_ComfyNodeInternal_NodeOutputInternalfirst_real_overrideis_classmake_locked_method_func)io_io)_has_cache_providers_get_cache_providers_loggerc                       e Zd ZdZdZdZy)ExecutionResultr         N)__name__
__module____qualname__SUCCESSFAILUREPENDING     #/home/serv3090/ComfyUI/execution.pyr+   r+   .   s    GGGr5   r+   c                       e Zd Zy)DuplicateNodeErrorN)r.   r/   r0   r4   r5   r6   r8   r8   3   s    r5   r8   c                   &    e Zd ZdededefdZd Zy)IsChangedCache	prompt_id	dynpromptoutputs_cachec                 <    || _         || _        || _        i | _        y N)r;   r<   r=   
is_changed)selfr;   r<   r=   s       r6   __init__zIsChangedCache.__init__7   s    ""*r5   c                   K   || j                   v r| j                   |   S | j                  j                  |      }|d   }t        j                  |   }d}d }t        |t              rt        |d      d}d}nt        |d      rd}d}|sd| j                   |<   | j                   |   S d|v r!|d   | j                   |<   | j                   |   S t        |d   ||d       \  }}}		 t        | j                  |||||	       d {   }
t        |
       d {   }
|
D cg c]  }t        |t              rd n| c}|d<   |d   | j                   |<   | j                   |   S 7 ]7 Lc c}w # t        $ r<}t!        j"                  d	j%                  |             t'        d
      |d<   Y d }~jd }~ww xY w# |d   | j                   |<   w xY ww)N
class_typeFfingerprint_inputsT
IS_CHANGEDr@   inputsv3_datazWARNING: {}NaN)r@   r<   get_nodenodesNODE_CLASS_MAPPINGS
issubclassr    r"   hasattrget_input_data_async_map_node_over_listr;   "resolve_map_node_over_list_results
isinstancer   	Exceptionloggingwarningformatfloat)rA   node_idnoderD   	class_defhas_is_changedis_changed_nameinput_data_all_rI   r@   xes                r6   getzIsChangedCache.get=   s    doo%??7++~~&&w/,'
--j9	i!349LYXl9m9y!N2OY-!N*O',DOOG$??7++4'+L'9DOOG$??7++ &4DNIwX\%]"7	:8R[]km|  GN   O  OJA*MMJZd!eUV*Q8H*I$q"P!eD
 (,L'9DOOG$w'' OM!e 	.OOM0034!&uD	. (,L'9DOOG$sr   C G#E( EE( E!E( E#8E( >!GE( !E( #E( (	F-12F(#F0 (F--F0 0GGN)r.   r/   r0   strr   r   rB   rb   r4   r5   r6   r:   r:   6   s"    # - PZ "(r5   r:   c                   "    e Zd ZU eed<   eed<   y)
CacheEntryuioutputsN)r.   r/   r0   dict__annotations__listr4   r5   r6   re   re   b   s    HMr5   re   c                       e Zd ZdZdZdZdZy)	CacheTyper   r,   r-      N)r.   r/   r0   CLASSICLRUNONERAM_PRESSUREr4   r5   r6   rl   rl   g   s    G
CDLr5   rl   c                   6    e Zd Zdi fdZd Zd Zd Zd Zd Zy)CacheSetNc                     |t         j                  k(  r&| j                          t        j                  d       n|t         j
                  k(  r9|j                  dd      }| j                  |       t        j                  d       n\|t         j                  k(  r9|j                  dd      }| j                  |       t        j                  d       n| j                          | j                  | j                  g| _        y )Nz"Disabling intermediate node cache.ramg      0@zUsing RAM pressure cache.lrur   zUsing LRU cache)rl   rp   init_null_cacherU   inforq   rb   init_ram_cachero   init_lru_cacheinit_classic_cacherg   objectsall)rA   
cache_type
cache_args	cache_ram
cache_sizes        r6   rB   zCacheSet.__init__o   s    '  "LL=>9111"ud3I	*LL459==(#q1J
+LL*+##%LL$,,/r5   c                 X    t        t        d      | _        t        t              | _        y NT)enable_providers)r   r   rg   r   r|   rA   s    r6   r{   zCacheSet.init_classic_cache   s    ()BUYZ(7r5   c                 Z    t        t        |d      | _        t        t              | _        y )NT)max_sizer   )r   r   rg   r   r   r|   )rA   r   s     r6   rz   zCacheSet.init_lru_cache   s      9Jaef(7r5   c                 X    t        t        d      | _        t        t              | _        y r   )r   r   rg   r   r   r|   )rA   min_headrooms     r6   ry   zCacheSet.init_ram_cache   s    '(ATXY(7r5   c                 @    t               | _        t               | _        y r?   )r   rg   r|   r   s    r6   rw   zCacheSet.init_null_cache   s     { {r5   c                 >    d| j                   j                         i}|S )Nrg   )rg   recursive_debug_dump)rA   results     r6   r   zCacheSet.recursive_debug_dump   s"    t||88:
 r5   )	r.   r/   r0   rB   r{   rz   ry   rw   r   r4   r5   r6   rs   rs   n   s%    "&2 0$888#r5   rs   )auth_token_comfy_orgapi_key_comfy_orgc                 @   t        |t              }i }i }|j                         }	|rt        j                  |	|       \  }	}
}i i | D ]  |    }t        ||	      \  }}}fd}t        |      r|r|j                  dd      sq|d   }|d   }| |        S|j                  ||      }||j                   |        {|t        |j                        k\  r |        |j                  |   }|<   ||s|j                  s|g<    |r
|t        j                  j                  j                  |
v r/||j!                         ni |t        j                  j                  <   t        j                  j"                  j                  |
v r||t        j                  j"                  <   t        j                  j$                  j                  |
v r-|j                  dd       |t        j                  j$                  <   t        j                  j&                  j                  |
v r||t        j                  j&                  <   t        j                  j(                  j                  |
v r-|j                  dd       |t        j                  j(                  <   t        j                  j*                  j                  |
v r|j                  dd       |t        j                  j*                  <   nd	|	v r|	d	   }|D ]  |   d
k(  r||j!                         ni g<   |   dk(  r|g<   |   dk(  r|j                  dd       g<   |   dk(  r|g<   |   dk(  r|j                  dd       g<   |   dk(  s|j                  dd       g<    ||d<   |fS )Nc                      d<   d <   y )NTr?   r4   )r^   missing_keysr`   s   r6   mark_missingz$get_input_data.<locals>.mark_missing   s    "LO 'N1r5   rawLinkFr   r,   extra_pnginfor   r   hiddenPROMPT	DYNPROMPTEXTRA_PNGINFO	UNIQUE_IDAUTH_TOKEN_COMFY_ORGAPI_KEY_COMFY_ORGhidden_inputs)rN   r    INPUT_TYPESr&   get_finalized_class_inputsr   r   rb   	get_cacherg   lenACCEPT_ALL_INPUTSr%   Hiddenpromptnameget_original_promptr<   r   	unique_idr   r   )rG   r[   r   execution_listr<   
extra_datais_v3rI   hidden_inputs_v3valid_inputsr   
input_datar_   input_category
input_infor   input_unique_idoutput_indexcachedobjhr^   r   r`   s                        @@@r6   rP   rP      s   y"45EG((*L(+(F(F|U[(\%fgNL -AY
(6y!\(R%>:	( :
*..TY:Z(mO%a=L%#--oyIF~!7s6>>22...C #N1'Ei6Q6Q!+N1--0 yy$$.XaXmY5R5R5Tsu !1!12yy""''618A !4!45yy&&++v5<FNN?\`<a !8!89yy""''618A !4!45yy--22f<CM>>RhjnCo !?!?@yy**//69@JObdh@i !<!<=|#X&A TQ48#LULa)F)F)Hgi(jN1%Q4;&)2N1%Q4?*)3)N(ON1%Q4;&)2N1%Q411)38NPT)U(VN1%Q4..)38KT)R(SN1%T  0GO<00r5   c                   K   | D cg c]0  }t        |t        j                        s|j                         r/|2 }}t	        |      dk(  r:| D cg c].  }t        |t        j                        r|j                         n|0 c}S t        j                  |       d {   \  }}|D ]  }|j                         }|| | D cg c].  }t        |t        j                        r|j                         n|0 c}S c c}w c c}w 7 fc c}w wNr   )rS   asyncioTaskdoner   r   wait	exception)resultsr`   	remainingr   pendingtaskexcs          r6   rR   rR      s     #Tqz!W\\'B1668TIT
9~JQRQjGLL9
q@RR%ll955g 	D.."C		 KRRQjGLL9
q@RR UR5
 SsI   DC;C;C;D3D DDD>D3D8DDc	           
      ~   K   t        dd      }	t        |      dk(  rd}
n t        d |j                         D              }
d }g d f	d	}|	r ||d|	       d {    S |
dk(  r |i        d {    S t	        |
      D ]  } |||      } |||       d {     S 7 I7 47 w)	NINPUT_IS_LISTFr   c              3   2   K   | ]  }t        |        y wr?   )r   ).0r`   s     r6   	<genexpr>z,_async_map_node_over_list.<locals>.<genexpr>   s     DqCFDs   c           	      |    | j                         D ci c]  \  }}||t        |      |kD  r|nd    c}}S c c}}w )N)itemsr   )dikvs       r6   
slice_dictz-_async_map_node_over_list.<locals>.slice_dict   s6    :;'')D$!Q1#a&1*Q"--DDDs    8c           	      B  	K   rt        j                          d }| j                         D ]@  \  }}|r|D ]  }t        |t              s|} n t        |t              s4r |      n|} n |
| |       t        t
              st              rt        t
              rt              r$}j                          j                        }n,t              }|j                          |j                        }t        ||      }	#t        j                  |       } nt              }	t        j                   |	      rd }
t#        j$                   |
|	||             }t#        j&                  d       d {    |j)                         r"|j+                         }j-                  |       y j-                  |       y t/        |      5   |	di | }d d d        j-                         y j-                  |       y 7 # 1 sw Y   /xY ww)Nc                 t   K   t        |||      5   | di | d {   cd d d        S 7 # 1 sw Y   y xY ww)Nr4   r   )fr;   r   
list_indexr
   s        r6   async_wrapperzH_async_map_node_over_list.<locals>.process_inputs.<locals>.async_wrapper  s:     +Iy*M /%&YY/ /./ /s    8,*,
8,58r	   r   r4   )rL   before_node_executionr   rS   r   r    r#   rN   VALIDATE_CLASSPREPARE_CLASS_CLONEtyper$   r&   build_nested_inputsgetattrinspectiscoroutinefunctionr   create_tasksleepr   r   appendr   )rG   indexinput_is_listexecution_blockr   r   ra   type_objclass_cloner   r   r   r   allow_interruptexecution_block_cbfuncr   pre_execute_cbr;   r   r   rI   s                r6   process_inputsz1_async_map_node_over_list.<locals>.process_inputs   s    '')LLN 	DAq A!!%56 !-.;M"4Q"7ST	 ")e.?u%#12x}TWYkIlC="H&&("%"9"9'"BK  $CyH++-"*">">w"GK+HdKH& 44VWEF C&**1-/ **=IyRW^d+efmmA&&&99;![[]FNN6*NN4('	9eD )[[F)v&NN?+ ') )s8   AH
H D&HHAH	H%-HHH)r   )NF)r   r   maxvaluesrange)r;   r   r   r^   r   r   r   r   rI   r   max_len_inputr   r   r   
input_dictr   s   ``` `````      @r6   rQ   rQ      s     C%8M
>aDN,A,A,CDDE G4, 4,l ^QmLLL N 
!	R   
 N }% 	0A#NA6J Q///	0 N 	M  0s6   A"B=-B7.B=B9)B=.B;/	B=9B=;B=c                    g }dgt        | d         z  }t        |d      r|j                  }t        t	        t        | d               |      D ]  \  }}|rWg }| D ]>  }t        ||   t              r|j                  ||          +|j                  ||          @ |j                  |       _|j                  | D cg c]  }||   	 c}        |S c c}w )NFr   OUTPUT_IS_LIST)	r   rO   r   zipr   rS   r   r   extend)r   r   outputoutput_is_listr   is_listvalueos           r6   merge_result_datar   8  s    FWs71:.Ns$%++ %GAJ0.A 
3
7E 'ad$45LL1&LL1&	'
 MM% MM1A1Q412
3 M 2s   <C
c                    K   t        | ||||j                  d|||	       d {   }t        d |D              }|r|i d|fS t        ||      \  }	}
}|	|
|dfS 7 4w)NT)r   r   r   rI   c              3   v   K   | ]1  }t        |t        j                        xr |j                           3 y wr?   )rS   r   r   r   )r   rs     r6   r   z"get_output_data.<locals>.<genexpr>O  s+     _A:a6Gqvvx<G_s   79F)rQ   FUNCTIONanyget_output_from_returns)r;   r   r   r^   r   r   rI   return_valueshas_pending_taskr   rf   has_subgraphs               r6   get_output_datar   M  s     3Iy#~_b_k_k  ~B  Wi  zH  RY  Z  ZM_Q^__b%)9996}cJFB2|U** Zs   "AA5Ac                    g }g }g }d}t        t        |             D ]  }| |   }t        |t              rd|v r|j	                  |d          d|v r_d}|d   }|j                  dd       }	t        |	t              r"t        |	gt        |j                        z        }	|j	                  ||	f       d|v s|j                  dd       }	t        |	t              r"t        |	gt        |j                        z        }	|j	                  |	       |j	                  d |	f       t        |t              rh|j                  _t        |j                  t              r|j	                  |j                         n)|j	                  |j                  j                                |j                  pd}|j                  }|j                  }	|j                  5t        t        |j                        gt        |j                        z        }	|j	                  ||	f       |j                  	|j                  }	|j                  5t        t        |j                        gt        |j                        z        }	|j	                  |	       |j	                  d |	f       |t        |t              r"t        |gt        |j                        z        }|j	                  |       |j	                  d |f        |r|}
nt        |      dkD  rt        ||      }
ng }
t               }t        |      dkD  r?|d   j!                         D ci c]  }||D cg c]  }||   D ]  }|  c}}! }}}}|
||fS c c}}w c c}}}w )NFrf   expandTr   r   )r   r   rS   rh   r   rb   r   tupleRETURN_TYPESr!   rf   as_dictr  r   block_executionr   keys)r   r   r   uissubgraph_resultsr   r   r   	new_graphr   r   rf   r   r`   ys                  r6   r   r   U  s   G
CL3}%& +/!aqy

1T7#1}#hK	x.f&67"F8c#2B2B.C#CDF ''F(;<Qx.f&67"F8c#2B2B.C#CDFv& ''v7./ttaddD)JJqtt$JJqtt||~.xx##HH	$$0"$4Q5F5F$G#H3sO_O_K`#`aF ''F(;<%$$0"$4Q5F5F$G#H3sO_O_K`#`aFv& ''v7!-.1#C$4$4 556NN1##T1I.W+/Z !	W	"7C0	B
 3x!|9<QGGAaS/!A$/Q!/!//GG2|## 0Gs   M6M0!M60M6c                 b    | y t        | t        t        t        t        f      r| S t	        |       S r?   )rS   intrX   boolrc   )r`   s    r6   format_valuer    s+    y	AUD#.	/1vr5   c                 j    | j                  |      d   }t        j                  |   }t        |dd      S )NrD   HAS_INTERMEDIATE_OUTPUTF)rK   rL   rM   r   )r<   rY   rD   r[   s       r6   _is_intermediate_outputr    s7    ##G,\:J))*5I97??r5   c           	          | j                   y |j                  xs i }| j                  d|||j                  dd       |d| j                          |j                  |j                  ||<   y y )Nexecutedr   rZ   display_noder   r;   )	client_idrf   	send_syncrb   )serverrY   display_node_idr   r;   
ui_outputs	cached_uis          r6   _send_cached_uir    s    		RI
Z7O_h_l_lmuw{_|  LU  "W  Y_  Yi  Yi  jyy$ii
7 r5   c                    DEFGK   |G|j                  G      }|j                  G      }|j                  G      }|j                  G      d   }|j                  G      d   Dt        j
                  D   }|j                  j                  G       d {   }|Nt         G|||
       t               j                  G       |j                  G|       t        j                  d d fS d }	 G|	v rmg }|	G   D ]N  }t        |t        j                         r!	 |j#                  |j%                                >|j#                  |       P |	G= t)        ||      \  E}}nyG|v r|G   }g }|D ]  \  }}|s|j#                  |       g }|D ]`  }t+        |      rB|d   |d   }}|j-                  |G      }|j                  |   D ]  }|j#                  |        P|j#                  |       b |j#                  t/        |              t1        ||      Eg }|G= d}nt               j3                  G       t5        ||G|||      \  }} }! j6                  (| _         j;                  dG|d j6                         |j<                  j                  G       d {   }"|"+ |       }"|j<                  j?                  G|"       d {    tA        |tB              rtE        |d      d u}#ntG        |"dd       d u}#|#r|!jI                         }$d	|$d
<   tK        G|"|dd	|$       d {   }%tM        |%       d {   }%t?        tO        |%D cg c]  }t        |tP              s| c}g             }%|%D &cg c]  }&t        |&tR              s|&|vs|&| v r|& }%}&tU        |%      dkD  r,|%D ]  }'|jW                  G|'        t        jX                  d d fS D Gfd}(Gfd})	 t[        G|"||(|)|!       d {   \  E}}}*t\        j^                  j`                  rntb        jd                  dk(  rtf        jh                  jk                          t\        jl                  jo                          tf        jp                  js                          	 |*rIE|	G<   |ju                  G      FEFfd}+t        jv                   |+              t        jX                  d d fS tU        |      dkD  r;G|||d|d|
G<    j6                  " j;                  dG||d j6                         |rg },g }-g }.g }/ty        tU        E            D ]  }'E|'   \  }0}1|0|,j#                  d|1f       "|0j{                         D ]  \  }2}3|-j#                  |2       |3j                  dG      }4|j}                  |2|3G|4       |3d   Dt        j
                  D   }t        |d      sb|j                  d	k(  sr|.j#                  |2        ty        tU        |1            D ]4  }'t+        |1|'         s|1|'   d   |1|'   d   }6}5|/j#                  |5|6f       6 |,j#                  d	|1f        t?        |-      }-|j                  D ],  }7|7j                  G|-       d {   }8|8j                          . |.D ]%  }2|j                  |2       |j                  |2G       ' |/D ]  }9|j                  |9d   |9d   G        |,|G<   t        jX                  d d fS t        |
j                  G      E      }:|j                  G|:       |j                  j?                  G|:       d {    t               j                  G       j                  G       t        j                  d d fS 7 # t&        $ r
}|	G= |d }~ww xY w7 7 7 7 uc c}w c c}&w 7 # t\        j^                  j`                  rntb        jd                  dk(  rtf        jh                  jk                          t\        jl                  jo                          tf        jp                  js                          w w xY w7 7 # t\        jl                  j                  $ r6};t        j                  d       d|i}<t        j                  |<|;fcY d };~;S d };~;wt&        $ r}t        j                         \  }=}>}?t        |=      }@i }A|<i }A|j{                         D ]'  \  }B}|D &cg c]  }&t        |&       nc c}&w c}&AB<   ) t        j                  d|        t        j                  t        j                                d}Ct\        jl                  j                  |      rvd}Ct        j                  dj                  t\        jl                  j                                      t        j                  d       t\        jl                  j                          n#t        |t              rdtS        |      v rd Dv rd!}C|d"j                  |C      @t        j                  |?      Ad#}<t        j                  |<|fcY d }~S d }~ww xY ww)$NrG   rD   r   r,   F	executing)rZ   r  r;   check_lazy_statusTcreate_dynamic_tuple)r   rI   c           
          | j                   Jt              d| j                    dg g g d	}j                  d|j                         t	        d       S | S )NzExecution Blocked: ExecutionBlocked	r;   rY   	node_typer  exception_messageexception_type	tracebackcurrent_inputscurrent_outputsexecution_error)messagerj   r  r  r   )blockmesrD   r  r;   r  r   s     r6   r   z#execute.<locals>.execution_block_cb  si    ==,%.#,%/$(N/B5==/-R*<%'*,+-C $$%6V=M=MN+D11 Lr5   c                 4    t        j                  | d       y r   )r   set_default_prefix)
call_indexr   s    r6   r   zexecute.<locals>.pre_execute_cb  s    //	:qIr5   )r   r   rI   DEBUGc                     K   D  cg c]  } t        | t        j                        s| ! }} t        j                  |ddi d {             y c c} w 7 w)Nreturn_exceptionsT)rS   r   r   gather)r`   tasksoutput_dataunblocks     r6   await_completionz!execute.<locals>.await_completion!  sL     (3S1z!W\\7RQSES!..%H4HHHI THs    AAAAAA)rY   r  parent_nodereal_node_id)metar   r  r  override_display_idOUTPUT_NODE)rf   rg   zProcessing interruptedrY   z$!!! Exception during processing !!!  zThis error means you ran out of memory on your GPU.

TIPS: If the workflow worked before you might have accidentally set the batch_size to a large number.zMemory summary: {}z(Got an OOM, unloading all loaded models.zmat1 and mat2 shapesSamplerz

TIPS: If you have any "Load CLIP" or "*CLIP Loader" nodes in your workflow connected to this sampler node make sure the correct file(s) and type is selected.z{}
{})rY   r&  r'  r(  r)  )Zget_real_node_idget_display_node_idget_parent_node_idrK   rL   rM   rg   rb   r  r   finish_progresscache_updater+   r1   rS   r   r   r   r   rT   r   r   r   r  r   start_progressrP   r  last_node_idr  r|   setrN   r    r"   r   copyrQ   rR   sumrj   rc   r   make_input_strong_linkr3   r   comfymemory_managementaimdo_enabledr
   verbosecomfy_aimdocontrolanalyzemodel_managementreset_cast_buffers
model_vbarvbars_reset_watermark_limitsadd_external_blockr   r   r   add_ephemeral_noderO   r>  r}   ensure_subcache_forclean_unusedadd_node
cache_linkadd_strong_linkre   InterruptProcessingExceptionrU   rx   r2   sysexc_infofull_type_namer  errorr(  
format_excis_oomrW   debug_memory_summaryunload_all_modelsRuntimeError	format_tbadd)Hr  r<   cachescurrent_itemr   r  r;   r   pending_subgraph_resultspending_async_nodesr  r;  r  parent_node_idrG   r[   r   r^   r   r   ex	output_uir   cached_resultsresolved_outputsis_subgraphr   resolved_outputsource_nodesource_outputnode_cachedr   r   rI   r   lazy_status_presentv3_data_lazyrequired_inputsr`   r   r   r   has_pending_tasksr9  cached_outputsnew_node_idsnew_output_idsnew_output_linksr
  node_outputsrY   	node_info
display_idfrom_node_idfrom_socketcachesubcachelinkcache_entryiexerror_detailstypr_   tbr'  input_data_formattedr   tipsrD   r7  r8  r   sH   `    ``                                                             @@@@r6   executer    s~
    I--i8L33I>O11)<N	*84F##I.|<J))*5I>>%%i00F	?FIzZ,,Y7##Iv6''t44NF<++G(3 	&a.!qxxz2 NN1%	& $I.3J7T]3^0KL225i@N!'5 D#V"$++F3&(O# 6"1:9:1qtK*8*B*B;PY*ZK%0%8%8%G : / 6 6q 9: ,22156 %++E/,BCD ,,<iHKI(3 L //	:4B69V_aoqz  }G  5H1NL'+&5#  	Sbqz.|  E  O  O  P**955C{knn((C888)%78&9)EX&Yae&e#&-c3F&MUY&Y#"&||~7;34(A)YX[]k  nA  SW  am  )n  #n(J?(["["%co*\TUVZI[1*\^`&a"b.= #AcAR^+qL/@ $% # # '!+, L&==iKL+33T4@@! !$JJP_`iktvy  |J  _q  BP  Za  Qb  KbGY6G**88||w.#++335**==?**GGI 1<#I.(;;IF ##$4$67'//t<<y>A  )$3#1$0	 $%Jy! +  yRamv  FO  .Q  SY  Sc  Sc  dNLN!3{+, @*5a.'	<$"))5,*?@.7oo.? ;*$++G4%.]]3H)%T
!44WiT^_%.|%<
$)$=$=j$I	"9m<AVAVZ^A^*11':; #3|#45 Q"<?38DQ8JLYZO\]L^+L,33\;4OPQ #))4*>?%@& |,L (!&!:!:9l!SS%%'( * >''0))'9=> ) L..tAwQKL2@$Y/#++T488 JNN9$={S##I{;nn  K888T ((3LL##T400g 1 % !/	: !J 6 9 #n"[*\#> Kb**88||w.#++335**==?**GGI	 9j T 	9!!>> =-. |
  ''<< <\\^
Q',!%#%  . 4 4 6 OfGM-N!l1o-N-N$T*O 	<RDABi**,-!!((, rDLL-44U5K5K5`5`5bcdMMDE""446L)/ER/PV_cmVm {D $!)T!:,",,R02
  '';;;<s  Bi^Ai0(a ^8E'a ^* ,a ^-Aa +^0,a >^3?a ^6'^6+a ;^;^;;a ia (_ =_ >	_ Ca iC;a a &8a A*a 	a
A7a iAa aa >i	^'^""^''a -a 0a 3a 6
a  _ B
aa a i3+b$ii$i1Ai4dEi
iiiic                   X    e Zd ZddZd ZdedefdZd Zde	d	e	fd
Z
i g fdZi g fdZy)PromptExecutorNc                 N    || _         || _        || _        | j                          y r?   )r   r~   r  reset)rA   r  r~   r   s       r6   rB   zPromptExecutor.__init__  s     $$

r5   c                 l    t        | j                  | j                        | _        g | _        d| _        y )N)r~   r   T)rs   r~   r   rj  status_messagessuccessr   s    r6   r  zPromptExecutor.reset  s'    $//dooV!r5   data	broadcastc                    i |dt        t        j                         dz        i}| j                  j                  ||f       | j                  j
                  |r2| j                  j                  ||| j                  j
                         y y )N	timestampi  )r  timer  r   r  r  r  )rA   eventr  r  s       r6   add_messagezPromptExecutor.add_message  s|    

TYY[4/0
 	##UDM2;;  ,	KK!!%t{{/D/DE 1:r5   c                 ,   |d   }||   d   }t        |t        j                  j                        r%|||t	        |      d}	| j                  d|	d       y |||t	        |      |d   |d   |d	   |d
   t	        |      d	}	| j                  d|	d       y )NrY   rD   )r;   rY   r%  r  execution_interruptedTr  r&  r'  r(  r)  r$  r+  F)rS   rL  rS  r^  rj   r  )
rA   r;   r   r*  r  rb  ro  rY   rD   r.  s
             r6   handle_execution_errorz%PromptExecutor.handle_execution_error  s    	"G_\2
 b%00MMN&"' N	C 4cTJ '"' N%*+>%?"'(8"9";/"'(8"9#'#8
C .uEr5   r  r;   c           
      $   t               sy t               D ]0  }	 |dk(  r|j                  |       n|dk(  r|j                  |       2 y # t        $ r<}t        j                  d|j                  j                   d| d|        Y d }~td }~ww xY w)NstartendzCache provider z
 error on : )	r'   r(   on_prompt_starton_prompt_endrT   _cache_loggerrV   	__class__r.   )rA   r  r;   providerra   s        r6   _notify_prompt_lifecyclez'PromptExecutor._notify_prompt_lifecycle  s    #%,. 	mHmG#,,Y7e^**95	m  m%%8J8J8S8S7TT^_d^eeghigj&kllms   -A

	B2B

Bc                 R    t        j                  | j                  ||||             y r?   )r   runexecute_async)rA   r   r;   r   execute_outputss        r6   r  zPromptExecutor.execute  s    D&&vy*oVWr5   c                    K   t        |j                  d             t        j                  d       d|v r|d    j                  _        nd  j                  _        g  _         j                  dd|id        j                  d|       t         j                  d   d	z        } j                  t        j                  k(  r  j                  j                  j                   nd }t"        j$                  j'                  ||       	 t)        j*                         5  t-        |      }t/        ||       t1        t3         j                               t5        || j                  j                        } j                  j6                  D ];  }	|	j9                  ||j;                         |       d {    |	j=                          = t?        |j;                               }
tA        jB                   fd
|
D          d {   }tE        |
|      D cg c]	  \  }}|| }}}t"        jF                  jI                           j                  d||dd       i }i }i }tK               }tM        | j                  j                        } j                  j                  jO                         }t?        |      D ]  }|jQ                  |        |jS                         sp|jU                          d {   \  }}}|" jW                  ||jX                  ||||       n|J d       t[         j                  | j                  ||||||||       d {   \  }}}|t\        j^                  k7   _0        |t\        j^                  k(  r" jW                  ||jX                  ||||       n=|t\        jb                  k(  r|je                          n|jg                           j                  t        j                  k(  rBt"        jF                  ji                  dd ||       t"        j$                  jk                  |       |jS                         sp|jO                         D ]o  }||v rtm        ||      s j                  j                  j                  |       d {   }|E|jo                  |      }tq         j                  |||||       q  j                  dd|id       i }i }|js                         D ]  \  }}|d   ||<   |d   ||<    ||d _:        d  j                  _;        t"        jF                  jx                  rt"        jF                  j{                          d d d        t"        j$                  j'                  d d        j                  d|       y 7 7 c c}}w 7 7 \7 # 1 sw Y   QxY w# t"        j$                  j'                  d d        j                  d|       w xY ww)Npreview_methodFr  execution_startr;   r  r  ru   i   @c              3   h   K   | ])  }j                   j                  j                  |       + y wr?   )rj  rg   rb   )r   rY   rA   s     r6   r   z/PromptExecutor.execute_async.<locals>.<genexpr>  s&     O7dkk))--g6Os   /2execution_cached)rL   r;   z(Node ID should not be None at this pointr   )pins_requiredram_requiredexecution_successr   r<  )rg   r<  r  )>r   rb   rL   interrupt_processingr  r  r  r  r  r  r   r~   rl   rq   rj  rg   ram_releaserL  rM  set_ram_cache_release_statetorchinference_moder   r   r   r   r:   r}   
set_promptr  rZ  rj   r   r5  r   rS  cleanup_models_gcrH  r   all_node_idsr[  is_emptystage_node_executionr  original_promptr  r+   r2   r  r3   unstage_node_executioncomplete_node_executionfree_memoryextra_ram_releaser  rB  r  r   history_resultrG  DISABLE_SMART_MEMORYrf  )rA   r   r;   r   r  ram_headroomram_release_callbackdynamic_promptis_changed_cacher  node_idscache_resultsrY   r   cached_nodesrl  rm  ui_node_outputsr  r   r*  rb  ro  r   r  r  meta_outputsui_infos   `                           r6   r  zPromptExecutor.execute_async  s    :>>*:;<""5)*$$.{$;DKK!$(DKK!!*k9,EQVW%%gy94??51Y?@BF//U^UkUkBkt{{22>>qu;;<PR^_P	<%%' L?!.v!6$Y?$%9$++%FG#1)^T[[M`M`#a ![[__ )E**>6;;=JZ[[[&&()  .&-nnOhO' ! 47x3O  /)    
 &&88:  !3)5IN(- ! / ,.(&(#"$5!.~t{{?R?R!S"&++"5"5"B"B"D#O4 5G"++G45 )113/=/R/R/T)T&GUB(33I~?]?]_npxz  BD  E".Z0ZZ..5dkk>SWS^S^`gisu}  @I  KY  [s  uH  JY  /Z  )Z%FE2#)_-D-D#DDL!8!8833I~?]?]_npxz  BD  E?#:#::&==?&>>@)*@*@@..::1dR^my:z//AA,O' )113. $2#>#>#@ w"h.$6~wO$'+{{':':'>'>w'G!G!-.<.P.PQX.YO+DKK/SY[dfuvw $$%8K:T`e$f
!(7(=(=(? <$GW*1(*;Jw',3FOL)<  *('# ,0())>>**<<>YL?\ ##??aH))%;S \! & *U )Z* "HwL? L?\ ##??aH))%;s   DW7W  BV4/V0AV4=V">V4V%CV40V+1A!V4V.C8V4AV4V1V4"CV4$W  ,3W7V4"V4%V4.V41V44V=9W   4W44W7)FN)r.   r/   r0   rB   r  rh   r  r  r  rc   r  r  r  r4   r5   r6   r  r    s[    
Ft F FF8mc mc m 57 X ACTV b<r5   r  c                   K   |}||v r||   S ||   d   }||   d   }t         j                  |   }g }d}	d }
g }d}t        |t              r9|j	                         }t        j                  ||      \  }}}
d}t        ||      }n|j	                         }d}t        ||d       }|/t        j                  |      }|j                  }|j                  d u}i }t        |j                  di             j                  t        |j                  di                   }|D ]  }t!        |||      \  }}}|J ||vr9|dk(  r3|
s| n|j#                  d	      d
   }dd|d|id}|j%                  |       V||   }||f}t'        |t(              rt+        |      dk7  rdd| |||dd}|j%                  |       |d   }||   d   }t         j                  |   j,                  }||d      }|||<   d|vr6t/        ||      s*| d| d| d}dd|||||dd}|j%                  |       	 t1        | |||       d {   }|d   du rd}	.0	 t'        |t@              rd|v r
|d   }|||<   |d k(  rtC        |      }|||<   |d!k(  rtE        |      }|||<   |d"k(  rt;        |      }|||<   |d#k(  rtG        |      }|||<   ||vs|rd)|v r:||d)   k  r2d*d+jI                  ||d)         | |||dd}|j%                  |       d,|v r:||d,   kD  r2d-d.jI                  ||d,         | |||dd}|j%                  |       )t'        |t(              s|tJ        jL                  jN                  k(  sX|tJ        jL                  jN                  k(  r|j                  d/g       }%n|}%||%vs|}&d0}'t+        |%      d1kD  rd2t+        |%       d}'d }&nt;        |%      }'d3d4| d5| d6|' ||&|dd}|j%                  |        t+        |      dkD  s|rtQ        |||      \  }(}}
i })|(D ]  }||v s|s
|(|   |)|<    d|v r|g|)d<   tS        | |||)||
7       d {   }*tU        |*       d {   }*|)D ]]  }tW        |*      D ]M  \  }+}|dust'        |tX              r| }|dur|d8t;        |       z  }d9d:|d|id}|j%                  |       O _ t+        |      dkD  s|	durd||f}*ndg |f}*|*||<   |*S 7 # t2        $ rl} t5        j6                         \  }!}}"d}	t9        |!      }#ddt;        |       ||t;        |       |#t=        j>                  |"      |ddg}$d|$|f||<   Y d } ~ Nd } ~ ww xY w# t2        $ r=} d$d%| d&| d'| d'|  |||t;        |       d(d}|j%                  |       Y d } ~ d } ~ ww xY w7 b7 Rw);NrG   rD   TFvalidate_inputsVALIDATE_INPUTSrequiredoptional.r   required_input_missingzRequired input is missing
input_namer   r,  details
extra_infor-   bad_linked_inputzBBad linked input, must be a length-2 list of [node_id, slot_index])r  input_configreceived_valuer   r,   input_typesz, received_type(z) mismatch input_type()return_type_mismatchz)Return type mismatch between linked nodes)r  r  received_typelinked_node!exception_during_inner_validationz$Exception when validating inner node)r  r  r&  r'  r(  r  	__value__INTFLOATSTRINGBOOLEANinvalid_input_typez&Failed to convert an input value to a z valuez, )r  r  r  r&  minvalue_smaller_than_minzValue {} smaller than min of {}r   value_bigger_than_maxzValue {} bigger than max of {}optionsr?     z(list of length value_not_in_listzValue not in listz: 'z	' not in rH   z - custom_validation_failedz!Custom validation failed for node)-rL   rM   rN   r    r   r&   r   r"   r   r   getfullargspecr
   varkwrH  rb   unionr   splitr   rS   rj   r   r  r   r  rT   r_  r`  ra  rc   r(  rh  rh   r  rX   r  rW   r%   Comboio_typerP   rQ   rR   	enumerater   ),r;   r   item	validatedr   rG   rD   	obj_classerrorsvalidrI   validate_function_inputsvalidate_has_kwargsclass_inputsr_   validate_function_namevalidate_functionargspecreceived_typesr   r`   
input_typer   r  r  rb  valrx   o_ido_class_typer   r  ro  r  r  r'  reasonscombo_optionsr  	list_infor^   input_filteredretr   s,                                               r6   r  r  .  sk    II##Ix(F	"<0J))*5IFEG!)/0 ,,.#&#A#A,PV#W a!2/	;QR ,,.!2#I/EtL$(():;#*<< %mm47N|''
267==c,BRBRS]^`Ba>bcL m!1?	1l1[.
NJ%%%F?+(/QCQWWS\"5E4:&$a#	 e$QiJ'c4 3x1}.c"#&'(,*-#		 e$q6D!$<5L)),7DDAc!fIM -N1$<<EXYfhrEsC/>TU_T``ab2J&&'(,)6'*	#	
 e$))VT9MMQ45=!E !0#
 c4("c)!+.$'q	&c(C #F1I(*C #F1I)c(C #F1I*s)C #F1I  009LJ&3E1B+B 8#D#K#KCQ[\aQb#c&'S*+,0.1'		E MM%(J&3E1B+B 7#C#J#J3PZ[`Pa#b&'S*+,0.1'		E MM%(j$/:AQAQ3Q!RXX%5%55(2y"(E(2-/'+$&	 }-2*:3};M:Na(PI+/L(+M(:I %8':*+CuIi['I./0<25+		! e, [m!^ #$q(,?%3FIy%Q"7 	6A,,0C$21$5q!	6 44-;,<N=)-iI~_u  @G  H  H6s;; 	A!# 1D=A7G)H!"G~SQ>1 !;#F#*(!'	E MM%(	$ 6{Q%t+fi(R#IiJw N
   \\^
Q!/!4?E"2w&'(,-0W*8%.%8%8%<'*#	  $)'4"8	$%T  0!G
|SYZ"#Bse2bT2&'(,*--0W	#	
 e$d H;s   H%W (S99S6:S9W A2U1>W W B)W 36W +BW 0(W V:W +V=,W W AW 6S99	U.A!U)#W )U..W 1	V7:2V2,W 2V77W =W c                 `    | j                   }|dk(  r| j                  S |dz   | j                  z   S )Nbuiltinsr  )r/   r0   )klassmodules     r6   ra  ra  #  s6    F!!!C<%,,,,r5   partial_execution_listc           
        K   t               }|D ]  }d||   vrH||   }|j                  di       j                  d      }dd|xs d|  dd| d	|d |d
d}d|g i fc S ||   d   }t        j                  j                  |d       }	|	B||   }|j                  di       j                  d|      }dd| dd| d	|||d
d}d|g i fc S t	        |	d      s|	j
                  du s|||v s|j                  |        t        |      dk(  rdddi d}d|g i fS t               }
g }i }i }|D ]e  }d}g }	 t        | |||       d {   }|d   }|d   }|du r|
j                  |       ?t!        j"                  d| d       t        |      dkD  r=t!        j"                  d       |D ]#  }t!        j"                  d|d    d|d           % |||fgz  }|j%                         D ]  \  }}|d   }|d   }|dust        |      dkD  s$||vrU||   d   }|g |d||<   t!        j"                  d | d!| d       |D ]#  }t!        j"                  d|d    d|d           % ||   d"   j'                  |        t!        j"                  d#       h t        |
      dk(  rVg }|D ](  \  }}|D ]  }|j'                  |d    d|d             * d$j)                  |      }d%d&|i d}d|t+        |
      |fS dd t+        |
      |fS 7 # t        $ r_}t        j                         \  }}}d}t        |      }ddt        |      |t        j                  |      ddg}d||f||<   Y d }~d }~ww xY ww)'NrD   _metatitlemissing_node_typezNode 'zID #zO' has no class_type. The workflow may be corrupted or a custom node is missing.z
Node ID '#')rY   rD   
node_titler  Fz2' not found. The custom node may not be installed.r>  Tr   prompt_no_outputszPrompt has no outputsr?  r,   exception_during_validationzException when validating node)r'  r(  z%Failed to validate prompt for output :z* (prompt):z  - r,  r  r  )r  dependent_outputsrD   z*  r  zOutput will be ignored
 prompt_outputs_failed_validationz Prompt outputs failed validation)rH  rb   rL   rM   rO   r>  ri  r   r  rT   r_  r`  ra  rc   r(  rh  rU   rb  r   r   joinrj   )r;   r   r  rg   r`   	node_datar  rb  rD   class_good_outputsr  node_errorsr  r   r  r  mro  r  r_   r  r'  reasonrY   r   errors_lists                              r6   validate_promptr*  )  s    eG #vay(q	I"w377@J+#J$<D*#=  >M  N's!, "&",		E 5"b))AY|,
**..z4@>q	I"w377LJ+#J</ab's!, ",",		E 5"b))6=)f.@.@D.H%-6L1LAG#J 7|q'.	
 ub"%%5LFKI 14	/%iIFFAaDEdG  D=QMMA!AFG7|am,% SFMMD	):(;2fY>O=P"QRS7|n$F#,??#4 Hq	 ) $W)9k1%+G_\%B
&-13*40G,
  :,ay&BC&- [F#MMD	1B0C2fYFWEX*YZ[()<=DDQG#H$ MM23c14f <A 	NIAv N""eI&6%7r%	:J9K#LMN	N ii, 79"	
 ud<0+>>$\*K88 G  	/JCBE+C0N5;r7&4!*!4!4R!8	 G "7A.IaL	/sd   CM:M:)M:0AM:9L
LLB&M: M:C=M:L	M7AM2,M:2M77M:i'  c                       e Zd Zd Zd ZddZ G d de      Z	 dded   fd	Z	d
 Z
d Zd Zd Zd ZddZd Zd Zd ZddZy)PromptQueuec                     || _         t        j                         | _        t        j                  | j                        | _        d| _        g | _        i | _        i | _	        i | _
        y r   )r  	threadingRLockmutex	Condition	not_emptytask_counterqueuecurrently_runninghistoryflags)rA   r  s     r6   rB   zPromptQueue.__init__  sR    __&
",,TZZ8
!#
r5   c                     | j                   5  t        j                  | j                  |       | j                  j                          | j                  j                          d d d        y # 1 sw Y   y xY wr?   )r0  heapqheappushr4  r  queue_updatedr2  notify)rA   r  s     r6   putzPromptQueue.put  sP    ZZ 	$NN4::t,KK%%'NN!!#	$ 	$ 	$s   AA++A4Nc                 (   | j                   5  t        | j                        dk(  rY| j                   j                  |       |"t        | j                        dk(  r
	 d d d        y t        | j                        dk(  rYt	        j
                  | j                        }| j                  }t        j                  |      | j                  |<   | xj                  dz  c_        | j                  j                          ||fcd d d        S # 1 sw Y   y xY w)Nr   )timeoutr,   )r2  r   r4  r   r9  heappopr3  rI  deepcopyr5  r  r;  )rA   r?  r  r   s       r6   rb   zPromptQueue.get  s    ^^ 
	djj/Q&##G#4&3tzz?a+?	
	 
	djj/Q& ==,D!!A(,d(;D""1%"KK%%'!9
	 
	 
	s   AD&D?A?DDc                   8    e Zd ZU ed   ed<   eed<   ee   ed<   y)PromptQueue.ExecutionStatus)r  rb  
status_str	completedmessagesN)r.   r/   r0   r   ri   r  r   rc   r4   r5   r6   ExecutionStatusrC    s    .//s)r5   rG  statusrC  c                 &   | j                   5  | j                  j                  |      }t        | j                        t
        kD  r7| j                  j                  t        t        | j                                     d }|#t        j                  |j                               }| ||      }|i |d| j                  |d   <   | j                  |d      j                  |       | j                  j                          d d d        y # 1 sw Y   y xY w)N)r   rg   rH  r,   )r0  r5  popr   r6  MAXIMUM_HISTORY_SIZEnextiterrI  rA  _asdictupdater  r;  )rA   item_idr  rH  process_itemr   status_dicts          r6   	task_donezPromptQueue.task_done  s    ZZ 	(++//8F4<< #77  d4<<&8!9:*.K!"mmFNN,<='%f- !%'DLL#
 LL#**>:KK%%'%	( 	( 	(s   C1DDc                     | j                   5  g }| j                  j                         D ]  }||gz  }
 |t        j                  | j
                        fcd d d        S # 1 sw Y   y xY wr?   )r0  r5  r   rI  rA  r4  )rA   outr`   s      r6   get_current_queuezPromptQueue.get_current_queue  sa    ZZ 	4C++224 s
tzz23		4 	4 	4s   AAA(c                     | j                   5  | j                  j                         D cg c]  }| }}t        j                  | j                        }||fcd d d        S c c}w # 1 sw Y   y xY wr?   )r0  r5  r   rI  r4  )rA   r`   runningqueueds       r6   get_current_queue_volatilez&PromptQueue.get_current_queue_volatile  sb    ZZ 	%"&"8"8"?"?"ABQqBGBYYtzz*FV$	% 	%B	% 	%s   A&	A!$A&!A&&A/c                     | j                   5  t        | j                        t        | j                        z   cd d d        S # 1 sw Y   y xY wr?   )r0  r   r4  r5  r   s    r6   get_tasks_remainingzPromptQueue.get_tasks_remaining  s=    ZZ 	Atzz?S)?)?%@@	A 	A 	As   +AAc                     | j                   5  g | _        | j                  j                          d d d        y # 1 sw Y   y xY wr?   )r0  r4  r  r;  r   s    r6   
wipe_queuezPromptQueue.wipe_queue  s5    ZZ 	(DJKK%%'	( 	( 	(s	   "8Ac                    | j                   5  t        t        | j                              D ]  } || j                  |         st        | j                        dk(  r| j	                          n:| j                  j                  |       t        j                  | j                         | j                  j                           d d d        y 	 d d d        y# 1 sw Y   yxY w)Nr,   TF)
r0  r   r   r4  r^  rJ  r9  heapifyr  r;  )rA   functionr`   s      r6   delete_queue_itemzPromptQueue.delete_queue_item  s    ZZ 		 3tzz?+  DJJqM*4::!+)

q)djj1KK--/		  		  		  		  s   7CA>CCC c                    | j                   5  |yi }d}|dk  r|t        | j                        |z
  }| j                  D ]<  }||k\  r0| j                  |   }| ||      }|||<   |t        |      |k\  r n|dz  }> |cd d d        S || j                  v r<| j                  |   }|t        j                  |      }n ||      }||icd d d        S i cd d d        S # 1 sw Y   y xY w)Nr   r,   )r0  r   r6  rI  rA  )	rA   r;   	max_itemsoffsetmap_functionrU  r   r   ps	            r6   get_historyzPromptQueue.get_history  s   ZZ 	 A:)"7 .:F AF{ LLO'3 ,QA!"A$0SX5J!FA 	 	  dll*LL+'a(A$QA!1~-	 	0 1	 	 	s   A2C	A CCC'c                 T    | j                   5  i | _        d d d        y # 1 sw Y   y xY wr?   )r0  r6  r   s    r6   wipe_historyzPromptQueue.wipe_history  s%    ZZ 	DL	 	 	s   'c                 ~    | j                   5  | j                  j                  |d        d d d        y # 1 sw Y   y xY wr?   )r0  r6  rJ  )rA   id_to_deletes     r6   delete_history_itemzPromptQueue.delete_history_item!  s2    ZZ 	1LL\40	1 	1 	1s   3<c                     | j                   5  || j                  |<   | j                  j                          d d d        y # 1 sw Y   y xY wr?   )r0  r7  r2  r<  )rA   r   r  s      r6   set_flagzPromptQueue.set_flag%  s<    ZZ 	$#DJJtNN!!#	$ 	$ 	$s   *A  A	c                     | j                   5  |r| j                  }i | _        |cd d d        S | j                  j                         cd d d        S # 1 sw Y   y xY wr?   )r0  r7  rI  )rA   r  r  s      r6   	get_flagszPromptQueue.get_flags*  sN    ZZ 	)jj
		) 	) zz(	) 	) 	)s   AAAr?   )NNr   N)T)r.   r/   r0   rB   r=  rb   r   rG  r   rS  rV  rZ  r\  r^  rb  rh  rj  rm  ro  rq  r4   r5   r6   r,  r,    sj    $*  QU("#@A(.4%A(
61$
)r5   r,  )FNNN)NNN)^rI  r9  r   rU   r_  r.  r  r(  enumr   typingr   r   r   r   r   r   r  comfy.cli_argsr
   comfy.memory_managementrL  comfy.model_managementcomfy_aimdo.model_vbarrP  latent_previewr   rL   comfy_execution.cachingr   r   r   r   r   r   r   comfy_execution.graphr   r   r   r   comfy_execution.graph_utilsr   r   comfy_execution.validationr   comfy_execution.progressr   r   r   r   comfy_execution.utilsr   comfy_api.internalr    r!   r"   r#   r$   comfy_api.latestr%   r&   comfy_execution.cache_providerr'   r(   r)   r  r+   rT   r8   r:   re   rl   rs   SENSITIVE_EXTRA_DATA_KEYSrP   map_node_over_listrR   rQ   r   r   r   r  r  r  r  r  r  ra  rj   rc   r*  rK  r,  r4   r5   r6   <module>r     s]       
     = =       -     > : y y 4 ~ ~ $ o od 
	 	)( )(X 
 ' 'R J @DPTac @1D  
SL^*+?$B@
([1zc< c<Lsj-w9U4PS9VZ?E[ w9r  M) M)r5   