e fL @ 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
Z
d d l Z d d Z d d Z
d d Z d d Z d
d Z d S) Nc C s t j d d } | j d d d | j d d d d d d
d t j j | j } d } y t t t | Wn> t
k
r } z t d
j | d } WYd d } ~ Xn Xt j
d d S)NZdescriptionz,Recreate wheel of package with given RECORD.record_pathhelpzPath to RECORD filez-oz--output-dirz>Dir where to place the wheel, defaults to current working dir.destoutdirdefaultr z
Failed: {} )argparseArgumentParseradd_argumentospathcurdir
parse_argsprintrewheel_from_recordvars
BaseExceptionformatsysexit)parsernsZretcodee r ?/opt/alt/python34/lib64/python3.4/ensurepip/rewheel/__init__.pyrun
s
r c s g } t j t j t j g } d d | D } x | D] } d } x | D] t j j | d j t j f d d t j
D } f d d | D } t | d k rN | d } qN qN W| d k r| j t j j | d q; | j d q; W| S)
zReturn list of paths to RECORD files for system-installed projects.
If a project is not installed, the resulting list contains None instead
of a path to its RECORD
c S s( g | ] } t j j | r | q Sr )r r exists).0spr r r
( s z'find_system_records..Nz-[^\{0}]+\.dist-infoc s% g | ] } t j j | q Sr )r r join)r p)r r r r . s c s( g | ] } t j | r | q Sr )rematch)r c)dist_info_rer r r 0 s r r ZRECORD)
sitegetsitepackagesr base_prefixbase_exec_prefixr r r r seplistdirlenappend)ZprojectsZrecordsZsys_sitepackZprojectr Z
candidatesZfilteredr )r% r r find_system_records s
%"r. c C sE t j j t j j | } | t | d j t j j } t | | \ } } t | } t j j | | d } t j
| d d d t j } t j
} t j | }
xO | D]G \ } } }
| j t j j | | d | |
j | | |
g q W|
j | d d g | j | | j | j | j S)zcRecreates a whee of package with given record_path and returns path
to the newly created wheel.Nz.whlmodewZcompressionZarcname )r r dirnamer, stripr* get_records_to_packget_wheel_namer zipfileZZipFileZZIP_DEFLATEDioStringIOcsvwriterwriteZwriterowZwritestrgetvalueclosefilename)r r site_dirrecord_relpathto_writeto_omitZnew_wheel_nameZnew_wheel_pathZ new_wheelZ
new_recordr: fZsha_hashsizer r r r : s %"
r c C s t j j t j j | d } t j | d d % } t j j j | j
} Wd QXt j j t j j | d } t j | d d % } t j j j | j
} Wd QX| j d } | j d } d } g }
x1 | j d D] } |
j
| j d
d q Wd j |
}
| j d j d
d
d \ } }
t d | | | |
| |
g } d
j t | S)z.Return proper name of the wheel, without .whl.ZWHEELencodingzutf-8NZMETADATANameZVersionr1 ZTag-r .r )r r r r2 codecsopenemailr ZParserZparsestrreadgetZget_allr- splitfilterlist)r Zwheel_info_pathZwheel_info_fileZ
wheel_infoZ
metadata_pathZ
metadata_fileZmetadataZdistributionversionZ build_tagZlang_tagtZabi_tagZplat_tagZto_joinr r r r5 V s !$!$(!r5 c
C s[ t j j | | } t j | d d } | j } Wd QXt j j | j t j j } | d t d d } g } g } x | j
D] } | j d } t | d k r t j j | d s-| d j
d s-| d j d
s-| d j d s-| d | k s-| d j
| r=| j | qM| j | q q W| | f S)a Accepts path of sitedir and path of RECORD file relative to it.
Returns two lists:
- list of files that can be written to new RECORD straight away
- list of files that shouldn't be written or need some processing
(pyc and pyo files, scripts)
rE zutf-8Nz dist-infodata,rI r z..z.pycz.pyo)r r r rJ rK rM r2 r3 r* r,
splitlinesrO isabs
startswithendswithr- )
r? r@ Zrecord_file_pathZrecord_fileZrecord_contentsZdata_dirrA rB lZsplr r r r4 n s" !)&#r4 )r rJ r9 Zemail.parserrL r r7 r" r&