§
    ülcp  ã                  óæ   — 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
 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)ÚOrderedDict)Ú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    ú1/usr/lib/python3/dist-packages/wheel/wheelfile.pyÚget_zipinfo_datetimer      sV   € õ •B”J—N’NÐ#6¸	Ð8PÅTÄYÁ[Ä[ÑQÔQÑRÔR€IÝ�IÕ0Ñ1Ô1€IÝŒ;�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 )Ú	WheelFilez‚A 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   | _        t          ¦   «         | _        i | _        |dk    �rud	| j        | j        <   d	| j        | j        d
z   <   d	| j        | j        dz   <   	 |                      | j        ¦  «        }n&# t$          $ r t          d| j        › d�¦  «        ‚w xY w|5  t'          j        t+          |dd¬¦  «        ¦  «        D ]½}|\  }}}	|sŒ|                     d¦  «        \  }
}	 t/          j        |
¦  «         n # t2          $ r t          d|
› �¦  «        ‚w xY w|
                     ¦   «         dv r"t          d 
                    |
¦  «        ¦  «        ‚|
t7          |                     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Ú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_pathr   Ú_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   r3   zWheelFile.__init__)   sø  € Ý”7×#Ò# DÑ)Ô)ˆÝ,×2Ò2°8Ñ<Ô<ˆÔØ× Ò  Ñ(Ô(ð 	A¨DÔ,@Ð,HÝÐ?°8Ð?Ð?Ñ@Ô@Ð@åÔ˜˜t T°{ÈtÐTÑTÔTÐTà,×3Ò3ØÔ ×&Ò& yÑ1Ô1ñ
ô 
ˆÔð  Ô.°Ñ:ˆÔÝ'™MœMˆÔØˆÔØ�3Š;‰;à2<ˆDÔ˜dÔ.Ñ/Ø;EˆDÔ˜dÔ.°Ñ7Ñ8Ø;EˆDÔ˜dÔ.°Ñ7Ñ8ðEØŸš 4Ô#3Ñ4Ô4��øÝð Eð Eð EÝ Ð!C¨DÔ,<Ð!CÐ!CÐ!CÑDÔDÐDðEøøøð ð ð ÝœJÝ! &°"¸wÐGÑGÔGñô ð ð �Dð ,0Ñ(�D˜( DØ#ð !Ø à*2¯.ª.¸Ñ*=Ô*=Ñ'�I˜xðUÝœ IÑ.Ô.Ð.Ð.øÝ%ð Uð Uð UÝ(Ð)SÈ	Ð)SÐ)SÑTÔTÐTðUøøøð !—’Ñ(Ô(¨OÐ;Ð;Ý(ð"ß"(¢&¨Ñ"3Ô"3ñô ð ð "Ý)¨(¯/ª/¸'Ñ*BÔ*BÑCÔCð/�DÔ% dÑ+Ð+ð'ðð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð ð ˆ;s8   ÄD7 Ä7#EÅAIÆ(F=Æ<IÆ=GÇA(IÉIÉI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ØˆO˜GÑ$Ô$Ð$Ø×Ò Ñ(Ô(Ð(Øð H�|×*Ò*Ñ,Ô,°Ò=Ð=Ý Ð!F¸GÐ!FÐ!FÐ!FÑGÔGÐGðHð HÐ=Ð=r   r   ú/zNo hash found for file 'rN   )Ú
isinstancer	   Úfilenamer2   r8   r
   r   r:   r?   r@   rY   )rD   Úname_or_inforF   ÚpwdrY   rK   rT   rU   rV   rW   rX   s         @@@@@r   r:   zWheelFile.open\   s  øøøøø€ ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hð 	Hõ &0°½gÑ%FÔ%FÐXˆLÔ!Ð!ÈLð 	ð �CŠKˆKØ×$Ò$ SÑ)Ô)ð à˜tÔ0Ð0Ð0åÐB¸ÐBÐBÐBÑCÔCÐCåŒ\˜$ ¨d°CÑ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         
                    |¦  «        r’t          j                             ||¦  «                             t          j        j        d¦  «        }|| j        k    rŒ­|                     d¦  «        r|                     ||f¦  «         ŒÚ|                      ||¦  «         Œñ�Œ|                     ¦   «          |D ]\  }}|                      ||¦  «         Œd S )Nz
