
    +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mZ d dl	Z	d dl
mZ d dlmZmZ d dlZd dlZe j                            d          Ze ed            ed           ej                            e           e j                            e j                            ed                    s ed	            ed           d dlZd d
lmZ d dlmZ d dlmZ  d dlm!Z! d dl"m#Z# d dlm$Z$ e j        %                    e j        &                    e'                    Z(h de_)        g de_*        i e_+        e j                            e j                            ej(        d                    rZ e,e j                            ej(        d          ddd          5 Z- ej.        e-          e_+        ddd           n# 1 swxY w Y   e j                            e j                            ej(        d                    r e,e j                            ej(        d          ddd          5 Z/e/0                                D ]6Z1e12                                Z3e3dk    rej)        4                    e3           7	 ddd           n# 1 swxY w Y   d Z5 e5              e j6                     d Z7 e7              G d d          Z8 e8            Z9 G d de:          Z;dd Z<dd!Z=dd"Z>dd#e?d$e@d%e?fd&ZAdd'ZBd( ZCd) ZDdd*ZEdd#e?fd+ZFdd,ZGdd-ZHdd.ZId/ ZJd0 ZKd1 ZLdd3ZM e	jN                    ZOeOP                    d45          d6e	jQ        fd7            ZReOP                    d85           e	jS        d9d:5          d e	jT        dd;5          dd e	jT        dd<5           e	jT        dd=5          fd>ee?         d?ee? e	jT        dd@A          f         dBe?dCeee@          e	jT        dDddEA          f         dFeee@          e	jT        dGddHA          f         dIe?dJe@fdK            ZUeOP                    dL5           e	jS        d9dM5          d e	jT        dd;5          dd e	jT        dd<5          fd>ee?         d?ee? e	jT        dd@A          f         dBe?dCeee@          e	jT        dDddEA          f         dFeee@          e	jT        dGddNA          f         dIe?fdO            ZVeOP                    dP5           e	jS        d9dQ5          d e	jT        dd;5          fd>ee?         d?ee? e	jT        dd@A          f         dBe?fdR            ZWeOP                    dS5           e	jS        d9dT5          d e	jT        dd;5           e	jT        dd<5          dfd>ee?         d?ee? e	jT        dd@A          f         dBe?dIe?dFeee@          e	jT        dGddUA          f         f
dV            ZXeOP                    dW5           e	jS        d9dX5          d e	jT        dd;5           e	jT        dd<5          fd>ee?         d?ee? e	jT        dd@A          f         dBe?dIe?fdY            ZYeOP                    dZ5           e	jS        d9d[5          d e	jT        dd;5           e	jT        dd<5          fd>ee?         d?ee? e	jT        dd@A          f         dBe?dIe?fd\            ZZeOP                    d]5           e	jS        d9d^5          d e	jT        dd;5           e	jT        dd<5          dfd>ee?         d?ee? e	jT        dd@A          f         dBe?dIe?dFeee@          e	jT        dGdd_A          f         f
d`            Z[eOP                    dadb5          dce?fdd            Z\eOP                    dedf5           e	jS        dg5          d e	jT        dd;5           e	jT        dd<5          fdhe?d?ee? e	jT        dd@A          f         dBe?dIe?fdi            Z]eOP                    djdk5           e	jS        dl5          d e	jT        dd;5           e	jT        dd<5          fdhe?d?ee? e	jT        dd@A          f         dBe?dIe?fdm            Z^eOP                    dndo5          d e	jT        dd;5           e	jT        dd<5          fdpee? e	jT        ddqA          f         dree? e	jT        ddsA          f         d?ee? e	jT        dd@A          f         dBe?dIe?f
dt            Z_eOP                    dudv5          d e	jT        dd<5          d2fdree? e	jT        ddwA          f         dIe?dxee@ e	jT        ddyA          f         fdz            Z`eOP                    d{d|5           e	jT        ddd2d}~           e	jT        ddd2d~           e	jT        ddd2d~           e	jT        dd<5           e	jT        dd5          dfde?dee@         dee@         dee@         dIe?dee?         dFeee@          e	jT        dGddA          f         fd            ZaeOP                    dd5           e	jT        dd<5          dfdIe?dFeee@          e	jT        dGddA          f         fd            ZbeOP                    dd5           e	jS        d5          fde?fd            ZceOP                    dd5           e	jS        d5          d e	jT        dd;5           e	jT        dd<5          dfde?d?ee? e	jT        dd@A          f         dBe?dIe?dFeee@          e	jT        dGddHA          f         f
d            ZdddZed ZfeOP                    dd5           e	jT        dd<5          fdIe?fd            ZgeOP                    d5          d             ZheOP                    dd5          d e	jT        dd;5           e	jT        dd<5          fde?d?ee? e	jT        dd@A          f         dBe?dIe?fd            ZieOP                    dd5          d e	jT        dd<5          fd?ee? e	jT        ddA          f         dIe?fd            Zjd Zkd Zlemdk    r= ejn        ddejo        d                    ejo        d <    ej         eO                        ed           dS )    N)Optional)print)List	AnnotatedCOMFYUI_PATHzR[bold red]cm-cli: environment variable 'COMFYUI_PATH' is not specified.[/bold red]zfolder_paths.pyzS[bold red]cm-cli: '{comfy_path}' is not a valid 'COMFYUI_PATH' location.[/bold red])manager_util)	cm_global)manager_core)context)unified_manager)	cnr_utils>   torchtorchsde
torchaudiotorchvision)r   r   r   r   transformerssafetensorskorniazpip_overrides.jsonrUTF-8ignoreencodingerrorszpip_blacklist.list c                  d   	 ddl m}   | t                    5 }|                                t          _        |j        t          _        d d d            n# 1 swxY w Y   n7# t          $ r* t          d           dt          _        dt          _        Y nw xY wt          j        t          j        d<   d S )Nr   )	open_repoz5[bold yellow]INFO: Frozen ComfyUI mode.[/bold yellow]zcomfyui.revision)!comfyui_manager.common.git_compatr   
comfy_pathiter_commits_countcorecomfy_ui_revisionhead_commit_datetimecomfy_ui_commit_datetime	Exceptionr   r
   	variables)r   repos     R/home/wildlama/comfy/ComfyUI/.venv/lib/python3.11/site-packages/cm_cli/__main__.pycheck_comfyui_hashr*   >   s   *??????Yz"" 	Fd%)%<%<%>%>D",0,ED)	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F  * * *EFFF!"()%%%*
 /3.DI*+++s4   A  0AA  AA  AA   1BBc                     	 dd l } |                     d          }|                    t          j                   |d         }d|v rn|d                             d          }d |D             }t          xj        |z  c_        t          t          t          j                            t          _        d S d S # t          $ r Y d S w xY w)Nr   F)strictdefaultdowngrade_blacklist,c                 B    g | ]}|d k    |                                 S )r   )strip.0xs     r)   
