
    ^(jU                        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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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
l0m1Z1m2Z2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8m9Z9m:Z:m;Z;m<Z< d dl=m>Z>m?Z? d dl@mAZAmBZBmCZD  G d de
      ZE G d deF      ZG G d d      ZH G d de      ZI G d de
      ZJ G d d      ZKdZLddi fdZMdZNd ZOd/dZPd ZQd0d ZRd! ZSd" ZTd# ZUd$ ZVd% ZW G d& d'      ZXd1d(ZYd) ZZd*ee[e\   df   fd+Z]d,Z^ G d- d.      Z_y)2    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     3/Users/danicosta/Desktop/Flux2/ComfyUI/execution.pyr+   r+   0   s    GGGr5   r+   c                       e Zd Zy)DuplicateNodeErrorN)r.   r/   r0   r4   r5   r6   r8   r8   5   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__9   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!eZdUV*Q8H*I$q"PZd!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:   8   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   d   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   i   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__q   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   p   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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%   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     #TGqz!W\\'B1668GIT
9~JQR'QjGLL9
q@'RR%ll955gD.."C	  KRR'Qj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     D,CqCF,C   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   s:    :;'')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  s3     +Iy*M%&YY NM. NMs    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    '')LLNDAq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 Ev&NN?+ ' EDs8   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 }%A#NA6J Q/// & 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   :  s    FWs71:.Ns$%++ %GAJ0.A
7Ead$45LL1&LL1&	 
 MM% MM1A1Q412 B 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>Q  s.     _Q^A:a6Gqvvx<GQ^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  O  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   W  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AaS/S!A$Q!$!S//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}}nG|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`                  rtb        jd                  dk(  rtf        jh                  jk                          t\        jl                  jo                          t\        jp                  js                          tf        jt                  jw                          	 |*rIE|	G<   |jy                  G      FEFfd}+t        jz                   |+              t        jX                  d d fS tU        |      dkD  r;G|||d|d|
G<    j6                  " j;                  dG||d j6                         |rg },g }-g }.g }/t}        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        t}        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 c c}w c c}&w 7 # t\        j^                  j`                  rtb        jd                  dk(  rtf        jh                  jk                          t\        jl                  jo                          t\        jp                  js                          tf        jt                  jw                          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$  sM     (3S1z!W\\7RQE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*  )\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_prefetchcleanup_prefetch_queues
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_tasksr:  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   r8  r9  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G<++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 //	: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*\oTUVZI[1o*\^`&a"b.= #oAcAR^+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  )$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"<?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0i 1 % !/	: !J 6 9 #n"[*\#> Kb**88||w.#++335**==?((@@B**GGI 9l 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j^/Aj0(b ^28E'b _ ,b _Ab +_,b >_?b _'_+b ;__;b jb (_! =_>	_! C0b 7j8C;b 4b 8b =A*b 'b(A7b j Ab -b.b 2>j2	_;_  _b b b b 
b _! !B(b		b b j/+c jj j-Aj0eEjjjjj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   rm  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   rM  rT  ra  rj   r  )
rA   r;   r   r+  r  re  rr  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    #%,.HmG#,,Y7e^**95 /  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        }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                         s|jU                          d {   \  }}}|" jW                  ||jX                  ||||       n|J d       t[         j                  | j                  ||||||||       d {   \  }}}|t\        j^                  k7   _0        |t\        j^                  k(  r" jW                  ||jX                  ||||       no|t\        jb                  k(  r|je                          n|jg                           j                  t        j                  k(  rt ||       |ti        jj                         jl                  z
  }t"        jF                  jo                  |dz         }||k  r$|dkD  rtq        jr                  d        ||d       |jS                         s|jO                         D ]o  }||v rtu        ||      s j                  j                  j                  |       d {   }|E|jw                  |      }ty         j                  |||||       q  j                  dd|id       i }i }|j{                         D ]  \  }}|d   ||<   |d   ||<    ||d _>        d  j                  _?        t"        jF                  j                  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   @ram_inactivec              3   h   K   | ])  }j                   j                  j                  |       + y wr?   )rm  rg   rb   )r   rY   rA   s     r6   r   z/PromptExecutor.execute_async.<locals>.<genexpr>  s'     Oh7dkk))--g6hs   /2execution_cached)rL   r;   z(Node ID should not be None at this pointi    i   g?T)free_activeexecution_successr   r=  )rg   r=  r   r  )Br   rb   rL   interrupt_processingr  r  r  r  r  r  r   r~   rl   rq   rm  rg   ram_releaserM  rN  set_ram_cache_release_statetorchinference_moder   r   r   r   r:   r}   
