ó 3Y~gc@sÇddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z d„Z d„Z d„Zd„Zd„Zd„Zd„ZdS( iÿÿÿÿNc Cs¯tjddƒ}|jdddƒ|jddddd d d tjjƒ|jƒ}d }ytt|ƒGHWn't k r}d j |ƒGHd}nXt j dƒdS(Nt descriptions,Recreate wheel of package with given RECORD.t record_paththelpsPath to RECORD files-os --output-dirs>Dir where to place the wheel, defaults to current working dir.tdesttoutdirtdefaultis Failed: {}i( targparsetArgumentParsert add_argumenttostpathtcurdirt parse_argstrewheel_from_recordtvarst BaseExceptiontformattsystexit(tparsertnstretcodete((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pytrun s    cCs3y tjSWn!tk r.ttdtjƒSXdS(skGet prefix to site-specific directory prefix where the platform independent Python files are installed.t real_prefixN(Rt base_prefixtAttributeErrortgetattrtprefix(((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pyt_get_base_prefixs  cCs'y tjSWntk r"tjSXdS(sF Get exec_prefix dir used to find the machine-specific Python library.N(Rtbase_exec_prefixRt exec_prefix(((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pyt_get_base_exec_prefix)s  c Csrg}tjddkr(tjƒ}ntjtƒtƒgƒ}g|D]}tjj|ƒrJ|^qJ}xý|D]õ}d}x®|D]¦}tjj ||ƒdj tj ƒ}gtj |ƒD]}tjj ||ƒ^qÃ}g|D]} tj|| ƒrë| ^që} t| ƒdkrˆ| d}qˆqˆW|dk r]|jtjj |dƒƒqu|jdƒquW|S(s±Return 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 iis-[^\{0}]+\.dist-infoitRECORDN(Rt version_infotsitetgetsitepackagesRR R R texiststNonetjoinRtseptlistdirtretmatchtlentappend( tprojectstrecordst sys_sitepacktsptprojectR t dist_info_retpt candidatestctfiltered((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pytfind_system_records0s"+  %1+ cCs?tjjtjj|ƒƒ}|t|ƒjtjjƒ}t||ƒ\}}t|ƒ}tjj||dƒ}t j |dddt j ƒ}t j ƒ} tj| ƒ} xO|D]G\} } } |jtjj|| ƒd| ƒ| j| | | gƒq·W| j|ddgƒ|j|| jƒƒ|jƒ|jS(scRecreates a whee of package with given record_path and returns path to the newly created wheel.s.whltmodetwt compressiontarcnamet(R R tdirnameR,tstripR(tget_records_to_packtget_wheel_nameR'tzipfiletZipFilet ZIP_DEFLATEDtiotBytesIOtcsvtwritertwritetwriterowtwritestrtgetvaluetclosetfilename(RRtsite_dirtrecord_relpathtto_writetto_omittnew_wheel_nametnew_wheel_patht new_wheelt new_recordRHtftsha_hashtsize((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pyR Ns  " c Cs€tjjtjj|ƒdƒ}tj|ddƒ%}tjjƒj |j ƒƒ}WdQXtjjtjj|ƒdƒ}tj|ddƒ%}tjjƒj |j ƒƒ}WdQX|j dƒ}|j dƒ}d} g} x1|j d ƒD] } | j | jd ƒd ƒqôWd j| ƒ} |j d ƒjd ƒd d!\} } td||| | | | gƒ}d jt|ƒƒS(s.Return proper name of the wheel, without .whl.tWHEELtencodingsutf-8NtMETADATAtNametVersionR=tTagt-it.ii(R R R'R>tcodecstopentemailRtParsertparsestrtreadtgettget_allR-tsplittfilterR&tlist(Rtwheel_info_pathtwheel_info_filet wheel_infot metadata_patht metadata_filetmetadatat distributiontversiont build_tagtlang_tagtttabi_tagtplat_tagtto_join((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pyRAjs !$!$%!c CsUtjj||ƒ}tj|ddƒ}|jƒ}WdQXtjj|ƒjtjjƒ}|t dƒ d}g}g}xÇ|j ƒD]¹}|j dƒ} t | ƒdkrŽtjj | dƒs'| dj d ƒs'| djd ƒs'| djd ƒs'| d|ks'| dj |ƒr7|j| ƒqG|j| ƒqŽqŽW||fS( sAccepts 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) R[sutf-8Ns dist-infotdatat,iis..s.pycs.pyo(R R R'RbRcRgR>R?R(R,t splitlinesRjtisabst startswithtendswithR-( RORPtrecord_file_patht record_filetrecord_contentstdata_dirRQRRtltspl((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pyR@‚s"!)&#(RRbRGt email.parserRdR RER*R#t subprocessRRBRRR R8R RAR@(((s?/opt/alt/python27/lib64/python2.7/ensurepip/rewheel/__init__.pyts"