<listcomp>z,read_downgrade_blacklist.<locals>.<listcomp>Y   s%    9991bQWWYY    )configparserConfigParserreadr   manager_config_pathsplitr
   pip_downgrade_blacklistlistsetr&   )r7   configdefault_confitemss       r)   read_downgrade_blacklistrB   P   s    **%*88G/000i( L00 !67==cBBE99999E--6--04S9Z5[5[0\0\I---	 10
    s   B1B7 7
CCc                       e Zd ZdZd Zd Zd Zd Zd Ze	d             Z
e	d             Ze	d	             Ze	d
             ZdS )CtxNc                    d| _         d| _        d| _        d | _        t          j                            t          j        d          g| _	        t          j        
                    t                    | _        t          j        A	 t          j        d          t          _        d S # t"          $ r t%          d           Y d S w xY wd S )Nr-   Fcachecustom_nodesfolder_pathsz-Warning: Unable to import folder_paths module)channelno_depsmodeuser_directoryospathjoinr   comfy_base_pathcustom_nodes_pathsdirname__file__manager_files_directoryrD   rH   	importlibimport_moduleImportErrorr   )selfs    r)   __init__zCtx.__init__f   s     	"#%7<<0G#X#X"Y')wx'@'@$#G#,#:>#J#J    G G GEFFFFFFG $#s   B# #C ?C c                 p   ||| _         g d}|r?|                                |vr)t          j        d| dd           t	          d           ||| _        t          j        t          j	        | j         d                     t          j        t          j
        | j        | j                              d S )	N)remotelocalrF   zInvalid mode: z/. Allowed modes are 'remote', 'local', 'cache'.Terr   F)
cache_mode	dont_wait)rK   lowertyperechoexitrI   asynciorunr   reloadload_nightly)rX   rI   rK   valid_modess       r)   set_channel_modezCtx.set_channel_modet   s    DI222 	DJJLL33JVVVV    GGG"DLO*di5QQQRRRO0tyIIJJJJJr6   c                     || _         d S NrJ   )rX   rJ   s     r)   set_no_depszCtx.set_no_deps   s    r6   c                 N   |d S t           j                            |d          }t           j                            |          rt          j                            |           t          j        |           t           j                            t          j	                  rSt          t          j	        ddd          5 }t          j        |          t          _        d d d            n# 1 swxY w Y   t           j                            t          j                  rt          t          j        ddd          5 }|                                D ];}|                                }|dk    rt          j                            |           <	 d d d            d S # 1 swxY w Y   d S d S )Nzextra_model_paths.yamlr   r   r   r   r   )rM   rN   rO   existsutilsextra_configload_extra_path_configr   update_user_directorymanager_pip_overrides_pathopenjsonloadr
   pip_overridesmanager_pip_blacklist_path	readlinesr1   pip_blacklistadd)rX   rL   extra_model_paths_yaml	json_filefr4   ys          r)   set_user_directoryzCtx.set_user_directory   s   !F!#n>V!W!W7>>011 	N556LMMM%n5557>>'<== 	?g8#X`aaa ?en*.)I*>*>	'? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 7>>'<== 	7g8#X`aaa 7ef 7 7A		ABww!/33A66677 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7s%   =C((C,/C,9AFFFc                     dd l }|j        d         \  }}t          j                            |          gt                      f|j        d<   d S )Nr   rG   )rH   folder_names_and_pathsrM   rN   abspathr>   )rX   
target_dirrH   abs        r)   update_custom_nodes_dirzCtx.update_custom_nodes_dir   sO    2>B1?Awz?Z?Z>[]`]b]b>b+N;;;r6   c                  V    t           j                            t          j        d          S )Nzinstall-scripts.txtrM   rN   rO   r   manager_startup_script_path r6   r)   get_startup_scripts_pathzCtx.get_startup_scripts_path   s    w||G?AVWWWr6   c                  V    t           j                            t          j        d          S )Nzrestore-snapshot.jsonr   r   r6   r)   get_restore_snapshot_pathzCtx.get_restore_snapshot_path   s    w||G?AXYYYr6   c                      t           j        S rm   )r   manager_snapshot_pathr   r6   r)   get_snapshot_pathzCtx.get_snapshot_path   s    ,,r6   c                  z    t           j        t          d           g S t           j                            d          S )Nz+Error: folder_paths module is not availablerG   )rD   rH   r   get_folder_pathsr   r6   r)   get_custom_nodes_pathszCtx.get_custom_nodes_paths   s6    #?@@@I00@@@r6   )__name__
__module____qualname__rH   rY   rk   ro   r   r   staticmethodr   r   r   r   r   r6   r)   rD   rD   c   s        LG G GK K K$  7 7 7*c c c
 X X \X Z Z \Z - - \- A A \A A Ar6   rD   c                       e Zd ZdZdS )NodeInstallErrorzSRaised when a node installation fails and the caller requested failure propagation.N)r   r   r   __doc__r   r6   r)   r   r      s        ]]Dr6   r   Fc           
      d   |                     dd          }t          j        |           rt          j        t          j        | t          j                            }|j        s:t          |j
                   t          d|  d           |rt          |           d S t          | d| d           d S t          j        |           }|d S |\  }}}	|	sd }t          j        t          j        ||t          j        t          j        dt          j        	                    }|j        d
k    rt          | d|dd           d S |j        dk    rt          | d|d           d S |j        dk    r#|j        dk    rt          | d|dd           d S |j        dk    r#|j        dk    rt          | d|dd           d S |j        dk    r'|j        r t          | d|dd|j         d           d S |j        dk    r'|j        r t          | d|dd|j         d           d S |j        dk    s|j        dk    rH|j        sA|t          j        v r3t          d| d           t)          |           t          d           d S t          d| d|j
         d           |rt          |          d S )Nraise_on_failFrn   z5[bold red]ERROR: An error occurred while installing 'z'.[/bold red]z [INSTALLED] 50Tinstant_executionrJ   skipz [   SKIP  ] z => Already installedenablez [ ENABLED ] zinstall-gitnightlyz	[NIGHTLY]unknownz	[UNKNOWN]zinstall-cnr[]z
switch-cnrz
Available version of ''r   z'.
[/bold red])getr"   is_valid_urlrf   rg   gitclone_installcmd_ctxrJ   resultr   msgr   r   resolve_node_specinstall_by_idrI   rK   actiontargetcnr_mapshow_versions)
node_spec_stris_allcnt_msgkwargsr   res	node_spec	node_nameversion_specis_specifieds
             r)   install_noder      su   JJ66M'' +2k$/wWWWXXz 	?#'NNNf-fffggg 6&}5556 6 W======>>>>>#5mDD	F09-	<  	 Lk/7	<QXQ`bibn  CG  QX  Q`  a  a  a  b  b:WNN9NNNNOOOOOZ8##W999999:::::Z=((SZ9-D-DWBB9BBBBCCCCCZ=((SZ9-D-DWBB9BBBBCCCCCZ=((SZ(WGG9GGG#*GGGHHHHHZ<''CJ'WGG9GGG#*GGGHHHHHjL((CJ-,G,GQTQ[,G`im|  nE  aE  aE9Y999:::)$$$"IIIIIm)mmY\Y`mmmnnn 2&y1112 2r6   c                    t          j        |           r|                     d          }t          j        |          }|r2|d         }t          j        |d           t          j        |           nkt          j        	                    t          j        
                    |                    d         }t          j        |d           t          j        |           t          | ||d           d S t          j        |           }|\  }}	}
