
    3j                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	J
r
  S SKJrJrJrJrJr  S SKrS SK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Jr  S SKrS SKJrJ r J!r!J"r"J#r#J$r$J%r%  S SK&J'r'J(r(J)r)J*r*  S SK+J,r,J-r-  S S	K.J/r/  S S
K0J1r1J2r2J3r3J4r4  S SK5J6r6  S SK7J8r8  S SK9J:r:J;r;J<r<J=r=J>r>  S SK?J@r@JArA  S SKBJCrCJDrDJErF   " S S\
5      rG " S S\H5      rI " S S5      rJ " S S\5      rK " S S\
5      rL " S S5      rMSrNSS0 4S jrOSrPS rQS0S jrRS  rSS1S! jrTS" rUS# rVS$ rWS% rXS& rY " S' S(5      rZS2S) jr[S* r\S+\\]\^   S4   4S, jr_S-r` " S. S/5      rag)3    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)enrich_output_with_assets)_ComfyNodeInternal_NodeOutputInternalfirst_real_overrideis_classmake_locked_method_func)io_io)_has_cache_providers_get_cache_providers_loggerc                        \ rS rSrSrSrSrSrg)ExecutionResult1   r          N)__name__
__module____qualname____firstlineno__SUCCESSFAILUREPENDING__static_attributes__r0       )/home/wildlama/comfy/ComfyUI/execution.pyr,   r,   1   s    GGGr9   r,   c                       \ rS rSrSrg)DuplicateNodeError6   r0   N)r1   r2   r3   r4   r8   r0   r9   r:   r<   r<   6   s    r9   r<   c                   0    \ rS rSrS\S\S\4S jrS rSr	g)	IsChangedCache9   	prompt_id	dynpromptoutputs_cachec                 6    Xl         X l        X0l        0 U l        g N)rA   rB   rC   
is_changed)selfrA   rB   rC   s       r:   __init__IsChangedCache.__init__:   s    ""*r9   c           	        #    XR                   ;   a  U R                   U   $ U R                  R                  U5      nUS   n[        R                  U   nSnS n[        U[        5      (       a  [        US5      b  SnSnO[        US5      (       a  SnSnU(       d  SU R                   U'   U R                   U   $ SU;   a!  US   U R                   U'   U R                   U   $ [        US   XAS 5      u  pxn	 [        U R                  XXvU	S9I S h  vN n
[        U
5      I S h  vN n
U
 Vs/ s H  n[        U[        5      (       a  S OUPM     snUS'   US   U R                   U'   U R                   U   $  Ne NTs  snf ! [         a=  n[         R"                  " S	R%                  U5      5        ['        S
5      US'    S nANlS nAff = f! US   U R                   U'   f = f7f)N
class_typeFfingerprint_inputsT
IS_CHANGEDrF   inputsv3_datazWARNING: {}NaN)rF   rB   get_nodenodesNODE_CLASS_MAPPINGS
issubclassr!   r#   hasattrget_input_data_async_map_node_over_listrA   "resolve_map_node_over_list_results
isinstancer   	Exceptionloggingwarningformatfloat)rG   node_idnoderK   	class_defhas_is_changedis_changed_nameinput_data_all_rP   rF   xes                r:   getIsChangedCache.get@   s    oo%??7++~~&&w/,'
--j9	i!3449LYXl9m9y!N2OY--!N*O',DOOG$??7++4'+L'9DOOG$??7++ &4DNIX\%]"7	:8]k  GN   O  OJA*MMJZd!eZdUV*Q8H*I*I$q"PZd!eD
 (,L'9DOOG$w'' OM!e 	.OOM0034!&uD	. (,L'9DOOG$sr   C1G4E< E3E<  E5!E< )#E7E< !G3E< 5E< 7E< <
G3F>9G >GG GG)rB   rF   rC   rA   N)
r1   r2   r3   r4   strr   r   rH   ri   r8   r0   r9   r:   r?   r?   9   s"    # - PZ "(r9   r?   c                   *    \ rS rSr% \\S'   \\S'   Srg)
CacheEntrye   uioutputsr0   N)r1   r2   r3   r4   dict__annotations__listr8   r0   r9   r:   rm   rm   e   s    HMr9   rm   c                   $    \ rS rSrSrSrSrSrSrg)	CacheTypej   r   r.   r/      r0   N)	r1   r2   r3   r4   CLASSICLRUNONERAM_PRESSUREr8   r0   r9   r:   ru   ru   j   s    G
CDLr9   ru   c                   @    \ rS rSrS0 4S jrS rS rS rS rS r	S	r
g)
CacheSetq   Nc                    U[         R                  :X  a'  U R                  5         [        R                  " S5        OU[         R
                  :X  a:  UR                  SS5      nU R                  U5        [        R                  " S5        O^U[         R                  :X  a:  UR                  SS5      nU R                  U5        [        R                  " S5        OU R                  5         U R                  U R                  /U l        g )Nz"Disabling intermediate node cache.ramg      0@zUsing RAM pressure cache.lrur   zUsing LRU cache)ru   rz   init_null_cacher\   infor{   ri   init_ram_cachery   init_lru_cacheinit_classic_cacherp   objectsall)rG   
cache_type
cache_args	cache_ram
cache_sizes        r:   rH   CacheSet.__init__r   s    '  "LL=>9111"ud3I	*LL459==(#q1J
+LL*+##%LL$,,/r9   c                 R    [        [        SS9U l        [        [        5      U l        g NT)enable_providers)r   r   rp   r   r   rG   s    r:   r   CacheSet.init_classic_cache   s    ()BUYZ(7r9   c                 T    [        [        USS9U l        [        [        5      U l        g )NT)max_sizer   )r   r   rp   r   r   r   )rG   r   s     r:   r   CacheSet.init_lru_cache   s      9Jaef(7r9   c                 R    [        [        SS9U l        [        [        5      U l        g r   )r   r   rp   r   r   r   )rG   min_headrooms     r:   r   CacheSet.init_ram_cache   s    '(ATXY(7r9   c                 @    [        5       U l        [        5       U l        g rE   )r   rp   r   r   s    r:   r   CacheSet.init_null_cache   s     { {r9   c                 >    SU R                   R                  5       0nU$ )Nrp   )rp   recursive_debug_dump)rG   results     r:   r   CacheSet.recursive_debug_dump   s"    t||88:
 r9   )r   r   rp   )r1   r2   r3   r4   rH   r   r   r   r   r   r8   r0   r9   r:   r}   r}   q   s%    "&2 0$888#r9   r}   )auth_token_comfy_orgapi_key_comfy_orgc                   ^^^ [        U[        5      n0 n0 nUR                  5       n	U(       a  [        R                  " X5      u  pn0 m0 mU  H  mU T   n[        UTU	5      u  pnUUU4S jn[        U5      (       a  U(       a  UR                  SS5      (       dy  US   nUS   nUc	  U" 5         Md  UR                  UU5      nUb  UR                  c	  U" 5         M  U[        UR                  5      :  a	  U" 5         M  UR                  U   nUTT'   M  Uc  U(       d  M  UR                  (       d  M  U/TT'   M     U(       Ga9  W
Gb4  [        R                  R                  R                  U
;   a0  Ub  UR!                  5       O0 U[        R                  R                  '   [        R                  R"                  R                  U
;   a  XH[        R                  R"                  '   [        R                  R$                  R                  U
;   a-  UR                  SS 5      U[        R                  R$                  '   [        R                  R&                  R                  U
;   a  X([        R                  R&                  '   [        R                  R(                  R                  U
;   a-  UR                  SS 5      U[        R                  R(                  '   [        R                  R*                  R                  U
;   a-  UR                  SS 5      U[        R                  R*                  '   [        R                  R,                  R                  U
;   a-  UR                  S	S 5      U[        R                  R,                  '   OS
U	;   a  U	S
   nU H  mUT   S:X  a  Ub  UR!                  5       O0 /TT'   UT   S:X  a  U/TT'   UT   S:X  a  UR                  SS 5      /TT'   UT   S:X  a  U/TT'   UT   S:X  a  UR                  SS 5      /TT'   UT   S:X  a  UR                  SS 5      /TT'   UT   S:X  d  M  UR                  S	S 5      /TT'   M     XS'   TTU4$ )Nc                     > STT'   ST T'   g )NTrE   r0   )re   missing_keysrg   s   r:   mark_missing$get_input_data.<locals>.mark_missing   s    "LO 'N1r9   rawLinkFr   r.   extra_pnginfor   r   comfy_usage_sourcehiddenPROMPT	DYNPROMPTEXTRA_PNGINFO	UNIQUE_IDAUTH_TOKEN_COMFY_ORGAPI_KEY_COMFY_ORGCOMFY_USAGE_SOURCEhidden_inputs)rU   r!   INPUT_TYPESr'   get_finalized_class_inputsr   r   ri   	get_cacherp   lenACCEPT_ALL_INPUTSr&   Hiddenpromptnameget_original_promptrB   r   	unique_idr   r   r   )rN   rb   r   execution_listrB   
extra_datais_v3rP   hidden_inputs_v3valid_inputsr   
input_datarf   input_category
input_infor   input_unique_idoutput_indexcachedobjhre   r   rg   s                        @@@r:   rW   rW      s   y"45EG((*L(+(F(F|(\%gNLAY
(6y!\(R%:	( :
*..TY:Z:Z(mO%a=L%#--oyIF~!7s6>>22...C #N1'EEi6Q6Q6Q!+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 !<!<=yy++00F:AKPdfjAk !=!=>|#X&A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%Q4//)38Ld)S(TN1%   0O<00r9   c                 b  #    U  Vs/ s H=  n[        U[        R                  5      (       d  M$  UR                  5       (       a  M;  UPM?     nn[	        U5      S:X  aB  U  Vs/ s H4  n[        U[        R                  5      (       a  UR                  5       OUPM6     sn$ [        R                  " U5      I S h  vN u  p4U H  nUR                  5       nUc  M  Ue   U  Vs/ s H4  n[        U[        R                  5      (       a  UR                  5       OUPM6     sn$ s  snf s  snf  Nps  snf 7fNr   )rZ   asyncioTaskdoner   r   wait	exception)resultsrg   	remainingr   pendingtaskexcs          r:   rY   rY      s     #TGqz!W\\'B1668GIT
9~JQR'QjGLL99
q@'RR%ll955D.."C	  KRR'QjGLL99
q@'RR UR5
 SsK   D/#DDDD/ ;D#D/7D(8D/D/ ;D*D/*D/c	           
        ^ ^^^^^^^^#    [        TSS5      n	[        U5      S:X  a  Sn
O [        S UR                  5        5       5      n
S n/ mSUUUUUU UUU4	S jjnU	(       a  U" USU	S9I S h  vN   T$ U
S:X  a  U" 0 5      I S h  vN   T$ [	        U
5       H  nU" X=5      nU" X5      I S h  vN   M     T$  NJ N4 N7f)	NINPUT_IS_LISTFr   c              3   8   #    U  H  n[        U5      v   M     g 7frE   )r   ).0rg   s     r:   	<genexpr>,_async_map_node_over_list.<locals>.<genexpr>   s     D,CqCFF,C   c           	          U R                  5        VVs0 s H  u  p#X#[        U5      U:  a  UOS   _M     snn$ s  snnf )N)itemsr   )dikvs       r:   
slice_dict-_async_map_node_over_list.<locals>.slice_dict   s6    :;'')D)$!#a&1*Q"--)DDDs   ":c           
        >	#    T(       a  [         R                  " 5         S nU R                  5        HV  u  pEU(       a"  U H  n[        U[        5      (       d  M  Un  O   [        U[        5      (       d  ME  T(       a  T" U5      OUn  O   UGc  Tb  Ub  T" U5        [        T[
        5      (       d%  [        T5      (       a  [        T[
        5      (       a  [        T5      (       a$  TnTR                  5         TR                  T5      nO,[        T5      nUR                  5         UR                  T5      n[        UTU5      n	Tb  [        R                  " U T5      n O[        TT5      n	[        R                   " U	5      (       a  S n
["        R$                  " U
" U	TTXS95      n["        R&                  " S5      I S h  vN   UR)                  5       (       a"  UR+                  5       nTR-                  U5        g TR-                  U5        g [/        TTU5         U	" S0 U D6nS S S 5        TR-                  W5        g TR-                  U5        g  N! , (       d  f       N4= f7f)Nc                 |   #    [        XU5         U " S0 UD6I S h  vN sS S S 5        $  N! , (       d  f       g = f7f)Nr0   r   )frA   r   
list_indexr
   s        r:   async_wrapperH_async_map_node_over_list.<locals>.process_inputs.<locals>.async_wrapper"  s/     +I*M%&YY NM. NMs    <+)+
<+
9<r	   r   r0   )rS   before_node_executionr   rZ   r   r!   r$   rU   VALIDATE_CLASSPREPARE_CLASS_CLONEtyper%   r'   build_nested_inputsgetattrinspectiscoroutinefunctionr   create_tasksleepr   r   appendr   )rN   indexinput_is_listexecution_blockr   r   rh   type_objclass_cloner   r   r   r   allow_interruptexecution_block_cbfuncr   pre_execute_cbrA   r   r   rP   s                r:   process_inputs1_async_map_node_over_list.<locals>.process_inputs   s    '')LLNDAA!!%566  !-..;M"4Q"7ST # ")e.?u%#122x}}TWYkIlIlC=="H&&("%"9"9'"BK  $CyH++-"*">">w"GK+HdKH& 44VWEF C&**1--/ **=IyRW+efmmA&&&99;;![[]FNN6*NN4('	9eD[[F Ev&NN?+ ' EDs8   AI#I#7E	I# IAI#	I$-I#
I I#)r   )NF)r   r   maxvaluesrange)rA   r   r   re   r   r   r   r   rP   r   max_len_inputr   r   r   
input_dictr   s   ``` `````      @r:   rX   rX      s     C%8M
>aDN,A,A,CDDE G4, 4,l ^QmLLL N 
!	R   
 N }%A#N6J /// & N 	M  0s6   A'C2B=3C
B?'C2C3C?CCc                    / nS/[        U S   5      -  n[        US5      (       a  UR                  n[        [	        [        U S   5      5      U5       H  u  pEU(       a]  / nU  HB  n[        Xt   [        5      (       a  UR                  Xt   5        M/  UR                  Xt   5        MD     UR                  U5        Mi  UR                  U  Vs/ s H  owU   PM	     sn5        M     U$ s  snf )NFr   OUTPUT_IS_LIST)	r   rV   r  zipr  rZ   r   r   extend)r   r   outputoutput_is_listr   is_listvalueos           r:   merge_result_datar  ?  s    FWs71:.Ns$%%++ %GAJ0.A
Ead$455LL&LL&	 
 MM% MM1AQ412 B M 2s   C&
c                    #    [        XX#UR                  SXEUS9	I S h  vN n[        S U 5       5      nU(       a  U0 SU4$ [        Xr5      u  pnXUS4$  N67f)NT)r   r   r   rP   c              3      #    U  H;  n[        U[        R                  5      =(       a    UR                  5       (       + v   M=     g 7frE   )rZ   r   r   r   )r   rs     r:   r   "get_output_data.<locals>.<genexpr>V  s-     _Q^A:a6Gqvvx<GQ^s   AAF)rX   FUNCTIONanyget_output_from_returns)rA   r   r   re   r   r   rP   return_valueshas_pending_taskr
  ro   has_subgraphs               r:   get_output_datar  T  s     3I#_b_k_k  ~B  Wi  RY  Z  ZM_Q^__b%)9996}JF|U** Zs   AA7Ac                 n   / n/ n/ nSn[        [        U 5      5       GH  nX   n[        U[        5      (       a  SU;   a  UR	                  US   5        SU;   ad  SnUS   nUR                  SS 5      n	[        U	[        5      (       a"  [        U	/[        UR                  5      -  5      n	UR	                  X45        M  SU;   ap  UR                  SS 5      n	[        U	[        5      (       a"  [        U	/[        UR                  5      -  5      n	UR	                  U	5        UR	                  S U	45        GM  GM  [        U[        5      (       Gat  UR                  bd  [        UR                  [        5      (       a  UR	                  UR                  5        O)UR	                  UR                  R                  5       5        UR                  bq  SnUR                  nUR                  n	UR                  b5  [        [        UR                  5      /[        UR                  5      -  5      n	UR	                  X45        GM  UR                  bu  UR                  n	UR                  b5  [        [        UR                  5      /[        UR                  5      -  5      n	UR	                  U	5        UR	                  S U	45        GM  GM  [        U[        5      (       a"  [        U/[        UR                  5      -  5      nUR	                  U5        UR	                  S U45        GM     U(       a  Un
O[        U5      S:  a  [        X!5      n
O/ n
[        5       n[        U5      S:  aE  US   R!                  5        VVVs0 s H#  oU VVs/ s H  oU     H  oPM     M     snn_M%     nnnnXU4$ s  snnf s  snnnf )NFro   expandTr   r   )r  r   rZ   rq   r   ri   r   tupleRETURN_TYPESr"   ro   as_dictr  r   block_executionr  keys)r  r   r   uissubgraph_resultsr  r   r  	new_graphr   r
  ro   r   rg   ys                  r:   r  r  \  s   G
CL3}%&aqy

1T7#1}#hK	x.f&677"F8c#2B2B.C#CDF ''(;<Qx.f&677"F8c#2B2B.C#CDFv& ''v7  .//ttaddD))JJqtt$JJqtt||~.xx##HH	$$0"$4Q5F5F$G#H3sO_O_K`#`aF ''(;<%$$0"$4Q5F5F$G#H3sO_O_K`#`aFv& ''v7 & !-..1#C$4$4 556NN1##T1I.W 'Z !	W	"70	B
 3x!|9<QGAS/SA$Q!$!S//G|## 0Gs   8N0N*N0*N0c                 n    U c  g [        U [        [        [        [        45      (       a  U $ [	        U 5      $ rE   )rZ   intr_   boolrk   )rg   s    r:   format_valuer)    s.    y	AUD#.	/	/1vr9   c                 j    U R                  U5      S   n[        R                  U   n[        USS5      $ )NrK   HAS_INTERMEDIATE_OUTPUTF)rR   rS   rT   r   )rB   r`   rK   rb   s       r:   _is_intermediate_outputr,    s7    ##G,\:J))*5I97??r9   c           	          U R                   c  g UR                  =(       d    0 nU R                  SXUR                  SS 5      US.U R                   5        UR                  b  UR                  XQ'   g g )Nexecutedr
  ra   display_noder
  rA   )	client_idro   	send_syncri   )serverr`   display_node_idr   rA   
ui_outputs	cached_uis          r:   _send_cached_uir7    s    		RI
Z7_h_l_lmuw{_|  LU  "W  Y_  Yi  Yi  jyy$ii
 r9   c                 d  ^ ^^^D^E^F^G#    UmGUR                  TG5      nUR                  TG5      nUR                  TG5      nUR                  TG5      S   nUR                  TG5      S   mD[        R
                  TD   nUR                  R                  TG5      I S h  vN nUbN  [        T TGUUTU
5        [        5       R                  TG5        UR                  TGU5        [        R                  S S 4$ S n TGU	;   au  / nU	TG    HU  n[        U[        R                   5      (       a"   UR#                  UR%                  5       5        MD  UR#                  U5        MW     U	TG	 [)        UU5      u  mEnnGOTGU;   a  UTG   n/ nU H  u  nnU(       d  UR#                  U5        M   / nU Hi  n[+        U5      (       aE  US   US   nnUR-                  UTG5      nUR                  U    H  nUR#                  U5        M     MX  UR#                  U5        Mk     UR#                  [/        U5      5        M     [1        UU5      mE/ nUTG	 SnGO[        5       R3                  TG5        [5        XTGXqU5      u  nn n!T R6                  b(  UT l        T R;                  STGUTS.T R6                  5        UR<                  R                  TG5      I S h  vN n"U"c+  U" 5       n"UR<                  R?                  TGU"5      I S h  vN   [A        U[B        5      (       a  [E        US5      S Ln#O[G        U"SS 5      S Ln#U#(       a  U!RI                  5       n$S	U$S
'   [K        TTGU"USS	U$S9I S h  vN n%[M        U%5      I S h  vN n%[?        [O        U% Vs/ s H  n[        U[P        5      (       d  M  UPM     sn/ 5      5      n%U% V&s/ s H*  n&[        U&[R        5      (       d  M  U&U;  d  U&U ;   d  M(  U&PM,     n%n&[U        U%5      S:  a.  U% H  n'URW                  TGU'5        M     [        RX                  S S 4$ UDUUU UG4S jn(UG4S jn) [[        TTGU"UU(U)U!S9I S h  vN u  mEnnn*[\        R^                  R`                  (       a  [b        Rd                  S:X  a  [f        Rh                  Rk                  5         [\        Rl                  Ro                  5         [\        Rp                  Rs                  5         [f        Rt                  Rw                  5         U*(       aK  TEU	TG'   URy                  TG5      mFUEUF4S jn+[        Rz                  " U+" 5       5        [        RX                  S S 4$ [U        U5      S:  aG  [}        U5      nTGUUUS.US.U
TG'   T R6                  b"  T R;                  STGUUTS.T R6                  5        U(       Ga  / n,/ n-/ n./ n/[        [U        TE5      5       GH)  n'TEU'   u  n0n1U0c  U,R#                  SU145        M$  U0R                  5        H  u  n2n3U-R#                  U25        U3R                  STG5      n4UR                  U2U3TGU45        U3S   mD[        R
                  TD   n[        US5      (       d  Mh  UR                  S	:X  d  Mz  U.R#                  U25        M     [        [U        U15      5       H;  n'[+        U1U'   5      (       d  M  U1U'   S   U1U'   S   n6n5U/R#                  U5U645        M=     U,R#                  S	U145        GM,     [?        U-5      n-UR                   H-  n7U7R                  TGU-5      I S h  vN n8U8R                  5         M/     U. H&  n2UR                  U25        UR                  U2TG5        M(     U/ H  n9UR                  U9S   U9S   TG5        M     U,UTG'   [        RX                  S S 4$ [        U
R                  TG5      TES9n:UR                  TGU:5        UR                  R?                  TGU:5      I S h  vN   [        5       R                  TG5        TR                  TG5        [        R                  S S 4$  GN! [&         a
  nU	TG	 UeS nAff = f GN GNX GN GNs  snf s  sn&f  GN! [\        R^                  R`                  (       a  [b        Rd                  S:X  a  [f        Rh                  Rk                  5         [\        Rl                  Ro                  5         [\        Rp                  Rs                  5         [f        Rt                  Rw                  5         f f = f GN GN)! [\        Rl                  R                   a7  n;[        R                  " S5        SU0n<[        R                  U<U;4s S n;A;$ S n;A;f[&         Ga  n[        R                  " 5       u  n=n>n?[        U=5      n@0 nAUbA  0 nAUR                  5        H+  u  nBnU V&s/ s H  n&[        U&5      PM     Os  sn&f sn&WAWB'   M-     [        R                  " SU 35        [        R                  " [        R                  " 5       5        SnC[\        Rl                  R                  U5      (       ax  SnC[        R                  " SR                  [\        Rl                  R                  5       5      5        [        R                  " S5        [\        Rl                  R                  5         O,[        U[        5      (       a  S[S        U5      ;   a  S TD;   a  S!nCUS"R                  UWC5      W@[        R                  " U?5      WAS#.n<[        R                  U<U4s S nA$ S nAff = f7f)$NrN   rK   r   r.   F	executing)ra   r0  rA   check_lazy_statusTcreate_dynamic_tuple)r   rP   c           
         > U R                   bJ  TTT[        T5      SU R                    3S/ / / S.	nTR                  SUTR                  5        [	        S 5      $ U $ )NzExecution Blocked: ExecutionBlocked	rA   r`   	node_typer.  exception_messageexception_type	tracebackcurrent_inputscurrent_outputsexecution_error)messagers   r2  r1  r   )blockmesrK   r.  rA   r3  r   s     r:   r   #execute.<locals>.execution_block_cb  si    ==,%.#,%/$(N/B5==/-R*<%'*,+-C $$%6V=M=MN+D11 Lr9   c                 6   > [         R                  " TU S5        g r   )r   set_default_prefix)
call_indexr   s    r:   r   execute.<locals>.pre_execute_cb  s    //	:qIr9   )r   r   rP   DEBUGc                     >#    T V s/ s H&  n [        U [        R                  5      (       d  M$  U PM(     nn [        R                  " USS06I S h  vN   T" 5         g s  sn f  N7f)Nreturn_exceptionsT)rZ   r   r   gather)rg   tasksoutput_dataunblocks     r:   await_completion!execute.<locals>.await_completion*  sL     (3S1z!W\\7RQES!..%H4HHHI THs    A$#AAA$A"A$)r`   r0  parent_nodereal_node_id)metar
  r.  r/  override_display_idOUTPUT_NODE)ro   rp   zProcessing interruptedr`   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{}
{})r`   r@  rA  rB  rC  )]get_real_node_idget_display_node_idget_parent_node_idrR   rS   rT   rp   ri   r7  r   finish_progresscache_updater,   r5   rZ   r   r   r   r   r[   r  r   r   r  r  start_progressrW   r1  last_node_idr2  r   setrU   r!   r#   r   copyrX   rY   sumrs   rk   r   make_input_strong_linkr7   r  comfymemory_managementaimdo_enabledr
   verbosecomfy_aimdocontrolanalyzemodel_managementreset_cast_buffersmodel_prefetchcleanup_prefetch_queues
model_vbarvbars_reset_watermark_limitsadd_external_blockr   r    r  r   add_ephemeral_noderV   r[  r   ensure_subcache_forclean_unusedadd_node
cache_linkadd_strong_linkrm   InterruptProcessingExceptionr\   r   r6   sysexc_infofull_type_namer)  errorrB  
format_excis_oomr^   debug_memory_summaryunload_all_modelsRuntimeError	format_tbadd)Hr3  rB   cachescurrent_itemr   r.  rA   r   pending_subgraph_resultspending_async_nodesr5  rX  r4  parent_node_idrN   rb   r   re   r   r  ex	output_uir  cached_resultsresolved_outputsis_subgraphr   resolved_outputsource_nodesource_outputnode_cachedr  r   rP   r   lazy_status_presentv3_data_lazyrequired_inputsrg   r   r   r   has_pending_tasksrU  cached_outputsnew_node_idsnew_output_idsnew_output_linksr$  node_outputsr`   	node_info
display_idfrom_node_idfrom_socketcachesubcachelinkcache_entryiexerror_detailstyprf   tbrA  input_data_formattedr   tipsrK   rS  rT  r   sH   `    ``                                                             @@@@r:   executer    sx
    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K<++G(3a..!qxxz2 NN1% 4 $I.3J7T]3^0KL225i@N!'5#V"$++F3&(O#"1::9:1qtK*8*B*B;PY*ZK%0%8%8%G / 6 6q 9 &H ,2215 $ %++E/,BC (6 ,,<iHKI(3 L //	:4B6V_ao  }G  5H1NL'+&5#  	Sbqz.|  E  O  O  P**955C{knn((C888)%788&9)EX&Yae&e#&-c3F&MUY&Y#"&||~7;34(A)YX[]k  nA  SW  am  )n  #n(J?(["["%co*\oTUVZI[1o*\^`&a"b.= #oAcAR1^+qL/@ $%o # '!+,&==iK -+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**==?((@@B**GGI 1<#I.(;;IF ##$4$67'//t<<y>A 2)<I  )$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"<?338DQ8JLYZO\]L^+L,33\;4OP 6 #))4*>?% -& |,L!&!:!:9l!SS%%' $ *''0))'9= * )..tAwQK )2@$Y/#++T488 JNN9$={S##I{;nn  K888T ((3LL##T400q 1 % !/	: !J 6 9 #n"[*\#> Kb**88||w.#++335**==?((@@B**GGI 9t T 	9!!>> =-. |
  ''<< <\\^
Q',!%#%  . 4 4 6fGM-Nv!l1ov-N$T* !7 	<RDABi**,-!!((,, rDLL.55e6L6L6a6a6cdeMMDE""446L))/ER/PV_cmVm {D $!)T!:,",,R02
  '';;;<s  Bl0`&Al01/d !`) E=d =a >-d +a,A%d ad $a	%d 7aad *a
aa>d l0d +a =a>	a C<d l0Dd d ,=d -A.d d
A=d l0A
d $d%d )>l0)
`=3`88`==d d d 	d 
d a B.dd d l-.,e l-l0 l-.Al(3g	El("l-#l0(l--l0c                   j    \ rS rSrSS jrS rS\S\4S jrS r	S	\
S
\
4S jr0 / 4S jr0 / 4S jrSrg)PromptExecutori  Nc                 H    X0l         X l        Xl        U R                  5         g rE   )r   r   r3  reset)rG   r3  r   r   s       r:   rH   PromptExecutor.__init__  s    $$

r9   c                 f    [        U R                  U R                  S9U l        / U l        SU l        g )N)r   r   T)r}   r   r   r  status_messagessuccessr   s    r:   r  PromptExecutor.reset  s'    $//dooV!r9   data	broadcastc                 (   0 UES[        [        R                  " 5       S-  5      0EnU R                  R                  X45        U R                  R
                  c  U(       a1  U R                  R                  XU R                  R
                  5        g g )N	timestampi  )r'  timer  r   r3  r1  r2  )rG   eventr  r  s       r:   add_messagePromptExecutor.add_message  sx    

TYY[4/0
 	##UM2;;  ,	KK!!%t{{/D/DE 1:r9   c                 (   US   nX'   S   n[        U[        R                  R                  5      (       a"  UUU[	        U5      S.n	U R                  SU	SS9  g UUU[	        U5      US   US   US	   US
   [	        U5      S.	n	U R                  SU	SS9  g )Nr`   rK   )rA   r`   r?  r.  execution_interruptedTr  r@  rA  rB  rC  r>  rE  F)rZ   ri  rp  r}  rs   r  )
rG   rA   r   rD  r.  r  r  r`   rK   rH  s
             r:   handle_execution_error%PromptExecutor.handle_execution_error  s    	"_\2
 b%00MMNN&"' N	C 4cTJ '"' N%*+>%?"'(8"9";/"'(8"9#'#8
C .uEr9   r  rA   c           
      B   [        5       (       d  g [        5        H6  n US:X  a  UR                  U5        M  US:X  a  UR                  U5        M6  M8     g ! [         a>  n[
        R                  " SUR                  R                   SU SU 35         S nAM~  S nAff = f)NstartendzCache provider z
 error on : )	r(   r)   on_prompt_starton_prompt_endr[   _cache_loggerr]   	__class__r1   )rG   r  rA   providerrh   s        r:   _notify_prompt_lifecycle'PromptExecutor._notify_prompt_lifecycle  s    #%%,.HmG#,,Y7e^**95 $	 /  m%%8J8J8S8S7TT^_d^eeghigj&kllms   AA
B 3BBc                 P    [         R                  " U R                  XX45      5        g rE   )r   runexecute_async)rG   r   rA   r   execute_outputss        r:   r  PromptExecutor.execute  s    D&&v*VWr9   c                   ^ #    [        UR                  S5      5        [        R                  " S5        SU;   a  US   T R                  l        OS T R                  l        / T l        T R                  SSU0SS9  T R                  SU5        [        T R                  S   S	-  5      n[        T R                  S
   S	-  5      nT R                  [        R                  :X  a   T R                  R                  R                   OS n["        R$                  R'                  Xu5         [(        R*                  " 5          [-        U5      n[/        X(5        [1        [3        T R                  5      5        [5        X(T R                  R                  5      n	T R                  R6                   H;  n
U
R9                  XR;                  5       U	5      I S h  vN   U
R=                  5         M=     [?        UR;                  5       5      n[@        RB                  " U 4S jU 5       6 I S h  vN n[E        X5       VVs/ s H  u  pUc  M
  UPM     nnn["        RF                  RI                  5         T R                  SXS.SS9  0 n0 n0 n[K        5       n[M        UT R                  R                  5      nT R                  R                  RO                  5       n[?        U5       H  nURQ                  U5        M     URS                  5       (       Gd  URU                  5       I S h  vN u  nnnUb!  T RW                  X(RX                  UUUU5        GOUc   S5       e[[        T R                  UT R                  XUUUUUU5      I S h  vN u  nnnU[\        R^                  :g  T l0        U[\        R^                  :X  a!  T RW                  X(RX                  UUUU5        GOU[\        Rb                  :X  a  URe                  5         OURg                  5         T R                  [        R                  :X  au  U" U5        U[h        Rj                  " 5       Rl                  -
  n["        RF                  Ro                  US-   5      nUU:  a#  US:  a  [p        Rr                  " S5        U" USS9  URS                  5       (       d  GM  URO                  5        Hz  nUU;   a  M  [u        X5      (       d  M  T R                  R                  R                  U5      I S h  vN nUc  MO  URw                  U5      n[y        T R                  UUUUU5        M|     T R                  SSU0SS9  0 n0 nUR{                  5        H  u  nnUS   UU'   US   UU'   M     UUS.T l>        S T R                  l?        ["        RF                  R                  (       a  ["        RF                  R                  5         S S S 5        ["        R$                  R'                  S S5        T R                  SU5        g  GNF GNs  snnf  GN GN GN! , (       d  f       NV= f! ["        R$                  R'                  S S5        T R                  SU5        f = f7f)Npreview_methodFr1  execution_startrA   r  r  r   i   @ram_inactivec              3   n   >#    U  H*  nTR                   R                  R                  U5      v   M,     g 7frE   )r  rp   ri   )r   r`   rG   s     r:   r   /PromptExecutor.execute_async.<locals>.<genexpr>  s)     Oh7dkk))--g66hs   25execution_cached)rS   rA   z(Node ID should not be None at this pointi    i   g?T)free_activeexecution_successr
  rY  )rp   rY  r   r  )Br   ri   rS   interrupt_processingr3  r1  r  r  r  r'  r   r   ru   r{   r  rp   ram_releaseri  rj  set_ram_cache_release_statetorchinference_moder   r   r   r   r?   r   
set_promptr!  ry  rs   r   rQ  r  rp  cleanup_models_gcre  r   all_node_idsrz  is_emptystage_node_executionr  original_promptr  r,   r6   r  r7   unstage_node_executioncomplete_node_executionpsutilvirtual_memory	available	free_pinsr  r   r,  r_  r7  r   history_resultrd  DISABLE_SMART_MEMORYr  )rG   r   rA   r   r  ram_headroomram_inactive_headroomram_release_callbackdynamic_promptis_changed_cacher  node_idscache_resultsr`   r   cached_nodesr  r  ui_node_outputsr.  r   rD  r  r  ram_shortfallfreedr   r4  r5  meta_outputsui_infos   `                              r:   r  PromptExecutor.execute_async  s    :>>*:;<""5)*$$.{$;DKK!$(DKK!!*k9,EQVW%%gy94??51Y?@ #DOON$Cy$Q RBF//U^UkUkBkt{{22>>qu;;<P_V	<%%'!.v!6$Y?$%9$++%FG#1)T[[M`M`#a ![[__E**>;;=JZ[[[&&( -  .&-nnOhO' ! 47x3O 3O 3O   
 &&88:  !3)5N(- ! / ,.(&(#"$5!.~t{{?R?R!S"&++"5"5"B"B"D#O4G"++G4  5 )1133/=/R/R/T)T&GUB(33I?]?]_npxz  BD  E".Z0ZZ..5dkk>SWS^S^`gu}  @I  KY  [s  uH  JY  /Z  )Z%FE2#)_-D-D#DDL!8!8833I?]?]_npxz  BD  E?#:#::&==?&>>@)*@*@@,-BC(4v7L7L7N7X7X(X % 6 6 @ @QbAb c =0$'77 $

4 004P3 )1133: $2#>#>#@"h.$6~OO$'+{{':':'>'>w'G!G!-.<.P.PQX.YO+DKK/SY[dfuv $A $$%8K:T`e$f
!(7(=(=(?$GW*1(*;Jw',3FOL) )@  *('# ,0())>>**<<>e (h ##??aH))%;_ \! & *U )Z6 "HC ('h ##??aH))%;s   DY+"X4 7BX#X	AX#XX#-	X:X CX#XA!X#6X7D2X#,AX#X X#CX#X4 3Y+X#X#X#X# X##
X1-X4 44Y((Y+)r   r   r  r  r3  r  r  )FN)r1   r2   r3   r4   rH   r  rq   r(  r  r  rk   r  r  r  r8   r0   r9   r:   r  r    s[    
Ft F FF8mc mc m 57 X ACTV i<r9   r  c                   ^#    Uc  / nUnXS;   a  X5   $ XT;   am  XDR                  U5      S  U/-   n[        [        R                  U5      5      nSR	                  U4S jU 5       5      nU H  n	SSSUU	US.S./U	4X9'   M     X5   $ TU   S   n
TU   S	   n[
        R                  U   n/ nS
nS n/ nSn[        U[        5      (       a:  UR                  5       n[        R                  " UU
5      u  nnnSn[        UU5      nOUR                  5       nSn[        UUS 5      nUb0  [        R                  " U5      nUR                   nUR"                  S Ln0 n[%        UR'                  S0 5      5      R)                  [%        UR'                  S0 5      5      5      nU GH  n[+        UUU5      u  nnnUc   eUU
;  a@  US:X  a8  U(       d  U OUR-                  S5      S   nSSUSU0S.nUR/                  U5        M`  U
U   nUU4n [1        U[        5      (       a  [3        U5      S:w  a  SSU UU US.S.nUR/                  U5        M  US   n!TU!   S	   n"[
        R                  U"   R4                  n#U#US      n$U$UU'   SU;  a<  [7        U$U5      (       d+  U SU$ SU S3nSSUUU U$US .S.nUR/                  U5        GM%   UR/                  U5         [9        U TU!X45      I S h  vN n#UR;                  5         U#S   SL a  SnGMk  GMn   [1        U[        5      (       a  S$U;   a
  US$   nUU
U'   US%:X  a  [K        U5      nUU
U'   US&:X  a  [M        U5      nUU
U'   US':X  a  [E        U5      nUU
U'   US(:X  a  [O        U5      nUU
U'   UU;  d  GM  U(       a  GM  S.U;   a<  UUS.   :  a3  S/S0RQ                  UUS.   5      U UU US.S.nUR/                  U5        GMA  S1U;   a<  UUS1   :  a3  S2S3RQ                  UUS1   5      U UU US.S.nUR/                  U5        GM  [1        U[        5      (       d!  U[R        RT                  RV                  :X  d  GM  U[R        RT                  RV                  :X  a  UR'                  S4/ 5      n*OUn*UR'                  S5S5      n+U+(       a0  [1        U[        5      (       a  U V,s/ s H  n,U,U*;  d  M  U,PM     n-n,OUU*;  a  U/O/ n-U-(       d  GMJ  U n.S6n/[3        U*5      S7:  a  S8[3        U*5       S3n/S n.O[E        U*5      n/S9S:U S;S,R	                  S< U- 5       5       S=U/ 3UU.US.S.nUR/                  U5        GM     [3        U5      S:  d  U(       a  [Y        XU5      u  n0nn0 n1U0 H  nUU;   d	  U(       d  M  U0U   U1U'   M     SU;   a  U/U1S'   [[        XUU1UUS>9I S h  vN n2[]        U25      I S h  vN n2U1 Hi  n[_        U25       HW  u  n3n#U#S
Ld  M  [1        U#[`        5      (       a  M$  U nU#SLa  US?[E        U#5       3-  nS@SAUSU0S.nUR/                  U5        MY     Mk     UR'                  US
/ U45      n2U2S   =(       a    US
L =(       a    U(       + U2S   U Vs/ s H  nUU2S   ;  d  M  UPM     sn-   U4n2U2X5'   U2$  GN! UR;                  5         f = f! [<         ao  n%[>        R@                  " 5       u  n&nn'Sn[C        U&5      n(S!S"[E        U%5      UU [E        U%5      U([F        RH                  " U'5      US#.S./n)SU)U!4UU!'    S n%A%GM  S n%A%ff = f! [<         a>  n%S)S*U S+3U S,U S,U% 3UU U[E        U%5      S-.S.nUR/                  U5         S n%A%GM  S n%A%ff = fs  sn,f  GN GNs  snf 7f)BNz -> c              3   >   >#    U  H  o S TU   S    S3v   M     g7f)z (rK   )Nr0   )r   r`   r   s     r:   r   "validate_inputs.<locals>.<genexpr>M  s)      p_oT[9Bvg|/L.MQ!O_os   Fdependency_cyclezDependency cycle detected)r`   cycle_nodesr   rF  details
extra_inforN   rK   Tvalidate_inputsVALIDATE_INPUTSrequiredoptional.r   required_input_missingzRequired input is missing
input_namer/   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(r  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@  rA  rB  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 {}optionsmultiselectr\     z(list of length value_not_in_listzValue not in listr  c              3   8   #    U  H  n[        U5      v   M     g 7frE   )repr)r   r   s     r:   r   r  $  s     8W,Qa,r   z not in rO   z - custom_validation_failedz!Custom validation failed for node)1r   rs   rq   fromkeysjoinrS   rT   rU   r!   r   r'   r   r#   r   r   getfullargspecr
   varkwre  ri   unionr   splitr   rZ   r   r  r   r  popr[   r~  r  r  rk   rB  r  r'  r_   r(  r^   r&   Comboio_typerW   rX   rY   	enumerater   )4rA   r   item	validatedvisitingr   cycle_path_nodesr  
cycle_pathr`   rN   rK   	obj_classerrorsvalidrP   validate_function_inputsvalidate_has_kwargsclass_inputsrf   validate_function_namevalidate_functionargspecreceived_typesr   rg   
input_typer   r  r  r  valr   o_ido_class_typer  r  r  r  r  rA  reasonscombo_optionsis_multiselectr   invalid_valsr  	list_infore   input_filteredretr   s4    `                                                  r:   r  r  B  s    I###NN9$=$>?9+M4==)9:;[[ p_o pp
"G"'*6%&#.	+ * "I # ##Ix(F	"<0J))*5IFEG!)/00 ,,.#&#A#A,PV#W a!2/	;QR ,,.!2#I/EtL$(():;#*<< %mm47N|''
267==c,BRBRS]^`Ba>bcL1?	1l1[.
NJ%%%F?+(/QCQWWS\"5E4:&$a#	 e$QiJ'c4  3x1}.c"#&'(,*-#		 e$q6D!$<5L)),7DDAc!fIM -N1$<<EXYfhrEsEsC/>TU_T``ab2J&&'(,)6'*	#	
 e$	*#-iy[[ALLNQ45=!E !0#
 c4(("c)!+.$'q	&c(C #F1I(*C #F1I)c(C #F1I*s)C #F1I  009L9L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%/^^M5%IN%*S$*?*?36'Q3a!=:P3'Q03=0Hub#|'+$&	 }-2*:3};M:Na(PI+/L(+M(:I %8':*+Btyy8W,8W/W.XX`aj`k'l./0<25+		! e, m p #$q(,?%3Fy%Q"7A,,0C0C$21$5q!   44-;,<N=)-iI~_u  @G  H  H6s;;A!#1D=A7G)H)H!"G~SQ>1 !;#F#*(!'	E MM%( '  $ --	D"i#8
9C 	A/5D=/ZAVCVEuCF/B%VCCC IJK \LLN
   \\^
Q!/!4?E"2w&'(,-0W*8%.%8%8%<'*#	  $)'4"8	$%T  0!G
|SYZ"#Bse2bT2&'(,*--0W	#	
 e$d (RJ H;. Ds   J=^Z5Z $Z%Z )Z5^
A=\1^^B5^A%^9
]<]<^%B'^(^8^9^^^-^A5^9^
^^Z  Z22Z55
\.?A#\)"^)\..^1
]9;2]4-^4]99	^^^c                 b    U R                   nUS:X  a  U R                  $ US-   U R                  -   $ )Nbuiltinsr  )r2   r3   )klassmodules     r:   r  r  V  s6    F!!!C<%,,,,r9   partial_execution_listc           
      T  #    [        5       nU GH  nSX   ;  aL  X   nUR                  S0 5      R                  S5      nSSU=(       d    SU 3 S3SU S	3US US
.S.nSU/ 0 4s  $ X   S   n[        R                  R                  US 5      n	U	cA  X   nUR                  S0 5      R                  SU5      nSSU S3SU S	3UUUS
.S.nSU/ 0 4s  $ [	        U	S5      (       d  M  U	R
                  SL d  M  Ub  XB;   d  M  UR                  U5        GM     [        U5      S:X  a  SSS0 S.nSU/ 0 4$ [        5       n
/ n0 n0 nU GHx  nSn/ n [        XX5      I S h  vN nUS   nUS   nUSL a  U
R                  U5        M?  [         R"                  " SU S35        [        U5      S:  aA  [         R"                  " S5        U H%  n[         R"                  " SUS    SUS    35        M'     XU4/-  nUR%                  5        H  u  nnUS   nUS   nUSLd  M  [        U5      S:  d  M(  UU;  aY  UU   S   nU/ US.UU'   [         R"                  " S U S!U S35        U H%  n[         R"                  " SUS    SUS    35        M'     UU   S"   R'                  U5        M     [         R"                  " S#5        GM{     [        U
5      S:X  aY  / nU H*  u  pU H  nUR'                  US    SUS    35        M!     M,     S$R)                  U5      nS%S&U0 S.nSU[+        U
5      U4$ SS [+        U
5      U4$  GN! [         a`  n[        R                  " 5       u  nnnSn[        U5      nSS[        U5      U[        R                  " U5      S.S./nSUU4X'    S nAGN5S nAff = f7f)'NrK   _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 '#')r`   rK   
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)rA  rB  z%Failed to validate prompt for output :z* (prompt):z  - rF  r  r  )r7  dependent_outputsrK   z*  rY  zOutput will be ignored
 prompt_outputs_failed_validationz Prompt outputs failed validation)re  ri   rS   rT   rV   r[  r  r   r  r[   r~  r  r  rk   rB  r  r\   r  r   r   r(  rs   )rA   r   rO  rp   rg   	node_datarU  r  rK   class_good_outputsr7  node_errorsr2  r  r8  rD  mr  r  rf   r  rA  reasonr`   r   errors_lists                              r:   validate_promptrd  \  sM    eGvy(	I"w377@J+#J$<D*#=  >M  N's!, "&",		E 5"b))Y|,
**..z4@>	I"w377LJ+#J</ab's!, ",",		E 5"b))6=))f.@.@D.H%-1LAG J 7|q'.	
 ub"%%5LFKI	/%iFFAaDEdG  D=QMMA!AFG7|am,%FMMD	):(;2fY>O=P"QR &7|n$F#,??#4q	 ) $W)9k1%+G_\%B
&-13*40G,
  :,ay&BC&-F#MMD	1B0C2fYFWEX*YZ '.()<=DDQG# $5$ MM23c f <AIA""eI&6%7r%	:J9K#LM     ii, 79"	
 ud<0+>>$\*K88 G  	/JCBE+C0N5;r7&4!*!4!4R!8	 G "7A.IL	/sd   CN(%N(6N( AN(L;L8L;+B,N(N(,DN(8L;;
N%AN N( N%%N(i'  c                       \ rS rSrS rS rSS jr " S S\5      r SS\	S	   4S
 jjr
S rS rS rS rS rSS jrS rS rS rSS jrSrg)PromptQueuei  c                     Xl         [        R                  " 5       U l        [        R                  " U R                  5      U l        SU l        / U l        0 U l        0 U l	        0 U l
        g r   )r3  	threadingRLockmutex	Condition	not_emptytask_counterqueuecurrently_runninghistoryflags)rG   r3  s     r:   rH   PromptQueue.__init__  sP    __&
",,TZZ8
!#
r9   c                     U R                      [        R                  " U R                  U5        U R                  R                  5         U R                  R                  5         S S S 5        g ! , (       d  f       g = frE   )rj  heapqheappushrn  r3  queue_updatedrl  notify)rG   r1  s     r:   putPromptQueue.put  sE    ZZNN4::t,KK%%'NN!!# ZZs   AA,,
A:Nc                 8   U R                      [        U R                  5      S:X  aZ  U R                   R                  US9  Ub#  [        U R                  5      S:X  a
   S S S 5        g [        U R                  5      S:X  a  MZ  [        R
                  " U R                  5      nU R                  n[        R                  " U5      U R                  U'   U =R                  S-  sl        U R                  R                  5         X#4sS S S 5        $ ! , (       d  f       g = f)Nr   )timeoutr.   )rl  r   rn  r   rt  heappoprm  rf  deepcopyro  r3  rv  )rG   r{  r1  r   s       r:   ri   PromptQueue.get  s    ^^djj/Q&##G#4&3tzz?a+?	 ^djj/Q& ==,D!!A(,d(;D""1%"KK%%'9 ^^s   AD&DB D
Dc                   @    \ rS rSr% \S   \S'   \\S'   \\   \S'   Sr	g)PromptQueue.ExecutionStatusi  )r  r  
status_str	completedmessagesr0   N)
r1   r2   r3   r4   r   rr   r(  r   rk   r8   r0   r9   r:   ExecutionStatusr    s    .//s)r9   r  statusr  c                 8   U R                      U R                  R                  U5      n[        U R                  5      [
        :  a7  U R                  R                  [        [        U R                  5      5      5        S nUb$  [        R                  " UR                  5       5      nUb  U" U5      nU0 US.U R                  US   '   U R                  US      R                  U5        U R                  R                  5         S S S 5        g ! , (       d  f       g = f)N)r   rp   r  r.   )rj  ro  r-  r   rp  MAXIMUM_HISTORY_SIZEnextiterrf  r}  _asdictupdater3  rv  )rG   item_idr  r  process_itemr   status_dicts          r:   	task_donePromptQueue.task_done  s    ZZ++//8F4<< #77  d4<<&8!9:*.K!"mmFNN,<='%f- !%'DLL#
 LL#**>:KK%%'% ZZs   C5D
Dc                     U R                      / nU R                  R                  5        H  nX/-  nM
     U[        R                  " U R
                  5      4sS S S 5        $ ! , (       d  f       g = frE   )rj  ro  r  rf  r}  rn  )rG   outrg   s      r:   get_current_queuePromptQueue.get_current_queue  sO    ZZC++224s
 5tzz23	 ZZs   A
A!!
A/c                     U R                      U R                  R                  5        Vs/ s H  oPM     nn[        R                  " U R                  5      nX#4sS S S 5        $ s  snf ! , (       d  f       g = frE   )rj  ro  r  rf  rn  )rG   rg   runningqueueds       r:   get_current_queue_volatile&PromptQueue.get_current_queue_volatile  sX    ZZ"&"8"8"?"?"AB"AQq"AGBYYtzz*F$ ZB Zs   A(A#$A(#A((
A6c                     U R                      [        U R                  5      [        U R                  5      -   sS S S 5        $ ! , (       d  f       g = frE   )rj  r   rn  ro  r   s    r:   get_tasks_remainingPromptQueue.get_tasks_remaining  s.    ZZtzz?S)?)?%@@ ZZs   +A
Ac                     U R                      / U l        U R                  R                  5         S S S 5        g ! , (       d  f       g = frE   )rj  rn  r3  rv  r   s    r:   
wipe_queuePromptQueue.wipe_queue#  s*    ZZDJKK%%' ZZs	   "8
Ac                    U R                      [        [        U R                  5      5       H  nU" U R                  U   5      (       d  M  [        U R                  5      S:X  a  U R	                  5         O;U R                  R                  U5        [        R                  " U R                  5        U R                  R                  5           S S S 5        g   S S S 5        g! , (       d  f       g= f)Nr.   TF)
rj  r  r   rn  r  r-  rt  heapifyr3  rv  )rG   functionrg   s      r:   delete_queue_itemPromptQueue.delete_queue_item(  s    ZZ3tzz?+DJJqM**4::!+)

q)djj1KK--/ Z+   Z s   :CB CC
C-c                    U R                      Uc  0 nSnUS:  a  Ub  [        U R                  5      U-
  nU R                   H?  nXc:  a2  U R                  U   nUb  U" U5      nXU'   Ub  [        U5      U:  a    O	US-  nMA     UsS S S 5        $ XR                  ;   a=  U R                  U   nUc  [        R                  " U5      nOU" U5      nX0sS S S 5        $ 0 sS S S 5        $ ! , (       d  f       g = f)Nr   r.   )rj  r   rp  rf  r}  )	rG   rA   	max_itemsoffsetmap_functionr  r   r   ps	            r:   get_historyPromptQueue.get_history5  s    ZZ A:)"7 .:FA{ LLO'3 ,QA!"A$0SX5J!FA &  Z  ll*LL+'a(A$QA!~- Z0 1 ZZs   A9C'AC'C''
C5c                 ^    U R                      0 U l        S S S 5        g ! , (       d  f       g = frE   )rj  rp  r   s    r:   wipe_historyPromptQueue.wipe_historyP  s    ZZDL ZZs   
,c                     U R                      U R                  R                  US 5        S S S 5        g ! , (       d  f       g = frE   )rj  rp  r-  )rG   id_to_deletes     r:   delete_history_itemPromptQueue.delete_history_itemT  s'    ZZLL\40 ZZs	   3
Ac                     U R                      X R                  U'   U R                  R                  5         S S S 5        g ! , (       d  f       g = frE   )rj  rq  rl  rw  )rG   r   r  s      r:   set_flagPromptQueue.set_flagX  s/    ZZ#JJtNN!!# ZZs	   )?
Ac                     U R                      U(       a  U R                  n0 U l        UsS S S 5        $ U R                  R                  5       sS S S 5        $ ! , (       d  f       g = frE   )rj  rq  rf  )rG   r  rJ  s      r:   	get_flagsPromptQueue.get_flags]  s@    ZZjj
	 Z zz( ZZs   AA
A$)ro  rq  rp  rj  rl  rn  r3  rm  rE   )NNr   N)T)r1   r2   r3   r4   rH   rx  ri   r   r  r   r  r  r  r  r  r  r  r  r  r  r  r8   r0   r9   r:   rf  rf    sj    $*  QU("#@A(.4%A(
61$
)r9   rf  )FNNN)NNNrE   )brf  rt  r   r\   r  r~  rh  r  rB  enumr   typingr   r   r   r   r   r   r  comfy.cli_argsr
   comfy.memory_managementri  comfy.model_managementcomfy.model_prefetchcomfy_aimdo.model_vbarrm  latent_previewr   rS   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_execution.asset_enrichmentr    comfy_api.internalr!   r"   r#   r$   r%   comfy_api.latestr&   r'   comfy_execution.cache_providerr(   r)   r*   r  r,   r[   r<   r?   rm   ru   r}   SENSITIVE_EXTRA_DATA_KEYSrW   map_node_over_listrY   rX   r  r  r  r)  r,  r7  r  r  r  r  rs   rk   rd  r  rf  r0   r9   r:   <module>r     sf        
     = =        -     > : y y 4 F ~ ~ $ o od 
	 	)( )(X 
 ' 'R J @DPTac D1L  
SL^*+?$B@(`1Dj< j<ZRh-w9U4PS9VZ?E[ w9r  M) M)r9   