
    Yh                     \   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r1d 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jF                  dejH                        Z%dZ&dddZ' G d de      Z(y)    )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y)SizedBufferN)__name__
__module____qualname__     `/var/www/django-portfolio.reubendavern.link/venv/lib/python3.12/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 c                    t        t        j                  j                  d| xs t	        j                                     } t        | t              } t	        j                  |       dd S )NSOURCE_DATE_EPOCHr      )intosenvirongettimemaxMINIMUM_TIMESTAMPgmtime)	timestamps    r   get_zipinfo_datetimer(   $   sL     BJJNN#6	8PTYY[QRII01I;;y!!A&&r   c                      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y)	WheelFilezA ZipFile derivative class that also reads SHA-256 hashes from
    .dist-info/RECORD and checks any read files against those.
    rc                   t         j                  j                  |      }t        j	                  |      | _        |j                  d      r| j
                  t        d|      t        j                  | |||d       dj                  | j
                  j                  d            | _        | j                  dz   | _        i | _        i | _        |dk(  rd	| j                  | j                  <   d	| j                  | j                  d
z   <   d	| j                  | j                  dz   <   	 | j!                  | j                        }|5  t%        j&                  t)        |dd            D ]  }|\  }}}	|s|j+                  d      \  }
}	 t-        j.                  |
       |
j3                         dv rt        d|
 d      |
t5        |j7                  d            f| j                  |<    	 d d d        y y # t"        $ r t        d| j                   d      d w xY w# t0        $ r t        d|
       d w xY w# 1 sw Y   y xY w)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liner9   hash_sumsize	algorithms              r   r?   zWheelFile.__init__3   sW    77##D),228<  (D,@,@,H28,?@@tT{tT,33  &&y1
  ..:NP3;2<Dd../;EDd..78;EDd..78O4#3#34  JJ!&"wG D ,0(D(D# *2..*='Ix$I. !(O;(3I; ?& '  ")(//'*BC/D%%d++    O 8D,<,<+=U!CD$NO & $(:9+F#$$ s2   (G4 AH7HAH74$HH44H77I Nc                  	
 d	
fd}t        |t              r|j                  n||dk(  r.j                  d      s| j                  vrt        d d      t        j                  | |||      |dk(  rNj                  d      s=| j                     \  })t        j                  |      	j                  |c
_
        S )Nc                    j                   } |        j                  |        |r#j                         k7  rt        d d      y y )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_crcs   sQ    ''CG$(|**,= #;G9A!FGG >sr   r+   /zNo hash found for file 'rZ   )r^   bytesreturnNone)
isinstancer   filenamer>   rD   r   r
   rF   rK   rL   re   )rP   name_or_inforR   pwdre   rW   r`   ra   rb   rc   rd   s         @@@@@r   rF   zWheelFile.openm   s    	H 	H &0g%FL!!L 	 CK$$S)t0007yBCC\\$dC83;w//4'+'8'8'A$I}(  '{{9524..+/	r   c                   t        j                  d| j                   d| d       g }t        j                  |      D ]  \  }}}|j                          t        |      D ]  }t        j                  j                  t        j                  j                  ||            }t        j                  j                  |      s`t        j                  j                  ||      j                  t        j                  j                  d      }|| j                  k(  r|j                  d      r|j!                  ||f       | j#                  ||         |j                          |D ]  \  }}| j#                  ||        y )Nz
creating 'z' and adding 'z' to itrf   z
.dist-info)r   infork   r    walksortsortedr9   normpathjoinisfilerelpathreplaceseprC   r>   appendwrite)	rP   base_dirdeferredrootdirnames	filenamesnamer9   arcnames	            r   write_fileszWheelFile.write_files   s(   :dmm_N8*GLM*,)+): 	2%D(I MMOy) 	2ww''T4(@A77>>$' ggoodH=EEbggkkSVWG$"2"22|4 w8

41	2		2 	% 	&MD'JJtW%	&r   c                   t        |d      5 }t        j                  |j                               }|j	                         }d d d        t        |xs |t        j                              }t        j                  |j                        t        j                  |j                        z  dz  |_        |xs | j                  |_        | j                  ||       y # 1 sw Y   xY w)Nrb	date_time   )rF   r    fstatfilenoreadr   r(   st_mtimestatS_IMODEst_modeS_IFMTexternal_attrr-   compress_typewritestr)rP   rk   r   r   fstdatazinfos           r   rz   zWheelFile.write   s     (D! 	Q!((*%B668D	 x+?+L
  $||BJJ7$++bjj:QQVXX+?t/?/?eT=1	 	s   4CC&c                z   t        |t              rAt        |t                     }| j                  |_        dt        j                  z  dz  |_        t        |t              r|j                  d      }t        j                  | |||       t        |t              r|j                  n|}t        j                  d| d       || j                  k7  rk| j!                  |      }|j"                  t%        |j'                               j)                  d      f| j*                  |<   t-        |      | j.                  |<   y y )Nr   i  r   r2   zadding 'rZ   r8   )rj   strr   r(   r-   r   r   S_IFREGr   rO   r
   r   rk   r   ro   rC   _default_algorithmr   r   r]   decoderD   lenrE   )rP   zinfo_or_arcnamer   r   fnamehash_s         r   r   zWheelFile.writestr   s    &,& ,@,B  .2-=-=*.3dll.Br-I*dC ;;w'D/}E *G4 %%! 	
 	8E7!$%D$$$++D1E

!%,,.188A(De$ '*$iDU# %r   c                     j                    j                  dk(  r j                  rt               }t	        j
                  |ddd      }|j                   fd j                  j                         D               |j                  t         j                        ddf        j                   j                  |j                                t        j                          y )Nw,"
)	delimiter	quotecharlineterminatorc              3  Z   K   | ]"  \  }\  }}||d z   |z   j                   |   f $ yw)r5   N)rE   ).0r   rW   r   rP   s       r   	<genexpr>z"WheelFile.close.<locals>.<genexpr>   s=      11	5 IOe3T5E5Ee5LMs   (+r1   )fprR   rD   r   rH   writer	writerowsitemswriterowr@   rC   r   getvaluer
   close)rP   r   r   s   `  r   r   zWheelFile.close   s    77499#38I8I:DZZsSWXF595F5F5L5L5N OOVD$4$45r2>?MM$**DMMO<dr   )rQ   StrPathrR   zLiteral['r', 'w', 'x', 'a']r-   r   )r+   N)rl   str | ZipInforR   zLiteral['r', 'w']rm   zbytes | Nonerh   z	IO[bytes])r{   r   r0   )rk   r   r   z
str | Noner   
int | Nonerh   ri   N)r   r   r   zSizedBuffer | strr   r   )r   r   r   __doc__rK   sha256r   r	   r?   rF   r   rz   r   r   r   r   r   r*   r*   ,   s     !
 -0'	88 *8 	8z #& 	 #     	 
 
 D&2 #$(	22 2 "	2
 
2* %)	0'0  0 "	0>r   r*   r   )r'   zfloat | None))
__future__r   rH   rK   os.pathr    rer   r#   ior   r   typingr   r   r   zipfiler	   r
   r   	wheel.clir   
wheel.utilr   r   r   r   r   r   typing_extensionsr   r   PathLiker   r   compileVERBOSEr;   r%   r(   r*   r   r   r   <module>r      s    " 
   	   & - - 2 2   @ @--(CS))*G3eVX3
 

CJJ
  'w wr   