t          j        ||	dk               t          j        |           t          |||d           d S )N/idFr   T)r   r   r   r   )r"   r   rstripr   get_cnr_by_repounified_uninstallpurge_node_staterM   rN   splitextbasenamer   r   )r   r   r   urlcnrnode_id	repo_namer   r   r   _s              r)   reinstall_noder      sA   '' T ""3''-c22 	8$iG-gu===,W5555(()9)9#)>)>??BI-i>>>,Y777]67RVWWWWWW#5mDD	%."	<))\Y5NOOO(333YvwdSSSSSSr6   c                    t          j        | d          }|G|sCt          j        | d          t          | d| dd           nt          | d| dd           d S |\  }}}t          | d|dd	| d
           t          j        ||t          j                  }|j        st          d|j         d           d S d S )Nactive
guess_modeinactive [  SKIPPED  ]: r    => Disabled => Not installedz [   FIXING  ]: r   r   rn   z[bold red]ERROR: fr   )r   r   r   unified_fixr   rJ   r   r   r   r   r   r   r   r   r   r   s           r)   fix_noder   
  s   1-HUUUI 	W0:VVVbPP-PPPPQQQQUU-UUUUVVV!*I|Q	W
D
Di
D
D
D\
D
D
DEEE

%iw
W
W
WC: 9737777888889 9r6   r   r   r   c                    |                      d          }t          |          dk    r|d         dk    r|d         }d}n
|d         }d}t          j        ||          }t          |          dk    r"|j        dk    r|st          j        |d          }|j        dk    rt          | d	|d
d           d S |j        rt          | d|d
           d S t          d| d           d S )N@   r_   r   r   TFr   r   r   r   z [UNINSTALLED] z-ERROR: An error occurred while uninstalling ''.)r;   lenr   r   r   r   r   )r   r   r   specr   
is_unknownr   s          r)   uninstall_noder     s   s##D
4yyA~~$q'Y..G	

G	


+Iz
B
BC
4yyA~~#*..z./	4@@
zVII)IIIIJJJJJ	 M7777788888KiKKKLLLLLr6   c           
         t          j        | d          }|Dt          j        | d          rt          | d| dd           nt          | d| dd           d S |\  }}}t          j        ||t          j        d          }|j        st          d	| d
           nJ|j        dk    rt          | d|dd|j                    n!t          | d|dd| d|j	         d           |
                    | d|j	                   S )Nr   r   r   r   r   r   T)rJ   return_postinstallz)ERROR: An error occurred while updating 'r   r    => z [  UPDATED  ]: z => (z -> )r   )r   r   r   unified_updater   rJ   r   r   r   r   with_targetr   s           r)   update_noder   5  s[   1-JJI,]JGG 	SWLLmLLLLMMMMWQQmQQQQRRRt!*I|Q

(L'/nr
s
s
sC: ^G)GGGHHHH	v		EE)EEECGEEFFFF\\)\\\\\\sz\\\]]]??i66#*66777r6   c           	        	
 dd| v rtdg } t           j                                        D ]}|                     |           t           j                                        D ]}|                     |dz              nd | D             } t          |           
t          j                    g 	d	
fd}t          j	        
                    d          5 }| D ]}|                    ||           	 d d d            n# 1 swxY w Y   d		D ]A}|8t          d
 d
 d|j                    |j        |                                 d	z  Bd S )NFallT@unknownc                 >    g | ]}|                                 d v|S ))comfycomfyuirb   r2   s     r)   r5   z#update_parallel.<locals>.<listcomp>W  s+    KKKqQWWYY6J%J%J%J%J%Jr6   r   c                 P   5  dz  d d d            n# 1 swxY w Y   	 t          |  d           }5                      |           d d d            d S # 1 swxY w Y   d S # t          $ r0}t          d|            t	          j                     Y d }~d S d }~ww xY w)Nr_   r   r   r   ERROR: )r   appendr&   r   	traceback	print_exc)r4   r   eir   lock	processedtotals      r)   process_custom_nodez,update_parallel.<locals>.process_custom_node`  s^     	 	FA	 	 	 	 	 	 	 	 	 	 	 	 	 	 		"a1uGGGC & &  %%%& & & & & & & & & & & & & & & & & & 	" 	" 	"-A--   !!!!!!!!!	"sF   A+ AA+ A""A+ %A"&A+ +
B%5%B  B%   r_   r   r   z] Post update: )r   active_nodeskeysr   unknown_active_nodesr   	threadingLock
concurrentfuturesThreadPoolExecutorsubmitr   r   postinstall)nodesr4   r   executoritemr   r   r   r   r   r   s         @@@@@r)   update_parallelr  M  s   F~~ -2244 	 	ALLOOOO 5::<< 	' 	'ALL:&&&&	' LKEKKKJJE>DI	A" " " " " " " " " 
		.	.q	1	1 7X 	7 	7DOO/6666	77 7 7 7 7 7 7 7 7 7 7 7 7 7 7 	
A  ?<a<<%<<
<<===*!!!	Q s   DD
Dc                      t          j        t          d          } | dk    rt          d           d S | dk    rt          d           d S t          d           d S )NTr   failzUpdating ComfyUI has failed.updatedzComfyUI is updated.zComfyUI is already up to date.)r"   update_pathr    r   )r   s    r)   update_comfyuir  |  sj    

:
>
>
>C
f}},-----				#$$$$$./////r6   c                    t          j        | d          t          | d| dd           d S t          j        | d          }|t          | d| dd           d S |\  }}}t          j        ||          }|j        dk    rt          | d|dd	|j                    d S |j        rt          | d
|d           d S t          | d|dd	|j                    d S )Nr   r   z [  SKIP ] r   z => Already enabledr    => Not foundr   r   z [ENABLED] z [  FAIL ] )r   r   r   unified_enabler   r   r   r   s           r)   enable_noder    s:   (8LLLXJJ]JJJJKKK1-JWWWIDD]DDDDEEE!*I|Q

