
    +j                        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l7m8Z8 d dl9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZA d dlBmCZCmDZDmEZF  G d de
          ZG G d deH          ZI G d d          ZJ G d de          ZK G d de
          ZL G d d          ZMdZNddi fdZOdZPd ZQd1d ZRd! ZSd2d"ZTd# ZUd$ ZVd% ZWd& ZXd' ZY G d( d)          ZZd3d*Z[d+ Z\d,ee]e^         df         fd-Z_d.Z` G d/ d0          ZadS )4    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                       e Zd ZdZdZdZdS )ExecutionResultr         N)__name__
__module____qualname__SUCCESSFAILUREPENDING     )/home/wildlama/comfy/ComfyUI/execution.pyr,   r,   1   s        GGGGGr6   r,   c                       e Zd ZdS )DuplicateNodeErrorN)r/   r0   r1   r5   r6   r7   r9   r9   6   s        Dr6   r9   c                   (    e Zd ZdededefdZd ZdS )IsChangedCache	prompt_id	dynpromptoutputs_cachec                 >    || _         || _        || _        i | _        d S N)r<   r=   r>   
is_changed)selfr<   r=   r>   s       r7   __init__zIsChangedCache.__init__:   s#    ""*r6   c                 \  K   || j         v r| j         |         S | 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 {V }
t          |
           d {V }
d	 |
D             |d<   nP# t          $ rC}t          j        d
                    |                     t#          d          |d<   Y d }~nd }~ww xY w|d         | j         |<   n# |d         | j         |<   w xY w| j         |         S )N
class_typeFfingerprint_inputsT
IS_CHANGEDrA   inputsv3_datac                 @    g | ]}t          |t                    rd n|S r@   )
isinstancer   .0xs     r7   
<listcomp>z&IsChangedCache.get.<locals>.<listcomp>\   s-    !e!e!eUV*Q8H*I*I"P$$q!e!e!er6   zWARNING: {}NaN)rA   r=   get_nodenodesNODE_CLASS_MAPPINGS
issubclassr!   r#   hasattrget_input_data_async_map_node_over_listr<   "resolve_map_node_over_list_results	Exceptionloggingwarningformatfloat)rB   node_idnoderE   	class_defhas_is_changedis_changed_nameinput_data_all_rJ   rA   es               r7   getzIsChangedCache.get@   s:     do%%?7++~&&w//,'
-j9	i!344 	+9LYXl9m9m9y!N2OOY-- 	+!N*O 	,',DOG$?7++4'+L'9DOG$?7++ &4DNIwX\%]%]"7	:8R[]km|  GN   O   O   O  O  O  O  O  O  OJA*MMMMMMMMJ!e!eZd!e!e!eD 	. 	. 	.OM0033444!&uD	. (,L'9DOG$$tL'9DOG$9999w''s1   &AD+ *F +
E859E3.F 3E88F FN)r/   r0   r1   strr   r   rC   rg   r5   r6   r7   r;   r;   9   sM        # - PZ    "( "( "( "( "(r6   r;   c                   $    e Zd ZU eed<   eed<   dS )
CacheEntryuioutputsN)r/   r0   r1   dict__annotations__listr5   r6   r7   rj   rj   e   s"         HHHMMMMMr6   rj   c                       e Zd ZdZdZdZdZdS )	CacheTyper   r-   r.      N)r/   r0   r1   CLASSICLRUNONERAM_PRESSUREr5   r6   r7   rq   rq   j   s"        G
CDLLLr6   rq   c                   8    e Zd Zdi fdZd Zd Zd Zd Zd ZdS )CacheSetNc                    |t           j        k    r)|                                  t          j        d           n|t           j        k    r@|                    dd          }|                     |           t          j        d           nd|t           j        k    r@|                    dd          }| 	                    |           t          j        d           n| 
                                 | j        | j        g| _        d S )Nz"Disabling intermediate node cache.ramg      0@zUsing RAM pressure cache.lrur   zUsing LRU cache)rq   ru   init_null_cacher[   inforv   rg   init_ram_cachert   init_lru_cacheinit_classic_cacherl   objectsall)rB   