set_promptr  r]  rj   r   r6  r   rT  cleanup_models_gcrI  r   all_node_idsr^  is_emptystage_node_executionr  original_promptr  r+   r2   r  r3   unstage_node_executioncomplete_node_executionpsutilvirtual_memory	available	free_pinsr  r   r  rC  r  r   history_resultrH  DISABLE_SMART_MEMORYri  )rA   r   r;   r   r  ram_headroomram_inactive_headroomram_release_callbackdynamic_promptis_changed_cacher  node_idscache_resultsrY   r   cached_nodesro  rp  ui_node_outputsr  r   r+  re  rr  ram_shortfallfreedr   r  r  meta_outputsui_infos   `                              r6   r  z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;;<PR^_V	<%%'!.v!6$Y?$%9$++%FG#1)^T[[M`M`#a ![[__E**>6;;=JZ[[[&&( -  .&-nnOhO' ! 47x3O 3O) 3O   
 &&88:  !3)5IN(- ! / ,.(&(#"$5!.~t{{?R?R!S"&++"5"5"B"B"D#O4G"++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?#:#::&==?&>>@)*@*@@,-BC(4v7L7L7N7X7X(X % 6 6 @ @QbAb c =0$'77 $

4 004P3 )113: $2#>#>#@"h.$6~w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"X 6BX
W,AXW/X,W2:CXW8A!X-W;.D*XAX'W>(X/CX1X 93Y,X/X2X;X>XX
X 4YY)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 i<r5   r  c                   K   |g }|}||v r||   S ||v rm||j                  |      d  |gz   }t        t        j                  |            }dj	                  fd|D              }|D ]  }	ddd||	|ddg|	f||	<    ||   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} t1        |t              rt3        |      dk7  rdd| || |dd}|j/                  |       |d   }!|!   d	   }"t
        j                  |"   j4                  }#|#|d      }$|$||<   d|vr6t7        |$|      s*| d|$ d| d}dd||| |$|d d}|j/                  |       	 |j/                  |       	 t9        | |!||       d {   }#|j;                          |#d   du rd}QS	 t1        |t              rd$|v r
|d$   }||
|<   |d%k(  rtK        |      }||
|<   |d&k(  rtM        |      }||
|<   |d'k(  rtE        |      }||
|<   |d(k(  rtO        |      }||
|<   ||vs|rd.|v r:||d.   k  r2d/d0jQ                  ||d.         | || |dd}|j/                  |       d1|v r:||d1   kD  r2d2d3jQ                  ||d1         | || |dd}|j/                  |       Lt1        |t              s|tR        jT                  jV                  k(  s{|tR        jT                  jV                  k(  r|j'                  d4g       }*n|}*|j'                  d5d      }+|+r%t1        |t              r|D ,cg c]	  },|,|*vs|, }-},n	||*vr|gng }-|-s| }.d6}/t3        |*      d7kD  rd8t3        |*       d}/d }.ntE        |*      }/d9d:| d;d,j	                  d< |-D               d=|/ ||.|dd}|j/                  |       ^ t3        |      dkD  s|rtY        |
||      \  }0}}i }1|0D ]  }||v s|s
|0|   |1|<    d|v r|g|1d<   t[        | |||1||>       d {   }2t]        |2       d {   }2|1D ]]  }t_        |2      D ]M  \  }3}#|#d
ust1        |#t`              r| }|#dur|d?tE        |#       z  }d@dA|d|id}|j/                  |       O _ |j'                  |d
g |f      }2|2d   xr	 |d
u xr | |2d   |D cg c]  }||2d   vs| c}z   |f}2|2||<   |2S 7 J# |j;                          w xY w# t<        $ rl}%t?        j@                         \  }&}}'d}tC        |&      }(d!d"tE        |%      || tE        |%      |(tG        jH                  |'      |d#dg})d|)|!f||!<   Y d }%~%d }%~%ww xY w# t<        $ r=}%d)d*| d+| d,| d,|% || |tE        |%      d-d}|j/                  |       Y d }%~%Ld }%~%ww xY wc c},w 7 7 c c}w w)BNz -> c              3   :   K   | ]  }| d |   d    d  yw)z (rD   )Nr4   )r   rY   r   s     r6   r   z"validate_inputs.<locals>.<genexpr>C  s,      p_oT[G9Bvg|/L.MQ!O_os   Fdependency_cyclezDependency cycle detected)rY   cycle_nodesr   r-  details
extra_inforG   rD   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'  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 {}optionsmultiselectr@     z(list of length value_not_in_listzValue not in listr  c              3   2   K   | ]  }t        |        y wr?   )repr)r   r   s     r6   r   z"validate_inputs.<locals>.<genexpr>  s     8W,Qa,r   z not in rH   z - custom_validation_failedz!Custom validation failed for node)1r   rj   rh   fromkeysjoinrL   rM   rN   r    r   r&   r   r"   r   r   getfullargspecr
   varkwrI  rb   unionr   splitr   rS   r   r  r   r  poprT   rb  rc  rd  rc   r)  rk  r  rX   r  rW   r%   Comboio_typerP   rQ   rR   	enumerater   )4r;   r   item	validatedvisitingr   cycle_path_nodesr  