(L
A
AC
zV@@Y@@@sw@@AAAAA	 B33Y33344444@@Y@@@sw@@AAAAAr6   c                    d|                                  v rd S t          j        | d          }|Et          j        | d          t          | d| dd           nt          | d| dd           d S |\  }}}t          j        ||d	k              }|j        d
k    rt          | d|dd|j                    d S |j        rt          | d|d           d S t          | d|dd|j                    d S )Nzcomfyui-managerr   r   r   z [  SKIP  ] r   z => Already disabledr  r   r   r   z [DISABLED] z [  FAIL  ] )rb   r   r   r   unified_disabler   r   r   r   s           r)   disable_noder    sY   M//11111-HUUUI,]zRRR^WPP-PPPPQQQQWII-IIIIJJJ!*I|Q

))\Y5N
O
OC
zVAAiAAAAABBBBB	 C44i44455555AAiAAAAABBBBBr6   c                 	   t          j        t          j        t          j        t          j                            }g }i }|                                D ]\  }}d|vryt          |d                   dk    r`|d         d         }|	                    d          d         }|t          j
        vr$|t          j        vr|                    |           }|||<   i }	g }
| dv }t          j                                        D ]V\  }}|rJt          j                            |          }|r#d	|d
         ||d         d
         |d         f|	|<   Kd |	|<   Qd |	|<   W|ri| dk    rct          j                                        D ]D\  }}|                    |          }|d	|d         ||d         f}|
                    |           E| dv }t          j                                        D ]\  }}||	v r
|rvt          j                            |          }|rOd|d
         ||d         d
         d                    t%          |                                                    f|	|<   |d |	|<   d |	|<   t          j                                        D ]U\  }}||	v r
|rDt          j                            |          }|rd|d
         ||d         d
         df|	|<   Jd |	|<   Pd |	|<   V|ri| dk    rct          j
                                        D ]D\  }}|                    |          }|d|d         ||d         f}|
                    |           E| dv }t          j                                        D ]i\  }}||	v r
|rXt          j                            |          }|r1d|v r|d         d         nd}d|d
         ||d         d
         |f|	|<   ^d |	|<   dd |	|<   j|rv| dk    rp|D ]m}t          |d                   dk    rRt*          j                            |d         d                   }d|d         ||d         f}|
                    |           n|	                                D ]F}||\  }}}}}|rt3          |dz   |z              %t3          | d|dd|dd|dd| d
           G|
D ]<}|\  }}}}|rt3          |d z              t3          | d|dd|dd|dd!           =d S )"NrI   rK   
cnr_latestfilesr_   r   r   r   )r   r   	installedenabledz[    ENABLED    ] name	publisherr   titleauthor)r   r   r  disabledz[    DISABLED   ] , r   )r   r   not-installedlatest_versionversionz0.0.0z[ NOT INSTALLED ] r    r   30z
 (author: 20z) \[r   r   z) [UNKNOWN])rf   rg   r   get_custom_nodesr   rI   rK   rA   r   r;   unknown_inactive_nodesr  r   r   r   r   cnr_inactive_nodesrO   r=   r   nightly_inactive_nodesrM   rN   r   valuesr   )kindsimplerG   not_installed_unknown_nodesrepo_unknownkvrepo_urlr   r   unknown_processedflagr   r  log_itemver_specr4   r   prefixr"  short_idr#  s                         r)   	show_listr>    s   ;?^e^jkkkllL #%L""$$ 0 01q  1W:!##W:a=$NN3//3	O$JJJy`o  aE  PE  PE/66q9999./L+I99D,2244    1 	 !)--a00C $3S[!SEUV\E]_`ab_cc	!#	!IaLL /#8>>@@ 	/ 	/DAq##A&&D|+T']AtH~MH$$X....::D288::    1	>> 	 !)--a00C $3S[!SEUV\E]_c_h_himnontntnvnviwiw_x_xx	!#	!IaLL6<<>>    1	>> 	 !)--a00C $3S[!SEUV\E]_hh	!#	!IaLL /#:@@BB 	/ 	/DAq##A&&D|+T']AtH~MH$$X....22D'--//    1	>> 	 !)--a00C $=MQR=R=R1-.y99X_3S[!SEUV\E]_gg	!#	!IaLL 3, 	3 	3A1W:!##'**1W:a=99/7WakQ!((222 ] ]9451x 	]%)H$%%%%V[[e[[[[[[[[[PX[[[\\\\ X X*+'x 	X%
"####VVVeVVVVVVVVVVWWWWX Xr6   c                 ~  K   t          j                     d {V }| ryt          d|d          d           |d                                         D ] \  }}t          d|d          d|            !|d         D ]}t          d|d	                     d S t	          j        |d
d          }t          |           d S )Nr   r   z	] comfyuigit_custom_nodeshash] file_custom_nodesz+[                   N/A                  ] filenameFr   )ensure_asciiindent)r"   get_current_snapshotr   rA   rx   dumps)simple_modejson_objr5  r6  formatted_jsons        r)   show_snapshotrL  ,  s     .00000000H 	0(9%000111/06688 	( 	(DAq&ai&&1&&''''-. 	Q 	QAO*OOPPPP	Q 	Q H5KKKnr6   c                     t                                           }t          j        |          }d |D             }t	          |          D ]}t          |           d S )Nc                 <    g | ]}|                     d           |S ).json)endswithr2   s     r)   r5   z&show_snapshot_list.<locals>.<listcomp>?  s)    :::ajj&9&9:!:::r6   )r   r   rM   listdirsortedr   )rI  snapshot_pathr  
json_filesr4   s        r)   show_snapshot_listrU  ;  sc    --//MJ}%%E::U:::JJ  a r6   c                     t           j                            t                                                    r+t          j        t                                                     t           j                            t                                                    r-t          j        t                                                     d S d S rm   )rM   rN   rq   r   r   remover   r   r6   r)   cancelrX  D  s    	w~~g668899 6
	'2244555	w~~g7799:: 7
	'3355666667 7r6   c                  d   K   t          j        d           d {V } t          d|  d           d S )Nzcli-autosaveCurrent snapshot is saved as ``)r"   save_snapshot_with_postfixr   )rN   s    r)   auto_save_snapshotr]  L  sH      0@@@@@@@@D	
24
2
2
233333r6   c                     g } t                      }t          j                                        D ]<\  }}| d|d          }|                     |           |                    |           =t          j                                        D ]L}||v rt          j        |          }|/| dt          |d                    }|                     |           Mt          j
                                        D ]!}||v r| d}|                     |           "t          j                                        D ]}| d}|                     |           t          j                                        D ]}| d}|                     |           | S )Nr   r   z@nightlyr   )r>   r   r   rA   r   r~   r.  r   get_from_cnr_inactive_nodesstrr/  r  r-  )r   r   r5  r6  r   latests         r)   get_all_installed_node_specsrb  Q  s   
CI,2244  1qt

=!!!a/4466 & &	>> <Q?? 333vay>>33MJJ}%%%388:: " "	>>

=!!!!16688 " "

=!!!!388:: " "

=!!!!Jr6   Tc                 Z   d}|rd| v rd}t                      } nd | D             } t          |           }g }t          | d          D ]\  }}	  ||f|| d| d| # t          $ r |                    |           Y 9t
          $ rD}	t          d|	            t          j                     |                    |           Y d }	~	d }	~	ww xY w|rYt          d	t          |           d| d
d	                    d |D                        d           t          j        d           d S d S )NFr   Tc                 >    g | ]}|                                 d v|S ))r   r   r   r   r2   s     r)   r5   z"for_each_nodes.<locals>.<listcomp>z  s+    RRRqQWWYY6Q%Q%Q%Q%Q%Qr6   r_   r   r   r   z
[bold red]Failed nodes (z): r%  c              3   4   K   | ]}t          |          V  d S rm   )r`  r2   s     r)   	<genexpr>z!for_each_nodes.<locals>.<genexpr>  s*      LdLdXYSQRVVLdLdLdLdLdLdr6   r   )rb  r   	enumerater   r   r&   r   r   r   rO   sysre   )
r	  act	allow_allr   r   r   failedr   r4   r   s
             r)   for_each_nodesrl  t  s   F SUe^^,..RRERRRJJEF%##  1	CC&Q....CCFCCCC 	 	 	MM! 	 	 	-A--   !!!MM!	
  q3v;;qqqq499LdLd]cLdLdLdCdCdqqqrrr s   AC 	C	:CCzDisplay help for commands)helpctxc                     t          |                                                                            |                     d           d S )Nr   )r   	find_rootget_helpre   )rn  s    r)   rm  rm    s7    	#--//
