
    ϶vg                        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 d dlmZmZmZ  ej        dej                  ZdZdd	Z G d
 de          ZdS )    )annotationsN)StringIOTextIOWrapper)ZIP_DEFLATEDZipFileZipInfo)
WheelError)logurlsafe_b64decodeurlsafe_b64encodez^(?P<namever>(?P<name>[^\s-]+?)-(?P<ver>[^\s-]+?))(-(?P<build>\d[^\s-]*))?
     -(?P<pyver>[^\s-]+?)-(?P<abi>[^\s-]+?)-(?P<plat>\S+)\.whl$i c                    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)	timestamps    _/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/_vendor/wheel/wheelfile.pyget_zipinfo_datetimer      sV     BJNN#6	8PTY[[QQRRII011I;y!!!A#&&    c                  P    e Zd ZdZej        ZdefdZd
dZ	d Z
ddZ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.
    rc                   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)compression
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)selffilemoder    r-   recordliner,   hash_sumsize	algorithms              r   r2   zWheelFile.__init__(   s   7##D)),228<<  (( 	AD,@,H?8??@@@tT{tTTTT,33 &&y11
 
  .: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;Nc                  	
 	
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 )Nc                    j         } |                                |            |r+                                k    rt          d d          d S d S )NzHash mismatch for file '')_eofupdatedigestr	   )newdataeofefef_nameexpected_hashrunning_hashupdate_crc_origs     r   _update_crcz#WheelFile.open.<locals>._update_crc^   sy    'COG$$$((( H|**,,== !FG!F!F!FGGGH H==r   r   /zNo hash found for file 'rM   )
isinstancer   filenamer1   r7   r	   r   r9   r>   r?   rX   )rC   name_or_inforE   pwdrX   rJ   rS   rT   rU   rV   rW   s         @@@@@r   r9   zWheelFile.open]   s   	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   c                   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 itrY   z
.dist-info)r
   infor[   r   walksortsortedr,   normpathjoinisfilerelpathreplacesepr6   r1   appendwrite)	rC   base_dirdeferredrootdirnames	filenamesnamer,   arcnames	            r   write_fileszWheelFile.write_filesz   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   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   )r9   r   fstatfilenoreadr   r   st_mtimestatS_IMODEst_modeS_IFMTexternal_attrr    compress_typewritestr)rC   r[   rq   r   fstdatazinfos           r   rj   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c                   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 )Nru   i  rw   r%   zadding 'rM   r+   )rZ   strr   r   r    r   r|   S_IFREGr   rB   r   r   r[   r
   r_   r6   _default_algorithmrp   r   rP   decoder7   lenr8   )rC   zinfo_or_arcnamer   r   fnamehash_s         r   r   zWheelFile.writestr   sR   &,, 	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)r8   ).0r   rJ   r   rC   s       r   	<genexpr>z"WheelFile.close.<locals>.<genexpr>   sX        11	5 IOe3T5Ee5LM     r   r$   )fprE   r7   r   r;   writer	writerowsitemswriterowr3   r6   r   getvaluer   close)rC   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   Nr#   N)__name__
__module____qualname____doc__r>   sha256r   r   r2   r9   rr   rj   r   r    r   r   r   r   !   s          !"%< 3 3 3 3j   :& & &,
2 
2 
2 
20 0 0 04    r   r   r   )
__future__r   r;   r>   os.pathr   rer|   r   ior   r   zipfiler   r   r   	wheel.clir	   
wheel.utilr
   r   r   compileVERBOSEr.   r   r   r   r   r   r   <module>r      s-   " " " " " " 



   				   & & & & & & & & 2 2 2 2 2 2 2 2 2 2             @ @ @ @ @ @ @ @ @ @ 
CJ 
  ' ' ' 'c c c c c c c c c cr   