
    DxMg                     ^   d dl m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 d dlmZ d dlmZmZmZ er5d dlmZmZmZ d d	lmZ eeej         e         f         Z! G d
 deee          Z" ej#        dej$                  Z%dZ&dddZ' G d de          Z(dS )    )annotationsN)StringIOTextIOWrapper)IOTYPE_CHECKINGLiteral)ZIP_DEFLATEDZipFileZipInfo)
WheelError)logurlsafe_b64decodeurlsafe_b64encode)ProtocolSizedUnion)Bufferc                      e Zd ZdS )SizedBufferN)__name__
__module____qualname__     /lib/python3.11/site-packages/wheel/wheelfile.pyr   r      s          r   r   z^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]+?))(-(?P<build>\d[^\s-]*))?
     -(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>\S+)\.whl$i 	timestampfloat | Nonec                    t          t          j                            d| pt	          j                                        } t          | t                    } t	          j        |           dd         S )NSOURCE_DATE_EPOCHr      )intosenvirongettimemaxMINIMUM_TIMESTAMPgmtime)r   s    r   get_zipinfo_datetimer)   $   sV     BJNN#6	8PTY[[QQRRII011I;y!!!A#&&r   c                  d    e Zd ZdZej        Zdefd"d	Z	 	 d#d$dZ	d%dZ
	 	 d&d'dZ	 d(d)d Zd! Zd
S )*	WheelFilezA ZipFile derivative class that also reads SHA-256 hashes from
    .dist-info/RECORD and checks any read files against those.
    rfileStrPathmodeLiteral['r', 'w', 'x', 'a']compressionr!   c                   t           j                            |          }t                              |          | _        |                    d          r| j        t          d|          t          j	        | |||d           d
                    | j                            d                    | _        | j        dz   | _        i | _        i | _        |dk    rhd	| j        | j        <   d	| j        | j        d
z   <   d	| j        | j        dz   <   	 |                     | j                  }n'# t"          $ r t          d| j         d          d w xY w|5  t%          j        t)          |dd                    D ]}|\  }}}	|s|                    d          \  }
}	 t-          j        |
           n!# t0          $ r t          d|
           d w xY w|
                                dv rt          d|
 d          |
t5          |                    d                    f| j        |<   	 d d d            d S # 1 swxY w Y   d S d S )Nz.whlzBad wheel filename T)r1   
allowZip64z{}.dist-infonameverz/RECORDr,   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basenameWHEEL_INFO_REmatchparsed_filenameendswithr   r
   __init__formatgroupdist_info_pathrecord_path_file_hashes_file_sizesopenKeyErrorcsvreaderr   splithashlibnew
ValueErrorlowerr   encode)selfr-   r/   r1   r?   recordliner>   hash_sumsize	algorithms              r   rD   zWheelFile.__init__3   s     7##D)),228<<  (( 	AD,@,H?8??@@@tT{tTTTT,33 &&y11
 
  .:NP3;;2<Dd./;EDd.78;EDd.78O4#344 O O O !CD,<!C!C!CDD$NO   J!&"wGGG   D ,0(D(D# ! *2..*=*='Ix$I....% $ $ $(F9FF #$$
 !((O;;('I ' ' '   ")(//'*B*BCC/D%d+++                  ;s8   D+ +$EAH7F21H72GAH77H;>H;Nname_or_infostr | ZipInfoLiteral['r', 'w']pwdbytes | Nonereturn	IO[bytes]c                  	
 d
	
fd}t          |t                    r|j        n||dk    r1                    d          s| j        vrt          d d	          t          j        | |||          |dk    rJ                    d          s5| j                 \  }#t          j	        |          	j
        |c
_
        S )Nnewdatabytesr`   Nonec                    j         } |                                |            |r+                                k    rt          d d          d S d S )NzHash mismatch for file '')_eofupdatedigestr   )rc   eofefef_nameexpected_hashrunning_hashupdate_crc_origs     r   _update_crcz#WheelFile.open.<locals>._update_crcs   sy    'COG$$$((( H|**,,== !FG!F!F!FGGGH H==r   r,   /zNo hash found for file 'rg   )rc   rd   r`   re   )
isinstancer   filenamerC   rI   r   r
   rK   rP   rQ   rq   )rU   r[   r/   r^   rq   rZ   rl   rm   rn   ro   rp   s         @@@@@r   rK   zWheelFile.openm   s   	H 	H 	H 	H 	H 	H 	H 	H 	H 	H &0g%F%FXL!!L 	 CKK$$S)) t000BBBBCCC\$dC883;;w//44;'+'8'A$I}(  '{95524.+/	r   base_dirstrc                   t          j        d| j         d| d           g }t          j        |          D ]\  }}}|                                 t          |          D ]}t          j                            t          j        	                    ||                    }t          j        
                    |          rt          j                            ||                              t          j        j        d          }|| j        k    r|                    d          r|                    ||f           |                     ||           |                                 |D ]\  }}|                     ||           d S )Nz
