a
    b3jH$                     @  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rd 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   l/www/wwwroot/dpstar/app/297b3aabda72fedb274352021c2dd8b5_venv/lib/python3.9/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   zA 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 | _|| _ qqd| 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 rt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rt	| 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rq8|dr|||f q8| || q8q|  |D ]\}}| || qd 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   
 