"
"
$
$%%%HHQKKKKKr6   zInstall custom nodes.zList of custom nodes to installz[remote|local|cache]zuser directoryzExit on failurer	  rI   zSpecify the operation mode)show_defaultrm  rK   rJ   z	--no-depsz'Skip installing any Python dependencies
uv_compilez--uv-compilezCAfter installing, batch-resolve all dependencies via uv pip compilerL   exit_on_failc                    t                               |           t                               ||           |r%|r#t          d           t	          j        d          |rt                               d           nt                               |           t          j        t          j	                    t          t          j                  }t          | t          |           t          ||           d S )NG[bold red]--uv-compile and --no-deps are mutually exclusive.[/bold red]r_   T)ri  rt  )r   r   rk   r   rc   Exitro   r	   PIPFixerget_installed_packagesr    r   manager_files_pathrl  r   _finalize_resolve)r	  rI   rK   rJ   rs  rL   rt  	pip_fixers           r)   installr}    s    R ~...Wd+++ g WXXXjmm %D!!!!G$$$%l&I&K&KZY`YsttI5lFFFFi,,,,,r6   zReinstall custom nodesz!List of custom nodes to reinstallzEAfter reinstalling, batch-resolve all dependencies via uv pip compilec                    t                               |           t                               ||           |r%|r#t          d           t	          j        d          |rt                               d           nt                               |           t          j        t          j	                    t          t          j                  }t          | t                     t          ||           d S )Nrv  r_   Tri  )r   r   rk   r   rc   rw  ro   r	   rx  ry  r    r   rz  rl  r   r{  )r	  rI   rK   rJ   rs  rL   r|  s          r)   	reinstallr    s    J ~...Wd+++ g WXXXjmm %D!!!!G$$$%l&I&K&KZY`YsttI5n----i,,,,,r6   zUninstall custom nodesz!List of custom nodes to uninstallc                 h    t                               ||           t          | t                     d S )Nr  )r   rk   rl  r   )r	  rI   rK   s      r)   	uninstallr    s3    " Wd+++5n------r6   zUpdate custom nodesz$[all|List of custom nodes to update]zAAfter updating, batch-resolve all dependencies via uv pip compilec                    t                               |           t                               ||           |rt                               d           d| v r t	          j        t                                 t          j        t          j	                    t          t          j                  }| D ](}|                                dv rt                        n)t          |            t!          ||           d S )NTr   )r   r   r   )r   r   rk   ro   rf   rg   r]  r	   rx  ry  r    r   rz  rb   r  r  r{  )r	  rI   rK   rL   rs  r|  r4   s          r)   updater    s    < ~...Wd+++ "D!!!~~&(()))%l&I&K&KZY`YsttI  7799333E 4 Ei,,,,,r6   zDisable custom nodesz%[all|List of custom nodes to disable]c                     t                               |           t                               ||           d| v r t          j        t                                 t          | t          d           d S Nr   Trj  )r   r   rk   rf   rg   r]  rl  r  r	  rI   rK   rL   s       r)   disabler  P  si    , ~...Wd+++~~&(()))5,$777777r6   zEnable custom nodesz$[all|List of custom nodes to enable]c                     t                               |           t                               ||           d| v r t          j        t                                 t          | t          d           d S r  )r   r   rk   rf   rg   r]  rl  r  r  s       r)   r   r   o  si    , ~...Wd+++~~&(()))5+666666r6   z Fix dependencies of custom nodesz![all|List of custom nodes to fix]z?After fixing, batch-resolve all dependencies via uv pip compilec                    t                               |           t                               ||           |rt                               d           d| v r t	          j        t                                 t          j        t          j	                    t          t          j                  }t          | t          d           t          ||           d S )NTr   r  )r   r   rk   ro   rf   rg   r]  r	   rx  ry  r    r   rz  rl  r   r{  )r	  rI   rK   rL   rs  r|  s         r)   fixr    s    < ~...Wd+++ "D!!!~~&(()))%l&I&K&KZY`YsttI5(d3333i,,,,,r6   zshow-versionsz'Show all available versions of the noder   c           
          t          j        |           }|t          d|             |D ]4}t          d|d         d d          d|d          d|d                     5d S )	Nz"Node not found in Comfy Registry: r   	createdAt
   rB  r(  z -- 	changelog)r   all_versions_of_noder   )r   versionsr4   s      r)   r   r     s    -i88H>9>>??? M MK!K."%KK9KK1[>KKLLLLM Mr6   showzShow node listzI[installed|enabled|not-installed|disabled|all|cnr|snapshot|snapshot-list]argc                 H   g d}| |vr)t          j        d|  dd           t          d           t                              |           t                              ||           | dk    rt                       d S | dk    rt                       d S t          |            d S )	N)r  r  r&  r$  r   r   snapshotsnapshot-listzInvalid command: `show r[  Tr]   r_   r  r  	rc   rd   re   r   r   rk   rL  rU  r>  r  rI   rK   rL   valid_commandss        r)   r  r    s    *	 	 	N .  