cycle_pathrY   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  re  valrx   o_ido_class_typer   r  rr  r  r  r(  reasonscombo_optionsis_multiselectr   invalid_valsr  	list_infor^   input_filteredretr   s4    `                                                  r6   r  r  8  s    II##H#HNN9$=$>?9+M4==)9:;[[ p_o pp
"G"'*6%&#.	+ * "Ig # ##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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$	*#-iyRZ[[ALLN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%/^^M5%IN%*S$*?36'Q3a!=:P3'Q03=0Hub#'+$&	 }-2*:3};M:Na(PI+/L(+M(:I %8':*+Btyy8W,8W/W.XX`aj`k'l./0<25+		! e, m p #$q(,?%3FIy%Q"7A,,0C$21$5q!   44-;,<N=)-iI~_u  @G  H  H6s;;A!#1D=A7G)H!"G~SQ>1 !;#F#*(!'	E MM%( '  $ --	D"i#8
9C 	A/5D=/ZAVCVEuCF/B%VCCC Ii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[5X$0XXXX$ [5%A2Z[5[5!B)[5A[5&	[%0[%4[5B[5([5[*[5[-[5:[5A"[5-[0:[0>[5XX!!X$$	Z-A!Z[5Z[5	["%2[[5[""	[5-[50[5c                 `    | j                   }|dk(  r| j                  S |dz   | j                  z   S )Nbuiltinsr  )r/   r0   )klassmodules     r6   rd  rd  L  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*  r4  zOutput will be ignored
 prompt_outputs_failed_validationz Prompt outputs failed validation)rI  rb   rL   rM   rO   r?  rl  r   r  rT   rb  rc  rd  rc   r)  rk  rU   re  r   r   r  rj   )r;   r   r*  rg   r`   	node_datar0  re  rD   class_good_outputsr  node_errorsr  r   r  r  mrr  r  r_   r  r(  reasonrY   r   errors_lists                              r6   validate_promptr?  R  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	/%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IAv""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.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?   )rE  heapqheappushrI  r  queue_updatedrG  notify)rA   r  s     r6   putzPromptQueue.put  sE    ZZNN4::t,KK%%'NN!!# ZZs   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,   )rG  r   rI  r   rN  heappoprH  rJ  deepcopyrJ  r  rP  )rA   rT  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  re  
status_str	completedmessagesN)r.   r/   r0   r   ri   r  r   rc   r4   r5   r6   ExecutionStatusrX    s    .//s)r5   r\  statusrX  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   r]  r,   )rE  rJ  r  r   rK  MAXIMUM_HISTORY_SIZEnextiterrJ  rV  _asdictupdater  rP  )rA   item_idr  r]  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%%'% ZZs   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?   )rE  rJ  r   rJ  rV  rI  )rA   outr`   s      r6   get_current_queuezPromptQueue.get_current_queue  sQ    ZZC++224s
 5tzz23	 ZZs   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?   )rE  rJ  r   rJ  rI  )rA   r`   runningqueueds       r6   get_current_queue_volatilez&PromptQueue.get_current_queue_volatile  sZ    ZZ"&"8"8"?"?"AB"AQq"AGBYYtzz*FV$ ZB Zs   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?   )rE  r   rI  rJ  r   s    r6   get_tasks_remainingzPromptQueue.get_tasks_remaining  s.    ZZtzz?S)?)?%@@ ZZs   +AAc                     | j                   5  g | _        | j                  j                          d d d        y # 1 sw Y   y xY wr?   )rE  rI  r  rP  r   s    r6   
wipe_queuezPromptQueue.wipe_queue  s*    ZZDJKK%%' ZZs	   "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)
rE  r   r   rI  rr  r  rN  heapifyr  rP  )rA   functionr`   s      r6   delete_queue_itemzPromptQueue.delete_queue_item  s    ZZ3tzz?+DJJqM*4::!+)

