
    $g                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZddl	m
Z
mZmZ  ej                  e      Z ej                   dd        G d d      Z G d	 d
e      Zd Zy)    N   )run_command_with_processcompute_hashjobz3%(asctime)s,%(msecs)03d %(levelname)s - %(message)sz%H:%M:%S)fmtdatefmtc                       e Zd Zd Zd Zed        Zed        Z ed      d        Z	 ed      d        Z
 ed	      d
        Z ed      dd       Z ed      d        Z ed      dd       Zy)BuildProcessc                    t         | _         || _        | j                  | j                  d      | _        || _        | j                  | j                  d      | _        | j                  | j                  d      | _        | j                  | j                  d      | _        | j                  | j                         | j                  | j
                  f| _
        y )Nbuildnode_moduleszpackage-lock.jsonzpackage.jsonpath)loggermain_concatbuild_folder	deps_infonpm_modulespackage_lockpackage_parse_packagedeps_folderasset_paths)selfr   r   s      [/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/dash/development/build_process.py__init__zBuildProcess.__init__   s    	 LLG<"<<		>B LL4GH||DII~>. ,,d.>.>?    c                    t        |dd      5 }t        j                  |      }|d   | _        |d   | _        | j                  | j                  t        j                  d      | _	        |d   | _
        d d d        y # 1 sw Y   y xY w)Nrutf-8encodingversionnamedepsdependencies)openjsonloadr$   r%   r   r   ospardirr   r&   )r   r   fpr   s       r   r   zBuildProcess._parse_package   sr    $g. 	0"iimG"9-DLDI#||DIIryy&ID/DI	0 	0 	0s   A$A<<Bc                      t         j                  j                  t         j                  j                  j	                  d | D                    S )Nc              3   &   K   | ]	  }|s|  y wN ).0r   s     r   	<genexpr>z'BuildProcess._concat.<locals>.<genexpr>)   s     1Q4D$1Qs   )r+   r   realpathsepjoin)pathss    r   r   zBuildProcess._concat'   s0    ww 0 01Q51Q RSSr   c                    t         j                  j                  |       rt        j	                  d|        	 t         j                  j                  |       rt        j                  |        t         j                  j                  |       rt        j                  |        y y t        j	                  d|        y # t        $ r t        j                  d       Y y w xY w)Nu"   🚨 %s already exists, remove it!   u&   🚨 %s doesn't exist, no action taken)r+   r   existsr   warningisfileremoveisdirshutilrmtreeOSErrorsysexitr   s    r   _clean_pathzBuildProcess._clean_path+   s    77>>$NN?F77>>$'IIdO77==&MM$' '
 NNCTJ  s   A(B8 8CCz5clean all the previous assets generated by build toolc                 H    | j                   D ]  }| j                  |        y r0   )r   rD   )r   r   s     r   cleanzBuildProcess.clean9   s%    $$ 	#DT"	#r   zrun `npm ci`c                 X    t        j                  | j                         t        d       y)zJob to install npm packages.znpm ciN)r+   chdirr   r   r   s    r   npmzBuildProcess.npm>   s     	 *r   zbuild the renderer in dev modec                 l    t        j                  | j                         t        j                  d       y )Nznpm run build:dev)r+   rH   r   systemrI   s    r   watchzBuildProcess.watchD   s    

		%&r   z*run the whole building process in sequenceNc                     | j                          | j                          | j                  |       | j                          y r0   )rF   rJ   bundlesdigest)r   r   s     r   r   zBuildProcess.buildI   s)    


Ur   z"compute the hash digest for assetsc                 Z   t         j                  j                  | j                        s 	 t        j                  | j                         | j                  | j                  i}| j                  | j                  fD ]g  }t        d t        j                  |      D              }t        j                  d||       |D ]$  }t!        | j#                  ||            |d| d<   & i t%        | j#                  | j&                  d      dd	
      5 }t)        j*                  ||ddd       d d d        t        j                  dt)        j,                  |dd             y # t
        $ r9 t        j                  d| j                         t        j                  d       Y Sw xY w# 1 sw Y   {xY w)N"   🚨 having issues manipulating %sr9   c              3   h   K   | ]*  }t         j                  j                  |      d    dv r| , yw)>   .js.mapN)r+   r   splitext)r2   _s     r   r3   z&BuildProcess.digest.<locals>.<genexpr>\   s4      77##A&r*o= s   02zbundles in %s %szSHA256 ()zdigest.jsonwr!   r"   T   ),:)	sort_keysindent
