Your IP : 18.216.161.178
3
� fL � @ s� d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZdd� Zdd� Z
dd� Zdd � Zd
d� ZdS )� Nc C s� t jdd�} | jddd� | jdddd tjjd
� | j� }d}yttf t |��� W n4 t
k
r� } ztdj|�� d
}W Y d d }~X nX tj
d
� d S )Nz,Recreate wheel of package with given RECORD.)Zdescription�record_pathzPath to RECORD file)�helpz-oz--output-dirz>Dir where to place the wheel, defaults to current working dir.�outdir)r �dest�defaultr z
Failed: {}� )�argparse�ArgumentParser�add_argument�os�path�curdir�
parse_args�print�rewheel_from_record�vars�
BaseException�format�sys�exit)�parser�nsZretcode�e� r �?/opt/alt/python36/lib64/python3.6/ensurepip/rewheel/__init__.py�run
s r c s� g }t jtjtjg�}dd� |D �}x�| D ]�}d}xd|D ]\�tjj�|�djtj � � �fdd�tj
��D �}� fdd�|D �}t|�dkr8|d }q8W |dk r�|jtjj|d �� q*|jd� q*W |S )
z�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
c S s g | ]}t jj|�r|�qS r )r r �exists)�.0�spr r r �
<listcomp>( s z'find_system_records.<locals>.<listcomp>Nz-[^\{0}]+\.dist-infoc s g | ]}t jj� |��qS r )r r �join)r �p)r r r r . s c s g | ]}t j� |�r|�qS r )�re�match)r �c)�dist_info_rer r r 0 s r r ZRECORD)
�site�getsitepackagesr �base_prefix�base_exec_prefixr r r r �sep�listdir�len�append)ZprojectsZrecordsZsys_sitepackZprojectr Z
candidatesZfilteredr )r% r r �find_system_records s
r. c C s� t jjt jj| ��}| t|�d� jt jj�}t||�\}}t| �}t jj||d �}t j
|dt jd�}tj
� } tj| �}
x:|D ]2\}}}
|jt jj||�|d� |
j|||
g� q�W |
j|ddg� |j|| j� � |j� |jS )zcRecreates a whee of package with given record_path and returns path
to the newly created wheel.Nz.whl�w)�modeZcompression)Zarcname� )r r �dirnamer, �stripr* �get_records_to_pack�get_wheel_namer �zipfileZZipFileZZIP_DEFLATED�io�StringIO�csv�writer�writeZwriterowZwritestr�getvalue�close�filename)r r �site_dir�record_relpath�to_write�to_omitZnew_wheel_nameZnew_wheel_pathZ new_wheelZ
new_recordr: �fZsha_hash�sizer r r r : s
r c C s t jjt jj| �d�}tj|dd��}tjj� j |j
� �}W dQ R X t jjt jj| �d�}tj|dd��}tjj� j |j
� �}W dQ R X |jd�}|jd�}d} g }
x&|jd �D ]}|
j
|jd
�d � q�W dj|
�}
|jd �jd
�d
d� \}}
td||| |
||
g�}d
jt|��S )z.Return proper name of the wheel, without .whl.ZWHEELzutf-8)�encodingNZMETADATA�NameZVersionr1 ZTag�-r �.r � )r r r r2 �codecs�open�emailr ZParserZparsestr�read�getZget_allr- �split�filter�list)r Zwheel_info_pathZwheel_info_fileZ
wheel_infoZ
metadata_pathZ
metadata_fileZmetadataZdistribution�versionZ build_tagZlang_tag�tZabi_tagZplat_tagZto_joinr r r r5 V s
r5 c
C s t jj| |�}tj|dd��}|j� }W dQ R X t jj|�jt jj�}|dt d� � d }g }g }x�|j
� D ]�}|jd�} t | �dkrnt jj| d �s�| d j
d �s�| d jd
�s�| d jd�s�| d |ks�| d j
|�r�|j| � q�|j| � qnqnW ||fS )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)
zutf-8)rE Nz dist-info�data�,rI r z..z.pycz.pyo)r r r rJ rK rM r2 r3 r* r, �
splitlinesrO �isabs�
startswith�endswithr- )
r? r@ Zrecord_file_pathZrecord_fileZrecord_contentsZdata_dirrA rB �lZsplr r r r4 n s"