3S333>>>>Q~...Wd+++
j			#r6   zsimple-showzShow node list (simple mode)zE[installed|enabled|not-installed|disabled|all|snapshot|snapshot-list]c                 N   g d}| |vr)t          j        d|  dd           t          d           t                              |           t                              ||           | dk    rt          d           d S | dk    rt          d           d S t          | d           d S )	N)r  r  r&  r$  r   r  r  z![bold red]Invalid command: `show z`[/bold red]Tr]   r_   r  r  r  r  s        r)   simple_showr    s    *  N .  
HsHHHdSSSSQ~...Wd+++
jd			4     #tr6   zdeps-in-workflowz5Generate dependencies file from workflow (.json/.png)workflowzWorkflow file (.json/.png)outputzOutput file (.json)c                    t                               |           t                               ||           | }|}t          j                            |          s"t          d| d           t          d           t          j	        t          j        |t           j        t           j                            \  }}i }	|D ]}
t          j        |
          dd|	|
<   |	t          |          d}t!          |dd	
          5 }t#          j        ||d           d d d            n# 1 swxY w Y   t          d| d           d S )N[bold red]File not found: r   r_   )rK   channel_url-)staterA  )rG   unknown_nodeswutf-8r   r   )rF  z+Workflow dependencies are being saved into .)r   r   rk   rM   rN   rq   r   re   rf   rg   r"   extract_nodes_from_workflowrK   rI   simple_check_custom_noder=   rw   rx   dump)r  r  rI   rK   rL   
input_pathoutput_path	used_extsr  rG   r4   r   output_files                r)   deps_in_workflowr     s   4 ~...Wd+++JK7>>*%% B:BBBCCCQ&{4+KJ]d]iw~  xG  ,H  ,H  ,H   I   II}L  $($A!$D$D#& Q
 %m,, C
 
k3	1	1	1 .[	#{1----. . . . . . . . . . . . . . . 

F
F
F
FGGGGGs    D$$D(+D(zsave-snapshotzzSave a snapshot of the current ComfyUI environment. If output path isn't provided. Save to ComfyUI-Manager/snapshots path.z+Specify the output file path. (.json/.yaml)full_snapshotzsIf the snapshot should include custom node, ComfyUI version and pip versions (default), or only custom node detailsc                 *   t                               |           | |                     d          s9|                     d          s$t          d           t	          j        d          t          j                            |           }|dk    rGt          j        	                    |          s(t          d|  d           t	          j        d          t          j        t          j        d	| |                     }t          d
| d           d S )NrO  z.yamlzQ[bold red]ERROR: output path should be either '.json' or '.yaml' file.[/bold red]r_   coder   z[bold red]ERROR: z path not exists.[/bold red]r  rZ  r[  )r   r   rP  r   rc   rw  rM   rN   rR   rq   rf   rg   r"   r\  )r  rL   r  dir_pathrN   s        r)   save_snapshotr  W  s   & ~...w'' 	%0H0H 	%efff*!$$$$7??6**r>>"'..":":>JfJJJKKK*!$$$$;t6z6}K\]]^^D	
24
2
2
233333r6   zrestore-snapshotz#Restore snapshot from snapshot filez,Restore for pip packages registered on PyPI.)r-   rr  is_flagrm  z0Restore for pip packages registered at web URLs.z2Restore for pip packages specified by local paths.zRManually specify the installation path for the custom node. Ignore user directory.snapshot_namepip_non_urlpip_non_local_urlpip_local_url
restore_tozBAfter restoring, batch-resolve all dependencies via uv pip compilec                 ^   t                               |           |rt                               |           |rt                               d           g }|r|                    d           |r|                    d           |r|                    d           t          d|            t          j                            |           r t          j        	                    |           }nxt          j        
                    t                                           |           }t          j                            |          s"t          d| d           t          d           t          j        t          j                    t           t"          j                  }		 t'          j        t+          j        ||                     n[# t.          $ rN t          d	           t1          j                     |r|	                                 t7          j        d
          w xY wt;          |	|           d S )NTz--pip-non-urlz--pip-non-local-urlz--pip-local-urlzPIPs restore mode: z[bold red]ERROR: `z` is not exists.[/bold red]r_   z7[bold red]ERROR: Failed to restore snapshot.[/bold red]r  )r   r   r   ro   r   r   rM   rN   rq   r   rO   r   re   r	   rx  ry  r    r   rz  rf   rg   r"   restore_snapshotr&   r   r   
fix_brokenrc   rw  r{  )
r  r  r  r  rL   r  rs  extrasrS  r|  s
             r)   r  r  {  s   L ~... 4''
333 "D!!!F 'o&&& -+,,, )'(((	
(
(
()))	w~~m$$ 66W%>%>%@%@-PPw~~m,, 	Q}QQQRRRGGG%l&I&K&KZY`YsttI!D)-@@AAAA ! ! !GHHH 	#  """ja    ! i,,,,,s   'G AHzrestore-dependenciesz7Restore dependencies from whole installed custom nodes.c           	         t                               |            |rt                               d           g }t                                           D ]}t	          j        |          D ]k}t          j                            ||          }t          j                            |          r*|	                    d          s|
                    |           lt          |          }d}t          j        t          j                    t          t           j                  }|D ]S}	t%          d           t%          d| d| d|	            t'          j        d|	dt+          |          	           |dz  }Tt-          ||           d S )
NTz	.disabledr_   zd----------------------------------------------------------------------------------------------------zRestoring [r   z]: r   r   )r   r   ro   r   rM   rQ  rN   rO   isdirrP  r   r   r	   rx  ry  r    r   rz  r   r   execute_install_scriptboolr{  )
rL   rs  
node_paths	base_pathr   r   r   r   r|  r4   s
             r)   restore_dependenciesr    s   " ~... "D!!!J3355 * *	Jy)) 	* 	*DW\\)T22Fw}}V$$ *T]];-G-G *!!&)))	*
 
OOE	A%l&I&K&KZY`YsttI  tuuu-A----!--....r1VZ[eVfVfgggg	Qi,,,,,r6   zpost-installz4Install dependencies and execute installation scriptzpath to custom noderN   c                    t           j                            |           } t          j        t          j                    t          t          j                  }t          j
        d| d           |                                 d S )Nr   Tr  )rM   rN   
expanduserr	   rx  ry  r    r   rz  r   r  r  )rN   r|  s     r)   post_installr    sj     7d##D%l&I&K&KZY`YsttI*2ttLLLLr6   zinstall-depszJInstall dependencies from dependencies file(.json) or workflow(.png/.json)zDependency spec file (.json)depsc                    t                               |           t                               ||           |rt                               d           t	          j        t                                 t          j        	                    |           s$t          d|  d           t          d           d S t          | ddd          5 }	 t          j        |          }n2# t          $ r% t          d	|  d           t          d           Y nw xY wt!          j        t!          j                    t&          t(          j                  }|d
                                         D ]p}t/          j        |          }	|	dk    r|	dk    r7t	          j        t/          j        |dt5          |                               Zt/          j        |gd           qt9          ||           d d d            n# 1 swxY w Y   t          d           d S )NTr  r   r_   r   r   r   r   z[bold red]Invalid json file: rG   r  r&  r   Fz0Dependency installation and activation complete.)r   r   rk   ro   rf   rg   r]  rM   rN   rq   r   re   rw   rx   ry   r&   r	   rx  ry  r    r   rz  r   r"   r  r   r  gitclone_set_activer{  )
