o
    d                     @   s   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eZejddd G dd dZG d	d
 d
eZd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                   @   s   e Zd Zdd Zdd Zedd Zedd Zed	d
d Z	eddd Z
eddd ZeddddZeddd ZeddddZdS )BuildProcessc                 C   sr   t | _ || _| | jd| _|| _| | jd| _| | jd| _| | jd| _| j| jd | 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    r   c/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/dash/development/build_process.py__init__   s   zBuildProcess.__init__c                 C   sp   t |ddd'}t|}|d | _|d | _| | jtjd| _	|d | _
W d    d S 1 s1w   Y  d S )Nrutf-8encodingversionnamedepsdependencies)openjsonloadr    r!   r   r   ospardirr   r"   )r   r   fpr   r   r   r   r      s   


"zBuildProcess._parse_packagec                  G   s    t jt jjdd | D S )Nc                 s   s    | ]}|r|V  qd S Nr   ).0r   r   r   r   	<genexpr>)   s    z'BuildProcess._concat.<locals>.<genexpr>)r'   r   realpathsepjoin)pathsr   r   r   r   '   s    zBuildProcess._concatc                 C   s   t j| r8td|  zt j| rt |  t j| r&t	|  W d S W d S  t
y7   td Y d S 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   r   r   r   _clean_path+   s   
zBuildProcess._clean_pathz5clean all the previous assets generated by build toolc                 C   s   | j D ]}| | qd S r*   )r   r<   )r   r   r   r   r   clean9   s   
zBuildProcess.cleanzrun `npm ci`c                 C   s   t | j td dS )zJob to install npm packages.znpm ciN)r'   chdirr   r   r   r   r   r   npm>   s   zBuildProcess.npmzbuild the renderer in dev modec                 C   s   t | j t d d S )Nznpm run build:dev)r'   r>   r   systemr?   r   r   r   watchD   s   zBuildProcess.watchz*run the whole building process in sequenceNc                 C   s&   |    |   | | |   d S r*   )r=   r@   bundlesdigest)r   r	   r   r   r   r	   I   s   
zBuildProcess.buildz"compute the hash digest for assetsc                 C   s  t j| js%zt | j W n ty$   td| j t	d Y nw | j
| ji}| j| jfD ](}tdd t |D }td|| |D ]}t| |||d| d< qHq1t| | jdd	d
d}tj||dddd W d    n1 s{w   Y  tdtj|ddd d S )N"   🚨 having issues manipulating %sr1   c                 s   s(    | ]}t j|d  dv r|V  qdS )>   .js.mapN)r'   r   splitext)r+   _r   r   r   r,   \   s    
z&BuildProcess.digest.<locals>.<genexpr>zbundles in %s %szMD5 ()zdigest.jsonwr   r   T   ),:)	sort_keysindent
separatorsz bundle digest in digest.json:
%s)rP   rQ   )r'   r   r2   r   makedirsr9   r   	exceptionr:   r;   r!   r    r   tuplelistdirinfor   r   r$   r   r%   dumpdumps)r   payloadfoldercopiescopyr)   r   r   r   rD   P   s.   zBuildProcess.digestzcopy and generate the bundlesc              
   C   s  t j| js%zt | j W n ty$   td| j t	d Y nw | 
| j t| d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 rydnd}
| d| d|
 }t| | j||||| | j| |rd|}d| d|d|	 d< |D ]>}d| d| d| }t|}| d| d|
 }| | j|}t|d}||j W d    n1 sw   Y  qqF|dkrdnd}td| t | j  t!d|  td t| | j d d!d"}t"#|$ }W d    n	1 s+w   Y  | | jt j%d#}t|d$d!d"}||&| W d    d S 1 sUw   Y  d S )%NrE   r1   _bundles_extrac                   S   s   d S r*   r   r   r   r   r   <lambda>x   s    z&BuildProcess.bundles.<locals>.<lambda> rJ   -)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.pyrL   )'r'   r   r2   r   rS   r9   r   rT   r:   r;   r   r   getattrr    r!   replacer   r"   r/   filterrW   splitr7   copyfiler   r   requestsgetr$   writecontentr>   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_initr   r   r   rC   m   s^   


$zBuildProcess.bundlesr*   )__name__
__module____qualname__r   r   staticmethodr   r<   r   r=   r@   rB   r	   rD   rC   r   r   r   r   r      s&    





r   c                       s   e Zd Z fddZ  ZS )Rendererc                    sb   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__r   r   r      s   zRenderer.__init__)r   r   r   r   __classcell__r   r   r   r   r      s    r   c                   C   s   t t d S r*   )fireFirer   r   r   r   r   renderer   s   r   )r'   r:   r%   rv   r7   loggingcoloredlogsr   rr   _utilsr   r   r   	getLoggerr   r   installr   r   r   r   r   r   r   <module>   s$    
 