64#h71ddlmZddlmZmZddlZddlmZddlm Z m Z m Z Gdde Z Gdd e ZGd d e ZGd d Z dddZGddZGddeZGddZdS)) annotations)TypeLiteralN)is_link) ComfyNodeABC InputTypeDictInputTypeOptionsceZdZdS)DependencyCycleErrorN__name__ __module__ __qualname__||_i|_i|_i|_dSN)original_promptephemeral_promptephemeral_parentsephemeral_display)selfrs r__init__zDynamicPrompt.__init__s(. "!#!#rc||jvr |j|S||jvr |j|Std|d)NNode z not found)rrrr node_ids rget_nodezDynamicPrompt.get_nodesT d+ + +(1 1 d* * *'0 0 ; ; ; ;<<r@rB input_infoinput_category input_type extra_infos rget_input_inforR<s  :9#8#8#:#:LJN\!!jL4L&L&L#!*-j9 | # # l:6N(N(N#!*-j9 \ ! !jL4J&J&J!!(+J7 AJ :]  ~z 11rcFeZdZdZdZdZdZd dZdZd Z d Z d Z dS) TopologicalSortc>||_i|_i|_i|_dSr) dynprompt pendingNodes blockCountblocking)r rVs rr!zTopologicalSort.__init__bs#" rc|j|d}tj|}t ||S)N class_type)rVr&nodesNODE_CLASS_MAPPINGSrR)r unique_idr@r[r>s rrRzTopologicalSort.get_input_infohs9^,,Y77 E -j9 i444rc |j|d}||vrtd|d|d||}t|std|d|d|\}}||||dS)Ninputsr#z says it needs input z+, but there is no input to that node at allz, but that value is a constant)rVr&rradd_strong_link)r to_node_idto_inputr`value from_node_id from_sockets rmake_input_strong_linkz&TopologicalSort.make_input_strong_linkms((44X> 6 ! ! !!!(!!!AA Ax u~~ t !r!r!r(!r!r!rss s$)! k \; CCCCCrc||sa||||j|vr%i|j||<|j|xxdz cc<d|j|||<dSdS)NrKT) is_cachedadd_noderYrX)r rerfrbs rrazTopologicalSort.add_strong_linkws~~l++ H MM, ' ' '|!<<<:< l+J7 +++q0+++CGDM, ' 3K @ @ @  H HrFNcf|g}g}t|dkr|}||jvr2d|j|<d|j|<i|j|<|j|d}|D]}||} t| r|| \} } || |vr%|||\} } } | duo d| vo| d}|s|sB| | s-| | | | | |ft|dk|D] }|j | dS)NrTr`lazy) rMpoprWrXrYrVr&rrRriappendra)r node_unique_id include_lazysubgraph_nodesnode_idslinksr^r`r@rdrerf_rNis_lazylinks rrjzTopologicalSort.add_nodes"#(mma ID---+/D i ()*DOI &')DM) $^,,Y77AF$ M M z*5>>M05-L+%1l.6X6X '+':':9j'Q'Q$Aq*(4d:9MdR\]cRdG$MGMT^^L=Y=YM  555 lK%KLLL)(mma, ( (D D $ ' ' ' ( (rcdS)NFrr$s rrizTopologicalSort.is_cachedsurc*fdjDS)Nc6g|]}j|dk|Sr)rX).0r%r s r z3TopologicalSort.get_ready_nodes..s+ZZZGDOG>Q  2244L'q/K'  "&."D"DW"M"M"g--"1KE.&&ABBB&%(WW">"$ M* *"88CC"D$..rcfd}|D]}||r|cS|D]#}j|D]}||r|ccS$|D]5}j|D]%}j|D]}||r|cccS&6|dS)Ncj|d}tj|}t |dr |jdkrdSdS)Nr[ OUTPUT_NODETF)rVr&r\r]hasattrr)r%r[r>r s r is_outputz6ExecutionList.ux_friendly_pick_node..is_outputsS0099,GJ1*=Iy-00 Y5Jd5R5Rt5rr)rY)r node_listrr%rblocked_node_id1s` rrz#ExecutionList.ux_friendly_pick_nodes      !  Gy!!  ! # #G#'=#9 # #9_--#"NNNNN# # ! ' 'G#'=#9 ' '(, o(F''$ y!122'&'' ' |rc&|jJd|_dSr)rr:s runstage_node_executionz$ExecutionList.unstage_node_executions"..."rcL|j}||d|_dSr)rrr$s rcomplete_node_executionz%ExecutionList.complete_node_executions*% g"rcd|jD|jD]D}|j|D]4}d|j||vr d||<5EfdD}t|dkrA|D]}D]}||vr ||=|=fdD}t|dkAt S)Nci|]}|iSrr)r{r%s r z4ExecutionList.get_nodes_in_cycle..sEEEwwEEErTcFg|]}t|dk|SrzrMr{r% blocked_bys rr|z4ExecutionList.get_nodes_in_cycle..s1XXX#j>Q:R:RVW:W:WW:W:W:WrrcFg|]}t|dk|Srzrrs rr|z4ExecutionList.get_nodes_in_cycle.. s1\\\Wc*WBU>V>VZ[>[>[>[>[>[r)rWrYvaluesrMlistr8)r rerb to_remover%rs @rrz ExecutionList.get_nodes_in_cycles:FE$2CEEE  M @ @L"mL9 @ @ 4=6zBIIKKKK;?Jz*<8 @YXXXJXXX )nnq  $ ( (",<r?r@rArBrCrDrE) __future__rtypingrrr\comfy_execution.graph_utilsrcomfy.comfy_types.node_typingrrr Exceptionr rrrrRrTrrrrrrs"""""" //////WWWWWWWWWW     9        Y           )$)$)$)$)$)$)$)$\*.#2#2#2#2#2JH+H+H+H+H+H+H+H+Tc'c'c'c'c'Oc'c'c'Jr