r  rI   rK   rL   rs  r   rJ  r|  r5  r  s
             r)   install_depsr    s@   @ ~...Wd+++ "D!!!K"$$%%%7>>$ B<4<<<===Q$gh??? 	599Y//   GdGGGHHHQ %-l.Q.S.SU_aha{||In-2244 9 95a88K''o--K 5a4Y]^hYiYi j j jkkkk,aS%8888i444#	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5& 	@AAAAAs7   G.
CG.,DG.DCG..G25G2returnc                    |r	 t                       n|# t          $ r,}t          d| d           t          j        d          d}~wt          j        $ r  t
          $ r,}t          d| d           t          j        d          d}~ww xY w	 |                                  dS # |                                  w xY w|                                  dS )zFRun batch resolution if --uv-compile is set, then fix broken packages.1[bold red]Failed to import unified_dep_resolver: r   r_   Nz#[bold red]Batch resolution failed: )_run_unified_resolverW   r   rc   rw  r&   r  )r|  rs  r   s      r)   r{  r{  F  s	    	# """" 	  	  	 TaTTTUUU*Q--z 	 	 	 	  	  	 FFFFGGG*Q--	  #   """""I  """"s1    B& 
B'AB 'BBB& &B<c            
      ~   ddl m} m}m}m}m}  |t                                                    }|st          d           dS t          dt          |           d            | | |t                    t          j        t          j        t          j                  }	 |                                }n,# |$ r$ t          d           t!          j        d	          w xY w|j        rk|j        }|rQt          d
t          |j                   dt          |j                   dt          |j                   d           dS t          d           dS t          d|j         d           |j        r|j        j        r|j        r ||j        j        |j        j                  }	|	rt          d           t5          |	                                          D ]R\  }
}t          d|
 d           |D ]7\  }}t          dt8          j                            |           d|            8St!          j        d	          )z5Shared logic for unified batch dependency resolution.r   )UnifiedDepResolverUvNotAvailableErrorattribute_conflictscollect_base_requirementscollect_node_pack_pathsz6[bold yellow]No custom node packs found.[/bold yellow]NzResolving dependencies for z node pack(s)...)node_pack_pathsbase_requirements	blacklist	overridesr.   zI[bold red]uv is not available. Install uv to use this feature.[/bold red]r_   z[bold green]Resolved z deps from z source(s) (skipped z).[/bold green]z>[bold green]Resolution complete (no deps needed).[/bold green]z[bold red]Resolution failed: r   z?[bold yellow]Conflicting packages (by node pack):[/bold yellow]z
  [yellow]z
[/yellow]:z    u     →  )+comfyui_manager.common.unified_dep_resolverr  r  r  r  r  r   r   r   r   r    r
   r}   rz   r<   resolve_and_installrc   rw  success	collectedrequirementssourcesskippederrorlockfile	conflictsrR  rA   rM   rN   r   )r  r  r  r  r  r  resolverr   r  
attributedpkg_name
requesters	pack_pathpkg_specs                 r)   r  r  Y  s                 .-g.L.L.N.NOOO FGGG	
NO(<(<
N
N
NOOO!!'33J??))%=  H--//   YZZZjmm ~ $	 	TDI,B(C(C D DI-..D D	 122D D D     RSSSSSGflGGGHHH? 	Uv8 	UV=M 	U,,V-=-EvG`aaJ UWXXX,2:3C3C3E3E,F,F U U(Hj;x;;;<<</9 U U+	8SRW%5%5i%@%@SSSSTTTTUjmms   !B6 6)Czuv-synczJBatch-resolve and install all custom node dependencies via uv pip compile.c                    t                               |            t          j        t          j                    t
          t          j                  }	 t                       n|# t          $ r,}t          d| d           t          j        d          d }~wt          j        $ r  t          $ r,}t          d| d           t          j        d          d }~ww xY w	 |                                 d S # |                                 w xY w)Nr  r   r_   z[bold red]Unexpected error: )r   r   r	   rx  ry  r    r   rz  r  rW   r   rc   rw  r&   r  )rL   r|  r   s      r)   unified_uv_compiler    s     ~...%l&I&K&KZY`YsttI   P!PPPQQQjmm:      ;Q;;;<<<jmm 	 		s6   A!  C4 !
C+'BC.'CCC4 4D
z0Clear reserved startup action in ComfyUI-Managerc                  "    t                       d S rm   )rX  r   r6   r)   clearr    s    
HHHHHr6   zexport-custom-node-idszExport custom node idsc                    t                               |           t                               ||           t          | dd          5 }t          j                                        D ]}t          ||           t          j	        t	          j
        t           j        t           j                            }|                                D ]z}d|vrtt          |d                   dk    r=|d         d	         }|                    d
          d         }t          | d|           d|v rt          |d          d|           {	 d d d            d S # 1 swxY w Y   d S )Nr  r  r  )filer  r  r  r_   r   r   r   r   r   )r   r   rk   rw   r   r   r   r   rf   rg   r,  rI   rK   r0  r   r;   )	rN   rI   rK   rL   r  r4   rG   r7  r   s	            r)   export_custom_node_idsr    s   & ~...Wd+++	dC'	*	*	* Bk (--// 	' 	'A!+&&&&&{?#CGObibn#o#o#opp$$&& 	B 	BA1$$qz??a'' z!}H&nnS11"5GW...[AAAA199QtW...[AAAA	BB B B B B B B B B B B B B B B B B Bs   C>EEEzupdate-cachez?Force-fetch all remote data and populate local cache (blocking)zSpecify the channelc                     t                               |           | | t           _        t          j        t          t           j                             d S rm   )r   r   rI   rf   rg   _force_update_cache)rI   rL   s     r)   update_cacher    sF     ~...!K#GO4455555r6   c                   K   t          j                     t          j                    d         t          j        t
          j        d           g g d}fdt          d           t          j	        fd|D               d{V  t          d	           	 t          j        d
d           d{V  n?# t          $ r2}t          d| d                               d           Y d}~nd}~ww xY wt          d           t          j        | pdd           d{V  r<t          dd                               d           t!          j        d           dS t          d           dS )zFFetch all remote data and save to cache, bypassing pip/offline guards.r  T)exist_ok)zcustom-node-list.jsonzextension-node-map.jsonzmodel-list.jsonzalter-list.jsonzgithub-stats.jsonc                   K   	                      d          r d|  }nt          j         d|  }t          t	          j        |                    dz   | z   }t          j                            t          j	        |          }t	          j
        |d           d {V }t          j        5  t          |dd          5 }t          j        ||d	d
           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   t          d|             d S # t           $ r6}t          d|  d| d                               |            Y d }~d S d }~ww xY w)Ndefault_cache_as_channel_urlr   r   T)silentr  r  r  r   )rF  	sort_keysz  [CACHED] z  [bold red][FAILED] z: r   )r   r"   DEFAULT_CHANNELr`  r	   simple_hashrM   rN   rO   	cache_dirget_data
cache_lockrw   rx   r  r   r&   r   )	rD  uri	cache_urirJ  r  r   r  r?   rk  s	         r)   fetch_and_cachez,_force_update_cache.<locals>.fetch_and_cache  s0     	$zz899 ;$11x11-::::L4S99::S@8KI\%;YGGI)23tDDDDDDDDDH( H H)S7;;; HtIhQ$GGGGH H H H H H H H H H H H H H HH H H H H H H H H H H H H H H ***+++++ 	$ 	$ 	$D(DDaDDDEEEMM(#########	$s`   B'D ,C;?C$C;$C(	(C;+C(	,C;/D ;C??D C?D 
E$+EEzFetching channel data...c                 &    g | ]} |          S r   r   )r3   r   r  s     r)   r5   z'_force_update_cache.<locals>.<listcomp>  s#    AAA!??1--AAAr6   NzFetching CNR registry data...r[   F)ra   z#  [bold red][FAILED] CNR registry: r   zCNR registryzLoading nightly data...r-   rF   z,
[bold red]Cache update incomplete. Failed: r%  r_   z/[bold green]Cache update complete.[/bold green])r"   refresh_channel_dict
get_configrM   makedirsr	   r  r   rf   gatherr   rh   r&   r   ri   rO   rh  re   )rI   	filenamesr   r  r?   rk  r  s      @@@@r)   r  r    s     _F'KK&6666F  I$ $ $ $ $ $ $* 

