a
    &ñ»jf  ã                   @  s’   d dl mZ d dlZd dlZd dlZd dlmZ d dl	m
Z
 d dlmZmZ ddlmZmZ e d¡Zdd	d	d
d
ddœdd„Zdd	dœdd„ZdS )é    )ÚannotationsN)ÚBytesGenerator)ÚBytesParser)ÚInvalidVersionÚVersioné   )Ú
WheelErrorÚ	WheelFilez6^(?P<namever>(?P<name>.+?)-(?P<ver>\d.*?))\.dist-info$Ústrz
str | NoneÚNone)Ú	directoryÚdest_dirÚbuild_numberÚlocal_versionÚreturnc              
     sŽ  ‡ fdd„t  ˆ ¡D ƒ}t|ƒdkr4tdˆ › �ƒ‚n|sFtdˆ › �ƒ‚|d }t |¡}| d¡}| d¡}| d	¡}	|d
u�r|	 dd¡d }
|dkrœ|
n|
› d|› �}zt|ƒ W n: t	yð } z"td|›d|› �ƒd
‚W Y d
}~n
d
}~0 0 d|v �rtd|›d�ƒ‚|› d|› �}|› d�}t  
t j ˆ |¡t j ˆ |¡¡ |}|}t j ˆ |d¡}zDt|dƒ�$}ttjjd� |¡}W d
  ƒ n1 �s”0    Y  W n& t�yÆ   td|› d�ƒd
‚Y n0 |d= ||d< t|dƒ�"}t|dd� |¡ W d
  ƒ n1 �s
0    Y  t j ˆ |d¡}t|dƒ�P}ttjjd� |¡}| dg ¡}| d¡}|�sptd|› d�ƒ‚W d
  ƒ n1 �s†0    Y  |d
u�rž|n|}|d
u�r|d= |�rÌ||d< |d| 7 }||k�rt|dƒ�"}t|dd� |¡ W d
  ƒ n1 �s
0    Y  t|ƒ}t j ||› d|› d �¡}t|d!ƒ�0}td"|› d#�dd$d%� | ˆ ¡ W d
  ƒ n1 �sx0    Y  td&ƒ d
S )'aÃ  Repack a previously unpacked wheel directory into a new wheel file.

    The .dist-info/WHEEL file must contain one or more tags so that the target
    wheel file name can be determined.

    :param directory: The unpacked wheel directory
    :param dest_dir: Destination directory (defaults to the current directory)
    :param build_number: Build tag to use in the wheel name
    :param local_version: Local version identifier to add or replace
    c                   s0   g | ](}t j t j ˆ |¡¡rt |¡r|‘qS © )ÚosÚpathÚisdirÚjoinÚDIST_INFO_REÚmatch)Ú.0Úfn©r   r   ú:E:\soccer\ml_env\Lib\site-packages\wheel/_commands/pack.pyÚ
<listcomp>!   s    þzpack.<locals>.<listcomp>é   z)Multiple .dist-info directories found in z#No .dist-info directories found in r   ZnameverÚnameÚverNú+Ú zInvalid version z: ú-z!Invalid local version identifier zK: wheel filenames cannot contain '-' in the version; use '_' instead of '-'z
.dist-infoÚMETADATAÚrb)ÚpolicyzMissing z/METADATA filer   Úwb)ÚmaxheaderlenÚWHEELÚTagZBuildzNo tags present in z./WHEEL; cannot determine target wheel filenamez.whlÚwzRepacking wheel as z...T)ÚendÚflushÚOK)r   ÚlistdirÚlenr   r   r   ÚgroupÚsplitr   r   Úrenamer   r   Úopenr   Úemailr%   Úcompat32ÚparseÚFileNotFoundErrorr   ÚflattenÚget_allÚgetÚcompute_tagliner	   ÚprintZwrite_files)r   r   r   r   Zdist_info_dirsÚdist_info_dirr   Zname_versionr   ÚversionÚbase_versionÚnew_versionÚeZnew_nameverZnew_dist_info_dirÚmetadata_pathÚfÚmetadataZwheel_file_pathÚinfoÚtagsZexisting_build_numberZtaglineÚ
wheel_pathZwfr   r   r   Úpack   s„    
þ




ÿ,

ÿ
þ82

ÿ$

2*rH   z	list[str])rF   r   c                 C  sX   t dd„ | D ƒƒ}t dd„ | D ƒƒ}t dd„ | D ƒƒ}d d |¡d |¡d |¡g¡S )zcCompute a tagline from a list of tags.

    :param tags: A list of tags
    :return: A tagline
    c                 S  s   h | ]}|  d ¡d ’qS )r"   r   ©r1   ©r   Útagr   r   r   Ú	<setcomp>…   ó    z"compute_tagline.<locals>.<setcomp>c                 S  s   h | ]}|  d ¡d ’qS )r"   r   rI   rJ   r   r   r   rL   †   rM   c                 S  s   h | ]}|  d ¡d ’qS )r"   r   rI   rJ   r   r   r   rL   ‡   rM   r"   Ú.)Úsortedr   )rF   ZimplsZabiversÚ	platformsr   r   r   r;      s    r;   )N)Ú
__future__r   Úemail.policyr4   Úos.pathr   ÚreÚemail.generatorr   Úemail.parserr   Zpackaging.versionr   r   Z	wheelfiler   r	   Úcompiler   rH   r;   r   r   r   r   Ú<module>   s   
 üo