separatorsz bundle digest in digest.json:
%s)r^   r_   )r+   r   r:   r   makedirsrA   r   	exceptionrB   rC   r%   r$   r   tuplelistdirinfor   r   r(   r   r)   dumpdumps)r   payloadfoldercopiescopyr-   s         r   rP   zBuildProcess.digestP   sl   ww~~d../D,,-
 99dll+''):):; 		WF F+ F
 KK*FF; W.:4<<PT;U.V(4&*+W		W $,,tyy-8#P 	TTVIIgrT!
S	T/JJw$q9	
'    !EtGWGWX"	T 	Ts   E F!>FF!F*zcopy and generate the bundlesc           
         t         j                  j                  | j                        s 	 t        j                  | j                         | j                  | j                          t        | dd               | j                  | j                  j                  dd      j                  dd      d}| j                   D ]  \  }}}}}| j"                  d	j%                  t'        d ||g               d
   }|j                  dd      j                  dd      }	|||	<   t        j)                  d|       d|j+                  d      v rdnd}
| d| d|
 }t-        j.                  | j1                  | j2                  ||||      | j1                  | j                  |             |sdj%                  |      }d| d|d|	 d<   |D ]x  }d| d| d| }t5        j6                  |      }| d| d|
 }| j1                  | j                  |      }t9        |d      5 }|j;                  |j<                         d d d        z  |dk(  rdnd}t        j)                  d|       t        j>                  | j@                         tC        d|        t        j)                  d       t9        | j1                  | j@                  d      d !      5 }tE        jF                  |jI                               }d d d        | j1                  | j                  t         jJ                  d"      }t9        |d#d !      5 }|j;                  jM                  |             d d d        y # t
        $ r9 t        j                  d| j                         t        j                  d       Y Nw xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)$NrR   r9   _bundles_extrac                       y r0   r1   r1   r   r   <lambda>z&BuildProcess.bundles.<locals>.<lambda>x   s    r    rX   -)r$   r   /r$    .zcopy npm dependency => %sminzmin.jsjs@z", ""extra_	_versionszhttps://unpkg.com/z/umd/wblocalz	build:devzbuild:jszrun `npm run %s`znpm run z5generate the `__init__.py` from template and versionszinit.templater!   r"   z_dash_renderer.pyrZ   )'r+   r   r:   r   ra   rA   r   rb   rB   rC   r   r   getattrr$   r%   replacer   r&   r6   filterre   splitr?   copyfiler   r   requestsgetr(   writecontentrH   r   r   stringTemplatereadr,   safe_substitute)r   r   versionsscoper%   	subfolderfilenameextrasr$   name_squashedexttarget
extras_strextra_versionurlresextra_target
extra_pathr-   _scripttrenderer_inits                         r   rO   zBuildProcess.bundlesm   sU   ww~~d../D,,-
 	D--.5&57 ||yy((c2::3D

 9= 	.4E4Hfiiudm)D EFyQG LLb199#rBM&-H]#KK3X>#x~~c'::(CvQwiq.FOOT--udIxPT--v6
 #[[0
@A*Q>O6-	:;%+ .M.tfAm_E(TC",,s+C&*V1]O1SE#BL!%d.>.>!MJj$/ .2-. ..%	.4 "''!1+z&0
 8G9!56KL$,,tyy/:WM 	+QS	*A	+ T%5%5ryyBUV-w7 	22HHQ&&x01	2 	2c    !EtGWGWXH. .	+ 	+	2 	2s5   M N$N)-!N5>NNN&)N25N>r0   )__name__
__module____qualname__r   r   staticmethodr   rD   r   rF   rJ   rM   r   rP   rO   r1   r   r   r
   r
      s    	@0 T T K K 		@A# B# 	+ +
 		)*' +' 		56 7 		-.
 /
8 		()62 *62r   r
   c                        e Zd Z fdZ xZS )Rendererc                     dg}t         |   | j                  t        j                  j                  t              t        j                  d      ddddd|fdddd|fdd	dd
|fdd	dd|fddf       y)z?dash-renderer's path is binding with the dash folder hierarchy.z18.2.0zdash-renderer)z@babelpolyfilldistzpolyfill.min.jsNNreactumdzreact.production.min.jszreact.development.jsz	react-domzreact-dom.production.min.jszreact-dom.development.js)N
prop-typesNzprop-types.min.jsN)Nr   Nzprop-types.jsN)superr   r   r+   r   dirname__file__r,   )r   r   	__class__s     r   r   zRenderer.__init__   s    LL2BIIOGw'@&Iw'=vF{E+H&Q{E+EvNEA	
r   )r   r   r   r   __classcell__)r   s   @r   r   r      s    
 
r   r   c                  6    t        j                  t               y r0   )fireFirer   r1   r   r   rendererr      s    IIhr   )r+   rB   r)   r   r?   loggingcoloredlogsr   r   _utilsr   r   r   	getLoggerr   r   installr
   r   r   r1   r   r   <module>r      sk    	 
        @ @			8	$   =z
Q2 Q2h
| 
$r   