q)djj1KK--/ Z+    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,   )rE  r   rK  rJ  rV  )	rA   r;   	max_itemsoffsetmap_functionri  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 &  Z  dll*LL+'a(A$QA!1~- Z0 1 ZZs   A2C	A CCC'c                 T    | j                   5  i | _        d d d        y # 1 sw Y   y xY wr?   )rE  rK  r   s    r6   wipe_historyzPromptQueue.wipe_historyF  s    ZZDL ZZs   'c                 ~    | j                   5  | j                  j                  |d        d d d        y # 1 sw Y   y xY wr?   )rE  rK  r  )rA   id_to_deletes     r6   delete_history_itemzPromptQueue.delete_history_itemJ  s'    ZZLL\40 ZZs   3<c                     | j                   5  || j                  |<   | j                  j                          d d d        y # 1 sw Y   y xY wr?   )rE  rL  rG  rQ  )rA   r   r  s      r6   set_flagzPromptQueue.set_flagN  s1    ZZ#DJJtNN!!# ZZs   *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?   )rE  rL  rJ  )rA   r  r%  s      r6   	get_flagszPromptQueue.get_flagsS  s@    ZZjj
	 Z zz( ZZs   AAAr?   )NNr   N)T)r.   r/   r0   rB   rR  rb   r   r\  r   rg  rj  rn  rp  rr  rv  r|  r~  r  r  r  r4   r5   r6   rA  rA    sj    $*  QU("#@A(.4%A(
61$
)r5   rA  )FNNN)NNNr?   )`rJ  rN  r   rU   r  rb  rC  r  r)  enumr   typingr   r   r   r   r   r   r  comfy.cli_argsr
   comfy.memory_managementrM  comfy.model_managementcomfy.model_prefetchcomfy_aimdo.model_vbarrQ  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  rd  rj   rc   r?  r_  rA  r4   r5   r6   <module>r     sc        
     = =        -     > : y y 4 ~ ~ $ o od 
	 	)( )(X 
 ' 'R J @DPTac @1D  
SL^*+?$B@
(\1|j< j<ZRh-w9U4PS9VZ?E[ w9r  M) M)r5   