
    Mf                         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dS )    N   )run_command_with_processcompute_md5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dS )BuildProcessc                    t           | _         || _        |                     | j        d          | _        || _        |                     | j        d          | _        |                     | j        d          | _        |                     | j        d          | _        |                     | j                   | j	        | j        f| _
        d S )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/surfInsights/venv3-11/lib/python3.11/site-packages/dash/development/build_process.py__init__zBuildProcess.__init__   s    	 LLG<<"<<	>BB LL4GHH||DI~>>... ,d.>?    c                 (   t          |dd          5 }t          j        |          }|d         | _        |d         | _        |                     | j        t          j        d          | _	        |d         | _
        d d d            d S # 1 swxY w Y   d S )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   s    $g... 	0"immG"9-DLDI#||DIry&IID/DI	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   A'BBBc                      t           j                            t           j        j                            d | D                                 S )Nc              3      K   | ]}||V  	d S N ).0r   s     r   	<genexpr>z'BuildProcess._concat.<locals>.<genexpr>)   s'      1Q1Q4D1Q$1Q1Q1Q1Q1Q1Qr   )r+   r   realpathsepjoin)pathss    r   r   zBuildProcess._concat'   s9    w 0 01Q1Q51Q1Q1Q R RSSSr   c                    t           j                            |           rt                              d|            	 t           j                            |           rt          j        |            t           j                            |           rt          j	        |            d S d S # t          $ r t          j        d           Y d S w xY wt                              d|            d S )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    7>>$ 
	KNN?FFF7>>$'' $IdOOO7==&& (M$'''''( (    NNCTJJJJJs   A&B& &CCz5clean all the previous assets generated by build toolc                 D    | j         D ]}|                     |           d S r0   )r   rD   )r   r   s     r   cleanzBuildProcess.clean9   s5    $ 	# 	#DT""""	# 	#r   zrun `npm ci`c                 V    t          j        | j                   t          d           dS )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                 `    t          j        | j                   t          j        d           d S )Nznpm run build:dev)r+   rH   r   systemrI   s    r   watchzBuildProcess.watchD   s+    

	%&&&&&r   z*run the whole building process in sequenceNc                     |                                   |                                  |                     |           |                                  d S r0   )rF   rJ   bundlesdigest)r   r   s     r   r   zBuildProcess.buildI   s?    




Ur   z"compute the hash digest for assetsc                 N   t           j                            | j                  s_	 t          j        | j                   nD# t
          $ r7 t                              d| j                   t          j	        d           Y nw xY w| j
        | j        i}| j        | j        fD ]x}t          d t          j        |          D                       }t                              d||           |D ],}t!          |                     ||                    |d| d<   -yt%          |                     | j        d          dd	
          5 }t)          j        ||ddd           d d d            n# 1 swxY w Y   t                              dt)          j        |dd                     d S )N"   🚨 having issues manipulating %sr9   c              3   h   K   | ]-}t           j                            |          d          dv )|V  .dS )>   .js.mapN)r+   r   splitext)r2   _s     r   r3   z&BuildProcess.digest.<locals>.<genexpr>\   sN        7##A&&r*o== ==== r   zbundles in %s %szMD5 ()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   s   w~~d.// 	D,----     !EtGWXXX 9dl+'):; 		S 		SF  F++    F
 KK*FF;;; S S+6t||FD7Q7Q+R+R((S $,,ty-88#PPP 	TTVIgrT!
SSSS	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T 	T/Jw$q999	
 	
 	
 	
 	
s#   A   >B BE**E.1E.zcopy and generate the bundlesc           
         t           j                            | j                  s_	 t          j        | j                   nD# t
          $ r7 t                              d| j                   t          j	        d           Y nw xY w| 
                    | j                    t          | dd                        | j        | j                            dd                              dd          d}| j        D ]\  }}}}}| j        d	                    t'          d ||g                             d
         }|                    dd                              dd          }	|||	<   t                              d|           d|                    d          v rdnd}
| d| d|
 }t-          j        |                     | j        ||||          |                     | j        |                     |rd                    |          }d| d|d|	 d<   |D ]}d| d| d| }t5          j        |          }| d| d|
 }|                     | j        |          }t9          |d          5 }|                    |j                   d d d            n# 1 swxY w Y   |dk    rdnd}t                              d|           t          j        | j                    tC          d|            t                              d           t9          |                     | j         d          d !          5 }tE          j#        |$                                          }d d d            n# 1 swxY w Y   |                     | j        t           j%        d"          }t9          |d#d !          5 }|                    |&                    |                     d d d            d S # 1 swxY w Y   d S )$NrR   r9   _bundles_extrac                      d S 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   s   w~~d.// 	D,----     !EtGWXXX 	D-...5&55777 |y((c22::3DD
 

 9= 	. 	.4E4Hfiudm)D)D E EFyQG LLb1199#rBBM&-H]#KK3X>>>#x~~c':':::((C..w....FOT-udIxPPT-v66  
  
.#[[00
>O*>O>O>O:-:::;%+ . .MTtTTmTT(TTC",s++C&*#B#B]#B#BS#B#BL!%d.>!M!MJj$// .2---. . . . . . . . . . . . . . . "''!1!1++z&000
 !5G!5!5666KLLL$,,ty/::WMMM 	+QS		**A	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ T%5ryBUVV-w777 	22HHQ&&x00111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2sG   A   >B B*JJJ3'M&&M*-M*))OO#&O#r0   )__name__
__module____qualname__r   r   staticmethodr   rD   r   rF   rJ   rM   r   rP   rO   r1   r   r   r
   r
      se       	@ 	@ 	@0 0 0 T T \T K K \K 	S	@AA# # BA# 	S+ + +
 	S	)**' ' +*' 	S	566   76 	S	-..
 
 /.
8 	S	())62 62 62 *)62 62 62r   r
   c                        e Zd Z fdZ xZS )Rendererc                 
   dg}t                                          |                     t          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           dS )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22BIO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      s8        
 
 
 
 
 
 
 
 
r   r   c                  8    t          j        t                     d S r0   )fireFirer   r1   r   r   rendererr      s    Ihr   )r+   rB   r)   r   r?   loggingcoloredlogsr   r   _utilsr   r   r   	getLoggerr   r   installr
   r   r   r1   r   r   <module>r      s   				 



           ? ? ? ? ? ? ? ? ? ?		8	$	$  =z   
Q2 Q2 Q2 Q2 Q2 Q2 Q2 Q2h
 
 
 
 
| 
 
 
$    r   