cache_type
cache_args	cache_ram
cache_sizes        r7   rC   zCacheSet.__init__r   s    ''  """L=>>>>9111"ud33I	***L455559=((#q11J
+++L*++++##%%%L$,/r6   c                 n    t          t          d          | _        t          t                    | _        d S NT)enable_providers)r   r   rl   r   r   rB   s    r7   r   zCacheSet.init_classic_cache   s+    ()BUYZZZ(77r6   c                 p    t          t          |d          | _        t          t                    | _        d S )NT)max_sizer   )r   r   rl   r   r   r   )rB   r   s     r7   r   zCacheSet.init_lru_cache   s-     9Jaefff(77r6   c                 n    t          t          d          | _        t          t                    | _        d S r   )r   r   rl   r   r   r   )rB   min_headrooms     r7   r~   zCacheSet.init_ram_cache   s+    '(ATXYYY(77r6   c                 R    t                      | _        t                      | _        d S r@   )r   rl   r   r   s    r7   r|   zCacheSet.init_null_cache   s     {{ {{r6   c                 <    d| j                                         i}|S )Nrl   )rl   recursive_debug_dump)rB   results     r7   r   zCacheSet.recursive_debug_dump   s#    t|88::
 r6   )	r/   r0   r1   rC   r   r   r~   r|   r   r5   r6   r7   rx   rx   q   sx        "&2 0 0 0 0$8 8 88 8 88 8 8# # #    r6   rx   )auth_token_comfy_orgapi_key_comfy_orgc                    t          |t                    }i }i }|                                }	|rt          j        |	|           \  }	}
}i i | D ]ۊ|          }t          ||	          \  }}}fd}t          |          r|r|                    dd          s}|d         }|d         }| |             j|                    ||          }||j	         |             |t          |j	                  k    r |             |j	        |         }|<   |	|r|j        r|g<   |r^|
Zt          j        j        j        |
v r*||                                ni |t          j        j        <   t          j        j        j        |
v r||t          j        j        <   t          j        j        j        |
v r(|                    dd           |t          j        j        <   t          j        j        j        |
v r||t          j        j        <   t          j        j        j        |
v r(|                    dd           |t          j        j        <   t          j        j        j        |
v r(|                    dd           |t          j        j        <   nd	|	v r|	d	         }|D ]|         d
k    r||                                ni g<   |         dk    r|g<   |         dk    r|                    dd           g<   |         dk    r|g<   |         dk    r|                    dd           g<   |         dk    r|                    dd           g<   ||d<   |fS )Nc                      d<   d <   d S )NTr@   r5   )rd   missing_keysrO   s   r7   mark_missingz$get_input_data.<locals>.mark_missing   s    "LO 'N1r6   rawLinkFr   r-   extra_pnginfor   r   hiddenPROMPT	DYNPROMPTEXTRA_PNGINFO	UNIQUE_IDAUTH_TOKEN_COMFY_ORGAPI_KEY_COMFY_ORGhidden_inputs)rU   r!   INPUT_TYPESr'   get_finalized_class_inputsr   r   rg   	get_cacherl   lenACCEPT_ALL_INPUTSr&   Hiddenpromptnameget_original_promptr=   r   	unique_idr   r   )rH   ra   r   execution_listr=   
extra_datais_v3rJ   hidden_inputs_v3valid_inputsr   
input_datare   input_category
input_infor   input_unique_idoutput_indexcachedobjhrd   r   rO   s                        @@@r7   rW   rW      s   y"455EG((**L ](+(F|U[(\(\%fgNL - -AY
(6y!\(R(R%>:	( 	( 	( 	( 	( 	( 	( : 	-
 	-*..TY:Z:Z 	-(mO%a=L%#--oyIIF~!7s6>2222..C #N1'E'i6Q'!+N1 Ty$..XaXmY5R5R5T5T5Tsu !12y"'6118A !45y&+v55<FNN?\`<a<a !89y"'6118A !45y-2f<<CM>>RhjnCoCo !?@y*/699@JObdh@i@i !<=|##X&A T TQ48##LULa)F)F)H)H)Hgi(jN1%Q4;&&)2N1%Q4?**)3)N)N(ON1%Q4;&&)2N1%Q4111)38NPT)U)U(VN1%Q4...)38KT)R)R(SN1%/GO<00r6   c                    K   d | D             }t          |          dk    rd | D             S t          j        |           d {V \  }}|D ]}|                                }||d | D             S )Nc                 n    g | ]2}t          |t          j                  |                                0|3S r5   rL   asyncioTaskdonerM   s     r7   rP   z6resolve_map_node_over_list_results.<locals>.<listcomp>   s6    TTTqz!W\'B'BT16688TTTTr6   r   c                 n    g | ]2}t          |t          j                  r|                                n|3S r5   rL   r   r   r   rM   s     r7   rP   z6resolve_map_node_over_list_results.<locals>.<listcomp>   5    RRRQjGL99@


qRRRr6   c                 n    g | ]2}t          |t          j                  r|                                n|3S r5   r   rM   s     r7   rP   z6resolve_map_node_over_list_results.<locals>.<listcomp>   r   r6   )r   r   wait	exception)results	remainingr   pendingtaskexcs         r7   rY   rY      s      TTGTTTI
9~~RR'RRRR%l955555555g 	 	D..""C	 RR'RRRRr6   Fc	           
         K   t          dd          }	t          |          dk    rd}
n+t          d |                                D                       }
d }g d f	d	}|	r ||d|	           d {V  nH|
dk    r |i            d {V  n0t	          |
          D ] } |||          } |||           d {V  !S )	NINPUT_IS_LISTFr   c              3   4   K   | ]}t          |          V  d S r@   r   rM   s     r7   	<genexpr>z,_async_map_node_over_list.<locals>.<genexpr>   s(      DDqCFFDDDDDDr6   c                 D    fd|                                  D             S )Nc                 R    i | ]#\  }}||t          |          k    rnd          $S )r   )rN   kvis      r7   
<dictcomp>zA_async_map_node_over_list.<locals>.slice_dict.<locals>.<dictcomp>   s6    DDD$!Q1#a&&1**QQ"-DDDr6   )items)dr   s    `r7   
slice_dictz-_async_map_node_over_list.<locals>.slice_dict   s%    DDDD!''))DDDDr6   c           	        	K   rt          j                     d }|                                 D ]K\  }}|r|D ]}t          |t                    r|} nt          |t                    rr |          n|} nL|| |           t          t
                    s$t                    rt          t
                    rt                    r,}                                 	                              }n8t                    }|                                 |	                              }t          ||          }	t          j        |           } nt                    }	t          j        |	          rd }
t#          j         |
|	||                     }t#          j        d           d {V  |                                r+|                                }                    |           d S                     |           d S t/          |          5   |	di | }d d d            n# 1 swxY w Y                       |           d S                     |           d S )Nc                 x   K   t          |||          5   | di | d {V cd d d            S # 1 swxY w Y   d S )Nr5   r   )fr<   r   
list_indexr
   s        r7   async_wrapperzH_async_map_node_over_list.<locals>.process_inputs.<locals>.async_wrapper  s      +Iy*MM / /%&QYYYY/ / / / / / / / / / / / / / / / / /s   /33r	   r   r5   )rS   before_node_executionr   rL   r   r!   r$   rU   VALIDATE_CLASSPREPARE_CLASS_CLONEtyper%   r'   build_nested_inputsgetattrinspectiscoroutinefunctionr   create_tasksleepr   r   appendr   )rH   indexinput_is_listexecution_blockr   r   rf   type_objclass_cloner   r   r   r   allow_interruptexecution_block_cbfuncr   pre_execute_cbr<   r   r   rJ   s                r7   process_inputsz1_async_map_node_over_list.<locals>.process_inputs   s      	*')))LLNN 	 	DAq   A!!%566  !-.. ;M"T"4"4Q"7"7"7ST ")e.?u%%%#122 'x}} 'TWYkIlIl 'C== H"H&&((("%"9"9'"B"BKK  $CyyH++---"*">">w"G"GK+HdKHH& 4VWEEF C&&*1-- '/ / / *==IyRW^d+e+e+effmA&&&&&&&&&99;; )![[]]FNN6*****NN4((((('	9eDD ) )Q[[[[F) ) ) ) ) ) ) ) ) ) ) ) ) ) )v&&&&&NN?+++++s   ,	III)r   )NF)r   r   maxvaluesrange)r<   r   r   rd   r   r   r   r   rJ   r   max_len_inputr   r   r   
input_dictr   s   ``` `````      @r7   rX   rX      s|     C%88M
>aDDN,A,A,C,CDDDDDE E E G4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,l  0n^QmLLLLLLLLLLL	!		nR          }%% 	0 	0A#NA66J .Q//////////Nr6   c                    g }dgt          | d                   z  }t          |d          r|j        }t          t	          t          | d                             |          D ]\  }|rog }| D ]T}t          |         t                    r|                    |                    9|                    |                    U|                    |           v|                    fd| D                        |S )NFr   OUTPUT_IS_LISTc                      g | ]
}|         S r5   r5   )rN   or   s     r7   rP   z%merge_result_data.<locals>.<listcomp>M  s    111A1Q4111r6   )	r   rV   r   zipr   rL   r   r   extend)r   r   outputoutput_is_listis_listvaluer   r   s          @r7   merge_result_datar  ;  s   FWs71:.Ns$%% ,+ %GAJ00.AA 
3 
3
7 		3E ' 'ad$455 'LL1&&&&LL1&&&&MM%    MM11111112222Mr6   c                    K   t          | ||||j        d|||	  	         d {V }t          d |D                       }|r|i d|fS t          ||          \  }	}
}|	|
|dfS )NT)r   r   r   rJ   c              3   t   K   | ]3}t          |t          j                  o|                                 V  4d S r@   r   rN   rs     r7   r   z"get_output_data.<locals>.<genexpr>R  s=      __A:a66Gqvvxx<______r6   F)rX   FUNCTIONanyget_output_from_returns)r<   r   r   rd   r   r   rJ   return_valueshas_pending_taskr   rk   has_subgraphs               r7   get_output_datar  P  s      3Iy#~_b_k  ~B  Wi  zH  RY  Z  Z  Z  Z  Z  Z  Z  Z  ZM__Q^_____ :b%)9996}cJJFB2|U**r6   c                 F   g }g g }d}t          t          |                     D ]}| |         }t          |t                    rd|v r                    |d                    d|v rrd}|d         }|                    dd           }t          |t                    r%t          |gt          |j                  z            }|                    ||f           d|v r||                    dd           }t          |t                    r%t          |gt          |j                  z            }|                    |           |                    d |f           8t          |t                    rP|j
        at          |j
        t                    r                    |j
                   n,                    |j
                                                   |j        gd}|j        }|j        }|j        7t          t          |j                  gt          |j                  z            }|                    ||f           $|j        q|j        }|j        7t          t          |j                  gt          |j                  z            }|                    |           |                    d |f           t          |t                    r%t          |gt          |j                  z            }|                    |           |                    d |f           |r|}	n&t          |          dk    rt          ||          }	ng }	t                      }
t                    dk    r&fdd                                         D             }
|	|
|fS )NFrk   expandTr   r   c                 0    i | ]fd D             S )c                 *    g | ]}|         D ]}|S r5   r5   )rN   rO   yr   s      r7   rP   z6get_output_from_returns.<locals>.<dictcomp>.<listcomp>  s*    ///!A$//Q!////r6   r5   )rN   r   uiss    @r7   r   z+get_output_from_returns.<locals>.<dictcomp>  s1    GGGAa////S///GGGr6   )r   r   rL   rm   r   rg   r   tupleRETURN_TYPESr"   rk   as_dictr  r   block_executionr  keys)r  r   r   subgraph_resultsr  r   r  	new_graphr   r   rk   r  s              @r7   r
  r
  X  s   G
CL3}%%&& +/ +/!a )	/qyy

1T7###1}}#hK	x..f&677 E"F8c#2B.C.C#CDDF ''F(;<<<<Qx..f&677 E"F8c#2B.C.C#CDDFv&&& ''v777.// 	/tadD)) /JJqt$$$$JJqt||~~...x##H	$0"$4Q5F$G$G#H3sO_K`K`#`aaF ''F(;<<<<%$0"$4Q5F$G$G#H3sO_K`K`#`aaFv&&& ''v777!-.. 71#C$4 5 5566NN1##T1I.... !	W		"7C00	B
 3xx!||GGGGQGGG2|##r6   c                 |    | d S t          | t          t          t          t          f          r| S t	          |           S r@   )rL   intr^   boolrh   )rO   s    r7   format_valuer    s7    yt	AUD#.	/	/ 1vvr6   c                 ~    |                      |          d         }t          j        |         }t          |dd          S )NrE   HAS_INTERMEDIATE_OUTPUTF)rR   rS   rT   r   )r=   r_   rE   ra   s       r7   _is_intermediate_outputr"    s:    ##G,,\:J)*5I97???r6   c           	          | j         d S |j        pi }|                     d|||                    dd           |d| j                    |j        |j        ||<   d S d S )Nexecutedr   r`   display_noder   r<   )	client_idrk   	send_syncrg   )serverr_   display_node_idr   r<   
ui_outputs	cached_uis          r7   _send_cached_uir-    s    	RI
Z7O_h_l_lmuw{_|_|  LU  "W  "W  Y_  Yi  j  j  jy$i
7 r6   c           	         ABCDEFK   |F|                     F          }|                    F          }|                    F          }|                    F          d         }|                    F          d         At          j        A         }|j                            F           d {V }|Zt           F|||
           t                      
                    F           |                    F|           t          j        d d fS d B	 F|	v rg }|	F         D ]q}t          |t          j                  r@	 |                    |                                           E# t&          $ r
}|	F= |d }~ww xY w|                    |           r|	F= t)          ||          \  D}}nDF|v r|F         }g }|D ]\  }}|s|                    |           g }|D ]r}t+          |          rL|d         |d         }}|                    |F          }|j        |         D ]}|                    |           ]|                    |           s|                    t/          |                     t1          ||          Dg }|F= d}ndt                                          F           t5          ||F|||          \  BC} j        '| _                             dF|d j                   |j                            F           d {V } | + |            } |j                            F|            d {V  tA          |tB                    rtE          |d          d u}!ntG          | dd           d u}!|!r|$                                }"d	|"d
<   tK          F| Bdd	|"           d {V }#tM          |#           d {V }#t?          tO          d |#D             g                     }#BCfd|#D             }#tQ          |#          dk    r*|#D ]}$|)                    F|$           t          j*        d d fS A Ffd}%Ffd}&	 tW          F| B|%|&|           d {V \  D}}}'tX          j-        j.        rt^          j0        dk    rtb          j2        3                                 tX          j4        5                                 tX          j6        7                                 tb          j8        9                                 n# tX          j-        j.        rt^          j0        dk    rtb          j2        3                                 tX          j4        5                                 tX          j6        7                                 tb          j8        9                                 w w xY w|'rKD|	F<   |:                    F          EDEfd}(t          j;         |(                       t          j*        d d fS tQ          |          dk    rDty          |          }F|||d|d|
F<    j        !                     dF||d j                   |r(g })g }*g }+g },t{          tQ          D                    D ]M}$D|$         \  }-}.|-|)                    d|.f           (|->                                D ]\  }/}0|*                    |/           |0                    dF          }1|?                    |/|0F|1           |0d         At          j        A         }t          |d          r |jA        d	k    r|+                    |/           t{          tQ          |.                    D ]J}$t+          |.|$                   r3|.|$         d         |.|$         d         }3}2|,                    |2|3f           K|)                    d	|.f           Ot?          |*          }*|jB        D ]2}4|4C                    F|*           d {V }5|5D                                 3|+D ]-}/|E                    |/           |F                    |/F           .|,D ]%}6|G                    |6d         |6d         F           &|)|F<   t          j*        d d fS t          |
                    F          D          }7|                    F|7           |j                            F|7           d {V  n# tX          j4        jI        $ r1}8t          jK        d           d|i}9t          jL        |9|8fcY d }8~8S d }8~8wt&          $ r}t          jN                    \  }:};}<t          |:          }=i }>B+i }>B>                                D ]\  }?}d |D             |>|?<   t          jP        d|            t          jP        t          jR                               d}@tX          j4        S                    |          rxd}@t          jK        d T                    tX          j4        U                                                     t          jP        d!           tX          j4        V                                 n,t          |t                    rd"t          |          v rd#Av rd$}@|d%T                    ||@          |=t          jY        |<          |>d&}9t          jL        |9|fcY d }~S d }~ww xY wt                      
                    F           Z                    F           t          j        d d fS )'NrH   rE   r   r-   F	executing)r`   r&  r<   check_lazy_statusTcreate_dynamic_tuple)r   rJ   c                 <    g | ]}t          |t                    |S r5   )rL   ro   r  s     r7   rP   zexecute.<locals>.<listcomp>  s)    *\*\*\TUVZI[I[*\1*\*\*\r6   c                 N    g | ]!}t          |t                    r
|vs|v |"S r5   )rL   rh   )rN   rO   rd   r   s     r7   rP   zexecute.<locals>.<listcomp>  sH     # # #AcARAR #^++qL/@/@ $%/@/@/@r6   c           
          | j         Lt                    d| j          dg g g d	}                    d|j                   t	          d           S | S )NzExecution Blocked: ExecutionBlocked	r<   r_   	node_typer$  exception_messageexception_type	tracebackcurrent_inputscurrent_outputsexecution_error)messagero   r(  r'  r   )blockmesrE   r$  r<   r)  r   s     r7   r   z#execute.<locals>.execution_block_cb  ss    =,%.#,%/$(NN-R5=-R-R*<%'*,+- C $$%6V=MNNN+D111 Lr6   c                 4    t          j        | d           d S Nr   )r   set_default_prefix)
call_indexr   s    r7   r   zexecute.<locals>.pre_execute_cb  s    /	:qIIIIIr6   )r   r   rJ   DEBUGc                  f   K   d D             } t          j        | ddi d {V                d S )Nc                 F    g | ]}t          |t          j                  |S r5   )rL   r   r   rM   s     r7   rP   z5execute.<locals>.await_completion.<locals>.<listcomp>'  s)    SSS1z!W\7R7RSQSSSr6   return_exceptionsT)r   gather)tasksoutput_dataunblocks    r7   await_completionz!execute.<locals>.await_completion&  sP      SSSSSE!.%H4HHHHHHHHHGIIIIIr6   )r_   r&  parent_nodereal_node_id)metar   r$  r%  override_display_idOUTPUT_NODE)rk   rl   zProcessing interruptedr_   c                 ,    g | ]}t          |          S r5   )r  rM   s     r7   rP   zexecute.<locals>.<listcomp>t  s    -N-N-N!l1oo-N-N-Nr6   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_   r8  r9  r:  r;  )[get_real_node_idget_display_node_idget_parent_node_idrR   rS   rT   rl   rg   r-  r   finish_progresscache_updater,   r2   rL   r   r   r   r   rZ   r
  r   r   r  r  start_progressrW   r'  last_node_idr(  r   setrU   r!   r#   r   copyrX   rY   sumr   make_input_strong_linkr4   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   rR  r   ensure_subcache_forclean_unusedadd_node
cache_linkadd_strong_linkrj   InterruptProcessingExceptionr[   r}   r3   sysexc_infofull_type_nameerrorr:  
format_excis_oomr]   debug_memory_summaryunload_all_modelsRuntimeErrorrh   	format_tbadd)Gr)  r=   cachescurrent_itemr   r$  r<   r   pending_subgraph_resultspending_async_nodesr+  rO  r*  parent_node_idrH   ra   r   r   r  ex	output_uir  cached_resultsresolved_outputsis_subgraphr   resolved_outputsource_nodesource_outputnode_cachedr   rJ   r   lazy_status_presentv3_data_lazyrequired_inputsr   r   r   has_pending_tasksrM  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typre   tbr9  input_data_formattedr   tipsrE   rd   r   rK  rL  r   sG   `    ``                                                          @@@@@@r7   executer    s     I--i88L33I>>O11)<<N	**84F##I..|<J)*5I>%%i00000000F	?FIzZZZ,,Y777##Iv666't44NK<+++G(3 	& 	&a.. &!qxxzz2222$ ! ! !/	: !
 NN1%%%%#I.3J7T]3^3^0KLL2225i@N!'5 D D#V" D$++F3333&(O# 6 6"1:: 69:1qtK*8*B*B;PY*Z*ZK%0%8%G : : / 6 6q 9 9 9 9: ,2215555$++E/,B,BCCCC+,<iHHKI(3 LL  //	:::4B69V_aoqz  }G  5H  5H1NL'+&5#  	Sbqz.|.|  E  O  P  P  P**955555555C{ikkn((C888888888)%788 Z&9)EX&Y&Yae&e##&-c3F&M&MUY&Y#" A&||~~7;34(A)YX[]k  nA  SW  am  )n  )n  )n  #n  #n  #n  #n  #n  #n(J?([(["["["["["["["%c*\*\o*\*\*\^`&a&a"b"b# # # # #o # # # ''!++, L L&==iKKKK+3T4@@! ! ! ! ! ! ! ! !$J J J J JJP_`iktvy  |J  _q  BP  Za  Qb  Qb  Qb  Kb  Kb  Kb  Kb  Kb  KbGY6G*8 J|w..#+33555*==???(@@BBB*GGIII *8 J|w..#+33555*==???(@@BBB*GGIIIIJ ! =1<#I.(;;IFF      #$4$4$6$6777'/t<<y>>A 2)<<I  )$3#1$0	  $% %Jy! +  yRamv  FO  .Q  .Q  SY  Sc  d  d  d "	9NLN!3{++,, @ @*5a.'	<$"))5,*?@@@@.7oo.?.? ; ;*$++G444%.]]3H)%T%T
!44WiT^___%.|%<
$)$=j$I	"9m<< ;AVZ^A^A^*11':::"3|#4#455 Q Q"<?33 Q8DQ8JLYZO\]L^+L,33\;4OPPP"))4*>????|,,L ( (!&!:!:9l!S!SSSSSSS%%'''') > >''000))'9====( L L..tAwQKKKK2@$Y/#+T488 JNN9$=$={SSS##I{;;;n  K8888888888!> = = =-... |
  '<<<<<<< < < <\^^
Q',,!%#%  . 4 4 6 6 O Of-N-Nv-N-N-N$T**ARAABBBi*,,---!((,, 	{ rDL.55e6L6a6a6c6cddeeeMDEEE"446666L)) 	{/ER/P/PV_cmVmVm {D $!)T!:!:,",R002
 
  ';;;;;;;;<> ((333LL#T400s   *c ?'E'&c '
E;1E66E;;J?c ;c 
!T +Bc BV!!Ac 1Jc 3Ac j;$&d
j;j;Fj60j;6j;c                   Z    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dS )PromptExecutorFNc                 X    || _         || _        || _        |                                  d S r@   )r   r   r)  reset)rB   r)  r   r   s       r7   rC   zPromptExecutor.__init__  s(    $$

r6   c                 b    t          | j        | j                  | _        g | _        d| _        d S )N)r   r   T)rx   r   r   r  status_messagessuccessr   s    r7   r  zPromptExecutor.reset  s-    $/doVVV!r6   data	broadcastc                     i |dt          t          j                    dz            i}| j                            ||f           | j        j        |r(| j                            ||| j        j                   d S d S )N	timestampi  )r  timer  r   r)  r'  r(  )rB   eventr  r  s       r7   add_messagezPromptExecutor.add_message  s    

TY[[4/00
 
 	##UDM222; ,	,K!!%t{/DEEEEE -,r6   c                 x   |d         }||         d         }t          |t          j        j                  r.|||t	          |          d}	|                     d|	d           d S |||t	          |          |d         |d         |d	         |d
         t	          |          d	}	|                     d|	d           d S )Nr_   rE   )r<   r_   r7  r$  execution_interruptedTr  r8  r9  r:  r;  r6  r=  F)rL   ra  rh  ru  ro   r  )
rB   r<   r   r<  r$  ry  r  r_   rE   r@  s
             r7   handle_execution_errorz%PromptExecutor.handle_execution_error  s    	"G_\2
 b%0MNN 	F&"' NN	 C 4cTJJJJJ '"' NN%*+>%?"'(8"9";/"'(8"9#'#8#8
 
C .uEEEEEr6   r  r<   c           
      4   t                      sd S t                      D ]x}	 |dk    r|                    |           n|dk    r|                    |           ;# t          $ r1}t          j        d|j        j         d| d|            Y d }~qd }~ww xY wd S )NstartendzCache provider z
 error on : )	r(   r)   on_prompt_starton_prompt_endrZ   _cache_loggerr\   	__class__r/   )rB   r  r<   providerrf   s        r7   _notify_prompt_lifecyclez'PromptExecutor._notify_prompt_lifecycle  s    #%% 	F,.. 	m 	mHmG##,,Y7777e^^**9555 m m m%&k8J8S&k&k_d&k&khi&k&kllllllllm	m 	ms   7A
B$'BBc                 Z    t          j        |                     ||||                     d S r@   )r   runexecute_async)rB   r   r<   r   execute_outputss        r7   r  zPromptExecutor.execute  s,    D&&vy*oVVWWWWWr6   c                 V   K   t          |                    d                     t          j        d           d|v r|d          j        _        nd  j        _        g  _                             dd|id                                d|           t           j
        d         d	z            }t           j
        d
         d	z            } j        t          j        k    r j        j        j        nd }t"          j                            ||           	 t)          j                    5  t-          |          }t/          ||           t1          t3           j                             t5          || j        j                  }	 j        j        D ]E}
|
                    ||                                |	           d {V  |
                                 Ft?          |                                          }tA          j!         fd|D               d {V }d tE          ||          D             }t"          j#        $                                                      d||dd           i }i }i }tK                      }tM          | j        j                  } j        j        '                                }t?          |          D ]}|(                    |           |)                                s|*                                 d {V \  }}}|! +                    ||j,        ||||           n|
J d            t[           j        | j        ||||||||           d {V \  }}}|t\          j/        k     _0        |t\          j/        k    r! +                    ||j,        ||||           nt|t\          j1        k    r|2                                 n|3                                  j        t          j        k    ru ||           |ti          j5                    j6        z
  }t"          j#        7                    |dz             }||k     r'|dk    rtq          j9        d            ||d           |)                                |'                                D ]m}||v rtu          ||          s j        j                            |           d {V }|.|;                    |          }ty           j        |||||           n                     dd|id           i }i }|=                                D ]\  }}|d         ||<   |d         ||<   ||d _>        d  j        _?        t"          j#        j@        rt"          j#        A                                 d d d            n# 1 swxY w Y   t"          j                            d d                                d|           d S # t"          j                            d d                                d|           w xY w)Npreview_methodFr'  execution_startr<   r  r  rz   i   @ram_inactivec              3   V   K   | ]#}j         j                            |          V  $d S r@   )r  rl   rg   )rN   r_   rB   s     r7   r   z/PromptExecutor.execute_async.<locals>.<genexpr>  s6      OO7dk)--g66OOOOOOr6   c                     g | ]	\  }}||
S r@   r5   )rN   r_   r   s      r7   rP   z0PromptExecutor.execute_async.<locals>.<listcomp>  s,           /) )))r6   execution_cached)rS   r<   z(Node ID should not be None at this pointi    i   g?T)free_activeexecution_successr   rP  )rl   rP  r   r  )Br   rg   rS   interrupt_processingr)  r'  r  r  r  r  r   r   rq   rv   r  rl   ram_releasera  rb  set_ram_cache_release_statetorchinference_moder   r   r   r   r;   r   
set_promptr  rq  ro   r   rI  r   rh  cleanup_models_gcr]  r   all_node_idsrr  is_emptystage_node_executionr  original_promptr  r,   r3   r  r4   unstage_node_executioncomplete_node_executionpsutilvirtual_memory	available	free_pinsr  r   r"  rW  r-  r   history_resultr\  DISABLE_SMART_MEMORYr}  )rB   r   r<   r   r  ram_headroomram_inactive_headroomram_release_callbackdynamic_promptis_changed_cacher  node_idscache_resultscached_nodesr  r  ui_node_outputsr$  r   r<  r_   ry  r  r   ram_shortfallfreedr   r*  r+  meta_outputsui_infos   `                              r7   r  zPromptExecutor.execute_async  s]     :>>*:;;<<<"5)))*$$$.{$;DK!!$(DK!!*k9,EQVWWW%%gy9994?51Y?@@ #DON$Cy$Q R RBF/U^UkBkBkt{2>>qu;;<PR^___V	<%'' R? R?!.v!6!6$Y???$%9$+%F%FGGG#1)^T[M`#a#a ![_ ) )E**>6;;==JZ[[[[[[[[[&&((((..&-nOOOOhOOO' ! ! ! ! ! !   36x3O3O     
 &88:::  !3)5INN(- ! / / / ,.(&(#"$55!.~t{?R!S!S"&+"5"B"B"D"D#O44 5 5G"++G4444(1133 &g/=/R/R/T/T)T)T)T)T)T)T&GUB(33I~?]_npxz  BD  E  E  E"..0Z....5dk>SWS^`gisu}  @I  KY  [s  uH  JY  /Z  /Z  )Z  )Z  )Z  )Z  )Z  )Z%FE2#)_-D#DDL!88833I~?]_npxz  BD  E  E  E?#:::&==????&>>@@@)*@@@,,-BCCC(4v7L7N7N7X(X % 6 @ @QbAb c c =00$'777 $
4 0 0 0004PPPP3 )1133 &g: $2#>#>#@#@ w w"h..$6~wOO %$'+{':'>'>w'G'G!G!G!G!G!G!G!-.<.P.PQX.Y.YO+DK/SY[dfuvvv$$%8K:T`e$fff
!(7(=(=(?(? < <$GW*1(*;Jw',3FOL)))(' '# ,0()> ?*<<>>>eR? R? R? R? R? R? R? R? R? R? R? R? R? R? R?h #??aHHH))%;;;;; #??aHHH))%;;;;s1   W0 *Q7V-!W0 -V11W0 4V15W0 08X()FN)r/   r0   r1   rC   r  rm   r  r  r  rh   r  r  r  r5   r6   r7   r  r    s             
Ft F F F F FF F F8mc mc m m m m 57 X X X X ACTV i< i< i< i< i< i<r6   r  c                   12K   |g }|}||v r||         S ||v r||                     |          d          |gz   }t          t                              |                    }d                    fd|D                       }|D ]}	ddd||	|ddg|	f||	<   ||         S |         d         }
|         d	         }t
          j        |         }g }d
}d }g }d}t          |t                    r@|	                                }t          j        ||
          \  }}}d}t          ||          }n'|	                                }d}t          ||d           }|$t          j        |          }|j        }|j        d u}i }t%          |                    di                                         t%          |                    di                               }|D ]}t+          |||          \  }}}|J ||
vrE|dk    r>|s| n|                    d          d         }dd|d|id}|                    |           e|
|         }||f} t1          |t                    rt3          |          dk    r"dd| || |dd}|                    |           |d         }!|!         d	         }"t
          j        |"         j        }#|#|d                  }$|$||<   d|vr>t7          |$|          s.| d|$ d| d}dd||| |$|d d}|                    |           >	 |                    |           	 t9          | |!||           d {V }#|                                 n# |                                 w xY w|#d         du rd}# t<          $ rv}%t?          j                     \  }&}}'d}tC          |&          }(d!d"tE          |%          || tE          |%          |(tG          j$        |'          |d#dg})d|)|!f||!<   Y d }%~%'d }%~%ww xY w	 t1          |t                    rd$|v r|d$         }||
|<   |d%k    rtK          |          }||
|<   |d&k    rtM          |          }||
|<   |d'k    rtE          |          }||
|<   |d(k    rtO          |          }||
|<   nR# t<          $ rE}%d)d*| d+| d,| d,|% || |tE          |%          d-d}|                    |           Y d }%~%	d }%~%ww xY w||vr|sd.|v rI||d.         k     r=d/d0(                    ||d.                   | || |dd}|                    |           fd1|v rI||d1         k    r=d2d3(                    ||d1                   | || |dd}|                    |           t1          |t                    s|tR          j*        j+        k    r|tR          j*        j+        k    r|                    d4g           1n|1|                    d5d          }*|*r$t1          |t                    r1fd6|D             }+n	|1vr|gng }+|+r| },d7}-t3          1          d8k    rd9t3          1           d}-d },ntE          1          }-d:d;| d<d,                    d= |+D                        d>|- ||,|dd}|                    |           Րt3          |          dk    s|rtY          |
||          \  }.}}i }/|.D ]}||v s|r|.|         |/|<   d|v r|g|/d<   t[          | |||/||?           d {V 2t]          2           d {V 2|/D ]k}t_          2          D ]Y\  }0}#|#d
urPt1          |#t`                    s;| }|#dur|d@tE          |#           z  }dAdB|d|id}|                    |           YZl|                    |d
g |f          22d         o|d
u o| 2d         2fdC|D             z   |f22||<   2S )DNz -> c              3   @   K   | ]}| d |         d          dV  dS )z (rE   )Nr5   )rN   r_   r   s     r7   r   z"validate_inputs.<locals>.<genexpr>I  s>       p pT[G!O!Ovg|/L!O!O!O p p p p p pr6   Fdependency_cyclezDependency cycle detected)r_   cycle_nodesr   r>  details
extra_inforH   rE   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   r8  r9  r:  r  	__value__INTFLOATSTRINGBOOLEANinvalid_input_typez&Failed to convert an input value to a z valuez, )r  r   r  r8  minvalue_smaller_than_minzValue {} smaller than min of {}r   value_bigger_than_maxzValue {} bigger than max of {}optionsmultiselectc                     g | ]}|v|	S r5   r5   )rN   r   combo_optionss     r7   rP   z#validate_inputs.<locals>.<listcomp>  s#    'Q'Q'Qa!=:P:P:P:P:Pr6   rT     z(list of length value_not_in_listzValue not in listr  c              3   4   K   | ]}t          |          V  d S r@   )repr)rN   r   s     r7   r   z"validate_inputs.<locals>.<genexpr>   s(      8W8WQa8W8W8W8W8W8Wr6   z not in rI   z - custom_validation_failedz!Custom validation failed for nodec                 (    g | ]}|d          v|S )r-   r5   )rN   ry  rets     r7   rP   z#validate_inputs.<locals>.<listcomp>K  s'    CCCEuCF/B/B%/B/B/Br6   )1r   ro   rm   fromkeysjoinrS   rT   rU   r!   r   r'   r   r#   r   r   getfullargspecr
   varkwr]  rg   unionr   splitr   rL   r   r  r   r  poprZ   rv  rw  rx  rh   r:  r  r  r^   r  r]   r&   Comboio_typerW   rX   rY   	enumerater   )3r<   r   item	validatedvisitingr   cycle_path_nodesr  
cycle_pathr_   rH   rE   	obj_classerrorsvalidrJ   validate_function_inputsvalidate_has_kwargsclass_inputsre   validate_function_namevalidate_functionargspecreceived_typesr   rO   
input_typer   r  r  ry  valr}   o_ido_class_typer  r  r  r  r  r9  reasonsis_multiselectinvalid_valsr   	list_inford   input_filteredr   r  r  s3    `                                               @@r7   r  r  >  s
     II##H#HNN9$=$=$>$>?9+M4==)9::;;[[ p p p p_o p p ppp
" 		 		G"'*6%&#. 	+ + * "Ig ##Ix(F	"<0J)*5IFEG!)/00 	M ,,..#&#A,PV#W#W a!2/	;QRR ,,..!2#I/EtLL$():;;#*< %m47N|''
26677==c,BRBRS]^`BaBa>b>bccL v! v!1?	1l1[1[.
NJ%%%F??++(/EQ&&QWWS\\"5E4:&$a#	  e$$$QiJ'c4   c	!3xx1}}.c"#v&'(,*-# #		 	 e$$$q6D!$<5L),7DAc!fIM -N1$<<<EXYfhrEsEs<bbbbU_bbb2J&&'(,)6'*	# #	
 
 e$$$	***#-iyRZ[[[[[[[[ALLNNNNHLLNNNNQ45==!E !     \^^
Q!/!4!4?E"2ww&'(,-0WW*8%.%8%<%<'*# #	   $)'4"8	$%(#
 c4(( ("c))!+.$'q	&&c((C #F1I((**C #F1I))c((C #F1I**s))C #F1I   0Z
ZZZ"#22s22b22&'(,*--0WW	# #	
 
 e$$$ 0009L0J&&3E1B+B+B 8#D#K#KCQ[\aQb#c#c&'6*+,0.1' '		 	E MM%(((J&&3E1B+B+B 7#C#J#J3PZ[`Pa#b#b&'6*+,0.1' '		 	E MM%(((j$// !!:AQ3Q3Q!RX%555(2y"(E(E(2%/^^M5%I%IN% Q*S$*?*? Q'Q'Q'Q'Q3'Q'Q'Q03=0H0Huub# !'+$&	 }--22(P3};M;M(P(P(PI+/LL(+M(:(:I %8':*+'l'ltyy8W8W,8W8W8W/W/W'l'laj'l'l./0<25+ +		! 	! e,,, 
#$$q((,?(%3FIy%Q%Q"7 	6 	6A,,,0C,$21$5q!444-;,<N=)-iI~_u  @G  H  H  H  H  H  H  H  H  H6s;;;;;;;; 	 	A!#  1D==A7G)H)H=!"fG~~>Q>>1 !;#F#*(!'	 E MM%(((" --	D"i#8
9
9C 	A/5D=/ZACCCCVCCCCC IiJsJ   N-MNM11N
PA+O??PBR
S&!:S!!S&c                 D    | j         }|dk    r| j        S |dz   | j        z   S )Nbuiltinsr  )r0   r1   )klassmodules     r7   rx  rx  R  s0    F!!C<%,,,r6   partial_execution_listc           
        K   t                      }|D ]}d||         vrQ||         }|                    di                               d          }dd|pd|  dd| d	|d |d
d}d|g i fc S ||         d         }t          j                            |d           }	|	M||         }|                    di                               d|          }dd| dd| d	|||d
d}d|g i fc S t	          |	d          r$|	j        du r|||v r|                    |           t          |          dk    rdddi d}d|g i fS t                      }
g }i }i }|D ]}d}g }	 t          | |||           d {V }|d         }|d         }nq# t          $ rd}t          j                    \  }}}d}t          |          }ddt          |          |t          j        |          ddg}d||f||<   Y d }~nd }~ww xY w|du r|
                    |           t!          j        d| d           t          |          dk    r?t!          j        d           |D ](}t!          j        d|d          d|d                     )|||fgz  }|                                D ]\  }}|d         }|d         }|durt          |          dk    r||vr]||         d         }|g |d||<   t!          j        d | d!| d           |D ](}t!          j        d|d          d|d                     )||         d"                             |           t!          j        d#           t          |
          dk    rdg }|D ]0\  }}|D ](}|                    |d          d|d                     )1d$                    |          }d%d&|i d}d|t+          |
          |fS dd t+          |
          |fS )'NrE   _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_   rE   
node_titler  Fz2' not found. The custom node may not be installed.rR  Tr   prompt_no_outputszPrompt has no outputsrT  r-   exception_during_validationzException when validating node)r9  r:  z%Failed to validate prompt for output :z* (prompt):z  - r>  r  r  )r+  dependent_outputsrE   z*  rK  zOutput will be ignored
 prompt_outputs_failed_validationz Prompt outputs failed validation)r]  rg   rS   rT   rV   rR  r  r   r  rZ   rv  rw  rx  rh   r:  r  r[   ry  r   r   r  ro   )r<   r   rA  rl   rO   	node_datarG  ry  rE   class_good_outputsr+  node_errorsr&  r   r,  r8  mr  r  re   r  r9  reasonr_   r   errors_lists                              r7   validate_promptrV  X  s     eeG # #vay((q	I"w3377@@J+ NJ$<***  N  N  N,,,, "&", 		 	E 5"b))))AY|,
*..z4@@>q	I"w3377LLJ+bJbbb,,,, ",", 		 	E 5"b))))6=)) 	f.@D.H.H%-6L1L1LA
7||q'.	
 
 ub"%%55LFKI 14 14	/%iIFFFFFFFFAaDEdGG 	/ 	/ 	/JCBE+C00N5;r77&4!*!4R!8!8 	  G "7A.IaLLLLLL	/ D==QMF!FFFGGG7||am,,,% S SFM"Q	):"Q"QfY>O"Q"QRRRR7|n$F#,??#4#4 H Hq	 ) $$W)9)9k11%+G_\%B
&-13*40 0G,
  &B:&B&B&B&B&BCCC&- [ [F#M*Y	1B*Y*YfYFW*Y*YZZZZ()<=DDQGGGM23333
<A 	N 	NIAv N N""eI&6#L#L%	:J#L#LMMMMNii,, 79"	
 
 ud<00+>>$\**K88s   "(F
G9AG44G9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dS )PromptQueuec                     || _         t          j                    | _        t          j        | j                  | _        d| _        g | _        i | _        i | _	        i | _
        d S rB  )r)  	threadingRLockmutex	Condition	not_emptytask_counterqueuecurrently_runninghistoryflags)rB   r)  s     r7   rC   zPromptQueue.__init__  sU    _&&
",TZ88
!#


r6   c                     | j         5  t          j        | j        |           | j                                         | j                                         d d d            d S # 1 swxY w Y   d S r@   )r\  heapqheappushr`  r)  queue_updatedr^  notify)rB   r%  s     r7   putzPromptQueue.put  s    Z 	$ 	$N4:t,,,K%%'''N!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   AA""A&)A&Nc                    | j         5  t          | j                  dk    r[| j                             |           |&t          | j                  dk    r	 d d d            d S t          | j                  dk    [t	          j        | j                  }| j        }t          j        |          | j	        |<   | xj        dz  c_        | j
                                         ||fcd d d            S # 1 swxY w Y   d S )Nr   )timeoutr-   )r^  r   r`  r   re  heappopr_  r^  deepcopyra  r)  rg  )rB   rk  r%  r   s       r7   rg   zPromptQueue.get  sQ   ^ 
	 
	dj//Q&&##G#444&3tz??a+?+?	
	 
	 
	 
	 
	 
	 
	 
	dj//Q&& =,,D!A(,d(;(;D"1%"K%%'''!9
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	 
	s   AC1$B C11C58C5c                   F    e Zd ZU ed         ed<   eed<   ee         ed<   dS )PromptQueue.ExecutionStatus)r  ry  
status_str	completedmessagesN)r/   r0   r1   r   rn   r  r   rh   r5   r6   r7   ExecutionStatusro    s=         .////s)r6   rs  statusro  c                 :   | j         5  | j                            |          }t          | j                  t
          k    r9| j                            t          t          | j                                       d }|&t          j	        |
                                          }| ||          }|i |d| j        |d         <   | j        |d                                      |           | j                                         d d d            d S # 1 swxY w Y   d S )N)r   rl   rt  r-   )r\  ra  r!  r   rb  MAXIMUM_HISTORY_SIZEnextiterr^  rm  _asdictupdater)  rg  )rB   item_idr  rt  process_itemr   status_dicts          r7   	task_donezPromptQueue.task_done  sR   Z 	( 	(+//88F4<  #777  d4<&8&8!9!9:::*.K!"mFNN,<,<=='%f-- !%' 'DL#
 L#**>:::K%%'''%	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   C;DDDc                     | j         5  g }| j                                        D ]}||gz  }	|t          j        | j                  fcd d d            S # 1 swxY w Y   d S r@   )r\  ra  r   r^  rm  r`  )rB   outrO   s      r7   get_current_queuezPromptQueue.get_current_queue  s    Z 	4 	4C+2244  s
tz223		4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   ?AAAc                     | j         5  d | j                                        D             }t          j        | j                  }||fcd d d            S # 1 swxY w Y   d S )Nc                     g | ]}|S r5   r5   rM   s     r7   rP   z:PromptQueue.get_current_queue_volatile.<locals>.<listcomp>  s    BBBQqBBBr6   )r\  ra  r   r^  r`  )rB   runningqueueds      r7   get_current_queue_volatilez&PromptQueue.get_current_queue_volatile  s    Z 	% 	%BB$"8"?"?"A"ABBBGYtz**FV$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s   A AAAc                     | j         5  t          | j                  t          | j                  z   cd d d            S # 1 swxY w Y   d S r@   )r\  r   r`  ra  r   s    r7   get_tasks_remainingzPromptQueue.get_tasks_remaining  s    Z 	A 	Atz??S)?%@%@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   )>AAc                     | j         5  g | _        | j                                         d d d            d S # 1 swxY w Y   d S r@   )r\  r`  r)  rg  r   s    r7   
wipe_queuezPromptQueue.wipe_queue  s    Z 	( 	(DJK%%'''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   !6::c                    | j         5  t          t          | j                            D ]} || j        |                   rt          | j                  dk    r|                                  n3| j                            |           t          j        | j                   | j        	                                  d d d            dS 	 d d d            n# 1 swxY w Y   dS )Nr-   TF)
r\  r   r   r`  r  r!  re  heapifyr)  rg  )rB   functionrO   s      r7   delete_queue_itemzPromptQueue.delete_queue_item$  s2   Z 		  		 3tz??++    8DJqM**  4:!++))))
q)))dj111K--///		  		  		  		  		  		  		  		   		  		  		  		  		  		  		  		  		  		  		  		  		  		  		  us   B4C	CCCr   c                    | j         5  ||i }d}|dk     r|t          | j                  |z
  }| j        D ]C}||k    r6| j        |         }| ||          }|||<   |t          |          |k    r n|dz  }D|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xY w Y   d S )Nr   r-   )r\  r   rb  r^  rm  )	rB   r<   	max_itemsoffsetmap_functionr  r   r   ps	            r7   get_historyzPromptQueue.get_history1  s   Z 	 	 A::)"7 ..:F  AF{{ LO'3 ,QA!"A$0SXX5J5J!EFAA	 	 	 	 	 	 	 	  dl**L+'a((AA$QA!1~-	 	 	 	 	 	 	 	0 1	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A2C;CCC!$C!c                 T    | j         5  i | _        d d d            d S # 1 swxY w Y   d S r@   )r\  rb  r   s    r7   wipe_historyzPromptQueue.wipe_historyL  su    Z 	 	DL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   !!c                 |    | j         5  | j                            |d            d d d            d S # 1 swxY w Y   d S r@   )r\  rb  r!  )rB   id_to_deletes     r7   delete_history_itemzPromptQueue.delete_history_itemP  s    Z 	1 	1L\4000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   155c                     | j         5  || j        |<   | j                                         d d d            d S # 1 swxY w Y   d S r@   )r\  rc  r^  rh  )rB   r   r  s      r7   set_flagzPromptQueue.set_flagT  s    Z 	$ 	$#DJtN!!###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   $9= =Tc                     | j         5  |r| j        }i | _        |cd d d            S | j                                        cd d d            S # 1 swxY w Y   d S r@   )r\  rc  r^  )rB   r  r  s      r7   	get_flagszPromptQueue.get_flagsY  s    Z 	) 	) )j
		) 	) 	) 	) 	) 	) 	) 	) z((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   AAAAr@   )NNr   N)T)r/   r0   r1   rC   ri  rg   r   rs  r   r~  r  r  r  r  r  r  r  r  r  r  r5   r6   r7   rX  rX    sA         $ $ $       *    QU( ("#@A( ( ( (.4 4 4% % %A A A( ( (
     6  1 1 1$ $ $
) ) ) ) ) )r6   rX  )FNNN)NNNr@   )br^  re  r   r[   r  rv  rZ  r  r:  enumr   typingr   r   r   r   r   r   r  comfy.cli_argsr
   comfy.memory_managementra  comfy.model_managementcomfy.model_prefetchcomfy_aimdo.model_vbarre  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,   rZ   r9   r;   rj   rq   rx   SENSITIVE_EXTRA_DATA_KEYSrW   map_node_over_listrY   rX   r  r  r
  r  r"  r-  r  r  r  rx  ro   rh   rV  rv  rX  r5   r6   r7   <module>r     s        



                = = = = = = = = = = = = = =                         - - - - - -                              > = = = = = = = : : : : : : y y y y y y y y y y y y 4 4 4 4 4 4 F F F F F F ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ $ $ $ $ $ $ $ $ o o o o o o o o o o    d   
	 	 	 	 	 	 	 	)( )( )( )( )( )( )( )(X       
       ' ' ' ' ' ' ' 'R J @DPTac @1 @1 @1 @1D  
S 
S 
SL L L L^  *+ + + +?$ ?$ ?$B  @ @ @( ( (`1 `1 `1Dj< j< j< j< j< j< j< j<ZR R R Rh- - -w9U4PS9VZ?E[ w9 w9 w9 w9r  M) M) M) M) M) M) M) M) M) M)r6   