
    iH$                    f   S SK Jr  / SQrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJrJr  S SKJrJrJr  S SKJrJrJr  \(       a  S SKJrJr  \	R4                  " S\	R6                  5      rS	r\R<                  " S
5      r " S S\ 5      r!SS jr"SS jr# S   SS jjr$ " S S\5      r%g)    )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                      \ rS rSrSrg)r   !    N)__name__
__module____qualname____firstlineno____static_attributes__r       L/home/kali/Scout2/scout2-env/lib/python3.13/site-packages/wheel/wheelfile.pyr   r   !   s    r   r   c                L    [         R                  " U 5      R                  S5      $ )z!urlsafe_b64encode without padding   =)base64urlsafe_b64encoderstrip)datas    r   r   r   %   s    ##D)0066r   c                Z    SS[        U 5      S-  -
  -  n[        R                  " X-   5      $ )z!urlsafe_b64decode without paddingr         )lenr   urlsafe_b64decode)r!   pads     r   r&   r&   *   s,    
!s4y1}%
&C##DJ//r   c                    [        [        R                  R                  SU =(       d    [        R                  " 5       5      5      n [        U [        5      n [        R                  " U 5      SS $ )NSOURCE_DATE_EPOCHr      )intosenvirongettimemaxMINIMUM_TIMESTAMPgmtime)	timestamps    r   get_zipinfo_datetimer4   0   sL    
 BJJNN#6	8PTYY[QRII01I;;y!!A&&r   c                      \ rS rSrSr\R                  rS\4     SS jjr	  S       SS jjr
SS jr  S       SS jjr S       SS	 jjrSS
 jrSrg)r   :   zzA ZipFile derivative class that also reads SHA-256 hashes from
.dist-info/RECORD and checks any read files against those.
rc           	        [         R                  R                  U5      n[        R	                  U5      U l        UR                  S5      (       a  U R
                  c  [        SU< 35      e[        R                  " XX#SS9  SR                  U R
                  R                  S5      5      U l        U R                  S-   U l        0 U l        0 U l        US:X  Ga  U R                  U R!                  5       ;  aj  U R                  R#                  5       S	-   nU R!                  5        H9  nUR#                  5       U:X  d  M  UR%                  SS
5      S   U l        X`l          O   SU R                  U R                  '   SU R                  U R                  S-   '   SU R                  U R                  S-   '    U R'                  U R                  5      nU   [*        R,                  " [/        USSS95       H  nUu  pnU
(       d  M  U
R1                  S5      u  p [2        R4                  " U5        UR#                  5       S;   a  [        SU S35      eU[9        U
R;                  S5      5      4U R                  U	'   M     S S S 5        g g ! [(         a    [        SU R                   S35      S ef = f! [6         a    [        SU 35      S ef = f! , (       d  f       g = f)Nz.whlzBad wheel filename T)compression
allowZip64z{}.dist-infonameverz/RECORDr7   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   matchparsed_filenameendswithr   r   __init__formatgroupdist_info_pathrecord_path_file_hashes_file_sizesnamelistlowerrsplitopenKeyErrorcsvreaderr   splithashlibnew
ValueErrorr&   encode)selffilemoder9   rG   lowerednamerecordlinerF   hash_sumsize	algorithms                r   rK   WheelFile.__init__A   s    77##D),228<  ((D,@,@,H28,?@@TtT,33  &&y1
  ..:NP3; t}}6--335	A MMODzz|w..2kk)Q.G.J++/(	 , 3=Dd../;EDd..78;EDd..78O4#3#34 JJ!&"wGD ,0(DD# *2..*='I$I. !(O;(3I; ?& '  ")(//'*BC/D%%d++ / (  O 8D,<,<+=U!CD$NO & $(:9+F#$$ s2   4J AKJ.,AK%J+.KK
KNc                  ^^^^	^
 SUUUU	U
4S jjn[        U[        5      (       a  UR                  OUmUS:X  a5  TR                  S5      (       d  TU R                  ;  a  [        ST S35      e[        R                  " XX#5      mUS:X  aU  TR                  S5      (       d?  U R                  T   u  nmTb*  [        R                  " U5      m	TR                  Usm
Tl
        T$ )Nc                   > TR                   nT" U 5        TR                  U 5        U(       a$  TR                  5       T:w  a  [        ST S35      eg g )NzHash mismatch for file '')_eofupdatedigestr   )newdataeofefef_nameexpected_hashrunning_hashupdate_crc_origs     r   _update_crc#WheelFile.open.<locals>._update_crc   sQ    ''CG$(|**,= #;G9A!FGG >sr   r7   /zNo hash found for file 'rk   )ro   bytesreturnNone)
isinstancer   filenamerJ   rP   r   r   rU   rZ   r[   rv   )r^   name_or_infor`   pwdrv   rg   rq   rr   rs   rt   ru   s         @@@@@r   rU   WheelFile.open   s    	H 	H &0g%F%FL!!L 	 CK$$S))t0007yBCC\\$d83;w//44'+'8'8'A$I}(  '{{9524..+/	r   c                   [         R                  SU R                  U5        / n[        R                  " U5       GH  u  p4nUR                  5         [        U5       H  n[        R                  R                  [        R                  R                  X65      5      n[        R                  R                  U5      (       d  Me  [        R                  R                  Xq5      R                  [        R                  R                  S5      nXR                  :X  a  M  UR                  S5      (       a  UR!                  Xx45        M  U R#                  Xx5        M     GM!     UR                  5         U H  u  pxU R#                  Xx5        M     g )Nzcreating %r and adding %r to itrx   z
.dist-info)loginfor}   r,   walksortsortedrF   normpathjoinisfilerelpathreplaceseprO   rJ   appendwrite)	r^   base_dirdeferredrootdirnames	filenamesrb   rF   arcnames	            r   write_filesWheelFile.write_files   s   2DMM8L*,)+):%DI MMOy)ww''T(@A77>>$'' ggood=EEbggkkSVWG"2"22|44 8

41 *	 *; 	%MDJJt% &r   c                   [        US5       n[        R                  " UR                  5       5      nUR	                  5       nS S S 5        [        U=(       d    U[        WR                  5      S9n[        R                  " UR                  5      [        R                  " UR                  5      -  S-  Ul        U=(       d    U R                  Ul        U R                  UWU5        g ! , (       d  f       N= f)Nrb	date_time   )rU   r,   fstatfilenoreadr   r4   st_mtimestatS_IMODEst_modeS_IFMTexternal_attrr9   compress_typewritestr)r^   r}   r   r   fstr!   zinfos           r   r   WheelFile.write   s     (D!Q!((*%B668D " x+?+L
  $||BJJ7$++bjj:QQVXX+?t/?/?eT=1 "!s   5C''
C5c                   [        U[        5      (       a>  [        U[        5       S9nU R                  Ul        S[        R                  -  S-  Ul        [        U[        5      (       a  UR                  S5      n[        R                  " XX#5        [        U[        5      (       a  UR                  OUn[        R                  SU5        X@R                  :w  ak  U R!                  U5      nUR"                  [%        UR'                  5       5      R)                  S5      4U R*                  U'   [-        U5      U R.                  U'   g g )Nr   i  r   r?   z	adding %rrE   )r|   strr   r4   r9   r   r   S_IFREGr   r]   r   r   r}   r   r   rO   _default_algorithmrb   r   rn   decoderP   r%   rQ   )r^   zinfo_or_arcnamer!   r   fnamehash_s         r   r   WheelFile.writestr   s    &,,& ,@,B  .2-=-=*.3dll.Br-I*dC  ;;w'DE *G44 %%! 	
 	e$$$$++D1E

!%,,.188A(De$ '*$iDU# %r   c                  ^  T R                   b  T R                  S:X  a  T R                  (       a  [        5       n[        R
                  " USSSS9nUR                  U 4S jT R                  R                  5        5       5        UR                  [        T R                  5      SS45        T R                  T R                  UR                  5       5        [        R                  " T 5        g )Nw,"
)	delimiter	quotecharlineterminatorc              3  \   >#    U  H!  u  nu  p#XS -   U-   TR                   U   4v   M#     g7f)rB   N)rQ   ).0r   rg   r   r^   s       r   	<genexpr>"WheelFile.close.<locals>.<genexpr>   s9      5N11	 Oe3T5E5Ee5LM5Ns   ),r>   )fpr`   rP   r   rW   writer	writerowsitemswriterowrL   rO   r   getvaluer   close)r^   r!   r   s   `  r   r   WheelFile.close   s    77499#38I8I:DZZsSWXF595F5F5L5L5N OOVD$4$45r2>?MM$**DMMO<dr   )rP   rQ   rN   rI   rO   )r_   r   r`   zLiteral['r', 'w', 'x', 'a']r9   r+   )r7   N)r~   str | ZipInfor`   zLiteral['r', 'w']r   zbytes | Nonerz   z	IO[bytes])r   r   rz   r{   r=   )r}   r   r   z
str | Noner   
int | Nonerz   r{   N)r   r   r!   zSizedBuffer | strr   r   rz   r{   )rz   r{   )r   r   r   r   __doc__rZ   sha256r   r   rK   rU   r   r   r   r   r   r   r   r   r   r   :   s     !
 -0'	CC *C 	CP #& 	 #     	 
 
 D&2 #$(	22 2 "	2
 
2* %)	0'0  0 "	0
 
0>r   r   )r!   ry   rz   ry   r   )r3   zfloat | Nonerz   ztuple[int, int, int, int, int])&
__future__r   __all__r   rW   rZ   loggingos.pathr,   rer   r/   ior   r   typingr	   r
   r   zipfiler   r   r   	_typeshedr   r   compileVERBOSEr   r1   	getLoggerr   	Exceptionr   r   r&   r4   r   r   r   r   <module>r      s    "
6  
    	   & - - 2 2.
 

CJJ
   	 	7
0 #''#'B Br   