Ë Ji:Úûn<ãóà—ddlmZddlZddlZddlZddlZddlZddlZddl m Z m Z ddl m Z mZmZddlmZddlmZmZmZej,dej.«ZdZd d „ZGd „d e«Zy) é)Ú annotationsN)ÚStringIOÚ TextIOWrapper)Ú ZIP_DEFLATEDÚZipFileÚZipInfo)Ú WheelError)ÚlogÚurlsafe_b64decodeÚurlsafe_b64encodezŠ^(?P(?P[^\s-]+?)-(?P[^\s-]+?))(-(?P\d[^\s-]*))? -(?P[^\s-]+?)-(?P[^\s-]+?)-(?P\S+)\.whl$i¦ÎcóЗttjjd|xst j«««}t |t «}t j|«ddS)NÚSOURCE_DATE_EPOCHré)ÚintÚosÚenvironÚgetÚtimeÚmaxÚMINIMUM_TIMESTAMPÚgmtime)Ú timestamps ú4/usr/lib/python3.12/site-packages/wheel/wheelfile.pyÚget_zipinfo_datetimersL€ô”B—J‘J—N‘NÐ#6¸ Ò8PÄTÇYÁYÃ[ÓQÓR€IÜ�IÔ0Ó1€IÜ �;‰;�yÓ ! ! AÐ &Ð&ócóX—eZdZdZej Zdefd„Zd d„Z d„Z d d„Z d d„Z d „Z y) Ú WheelFilez‚A ZipFile derivative class that also reads SHA-256 hashes from .dist-info/RECORD and checks any read files against those. Úrcóœ—tjj|«}tj |«|_|j d«r |j €td|›�«‚tj||||d¬«dj|j jd««|_ |jdz|_ i|_i|_|dk(�r(d |j|j<d |j|jd z<d |j|jd z< |j!|j«}|5t%j&t)|dd¬««D]Š}|\}}} |sŒ |j+d«\} } t-j.| «| j3«dvrtdj| ««‚| t5|j7d««f|j|<ŒŒ ddd«yy#t"$rtd |j›d �«d‚wxYw#t0$rtd| ›�«d‚wxYw#1swYyxYw)Nz.whlzBad wheel filename T)Ú compressionÚ allowZip64z {}.dist-infoÚnameverz/RECORDr©NNz.jwsz.p7szMissing z fileÚúutf-8)ÚnewlineÚencodingÚ=zUnsupported hash algorithm: >Úmd5Úsha1z4Weak hash algorithm ({}) 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 rr2zWheelFile.__init__(sC€Ü—7‘7×#Ñ# DÓ)ˆÜ,×2Ñ2°8Ó<ˆÔØ× Ñ  Ô(¨D×,@Ñ,@Ð,HÜÐ2°8°,Ð?Ó@Ð @ä×ј˜t T°{ÈtÕTà,×3Ñ3Ø × Ñ × &Ñ & yÓ 1ó ˆÔð ×.Ñ.°Ñ:ˆÔØˆÔØˆÔØ �3‹;à2<ˆD× Ñ ˜d×.Ñ.Ñ /Ø;EˆD× Ñ ˜d×.Ñ.°Ñ7Ñ 8Ø;EˆD× Ñ ˜d×.Ñ.°Ñ7Ñ 8ð OØŸ™ 4×#3Ñ#3Ó4�òÜŸJ™JÜ! &°"¸wÔGö�Dð,0Ñ(�D˜( DÙ#Ø à*2¯.©.¸Ó*=Ñ'�I˜xð$ÜŸ ™  IÔ.ð !—‘Ó(¨OÑ;Ü(ð"ß"(¡&¨Ó"3óðð "Ü)¨(¯/©/¸'Ó*BÓCð/�D×%Ñ% dÒ+ñ+÷�ð øôò OÜ  8¨D×,<Ñ,<Ð+=¸UÐ!CÓDÈ$ÐNð Oûô&ò$Ü(Ø:¸9¸+ÐFóà#ð$ð$ú÷�ús2Ä(G?ÅAIÆH&ÆAIÇ?$H#È&H?È?IÉI Nc󚇇‡‡ ‡ —ˆˆˆˆ ˆ fd„}t|t«r |jn|Š|dk(r.‰jd«s‰|jvrt d‰›d�«‚t j||||«Š|dk(rN‰jd«s=|j‰\}Љ�)tj|«Š ‰j|cŠ ‰_ ‰S)Ncóš•—‰j}‰|«‰j|«|r#‰j«‰k7rtd‰›d�«‚yy)NzHash mismatch for file 'Ú')Ú_eofÚupdateÚdigestr )ÚnewdataÚeofÚefÚef_nameÚ expected_hashÚ running_hashÚupdate_crc_origs €€€€€rÚ _update_crcz#WheelFile.open.._update_crc^sQø€Ø—'‘'ˆCÙ ˜GÔ $Ø × Ñ  Ô (Ù�|×*Ñ*Ó,° Ò=Ü Ð#;¸G¸9ÀAÐ!FÓGÐGð>ˆsrrÚ/zNo hash found for file 'rM) Ú isinstancerÚfilenamer1r7r rr9r>r?rX) rCÚ name_or_inforEÚpwdrXrJrSrTrUrVrWs @@@@@rr9zWheelFile.open]sÎü€÷ Hð Hô&0° ¼gÔ%FˆL× !Ò !ÈLð ð �CŠKØ×$Ñ$ SÔ)ؘt×0Ñ0Ñ0äÐ7¸°yÀÐBÓCÐ Cä �\‰\˜$  ¨d°CÓ 8ˆØ �3Š;˜w×/Ñ/°Ô4Ø'+×'8Ñ'8¸Ñ'AÑ $ˆI�}ØÐ(ô 'Ÿ{™{¨9Ó5� Ø24·.±.À+Ð/� ¤àˆ rcó—tjd|j›d|›d�«g}tj|«D�]\}}}|j «t |«D]î}tjjtjj||««}tjj|«sŒ`tjj||«jtjjd«}||jk(rŒ¸|jd«r|j!||f«ŒÝ|j#||«Œð�Œ|j «|D]\}}|j#||«Œy)Nz creating 'z' and adding 'z' to itrYz .dist-info)r Úinfor[rÚwalkÚsortÚsortedr,ÚnormpathÚjoinÚisfileÚrelpathÚreplaceÚsepr6r1ÚappendÚwrite) rCÚbase_dirÚdeferredÚrootÚdirnamesÚ filenamesÚnamer,Úarcnames rÚ write_fileszWheelFile.write_fileszs€Ü �‰�:˜dŸm™m˜_¨N¸8¸*ÀGÐLÔM؈Ü)+¯©°×):Ñ %ˆD�(˜Ið �M‰MŒOܘyÖ)�Ü—w‘w×'Ñ'¬¯©¯ © °T¸4Ó(@ÓA�Ü—7‘7—>‘> $Õ'Ü Ÿg™gŸo™o¨d°HÓ=×EÑEÄbÇgÁgÇkÁkÐSVÓW�GØ $×"2Ñ"2Ò2ØØŸ™ |Ô4Ø Ÿ™¨¨w¨Õ8àŸ ™  4¨Õ1ò*ð *;ð � ‰ ŒÛ%‰MˆD�'Ø �J‰J�t˜WÕ %ñ&rcóÒ—t|d«5}tj|j««}|j «}ddd«t |xs|t j«¬«}tj|j«tj|j«zdz|_ |xs |j|_|j||«y#1swYŒ�xYw)NÚrb©Ú date_timeé)r9rÚfstatÚfilenoÚreadrrÚst_mtimeÚstatÚS_IMODEÚst_modeÚS_IFMTÚ external_attrr Ú compress_typeÚwritestr)rCr[rqr�ÚfÚstÚdataÚzinfos rrjzWheelFile.write�s­€Ü �(˜DÔ ! QÜ—‘˜!Ÿ(™(›*Ó%ˆBØ—6‘6“8ˆD÷"ôØ Ò �xÔ+?ÀÇ Á Ó+Lô ˆô $Ÿ|™|¨B¯J©JÓ7¼$¿+¹+ÀbÇjÁjÓ:QÑQÐVXÑXˆÔØ+Ò?¨t×/?Ñ/?ˆÔØ � ‰ �e˜T =Õ1÷"Ð !ús �4CÃC&cóz—t|t«rAt|t«¬«}|j|_dt jzdz|_t|t«r|jd«}tj||||«t|t«r |jn|}tjd|›d�«||jk7rk|j!|«}|j"t%|j'««j)d«f|j*|<t-|«|j.|<yy)Nrui´rwr%zadding 'rMr+)rZÚstrrrr r�r|ÚS_IFREGr€rBrr‚r[r r_r6Ú_default_algorithmrpr rPÚdecoder7Úlenr8)rCÚzinfo_or_arcnamer…r�ÚfnameÚhash_s rr‚zWheelFile.writestrœs€Ü Ð&¬Ô ,Ü&Ø Ô,@Ó,Bô Ð ð.2×-=Ñ-=Ð Ô *Ø.3´d·l±lÑ.BÀrÑ-IÐ Ô *ä �dœCÔ Ø—;‘;˜wÓ'ˆDä×јÐ/°°}ÔEôÐ*¬GÔ4ð × %Ò %à!ð ô �‰�8˜E˜7 !Ð$Ô%Ø �D×$Ñ$Ò $Ø×+Ñ+¨DÓ1ˆEà— ‘ Ü! %§,¡,£.Ó1×8Ñ8¸ÓAð(ˆD× Ñ ˜eÑ $ô'*¨$£iˆD× Ñ ˜UÒ #ð %rcóʇ—‰j�Á‰jdk(r²‰jr¦t«}t j |ddd¬«}|j ˆfd„‰jj«D««|jt‰j«ddf«‰j‰j|j««tj‰«y)NÚwÚ,Ú"Ú )Ú delimiterÚ quotecharÚlineterminatorc3óZ•K—|]"\}\}}||dz|z‰j|f–—Œ$y­w)r(N)r8)Ú.0rŽrJr�rCs €rÚ z"WheelFile.close..¼s>øèø€ðá5NÑ1˜Ñ1  ¨5ð˜I¨™O¨eÑ3°T×5EÑ5EÀeÑ5LÔMÙ5Nùsƒ(+r$)ÚfprEr7rr;ÚwriterÚ writerowsÚitemsÚwriterowr3r6r‚ÚgetvaluerÚclose)rCr…rœs` rr¡zWheelFile.close¶s¬ø€à �7‰7Ð  4§9¡9°Ò#3¸×8IÒ8IÜ“:ˆDÜ—Z‘Z °¸sÐSWÔXˆFØ × Ñ óà59×5FÑ5F×5LÑ5LÔ5Nóô ð �O‰OœV D×$4Ñ$4Ó5°r¸2Ð>Ô ?Ø �M‰M˜$×*Ñ*¨D¯M©M«OÔ <ä� ‰ �dÕr)rNr#©N)Ú__name__Ú __module__Ú __qualname__Ú__doc__r>Úsha256rŠrr2r9rrrjr‚r¡©rrrr!s7„ñð!Ÿ™Ðà"%°<ó3ójò:&ó, 2ó0ó4rrr¢)Ú __future__rr;r>Úos.pathrÚrer|rÚiorrÚzipfilerrrÚ wheel.clir Ú wheel.utilr r r ÚcompileÚVERBOSEr.rrrr¨rrÚr²sfðÝ"ã ÛÛÛ Û Û ß&ß2Ñ2å ß@Ñ@ð�— ‘ ðCà‡J�Jó€ ð Ðó'ôc�õcr