3  fL@sddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddZ ddZ ddZdd Zd d ZdS) NcCstjdd}|jddd|jdddd tjjd |j}d }yttft |Wn4t k r}ztd j |d }WYdd}~XnXt j d dS)Nz,Recreate wheel of package with given RECORD.) description record_pathzPath to RECORD file)helpz-oz --output-dirz>Dir where to place the wheel, defaults to current working dir.outdir)rdestdefaultrz Failed: {})argparseArgumentParser add_argumentospathcurdir parse_argsprintrewheel_from_recordvars BaseExceptionformatsysexit)parsernsZretcodeer-/opt/alt/python36/lib64/python3.6/__init__.pyrun s  rcsg}tjtjtjg}dd|D}x|D]}d}xd|D]\tjj|djtj fddtj D}fdd|D}t |dkr8|d}q8W|dk r|j tjj|dq*|j dq*W|S) NcSsg|]}tjj|r|qSr)r r exists).0sprrr (sz'find_system_records..z-[^\{0}]+\.dist-infocsg|]}tjj|qSr)r r join)rp)rrrr .scsg|]}tj|r|qSr)rematch)rc) dist_info_rerrr 0srrZRECORD) sitegetsitepackagesr base_prefixbase_exec_prefixr r r!rseplistdirlenappend)ZprojectsZrecordsZ sys_sitepackZprojectr Z candidatesZfilteredr)r&rrfind_system_recordss    r/cCstjjtjj|}|t|djtjj}t||\}}t|}tjj||d}t j |dt j d}t j } tj| } x:|D]2\} } } |jtjj|| | d| j| | | gqW| j|ddg|j|| j|j|jS)Nz.whlw)modeZ compression)Zarcname)r r dirnamer-stripr+get_records_to_packget_wheel_namer!zipfileZZipFileZ ZIP_DEFLATEDioStringIOcsvwriterwriteZwriterowZwritestrgetvalueclosefilename)rrsite_dirrecord_relpathto_writeto_omitZnew_wheel_nameZnew_wheel_pathZ new_wheelZ new_recordr;fZsha_hashsizerrrr:s rcCstjjtjj|d}tj|dd}tjjj |j }WdQRXtjjtjj|d}tj|dd}tjjj |j }WdQRX|j d}|j d}d} g} x&|j dD]} | j | jd d qWd j| } |j djd d d \} } td||| | | | g}d jt|S)NZWHEELzutf-8)encodingZMETADATANameZVersionr2ZTag-r.r)r r r!r3codecsopenemailrZParserZparsestrreadgetZget_allr.splitfilterlist)rZwheel_info_pathZwheel_info_fileZ wheel_infoZ metadata_pathZ metadata_fileZmetadataZ distributionversionZ build_tagZlang_tagtZabi_tagZplat_tagZto_joinrrrr6Vs    r6c Cstjj||}tj|dd}|j}WdQRXtjj|jtjj}|dt d d}g}g}x|j D]}|j d} t | dkrntjj | ds| dj ds| djd s| djd s| d|ks| dj |r|j| q|j| qnqnW||fS) Nzutf-8)rFz dist-infodata,rJrz..z.pycz.pyo)r r r!rKrLrNr3r4r+r- splitlinesrPisabs startswithendswithr.) r@rAZrecord_file_pathZ record_fileZrecord_contentsZdata_dirrBrClZsplrrrr5ns"    r5)r rKr:Z email.parserrMr r8r#r' subprocessrr7rr/rr6r5rrrrs