creating 'z' and adding 'z' to itrr   z
.dist-info)r   infort   r"   walksortsortedr>   normpathjoinisfilerelpathreplaceseprH   rC   appendwrite)	rU   ru   deferredrootdirnames	filenamesnamer>   arcnames	            r   write_fileszWheelFile.write_files   ss   LdmLL8LLLMMM*,)+):): 	2 	2%D(I MMOOOy)) 	2 	2w''T4(@(@AA7>>$'' 2 goodH==EEbgkSVWWG$"222|44 2 w8888

4111	2 	% 	& 	&MD'JJtW%%%%	& 	&r   rt   r   
str | Nonecompress_type
int | Nonere   c                   t          |d          5 }t          j        |                                          }|                                }d d d            n# 1 swxY w Y   t          |p|t          |j                            }t          j	        |j
                  t          j        |j
                  z  dz  |_        |p| j        |_        |                     |||           d S )Nrb	date_time   )rK   r"   fstatfilenoreadr   r)   st_mtimestatS_IMODEst_modeS_IFMTexternal_attrr1   r   writestr)rU   rt   r   r   fstdatazinfos           r   r   zWheelFile.write   s    (D!! 	Q!((**%%B6688D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 x+?+L+L
 
 
  $|BJ77$+bj:Q:QQVXX+?t/?eT=11111s   ;AAAzinfo_or_arcnamer   SizedBuffer | strc                   t          |t                    r@t          |t                                }| j        |_        dt          j        z  dz  |_        t          |t                    r|	                    d          }t          j        | |||           t          |t                    r|j        n|}t          j        d| d           || j        k    rq|                     |          }|j        t%          |                                                              d          f| j        |<   t-          |          | j        |<   d S d S )Nr   i  r   r7   zadding 'rg   r=   )rs   rv   r   r)   r1   r   r   S_IFREGr   rT   r
   r   rt   r   rx   rH   _default_algorithmr   r   rj   decoderI   lenrJ   )rU   r   r   r   fnamehash_s         r   r   zWheelFile.writestr   sT    &,, 	J& ,@,B,B      .2-=*.3dl.Br-I*dC   	(;;w''D/}EEE *G44"%%! 	
 	$E$$$%%%D$$$++D11E
!%,,..1188AA(De$ '*$iiDU### %$r   c                     j         ǉ j        dk    r j        rt                      }t	          j        |ddd          }|                     fd j                                        D                        |                    t           j
                  ddf                                 j
        |                                           t          j                    d S )Nw,"
)	delimiter	quotecharlineterminatorc              3  P   K   | ] \  }\  }}||d z   |z   j         |         fV  !dS )r:   N)rJ   ).0r   rZ   r   rU   s       r   	<genexpr>z"WheelFile.close.<locals>.<genexpr>   sX        11	5 IOe3T5Ee5LM     r   r6   )fpr/   rI   r   rM   writer	writerowsitemswriterowrE   rH   r   getvaluer
   close)rU   r   r   s   `  r   r   zWheelFile.close   s    749#3#38I#3::DZsSWXXXF   595F5L5L5N5N     OOVD$455r2>???MM$*DMMOO<<<dr   )r-   r.   r/   r0   r1   r!   )r,   N)r[   r\   r/   r]   r^   r_   r`   ra   )ru   rv   r5   )rt   rv   r   r   r   r   r`   re   N)r   r\   r   r   r   r   )r   r   r   __doc__rP   sha256r   r	   rD   rK   r   r   r   r   r   r   r   r+   r+   ,   s          !
 -0'	8 8 8 8 8z #& 	         D& & & &2 #$(	2 2 2 2 2* %)	0 0 0 0 0>    r   r+   r   )r   r   ))
__future__r   rM   rP   os.pathr"   rer   r%   ior   r   typingr   r   r   zipfiler	   r
   r   	wheel.clir   
wheel.utilr   r   r   r   r   r   typing_extensionsr   rv   PathLiker.   r   compileVERBOSEr@   r'   r)   r+   r   r   r   <module>r      s   " " " " " " 



   				   & & & & & & & & - - - - - - - - - - 2 2 2 2 2 2 2 2 2 2             @ @ @ @ @ @ @ @ @ @ 4----------((((((CS))*G33333eVX333
 
CJ 
  ' ' ' ' 'w w w w w w w w w wr   