$%%%
.AAAAyAAA
BBBBBBBB
 

)***&$X??????????? & & &BABBBCCCn%%%%%%%%&
 

#$$$

&w';)W
E
EEEEEEEE A\dii>O>O\\\]]]?@@@@@s   !B> >
C:(C55C:c                  "    t                       d S rm   )appr   r6   r)   mainr  )  s    EEEEEr6   __main__z(-script\.pyw|\.exe)?$)Fr   )F)T)r  N)prM   rh  r   rx   rf   r  r  typingr   rc   richr   typing_extensionsr   r   rerU   environr   r    re   rN   r   rq   rO   utils.extra_configrr   comfyui_manager.commonr	   r
   comfyui_manager.legacyr   r"   r   #comfyui_manager.legacy.manager_corer   r   r   rR   rS   comfyui_manager_pathr}   r<   rz   rw   r   ry   r   r|   r4   r1   r   r~   r*   check_invalid_nodesrB   rD   r   r&   r   r   r   r   r`  r  r   r   r  r  r  r  r>  rL  rU  rX  r]  rb  rl  Typerr  commandContextrm  ArgumentOptionr}  r  r  r  r  r   r  r   r  r  r  r  r  r  r  r  r{  r  r  r  r  r  r  r  r   subargvr   r6   r)   <module>r!     s,   				 



                            - - - - - - - - 				     Z^^N++
	E
^___DHHH 
   	w~~bgll:/@AABB 	E
_```DHHH     / / / / / / , , , , , , 7 7 7 7 7 7 * * * * * * ? ? ? ? ? ? , , , , , ,wrwx'@'@AA LLL	 $$$	 !	 7>>"',,|@BVWWXX 7	bgll<<>RSSUXcjs{	|	|	| 7  AJ"+$)I"6"6	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7>>"',,|@BVWWXX /	bgll<<>RSSUXcjs{	|	|	| /  AB 	/ 	/A		ABww'++A...	// / / / / / / / / / / / / / /E E E                  QA QA QA QA QA QA QA QAh #%%	 	 	 	 	y 	 	 	
.2 .2 .2 .2bT T T T49 9 9 9*M M# Mt Mc M M M M,8 8 8 80, , ,^0 0 0B B B B.C C C C C C2sX sX sX sXl      7 7 74 4 4
     F   2 ekmm -..em    /.
 ()))5>7
 
 
  EL'
 
 
  *el!
 
 
 *U\"
 
 
G7- 7-Cy7- EL"1  
	7- 7- TNEL">  
7-. TNEL"Z  
/7-> ?7-F G7- 7- 7- *)7-t *++)5>9
 
 
  EL'
 
 
  *el!
 
 
?3- 3-Cy3- EL"1  
	3- 3- TNEL">  
3-. TNEL"\  
/3-> ?3- 3- 3- ,+3-l *++)5>9
 
 
  EL'
 
 
. .Cy. EL"1  
	. . . . ,+.( '(()5>7
 
 
  EL'
 
 
 +el!
 
 
 7/- /-Cy/-
 EL"1  
/- /-  !/-( TNEL"X  
)/- /- /- )(/-d ()))5>8
 
 
  EL'
 
 
 +el!
 
 
!8 8Cy8
 EL"1  
8 8  !8 8 8 *)8< '(()5>7
 
 
  EL'
 
 
 +el!
 
 
!7 7Cy7
 EL"1  
7 7  !7 7 7 )(7< 455)5>4
 
 
  EL'
 
 
 +el!
 
 
 7)- )-Cy)-
 EL"1  
)- )-  !)-( TNEL"V  
))- )- )- 65)-X _#LMMMS M M M NMM V*++!5>\
 
 
  EL'
 
 
 +el!
 
 
) )) EL"1  
	) ) ) ) ) ,+)X ]!?@@!5>X
 
 
  EL'
 
 
 +el!
 
 
) )) EL"1  
	) ) ) ) ) A@)Z T      EL'
 
 
 +el!
 
 
%1H 1H57STTTT
1H 57LMMMM
	1H EL"1  
1H 1H$ %1H 1H 1H 1Hh _  $`  a  a *el!
 
 
 ! 4  4EL")V  
 4  4 !EL"  *_  
 4  4  4 a  a 4F &KLL '3el?	'
 '
 '
 -9ELC	-
 -
 -
 )5E	)
 )
 )
 +el!
 
 
 %1ELe%
 %
 %
 GK- K-K-d^K- $D>K-  ~K-( )K-0 SM1K-8 TNEL"Y  
9K- K- K- MLK-\ !Z    +el!
 
 
 %- %-%-
 TNEL"Y  
%- %- %- %-P O    #EN&
 
 
	 		 	 	 	 	U   
 #EN/
 
 
  EL'
 
 
 +el!
 
 
 5;B ;B;B EL"1  
	;B ;B ;B& TNEL"Z  
';B ;B ;B	 ;B|   &2 2 2j 	U   
 +el!
 
 
   	 . DEE  FE %,DEE  EL'
 
 
 +el!
 
 
"B "B"BEL"1  
"B "B "B "B "B FE"BJ ^"cdd *el!
 
 
6 6EL"*  
6 6 6 6 ed6(=A =A =A@
 
 
 z"&2BDDCHQKCHSSUUOOO b					s%   *GGG<AJJJ