
    
3j                          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q	S r
SS jrSS jrSS jrS rSS	 jrS
 rS rS rS rSS jrS rS rSS jrSS jrSS jrSS jrSS jrSS jrS rSS jrg)     N)PromptServer)tqdmc                  .    [        5       n SU ;  a  gU S   $ )NloggingF)get_extension_config)configs    K/home/wildlama/comfy/ComfyUI/custom_nodes/ComfyUI-Custom-Scripts/pysssss.pyis_logging_enabledr
      s     !#F)    c                     U(       d  [        5       (       d  g Ub  SU SU  3n Uc  [        5       S   n[        SU SU  35        g )N[z] namez	(pysssss:z) )r
   r   print)messagetypealwaysr   s       r	   logr      sP    ,..dV2gY'|#%f-	IdV2gY
'(r   c                 P   [         R                  R                  [        5      nU b  [         R                  R	                  X 5      n[         R                  R                  U5      nU(       a:  [         R                  R                  U5      (       d  [         R                  " U5        U$ N)ospathdirname__file__joinabspathexistsmakedirssubpathmkdirdirs      r	   get_ext_dirr"   !   sd    
''//(
#Cggll3(
''//#
CRWW^^C((
CJr   c                 x   [         R                  R                  [        R                  " [
        5      5      nU b  [         R                  R                  X 5      n[         R                  R                  U5      nU(       a:  [         R                  R                  U5      (       d  [         R                  " U5        U$ r   )
r   r   r   inspectgetfiler   r   r   r   r   r   s      r	   get_comfy_dirr&   -   sm    
''//'//,7
8Cggll3(
''//#
CRWW^^C((
CJr   c                      [        5       n U S   n[        S5      n[        R                  R	                  U5      (       d  [        R
                  " U5        [        R                  R                  X!5      nU$ )Nr   zweb/extensions/pysssss)r   r&   r   r   r   r   r   )r   r   r!   s      r	   get_web_ext_dirr(   9   sT    !#F&>D
0
1C77>>#
C
'',,s
!CJr   c                    U S:X  a  [         b  [         $ [        S5      n[        S5      n[        R                  R	                  U5      (       d  [        R                  R	                  U5      (       ae  [
        R                  " X!5        [        R                  R	                  U5      (       d*  [        SU 3SSSS9  [        S	[        5        35        S
SS.$ O'[        SSSSS9  [        S	[        5        35        S
SS.$ [        US5       n[        R                  " UR                  5       5      q S S S 5        [         $ ! , (       d  f       [         $ = f)NFzpysssss.jsonzpysssss.default.jsonzFailed to create config at ERRORTz???)r   r   r   zExtension path: Unknown)r   versionzdMissing pysssss.default.json, this extension may not work correctly. Please reinstall the extension.r)r   r"   r   r   r   shutilcopyr   r   openjsonloadsread)reloadconfig_pathdefault_config_pathfs       r	   r   r   C   s   6-n-K%&<=77>>+&&77>>-..KK+977>>+..1+?gVZafg(89 )b99 / vT7$[]O45%"55	k3	1AFFH% 
 M 
 	Ms   
%D==
Ec                 J   [         R                  R                  U 5      n [         R                  R                  U5      n[         R                  S:X  a   SS KnUR                  X5        g [         R                  " X5        g!    N= f!   SS KnUR                  S5         g= f)Nntr   T F)	r   r   r   r   _winapiCreateJunctionsymlinkr   	exception)srcdstr<   r   s       r	   link_jsrB   ]   s    
''//#
C
''//#
C	ww$	""3,


3		"s   B +B	 B	B"c                     [         R                  S:w  a  g [        [         R                  " U 5      5      $ ! [         a     gf = f)Nr:   F)r   r   boolreadlinkOSError)r   s    r	   is_junctionrG   p   s;    	ww$BKK%&& s   6 
AAc                     [        S5      n [        R                  R                  U 5      (       d  [	        S5        g [        5       nU(       a  [	        SSS5        [        5       n[        R                  R                  U5      =(       d    [        U5      nU(       d$  [        R                  R                  U5      (       af  U(       a6  U(       a  [	        S5        g [        R                  " U5        [	        S5         g U(       d!  [        R                  " U5        [	        S5        g U(       d  [	        S	5        g [        X5      (       a  [	        S
5        g [	        S5        [        R                  " XSS9  g )Nzweb/jszNo JSzit looks like you're running an old version of ComfyUI that requires manual setup of web files, it is recommended you update your installation.warningTzJS already linkedz.JS unlinked, PromptServer will serve extensionz-JS deleted, PromptServer will serve extensionz-JS skipped, PromptServer will serve extensionz	JS linkedzCopying JS files)dirs_exist_ok)r"   r   r   r   r   should_install_jsr(   islinkrG   unlinkr/   rmtreerB   copytree)src_dirshould_installdst_dirlinkeds       r	   
install_jsrT   y   s   (#G77>>'""G&(N  ^  `i  ko  	pGWW^^G$<G(<F(('( 	 		'"DE 	  MM'"?@;<w  K
OOGD9r   c                      [        [        R                  S5      (       + =(       d    S[        R                  R                  ;  $ )Nsupportscustom_nodes_from_web)hasattrr   instancerV    r   r	   rK   rK      s0    |,,j99z=T\h\q\q\z\z=zzr   c                     [        S5        U b;  SS KnU  H1  nUR                  R                  U5      nUb  M#  [        U S3SSS9    g   [	        5         g)NInitr   z6 is required, please check requirements are installed.r*   T)r   r   F)r   importlib.utilutil	find_specrT   )check_imports	importlibimpspecs       r	   initrd      sY    K  C>>++C0D|seQR / ! Lr   c                      S n  [         R                  " 5       n U $ !   [         R                  " 5       n [         R                  " U 5         U $ = fr   )asyncioget_event_loopnew_event_loopset_event_looploops    r	   get_async_looprl      sI    D%%%' K%%%'t$Ks	    -Ac                  >    [        5       n [        R                  " U S9$ )Nrj   )rl   aiohttpClientSessionrj   s    r	   get_http_sessionrp      s    D  d++r   c           	        #    SnUc  Sn[        5       n UR                  U 5       IS h  vN n[        UR                  R                  SS5      5      =(       d    S n[	        SSSU R                  S5      S   US	9 nSnUR                  R                  S
5        S h  vN n	UR                  U	5        UR                  [        U	5      5        Uc  M9  UR                  c  MH  UR                  S:w  d  MZ  Un
[        UR                  UR                  -  S5      nX:w  d  M  Un
U" U5      I S h  vN   M   GN
 N N
 S S S 5        O! , (       d  f       O= fS S S 5      IS h  vN    O! , IS h  vN  (       d  f       O= fU(       a  Ub  UR                  5       I S h  vN    g g g ! U(       a  Ub  UR                  5       I S h  vN    f f f = f7f)NFTzcontent-lengthr   B   /r,   )unit
unit_scaleminitersdesctotali      )rp   getintheadersr   splitcontentiter_chunkedwriteupdatelenry   roundnclose)urlstreamupdate_callbacksessionclose_sessionresponsesizeprogressbarpercchunklasts              r	   downloadr      s    M"$";;s##xx''++,<a@AITDTACIIcN2<NVZ#+#3#3#@#@#F 8%LL'&&s5z2&2{7H7H7TYdYjYjnoYo#$[]][5F5F%FJ<#'D"1$"777 $8 8 $G	   $#####" W0--/!! 1==W0--/!! 1=s   GF( D4F( AE(<ED;D7
D;"-EE"E4(E E-D9
.E4F( 7D;9E;E<	E(
E	E(F( !E$"F( (E?.E1/E?;F( GF" G(GG	GGc                    #    U(       a  [        U5      n[        USS9 n[        XX$5        S S S 5        g ! , (       d  f       g = f7f)Nwb)mode)r"   r1   r   )r   destinationr   is_ext_subpathr   r8   s         r	   download_to_filer      s3     !+.	k	%2 
&	%	%s   A5	A
AAc                    ^ ^ / mU U4S jnUc   [         R                  " 5       nUR	                  U" 5       5        TS   $ !   [         R                  " 5       n[         R                  " U5         NJ= f)Nc                  R   >#    T" 5       I S h  vN n TR                  U 5        g  N7fr   )append)r.   async_fnress    r	   	run_async!wait_for_async.<locals>.run_async   s      *

1 s   '%'r   )rf   rg   rh   ri   run_until_complete)r   rk   r   r   s   `  @r	   wait_for_asyncr      se    
C |	)))+D
 	IK(q6M	)))+D""4(s   A   -A/c                     U c  [         R                  R                  n U c  g [         R                  R                  SUUUS.U 5        g Nzpysssss/update_status)nodeprogresstext)r   rY   	client_id	send_syncr   r   r   r   s       r	   update_node_statusr      sL     ))33	##$;> 	r   c                    #    U c  [         R                  R                  n U c  g [         R                  R                  SUUUS.U 5      I S h  vN   g  N7fr   )r   rY   r   sendr   s       r	   update_node_status_asyncr     sY      ))33	



$
$%<? 	  s   A
AAAc                     U R                  S5      n[        5       nU H%  nXT;   a  XE   nM  U(       a  [        SU -   5      eUs  $    U$ )N.zConfiguration key missing: )r~   r   KeyError)keydefaultthrowr~   objss         r	   get_config_valuer     sM    IIcNE

 C8&C<sBCC  Jr   c                 F   [         R                  R                  U 5      n [         R                  R                  U5      (       d<  [         R                  R                  [         R                  R	                  X5      5      n[         R                  R                  X/5      U :H  $ r   )r   r   r   isabsr   
commonpath)root_dir
check_paths     r	   is_inside_dirr     sc    wwx(H77==$$WW__RWW\\(%GH
77z45AAr   c                     [         R                  R                  [         R                  R                  X5      5      n[	        X5      (       a  U$ U(       a  [        S5      eg )Nz0Saving outside the target folder is not allowed.)r   r   r   r   r   NotADirectoryError)r   
child_paththrow_if_outsides      r	   get_child_dirr   %  sJ    h!CDJX** >@ 	@r   )NFN)NF)Fr   )NN)NTN)T)rf   r   r2   r/   r$   rn   serverr   r   r   r
   r   r"   r&   r(   r   rB   rG   rT   rK   rd   rl   rp   r   r   r   r   r   r   r   r   rZ   r   r	   <module>r      s     	      	
)		4& :F{ ,
"63&Br   