
    mj                       d Z ddlmZ ddlZddlZddlmZ  ee      j                         j                  j                  Z
ej                  j                  d ee
             e
dz  Zej                         r"ej                  j                  d ee             ddlZddlmZ ddlmZ ddlmZ ddd
Zedk(  r eej6                        dk  r ee         ed       eej6                  d    eej6                        dkD  rej6                  d   nd eej6                        dkD  rej6                  d   nd	      Z ede dej?                         j@                  dd       yy)a  Build the client-ready workbook for a run, on demand.

    python3 worker/make_report.py <RUN_ID>

Writes <exports>/<RUN_ID>_client.xlsx from the run's detailed output. Called by
download.php when the file is missing, so a run estimated before the formatted
export existed still yields a presentable workbook rather than a raw dump.

Idempotent: if the file is already newer than the detailed workbook it is left
alone.
    )annotationsN)Pathvendor)write_report)write_vr)ReferenceDataclientc           	        t        j                  t        dz  dz  j                               }t	        |d         }||  dz  }||  d| dz  }|j                         st        d|        t        d |gd	D cg c](  }t        d
z  |z  j                         rt        d
z  |z  * c}z   D              }|j                         r|j                         j                  |k\  r|S t        j                  |      }	d|	j                  v r|	d   j                  d      |	d<   d }
	 |j                  d      }|rt	        |      j                         rudd l}i }dD ]8  }t	        |      | dz  }|j                         s%|j!                  |      ||<   : t#        j$                  |      }
|
j'                  t	        |      dz         |dk(  rt+        |	|| |xs | |
       |S t-        |	|| |xs | |
       |S c c}w # t(        $ r d }
Y Aw xY w)Nworkerzconfig.jsonexports_dirz_detailed.xlsx_z.xlsxzno detailed workbook for c              3  P   K   | ]  }|j                         j                     y w)N)statst_mtime).0ps     worker/make_report.py	<genexpr>zbuild.<locals>.<genexpr>,   s       ,1QVVX&& ,s   $&)zvr_report.pyzvr_style.pyzexcel_report.pyengineflag fixtures_dirr   )ott_multiplierspan_mappingpan_channelsz.parquetzcalibration.jsonvr)jsonloadsBASE	read_textr   existsFileNotFoundErrormaxr   r   pd
read_excelcolumnsfillnagetpandasread_parquetr   from_framesload_calibration	Exceptionr   r   )run_idtitlekindcfgexportsdetailedoutn
newest_srcdfreffx_pdframesnamefps                   r   buildr>       s   
**dXo5@@B
CC3}%&GF8>22H
vhavU+
+C??";F8 DEE  ,
%W>+ !8Oa'') 	x!>+ 1+ , ,J zz|
++z9
	x	 BZ&&r*6

 CWW^$$r(//# FJ 8"X4& 1199;#&#3#3B#7F4L8  ++F3C  b,>!>? t|S&%/637 J 	Rfeovs;JA>+2  s    :-G1!AG6 :AG6 6HH__main__         zwrote z (,z bytes))Nr	   )r.   strr/   z
str | Noner0   rD   returnr   )!__doc__
__future__r   r   syspathlibr   __file__resolveparentr   pathinsertrD   _vendoris_dirr)   r$   engine.excel_reportr   engine.vr_reportr   engine.referencer   r>   __name__lenargvprint
SystemExitr   r   st_size     r   <module>r\      s+  
 #  
 H~&&-- 3t9 
/
>>HHOOAs7|$  , % *,^ z
388}qgmchhqk ]Q.chhqkD ]Q.chhqkH	>A 
F1#R((+7
34 r[   