a
    &ñ»jH$  ã                   @  s  d dl mZ g d¢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mZmZ d dlmZmZmZ d dlmZmZmZ er d dlmZmZ e	 de	j¡Zd	Ze d
¡ZG dd„ de ƒZ!dddœdd„Z"dddœdd„Z#ddddœdd„Z$G dd„ deƒZ%dS )é    )Úannotations)ÚWHEEL_INFO_REÚ	WheelFileÚ
WheelErrorN)ÚStringIOÚTextIOWrapper)ÚIOÚTYPE_CHECKINGÚLiteral)ÚZIP_DEFLATEDÚZipFileÚZipInfo)ÚSizedBufferÚStrPathzŠ^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]+?))(-(?P<build>\d[^\s-]*))?
     -(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>\S+)\.whl$i ¦ÎÚwheelc                   @  s   e Zd ZdS )r   N)Ú__name__Ú
__module__Ú__qualname__© r   r   ú5E:\soccer\ml_env\Lib\site-packages\wheel/wheelfile.pyr   !   s   r   Úbytes)ÚdataÚreturnc                 C  s   t  | ¡ d¡S )z!urlsafe_b64encode without paddingó   =)Úbase64Úurlsafe_b64encodeÚrstrip)r   r   r   r   r   %   s    r   c                 C  s"   ddt | ƒd@   }t | | ¡S )z!urlsafe_b64decode without paddingr   é   é   )Úlenr   Úurlsafe_b64decode)r   Úpadr   r   r   r    *   s    r    zfloat | Noneztuple[int, int, int, int, int])Ú	timestampr   c                 C  s6   t tj d| pt ¡ ¡ƒ} t| tƒ} t | ¡dd… S )NÚSOURCE_DATE_EPOCHr   é   )ÚintÚosÚenvironÚgetÚtimeÚmaxÚMINIMUM_TIMESTAMPÚgmtime)r"   r   r   r   Úget_zipinfo_datetime0   s    
r-   c                   @  sŽ   e Zd ZdZejZdefddddœdd„Zd"d
ddddœdd„Z	dddœdd„Z
d#dddddœdd„Zd$d
ddddœdd„Zddœd d!„Zd	S )%r   z‚A ZipFile derivative class that also reads SHA-256 hashes from
    .dist-info/RECORD and checks any read files against those.
    Úrr   zLiteral['r', 'w', 'x', 'a']r%   )ÚfileÚmodeÚcompressionc              
   C  s  t j |¡}t |¡| _| d¡r,| jd u r:td|›�ƒ‚tj	| |||dd� d 
| j d¡¡| _| jd | _i | _i | _|dk�r
| j|  ¡ vrÖ| j ¡ d	 }|  ¡ D ],}| ¡ |kr¨| dd
¡d | _|| _ qÖq¨d| j| j< d| j| jd < d| j| jd < z|  | j¡}W n( t�y:   td| j› d�ƒd ‚Y n0 |�¸ t t|ddd�¡D ]’}|\}	}
}|
�sn�qV|
 d¡\}}
zt |¡ W n$ t�y®   td|› �ƒd ‚Y n0 | ¡ dv �rÎtd|› d�ƒ‚|t|
 d¡ƒf| j|	< �qVW d   ƒ n1 �s 0    Y  d S )Nz.whlzBad wheel filename T)r1   Ú
