
    
3jS3                     @   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKJ	r	  S SK
Jr  S SKJr  S SKr\" \5      R                   r\" \R$                  5      rSr\R(                  R+                  S5      (       a  SrOS\" \5      ;   a  SrOS	\" \5      ;   a  S
r\c  SrSrSrSrSSS.r\R6                  " 5       R9                  5       rSSSSSS.rS rSSSSSSSS S!.r 0 S"S#_S$S%_S&S'_S(S)_S*S+_S,S-_S.S/_S0S1_S2S3_S4S5_S6S7_S8S9_S:S;_S<S=_S>S?_S@SA_SBSC_SDSESFSGSHSISJSKSLSMSNSOSPSQSRSS.Er!ST r"SlSU jr#SSSV.SW jr$SmSX jr%SY r&SZ r'\	S[ 5       r(S\ r)S] r*S^ r+SnS_ jr,SmS` jr- S SaK.J.r.  Sj r0\1Sk:X  a  \0" 5         gg! \/ a    \$" SbScS(Sd9  \%" \SeSfSgShSi/5        S SaK.J.r.   N6f = f)o    N)contextmanager)import_module)Path	COLAB_GPUcolabpython_embededembededz.venvvenvunknownz(https://github.com/melmass/comfy_mtb.gitmelmass	comfy_mtb	win_amd64linux_x86_64)windowslinuxonnxruntimecv2tensorboardzgoogle.protobufqrcode)zonnxruntime-gpuzopencv-contribz
tb-nightlyprotobufzqrcode[pil]c                  <    S/n S/nS/U-   nS/nS/nS/UUUU UUS.$ )Nbasicsrr   insightfacebitsandbytesavr   )QrCodeDeepBumpFaceSwapLoadFaceSwapModelLoadFaceAnalysisModelQuantizeSaveGif )restore_deps	onnx_deps	swap_deps
quant_depsio_depss        >/home/wildlama/comfy/ComfyUI/custom_nodes/comfy_mtb/install.pyget_node_dependenciesr*   2   sL    ;LI)+I !JfG*&!-     z[0mz[1mz[2mz[3mz[4mz[5mz[7mz[9m)resetbolddimitalic	underlineblinkreversestrikeblackz[30mredz[31mgreenz[32myellowz[33mbluez[34mmagentaz[35mcyanz[36mwhitez[37mbright_blackz[30;1m
bright_redz[31;1mbright_greenz[32;1mbright_yellowz[33;1mbright_bluez[34;1mbright_magentaz[35;1mbright_cyanz[36;1mbright_whitez[37;1mbg_blackz[40mz[41mz[42mz[43mz[44mz[45mz[46mz[47mz[40;1mz[41;1mz[42;1mz[43;1mz[44;1mz[45;1mz[46;1mz[47;1m)bg_redbg_green	bg_yellowbg_blue
bg_magentabg_cyanbg_whitebg_bright_blackbg_bright_redbg_bright_greenbg_bright_yellowbg_bright_bluebg_bright_magentabg_bright_cyanbg_bright_whitec                 |    U nU H3  n[         R                  US5       U [         R                  SS5       3nM5     U$ )zHApply ANSI escape sequences for the specified formats to the given text. r,   )ANSI_FORMATSget)textformatsformatted_textformats       r)   apply_formatr\   v   sH    N(,,VR89.9I,JZJZ[bdfJgIhi r+   c                     U nU(       a0  [         R                  US5       U [        R                  SS5       3nU(       a0  [         R                  US5       U [        R                  SS5       3nU$ )zUApply ANSI escape sequences for the specified color and background to the given text.rU   r,   )ANSI_COLORSrW   rV   )rX   color
backgroundrZ   s       r)   apply_colorra   ~   sq    N'OOE2677GHXHXY`bdHeGfg'OOJ;<^<L\M]M]^egiMjLklr+   )r_   r`   c                6   [        U /UQ76 n[        XQU5      nUR                  S[        R                  5      nSnUR                  [        R                  R                  SS9R                  [        R                  R                  5      nUR                  [        R                  R                  SS9R                  [        R                  R                  5      n	[        UR                  S5      (       a  S[        U5      -  O[        [        US5      SS	9U	US
9  g)zGPrint the given text with the specified formats, color, and background.filez[mtb install] replace)errors	no_header r-   r7   r_   rc   N)
r\   ra   rW   sysstdoutencodeencodingdecodeprintlen)
rX   r_   r`   rY   kwargsrZ   rc   headerencoded_headerencoded_texts
             r)   print_formattedru      s    !$11N 
CN::fcjj)DF ]]

I # fSZZ  !  "((

I ) fSZZ  !  
::k"" 	c.!!nf=XNr+   c                    Uc  / n[        U [        5      (       a  U nO9[        U [        5      (       a  SR                  S U  5       5      nO[	        S5      e [        X!5        g ! [        R                   a_  n[        SUR                   3[        R                  S9  [        UR                  R                  5       [        R                  S9   S nAg S nAf[         a    [        S5         g f = f)Nrg   c              3      #    U  HI  n[        U[        5      (       a  UR                  5       O[        R                  " [        U5      5      v   MK     g 7fN)
isinstancer   as_posixshlexquotestr.0args     r)   	<genexpr>run_command.<locals>.<genexpr>   s;      
 )d33CLLNSX9NNs   AAzCInvalid 'cmd' argument. It must be a string or a list of arguments.z!Command failed with return code: ri   zCommand execution interrupted.)ry   r}   listjoin
ValueError_run_command
subprocessCalledProcessErrorro   
returncoderj   stderrstripKeyboardInterrupt)cmdignored_lines_start	shell_cmdes       r)   run_commandr      s    " #s		C		HH 

 
	
 Q
 	
	0Y4(( 1/~>SZZ	
 	ahhnnSZZ0 0./0s   A$ $C-8ACC-,C-c           	        ^ [        SU  3S5        [        R                  " U [        R                  [        R                  SSSS9nUR                  R                  5       R                  S5      nUR                  R                  5       R                  S5      nU H*  m[        U4S jU 5       5      (       a  M  [        T5        M,     U H  m[        T[        R                  S9  M     [        S5        g )	NzRunning r-   T)rk   r   rX   shellcheck
c              3   F   >#    U  H  nTR                  U5      v   M     g 7frx   )
startswith)r   ignlines     r)   r   _run_command.<locals>.<genexpr>   s     G3FC4??3''3Fs   !ri   zCommand executed successfully!)ru   r   runPIPErk   r   splitr   anyro   rj   )r   r   resultstdout_linesstderr_linesr   s        @r)   r   r      s    hyk*F3^^F ==&&(..t4L==&&(..t4L G3FGGG$K 
 d$  

*+r+   c                      [         R                  R                  5       (       d  g[         R                  S:X  a   SS Kn U R                  S5      S:g  $  [        R                  " S5      R                  n[        R                  " U5      =(       dP    [        R                  " U5      =(       d3    [        R                  " U5      =(       d    [        R                  " U5      $ ! [         a     gf = f! [         a     gf = f)NFwin32r   )rj   stdinisattyplatformmsvcrtget_osfhandleImportErrorosfstatst_modestatS_ISFIFOS_ISREGS_ISBLKS_ISSOCKOSError)r   modes     r)   is_piper      s    99
||w	''*b00		88A;&&Dd# '<<%'<<%' ==&	  		  		s$   C  BC0  
C-,C-0
C=<C=c               #   N  #    [        [        R                  S5       n [        R                  n[        R
                  nU [        l        U [        l         S v   U[        l        U[        l         S S S 5        g ! U[        l        U[        l        f = f! , (       d  f       g = f7f)Nw)openr   devnullrj   rk   r   )r   
old_stdout
old_stderrs      r)   suppress_stdr      sm     	bjj#	'ZZ
ZZ


	$#CJ#CJ 
	 $CJ#CJ 
	s4   B%7BA9B0	B%9BB
B"B%c                     [         R                  R                  [         R                  R                  [        5      S5      n [         R                  R                  U 5      (       Ga	  [        U 5       n[        R                  " UR                  5       5      n[        R                  " U5       H  n[        U[        R                  5      (       d  M$  UR                   H  n[        U[        R                  5      (       d  M$  UR                  S:X  d  M6  [        UR                   [        R"                  5      (       d  Ma  UR                   R$                  s  s  sS S S 5        $    M     S S S 5        g g ! , (       d  f       g = f)Nz__init__.py__version__)r   pathr   dirname__file__isfiler   astparsereadwalkry   AssigntargetsNameidvalueStrs)	init_fileftreenodetargets        r)   get_local_versionr     s    RWW__X6FI	ww~~i  )_99QVVX&DdCJJ//"&,,&vsxx88 &		] : *4::sww ? ?#'::<</ _ #/ '   _ s+   2AE1,E1E1'E1>E1!E11
E?c           
         [         R                  " U SS9 nUR                  5         [        UR                  R                  SS5      5      n[        US5       n[        UR                  USSSS9 nUR                  S	S
9 H.  nUR                  U5        UR                  [        U5      5        M0     S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)NT)streamzcontent-lengthr   wbBi   )desctotalunit
unit_scaleunit_divisori    )
chunk_size)requestsrW   raise_for_statusintheadersr   tqdmstemiter_contentwriteupdaterp   )url	file_nameresponse
total_sizerc   progress_barchunks          r)   download_filer     s    	c$	'8!!#))--.>BC
D!T^^ ! !..$.?

5!##CJ/ @ "	 
(	'
  "!	 
(	's=   AC-C0AC2C:C-
CC
C*	&C--
C;c                    U R                   R                  5       n[        R                  X5      nSnUnU R                  =n(       a  SR                  US   5      OSn [        5          [        U5        S S S 5        [        SU SU S3SSS	S
9  S	nX4Xb4$ ! , (       d  f       N'= f! [         a    [        SU SU S3SSS	S
9   N4f = f)NFrU   r   u   	✅ Package z" already installed (import name: '').r-   r6   T)r_   rf   u   	⛔ Package z is missing (import name: 'r5   )
namer   pip_maprW   specsr   r   r   ru   r   )requirement
dependencyimport_name	installedpip_namer   pip_specs          r)   
try_importr   %  s    !!'')J++j5KIH.9.?.?%?U%?rwwuQx bH
^+& XJ&HUXY		
 	 77# ^  
XJ&A+cR		

s*   
B& (B4B& 
B#B& &CCc                 R   [        U 5      u  p#pEX4-   nU(       dP  [        SU S3SSS9  U(       a  [        SU SU S3SS9  g  [        [        S	S
SU/5        [        SU SU S3SSS9  g g ! [        R
                   a'  n[        SU SU S[        U5       3SSS9   S nAg S nAff = f)NzInstalling package ...r/   r7   rh   zDry-run: Package z# would be installed (import name: 'r   -mpipinstallzPackage z? installed successfully using pip package name  (import name: 'z')r-   r6   zFailed to install package z( using pip package name  (import name: 'z'). Error: r5   )r   ru   r   
executabler   r   r}   )r   dryr   r   r   r   pip_install_namer   s           r)   import_or_installr  A  s   1;K1H.I*!(3/	
 #$4#55XYdXeehi
ui9IJ  /00op{o||~! & 00 01A0BBjkvjw  xC  DG  HI  DJ  CK  Ls   &A+ +B&?B!!B&c                    U (       a  S[          S[         SU  3nOS[          S[         S3n[        R                  " U5      nUR                  S:X  a  [        SSS9  [        R                  " 5         UR                  5       nUS	   nX44$ )
Nzhttps://api.github.com/repos//z/releases/tags/z/releases/latesti  z$Error retrieving the release assets.r5   rh   r   )	
repo_owner	repo_namer   rW   status_coderu   rj   exitjson)tagtag_urlr   tag_datatag_names        r)   get_github_assetsr  a  s    
1*QykY\X]^1*QykIYZ||G$Hs" 	>eL
}}HHr+   )r   zInstalling tqdm...r/   rh   r   r   r   z	--upgrader   c                  |   [        [        R                  5      S:X  a  [        SSSS9  g [	        S [        R                   5       5      (       a  [        S[        R                  SS  5        g [        R                  " SS	9n U R                  S
S[        SS9  [        SSSS9  U R                  5       n[        S[        [        S5       35        UR                  (       a  [        UR                  5      nUR                  5       (       d!  [        S5        [        R                   " 5         O`U["        -  nUR                  5       (       d$  [        SU S3SSS9  [%        SSS[&        U/5        O[        SU S35        [%        SSSU/5        UnSn[        SSSS9  / n[(        SSS S!S"/n[%        U5        [        S#SS$S9  g )%N   z+mtb doesn't need an install script anymore.r/   r7   rh   c              3   *   #    U  H	  oS ;  v   M     g7f))-p--pathNr#   r~   s     r)   r   main.<locals>.<genexpr>  s     
;(3&&(s   znThis script is only used for and edge case of remote installs on some cloud providers, unrecognized arguments:zComfy_mtb install script)descriptionr  r  zOPath to clone the repository to (i.e the absolute path to ComfyUI/custom_nodes))typehelpzmtb installr-   zDetected environment: r:   zcThe path provided does not exist on disk... It must be pointing to ComfyUI's custom_nodes directoryzCloning to r   gitclonez--recursivez
Directory z% already exists, we will update it...pullz-CTzChecking environment...r   r   r   z-rzrequirements.txtu,   ✅ Successfully installed all dependencies.r6   )rp   rj   argvru   allro   argparseArgumentParseradd_argumentr}   
parse_argsra   r   r   r   existsr  r  r   repo_urlr   )parserargs	clone_dirrepo_dirherefullmissing_depsinstall_cmds           r)   mainr+    s   
388}9	

 	

;#((
;;;|HHQRL	
 	 $$1KLF
^	   M6:D,[v-F,GHIyyO	!!u HHJ !9,H??$$!(3/ G]HhG   
*OP UFD(;<-xxHLK 6r+   __main__)NNrx   )F)2r  r   r   r   r{   r   r   rj   
contextlibr   	importlibr   pathlibr   r   r   parentr'  r   r   environrW   r}   r"  r  r  short_platformsystemlowercurrent_platformr   r*   rV   r^   r\   ra   ru   r   r   r   r   r   r   r   r  r  r   r   r+  __name__r#   r+   r)   <module>r7     s    
 	     
 % #   H~#..!
 ::>>+DZ(DJD <D5
	 ??$**, $!, 	!Z!	:! Z! j	!
 J! z! J! Z! L! ,! L! \! <! l! <!  L!!" 
#!$ #!#$"%"#A!H +/4 808,4. $ $"0&88@,EP zF ]  (((CT5)[&IJs    E8 8"FF