creating 'z' and adding 'z' to itrZ   z
.dist-info)r   Úinfor\   r   ÚwalkÚsortÚsortedr-   ÚnormpathÚjoinÚisfileÚrelpathÚreplaceÚsepr7   r2   ÚappendÚwrite)	rD   Úbase_dirÚdeferredÚrootÚdirnamesÚ	filenamesÚnamer-   Úarcnames	            r   Úwrite_fileszWheelFile.write_filesy   ss  € ÝŒÐL˜dœmÐLÐL¸8ÐLÐLÐLÑMÔMÐMØˆÝ)+¬°Ñ):Ô):ð 	2ñ 	2Ñ%ˆD�(˜Ið �MŠM‰OŒOˆOÝ˜yÑ)Ô)ð 	2ð 	2�Ý”w×'Ò'­¬¯ª°T¸4Ñ(@Ô(@ÑAÔA�Ý”7—>’> $Ñ'Ô'ð 2Ý œgŸošo¨d°HÑ=Ô=×EÒEÅbÄgÄkÐSVÑWÔW�GØ $Ô"2Ò2Ð2ØØŸš |Ñ4Ô4ð 2Ø Ÿš¨¨w¨Ñ8Ô8Ð8Ð8àŸ
š
 4¨Ñ1Ô1Ð1øñ	2ð 	�Š‰ŒˆØ%ð 	&ð 	&‰MˆD�'Ø�JŠJ�t˜WÑ%Ô%Ð%Ð%ð	&ð 	&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é   )r:   r   ÚfstatÚfilenoÚreadr	   r   Úst_mtimeÚstatÚS_IMODEÚst_modeÚS_IFMTÚexternal_attrr!   Úcompress_typeÚwritestr)rD   r\   rr   r‚   ÚfÚstÚdataÚzinfos           r   rk   zWheelFile.write�   s  € Ý�(˜DÑ!Ô!ð 	 QÝ”˜!Ÿ(š(™*œ*Ñ%Ô%ˆBØ—6’6‘8”8ˆDð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ ØÐ�xÕ+?ÀÄÑ+LÔ+Lð
ñ 
ô 
ˆõ  $œ|¨B¬JÑ7Ô7½$¼+ÀbÄjÑ:QÔ:QÑQÐVXÑXˆÔØ+Ð?¨tÔ/?ˆÔØ�Š�e˜T =Ñ1Ô1Ð1Ð1Ð1s   ‘;AÁAÁAc                óì  — 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&   zadding 'rN   r,   )r[   ÚstrrC   r   rƒ   r	   r\   r   r`   r7   Ú_default_algorithmrq   r   rQ   Údecoder8   Úlenr9   )rD   Úzinfo_or_arcnamer†   r‚   ÚfnameÚhash_s         r   rƒ   zWheelFile.writestr›   sú   € Ý�d�CÑ Ô ð 	(Ø—;’;˜wÑ'Ô'ˆDåÔ˜Ð/°°}ÑEÔEÐEõ Ð*­GÑ4Ô4ð"ÐÔ%Ð%à!ð 	õ
 	ŒÐ$˜EÐ$Ð$Ð$Ñ%Ô%Ð%Ø�DÔ$Ò$Ð$Ø×+Ò+¨DÑ1Ô1ˆEà”
Ý! %§,¢,¡.¤.Ñ1Ô1×8Ò8¸ÑAÔAð(ˆDÔ˜eÑ$õ '*¨$¡i¤iˆDÔ˜UÑ#Ð#Ð#ð %Ð$r   c                ó,  ‡ — ‰ j         �÷‰ j        dk    rì‰ j        råt          ¦   «         }t	          j        |ddd¬¦  «        }|                     ˆ fd„‰ j                             ¦   «         D ¦   «         ¦  «         |                     t          ‰ j
        ¦  «        ddf¦  «         t          ‰ j
        t          ¦   «         ¬¦  «        }‰ j        |_        d	|_        ‰                      ||                     ¦   «         ¦  «         t%          j        ‰ ¦  «         d S )
NÚwú,ú"ú
)Ú	delimiterÚ	quotecharÚlineterminatorc              3  óP   •K  — | ] \  }\  }}||d z   |z   ‰j         |         fV — Œ!dS )r)   N)r9   )Ú.0rŽ   rK   r�   rD   s       €r   ú	<genexpr>z"WheelFile.close.<locals>.<genexpr>´   sX   øè è € ð ð á1˜Ñ1 	¨5ð ˜I¨™O¨eÑ3°TÔ5EÀeÔ5LÐMðð ð ð ð ð r   r%   rv   i  ´)ÚfprF   r8   r   r<   ÚwriterÚ	writerowsÚitemsÚwriterowr4   r7   r	   r   r!   r‚   r�   rƒ   Úgetvaluer   Úclose)rD   r†   rœ   r‡   s   `   r   r¡   zWheelFile.close®   s  ø€ àŒ7Ð 4¤9°Ò#3Ð#3¸Ô8IÐ#3Ý‘:”:ˆDÝ”Z °¸sÐSWÐXÑXÔXˆFØ×Òðð ð ð à59Ô5F×5LÒ5LÑ5NÔ5Nðñ ô ñô ð ð �OŠO�V DÔ$4Ñ5Ô5°r¸2Ð>Ñ?Ô?Ð?Ý˜DÔ,Õ8LÑ8NÔ8NÐOÑOÔOˆEØ"&Ô"2ˆEÔØ"-ˆEÔØ�MŠM˜% §¢¡¤Ñ1Ô1Ð1åŒ�dÑÔÐÐÐr   )r   Nr$   ©N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r?   Úsha256rŠ   r   r3   r:   rs   rk   rƒ   r¡   © r   r   r   r   "   sœ   € € € € € ðð ð !œÐà"%°<ð 1ð 1ð 1ð 1ðfð ð ð ð:&ð &ð &ð,
2ð 
2ð 
2ð 
2ð0ð 0ð 0ð 0ð&ð ð ð ð r   r   r¢   )Ú
__future__r   r<   r?   Úos.pathr   Úrer}   r   Úcollectionsr   Ú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ñô €ð
 Ð ð'ð 'ð 'ð 'ð]ð ]ð ]ð ]ð ]�ñ ]ô ]ð ]ð ]ð ]r   