allowZip64z{}.dist-infoZnameverz/RECORDr.   z/recordé   r   )NNz.jwsz.p7szMissing z fileÚ úutf-8)ÚnewlineÚencodingú=zUnsupported hash algorithm: >   Úmd5Úsha1zWeak hash algorithm (z) is not permitted by PEP 427Úascii)r&   ÚpathÚbasenamer   ÚmatchZparsed_filenameÚendswithr   r   Ú__init__ÚformatÚgroupZdist_info_pathÚrecord_pathÚ_file_hashesÚ_file_sizesÚnamelistÚlowerÚrsplitÚopenÚKeyErrorÚcsvÚreaderr   ÚsplitÚhashlibÚnewÚ
ValueErrorr    Úencode)Úselfr/   r0   r1   r=   ZloweredÚnameÚrecordÚliner<   Zhash_sumÚsizeÚ	algorithmr   r   r   r@   A   sb    
ÿ
ÿ
ÿþ
ÿþzWheelFile.__init__Nzstr | ZipInfozLiteral['r', 'w']zbytes | Nonez	IO[bytes])Úname_or_infor0   Úpwdr   c                   s°   dddœ‡ ‡‡‡‡fdd„}t |tƒr,|jn|‰|dkr\ˆ d¡s\ˆ| jvr\tdˆ› d	�ƒ‚t | |||¡‰ |dkr¬ˆ d¡s¬| jˆ \}‰ˆd ur¬t 	|¡‰ˆ j
| ‰ˆ _
ˆ S )
Nr   ÚNone)Únewdatar   c                   s<   ˆ j }ˆ| ƒ ˆ | ¡ |r8ˆ ¡ ˆkr8tdˆ› d�ƒ‚d S )NzHash mismatch for file 'ú')Ú_eofÚupdateÚdigestr   )r[   Úeof©ZefZef_nameZexpected_hashZrunning_hashZupdate_crc_origr   r   Ú_update_crcŒ   s
    
z#WheelFile.open.<locals>._update_crcr.   ú/zNo hash found for file 'r\   )Ú
isinstancer   Úfilenamer?   rD   r   r   rI   rN   rO   rb   )rR   rX   r0   rY   rb   rW   r   ra   r   rI   †   s"    ÿÿþý
zWheelFile.openÚstrrZ   )Úbase_dirr   c           	      C  sÔ   t  d| j|¡ g }t |¡D ]Ž\}}}| ¡  t|ƒD ]r}tj tj 	||¡¡}tj 
|¡r8tj ||¡ tjjd¡}|| jkr„q8| d¡rž| ||f¡ q8|  ||¡ q8q| ¡  |D ]\}}|  ||¡ qºd S )Nzcreating %r and adding %r to itrc   z
.dist-info)ÚlogÚinfore   r&   ÚwalkÚsortÚsortedr<   ÚnormpathÚjoinÚisfileÚrelpathÚreplaceÚseprC   r?   ÚappendÚwrite)	rR   rg   ÚdeferredÚrootÚdirnamesÚ	filenamesrS   r<   Úarcnamer   r   r   Úwrite_files¨   s     

zWheelFile.write_filesz
str | Nonez
int | None)re   ry   Úcompress_typer   c                 C  s’   t |dƒ�&}t | ¡ ¡}| ¡ }W d   ƒ n1 s60    Y  t|pH|t|jƒd�}t 	|j
¡t |j
¡B d> |_|p|| j|_|  |||¡ d S )NÚrb©Ú	date_timeé   )rI   r&   ÚfstatÚfilenoÚreadr   r-   Úst_mtimeÚstatÚS_IMODEÚst_modeÚS_IFMTÚexternal_attrr1   r{   Úwritestr)rR   re   ry   r{   ÚfÚstr   Úzinfor   r   r   rt   ¾   s    &ÿzWheelFile.writezSizedBuffer | str)Úzinfo_or_arcnamer   r{   r   c                 C  s¸   t |tƒr0t|tƒ d�}| j|_dtjB d> |_t |tƒrD| 	d¡}t
 | |||¡ t |tƒrd|jn|}t d|¡ || jkr´|  |¡}|jt| ¡ ƒ d¡f| j|< t|ƒ| j|< d S )Nr}   i´  r   r5   z	adding %rr;   )rd   rf   r   r-   r1   r{   r„   ÚS_IFREGrˆ   rQ   r   r‰   re   rh   ri   rC   Ú_default_algorithmrS   r   r_   ÚdecoderD   r   rE   )rR   r�   r   r{   ÚfnameÚhash_r   r   r   r‰   Ï   s(    
ÿ

ÿý

þ
zWheelFile.writestr)r   c                   s†   ˆ j d urxˆ jdkrxˆ jrxtƒ }tj|dddd�}| ‡ fdd„ˆ j ¡ D ƒ¡ | t	ˆ j
ƒddf¡ ˆ  ˆ j
| ¡ ¡ t ˆ ¡ d S )	NÚwú,ú"Ú
)Ú	delimiterÚ	quotecharÚlineterminatorc                 3  s.   | ]&\}\}}||d  | ˆ j | fV  qdS )r8   N)rE   )Ú.0r‘   rW   r’   ©rR   r   r   Ú	<genexpr>ô   s   
ÿz"WheelFile.close.<locals>.<genexpr>r4   )Úfpr0   rD   r   rK   ÚwriterÚ	writerowsÚitemsÚwriterowrA   rC   r‰   Úgetvaluer   Úclose)rR   r   rž   r   r›   r   r£   î   s    
þÿzWheelFile.close)r.   N)NN)N)r   r   r   Ú__doc__rN   Úsha256r�   r   r@   rI   rz   rt   r‰   r£   r   r   r   r   r   :   s   üH  ü"  ü ür   )N)&Ú
__future__r   Ú__all__r   rK   rN   ÚloggingÚos.pathr&   Úrer„   r)   Úior   r   Útypingr   r	   r
   Úzipfiler   r   r   Z	_typeshedr   r   ÚcompileÚVERBOSEr   r+   Ú	getLoggerrh   Ú	Exceptionr   r   r    r-   r   r   r   r   r   Ú<module>   s4   ý
 ÿ
