ó
    T=Œj–q  ã                  óª  • S r SSKJ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rSSKrSSKrSSKrSSKJr  SSKJrJrJrJrJr  SSKJr  SSKJrJrJr  SSKJr  SS	K J!r!J"r"J#r#J$r$J%r%J&r&  SS
K'J(r(J)r)  SSK*J+r+  SSK,J-r-  SSK.J/r/  SSK0J1r1  SSK2J3r3  SSK4J5r5J6r6J7r7  SSK8J9r9J:r:  SSK;J<r<J=r=  SSK>J?r?J@r@  SSKAJBrBJCrCJDrDJErE  SSKFJGrGJHrHJIrIJJrJ  SSKKJLrL   " S S\%5      rM\Rœ                  " \O5      rP\$" S\Q5      rR\S\R\Q\T\Q-  4   rUS1S2S jjrVS3S jrWS4S jrXS5S jrYS6S jrZS7S jr[    S8S  jr\S9S! jr]S:S" jr^            S;S# jr_S<S$ jr` " S% S&5      ra " S' S(5      rb " S) S*\15      rcS=S+ jrd " S, S-\+5      re     S>                   S?S. jjrf\RÎ                  S@S/ j5       rh     S>                   SAS0 jjrig)BzFSupport for installing and building the "wheel" binary package format.é    )ÚannotationsN)Úurlsafe_b64encode)ÚCallableÚ	GeneratorÚIterableÚIteratorÚSequence)ÚMessage)ÚchainÚfilterfalseÚstarmap)ÚPath)ÚIOÚAnyÚBinaryIOÚNewTypeÚProtocolÚcast)ÚZipFileÚZipInfo)ÚScriptMaker)Úget_export_entry)Úcanonicalize_name)ÚInstallationError)Úget_major_minor_version)ÚBaseDistributionÚFilesystemWheelÚget_wheel_distribution)ÚDIRECT_URL_METADATA_NAMEÚ	DirectUrl)ÚSCHEME_KEYSÚScheme)Úadjacent_tmp_fileÚreplace)ÚStreamWrapperÚ
ensure_dirÚ	hash_fileÚ	partition)Úcurrent_umaskÚis_within_directoryÚ2set_extracted_file_to_default_mode_plus_executableÚzip_item_is_executable)Úparse_wheelc                  ó>   • \ rS rSr% S\S'   S\S'   S\S'   SS jrS	rg
)ÚFileé8   Ú
RecordPathÚsrc_record_pathÚstrÚ	dest_pathÚboolÚchangedc                ó   • g ©N© ©Úselfs    Új/Users/stevendouglas/BidBrain/.venv/lib/python3.13/site-packages/pip/_internal/operations/install/wheel.pyÚsaveÚ	File.save=   s   € Øó    r9   N©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r=   Ú__static_attributes__r9   r?   r<   r/   r/   8   s   ‡ ØÓØƒNØƒM÷r?   r/   r1   c                óª   • [        X5      u  p#S[        UR                  5       5      R                  S5      R	                  S5      -   nU[        U5      4$ )z?Return (encoded_digest, length) for path using hashlib.sha256()zsha256=Úlatin1Ú=)r'   r   ÚdigestÚdecodeÚrstripr3   )ÚpathÚ	blocksizeÚhÚlengthrL   s        r<   ÚrehashrS   G   sI   € ä˜$Ó*�I€AØÔ*¨1¯8©8«:Ó6×=Ñ=¸hÓG×NÑNÈsÓSÑS€FØ”C˜“KÐ Ð r?   c                ó   • U SSS.$ )zHReturn keyword arguments to properly open a CSV file
in the given mode.
Ú úutf-8)ÚmodeÚnewlineÚencodingr9   )rW   s    r<   Úcsv_io_kwargsrZ   N   s   € ð  R°WÑ=Ð=r?   c                óZ  • [         R                  R                  U 5      (       d   e[        U S5       nUR	                  5       nUR                  S5      (       d
   SSS5        g[        R                  R                  [        R                  " 5       5      nSU-   [         R                  R                  S5      -   nUR                  5       nSSS5        [        U S5       nUR                  W5        UR                  W5        SSS5        g! , (       d  f       NF= f! , (       d  f       g= f)	zIReplace #!python with #!/path/to/python
Return True if file was changed.
Úrbs   #!pythonNFs   #!ÚasciiÚwbT)ÚosrO   ÚisfileÚopenÚreadlineÚ
startswithÚsysÚ
executableÚencodeÚgetfilesystemencodingÚlinesepÚreadÚwrite)rO   ÚscriptÚ	firstlineÚexenameÚrests        r<   Ú
fix_scriptro   U   sä   € ô
 �7‰7�>‰>˜$×ÑÐÐä	ˆd�DÔ	˜VØ—O‘OÓ%ˆ	Ø×#Ñ# K×0Ñ0Ø÷ 
Ð	ô —.‘.×'Ñ'¬×(AÒ(AÓ(CÓDˆØ˜G‘O¤b§j¡j×&7Ñ&7¸Ó&@Ñ@ˆ	Ø�{‰{‹}ˆ÷ 
ô 
ˆd�DÔ	˜VØ�‰�YÔØ�‰�TÔ÷ 
ð ÷ 
Õ	ú÷ 
Ô	ð ús   ³(DÁ$A'DÃ#DÄ
DÄ
D*c                óH   • U R                  SS5      R                  5       S:H  $ )NzRoot-Is-PurelibrU   Útrue)ÚgetÚlower)Úmetadatas    r<   Úwheel_root_is_purelibru   i   s"   € Ø�<‰<Ð)¨2Ó.×4Ñ4Ó6¸&Ñ@Ð@r?   c                óæ   • 0 n0 nU R                  5        HW  nUR                  S:X  a  UR                  XR                  '   M-  UR                  S:X  d  M?  UR                  X#R                  '   MY     X4$ )NÚconsole_scriptsÚgui_scripts)Úiter_entry_pointsÚgroupÚvalueÚname)Údistrw   rx   Úentry_points       r<   Úget_entrypointsr   m   so   € Ø€OØ€KØ×-Ñ-Ö/ˆØ×ÑÐ 1Ó1Ø0;×0AÑ0AˆO×,Ñ,Ó-Ø×Ñ -Õ/Ø,7×,=Ñ,=ˆK×(Ñ(Ó)ñ	 0ð
 Ð'Ð'r?   c                ó>  • U (       d  g[         R                  " [        5      nU  HG  n[        U5      nUR                  R                  5       nUR                  nX   R                  U5        MI     [        R                  R                  SS5      R                  [        R                  5       Vs/ s H  n[        U5      R                  5       PM     nnUR                  [        [        R                  5      R                  R                  5       5        UR!                  5        VV s0 s H  u  p@XG;  d  M  X@_M     nnn U(       d  g/ n	UR!                  5        Hm  u  pJ[#        U
5      n[%        U5      S:X  a
  SUS    S3nO,SR'                  S	R)                  USS
 5      S-   US
   -   5      nU	R                  SU SU S35        Mo     Sn[%        U	5      S:X  a!  U	R                  UR'                  S5      5        O U	R                  UR'                  S5      5        [+        S [        R                  R                  SS5      R                  [        R                  5       5       5      nU(       a  SnU	R                  U5        SR)                  U	5      $ s  snf s  sn nf )z‘Determine if any scripts are not on PATH and format a warning.
Returns a warning message if one or more scripts are not on PATH,
otherwise None.
NÚPATHrU   é   zscript r   z iszscripts {} areú, éÿÿÿÿz and zThe z installed in 'z' which is not on PATH.zeConsider adding {} to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.zthis directoryzthese directoriesc              3  óB   #   • U  H  o(       d  M  US    S:H  v •  M     g7f)r   Ú~Nr9   )Ú.0Úis     r<   Ú	<genexpr>Ú4message_about_scripts_not_on_PATH.<locals>.<genexpr>°   s    é € ð ÚI˜ËQ‹ˆˆ!‰�ŽÒIùs   ‚
�ziNOTE: The current PATH contains path(s) starting with `~`, which may not be expanded by all applications.Ú
)ÚcollectionsÚdefaultdictÚsetr   ÚparentÚresolver|   Úaddr_   Úenvironrr   ÚsplitÚpathsepÚappendrd   re   ÚitemsÚsortedÚlenÚformatÚjoinÚany)ÚscriptsÚgrouped_by_dirÚdestfiler4   Ú
parent_dirÚscript_namerˆ   Únot_warn_dirsÚwarn_forÚ	msg_linesÚdir_scriptsÚsorted_scriptsÚ
start_textÚlast_line_fmtÚwarn_for_tildeÚtilde_warning_msgs                   r<   Ú!message_about_scripts_not_on_PATHrª   x   si  € ö
 Øô ,7×+BÒ+BÄ3Ó+G€NÛˆÜ˜“Nˆ	Ø×%Ñ%×-Ñ-Ó/ˆ
Ø—n‘nˆØÑ"×&Ñ& {Ö3ñ	 ô $&§:¡:§>¡>°&¸"Ó#=×#CÑ#CÄBÇJÁJÔ#OóÚ#O˜aŒˆQ‹�‰ÖÑ#Oð ð ð
 ×ÑœœcŸn™nÓ-×4Ñ4×<Ñ<Ó>Ô?ð $2×#7Ñ#7Ô#9ô&â#9ÑˆJØÑ*ó 	ˆ
ÒÙ#9ð ñ &ö
 Øð €IØ#+§>¡>Ö#3Ñˆ
Ü$*¨;Ó$7ˆÜˆ~Ó !Ó#Ø" >°!Ñ#4Ð"5°SÐ9‰Jà)×0Ñ0Ø—	‘	˜.¨¨"Ð-Ó.°Ñ8¸>È"Ñ;MÑMóˆJð 	×ÑØ�:�,˜o¨j¨\Ð9PÐQö	
ñ $4ð	Cð ô ˆ9ƒ~˜ÓØ×Ñ˜×-Ñ-Ð.>Ó?Õ@à×Ñ˜×-Ñ-Ð.AÓBÔCô ñ ÜŸZ™ZŸ^™^¨F°BÓ7×=Ñ=¼b¿j¹jÔIóó €Nö ð=ð 	ð 	×ÑÐ*Ô+ð �9‰9�YÓÐùòeùó&s   Â/#JÄ'JÄ6Jc                ó&   • [        S U  5       5      $ )aƒ  Normalize the given rows of a RECORD file.

Items in each row are converted into str. Rows are then sorted to make
the value more predictable for tests.

Each row is a 3-tuple (path, hash, size) and corresponds to a record of
a RECORD file (see PEP 376 and PEP 427 for details).  For the rows
passed to this function, the size can be an integer as an int or string,
or the empty string.
c              3  óB   #   • U  H  u  po1U[        U5      4v •  M     g 7fr8   )r3   )r‡   Úrecord_pathÚhash_Úsizes       r<   r‰   Ú&_normalized_outrows.<locals>.<genexpr>Ó   s!   é € ð ÚHOÑ,D¨KÀ�eœS ›YÕ'Êùs   ‚)r—   )Úoutrowss    r<   Ú_normalized_outrowsr²   ¾   s   € ô* ñ ÙHOóó ð r?   c                ó@   • [         R                  R                  X5      $ r8   )r_   rO   rš   )r­   Úlib_dirs     r<   Ú_record_to_fs_pathrµ   Ø   s   € Ü�7‰7�<‰<˜Ó-Ð-r?   c                óp  • [         R                  R                  U 5      S   R                  5       [         R                  R                  U5      S   R                  5       :X  a  [         R                  R	                  X5      n U R                  [         R                  R                  S5      n [        SU 5      $ )Nr   Ú/r1   )r_   rO   Ú
splitdrivers   Úrelpathr$   Úsepr   )rO   r´   s     r<   Ú_fs_to_record_pathr»   Ü   s}   € ô 
‡w�w×Ñ˜$Ó Ñ"×(Ñ(Ó*¬b¯g©g×.@Ñ.@ÀÓ.IÈ!Ñ.L×.RÑ.RÓ.TÓTÜ�w‰w�‰˜tÓ-ˆà�<‰<œŸ™Ÿ™ SÓ)€DÜ�˜dÓ#Ð#r?   c                ó  • / nU  H£  n[        U5      S:”  a  [        R                  SU5        [        SUS   5      nUR	                  Xw5      nX‚;   a  [        [        X„5      5      u  pšO,[        U5      S:”  a  US   OSn	[        U5      S:”  a  US   OSn
UR                  X‰U
45        M¥     U H.  n[        X´5      n[        U5      u  pšUR                  XÉU
45        M0     UUR                  5        Vs/ s H  oÝSS4PM	     sn-   $ s  snf )zS
:param installed: A map from archive RECORD path to installation RECORD
    path.
é   z,RECORD line has more than three elements: %sr1   r   r‚   rU   é   )
r˜   ÚloggerÚwarningr   ÚpoprS   rµ   r•   r»   Úvalues)Úold_csv_rowsÚ	installedr6   Ú	generatedr´   Úinstalled_rowsÚrowÚold_record_pathÚnew_record_pathrL   rR   ÚfrO   Úinstalled_record_paths                 r<   Úget_csv_rows_for_installedrÌ   æ   s  € ð -/€NÛˆÜˆs‹8�a‹<Ü�N‰NÐIÈ3ÔOÜ˜|¨S°©VÓ4ˆØ#Ÿ-™-¨ÓIˆØÓ%Ü#Ô$6°Ó$PÓQ‰NˆF�Fä" 3›x¨!›|�S˜’V°ˆFÜ" 3›x¨!›|�S˜’V°ˆFØ×Ñ˜¸Ð?Ö@ñ ó ˆÜ! !Ó-ˆÜ ›‰ˆØ×Ñ˜t¨VÐ4Ö5ñ ð ØEN×EUÑEUÔEWóÚEWÐ,A  BÓ'ÑEWññ ð ùò s   Ã3Dc                ó¨  • U R                  5       n / nU R                  SS5      nU(       aÎ  S[        R                  ;  a  UR	                  SU-   5        [        R                  R                  SS5      S:w  a(  UR	                  S[        R                  S    SU 35        UR	                  S[        5        SU 35        U  Vs/ s H#  n[        R                  " S	U5      (       d  M!  UPM%     nnU H  nX	 M     U R                  S
S5      nU(       a‚  S[        R                  ;  a  UR	                  SU-   5        UR	                  S[        5        SU 35        U  Vs/ s H#  n[        R                  " SU5      (       d  M!  UPM%     nnU H  nX	 M     UR                  [        SR                  U R                  5       5      5        U$ s  snf s  snf )z_
Given the mapping from entrypoint name to callable, return the relevant
console script specs.
ÚpipNÚENSUREPIP_OPTIONSzpip = rU   Ú
altinstallr   z = zpip(\d+(\.\d+)?)?$Úeasy_installzeasy_install = zeasy_install-zeasy_install(-\d+\.\d+)?$ú{} = {})ÚcopyrÁ   r_   r’   r•   rr   rd   Úversion_infor   ÚreÚmatchÚextendr   r™   r–   )ÚconsoleÚscripts_to_generateÚ
pip_scriptÚkÚpip_epÚeasy_install_scriptÚeasy_install_eps          r<   Úget_console_script_specsrß     s¥  € ð �l‰l‹n€GàÐðB —‘˜U DÓ)€JÞØ¤b§j¡jÓ0Ø×&Ñ& x°*Ñ'<Ô=ä�:‰:�>‰>Ð-¨rÓ2°lÓBØ×&Ñ&¨¬S×-=Ñ-=¸aÑ-@Ð,AÀÀZÀLÐ'QÔRà×"Ñ" SÔ)@Ó)BÐ(CÀ3ÀzÀlÐ#SÔTá$ÓKšW˜¬¯ªÐ1FÈ×(J—!™WˆÐKÛˆAØ’
ñ à!Ÿ+™+ n°dÓ;ÐÞØ¤b§j¡jÓ0Ø×&Ñ&Ð'8Ð;NÑ'NÔOà×"Ñ"ØÔ3Ó5Ð6°cÐ:MÐ9NÐOô	
ñ
 ó
Ú�!¤"§(¢(Ð+GÈ×"K�A‘wð 	ð 
ó !ˆAØ’
ñ !ð ×Ñœw y×'7Ñ'7¸¿¹»ÓIÔJàÐùò+ Lùò
s   Ã G
Ã'G
Å GÆGc                  óB   • \ rS rSr        SS jrSS jrS	S jrSrg)
ÚZipBackedFileiQ  c                ó6   • Xl         X l        X0l        SU l        g ©NF)r2   r4   Ú	_zip_filer6   )r;   r2   r4   Úzip_files       r<   Ú__init__ÚZipBackedFile.__init__R  s   € ð  /ÔØ"ŒØ!ŒØˆ�r?   c                óL   • U R                   R                  U R                  5      $ r8   )rä   Úgetinfor2   r:   s    r<   Ú_getinfoÚZipBackedFile._getinfoZ  s   € Ø�~‰~×%Ñ% d×&:Ñ&:Ó;Ð;r?   c                óP  • [         R                  R                  U R                  5      (       a   [         R                  " U R                  5        U R                  5       n[        U R                  S5       nUR                  S:”  aQ  U R                  R                  U5       n[        UR                  S5      n[        R                  " X2U5        S S S 5        S S S 5        [        U5      (       a  [        U R                  5        g g ! , (       d  f       N== f! , (       d  f       NF= f)Nr^   r   é   )r_   rO   Úexistsr4   Úunlinkrê   ra   Ú	file_sizerä   ÚminÚshutilÚcopyfileobjr,   r+   )r;   ÚzipinfoÚdestrÊ   rP   s        r<   r=   ÚZipBackedFile.save]  sÆ   € ô �7‰7�>‰>˜$Ÿ.™.×)Ñ)Ü�IŠI�d—n‘nÔ%à—-‘-“/ˆô �$—.‘. $Ô'¨4Ø× Ñ  1Ó$Ø—^‘^×(Ñ(¨Ô1°QÜ # G×$5Ñ$5°{Ó C�IÜ×&Ò& q°	Ô:÷ 2÷ (ô " '×*Ñ*Ü>¸t¿~¹~ÕNð +÷	 2Õ1ú÷ (Õ'ús$   Á5,DÂ!.DÃDÄ
D	ÄDÄ
D%)rä   r6   r4   r2   N)r2   r1   r4   r3   rå   r   rA   rB   )rA   r   r@   )rC   rD   rE   rF   ræ   rê   r=   rH   r9   r?   r<   rá   rá   Q  s2   † ðØ)ðØ69ðØELðà	ôô<÷Or?   rá   c                  ó(   • \ rS rSrSS jrSS jrSrg)Ú
ScriptFileiw  c                óŠ   • Xl         U R                   R                  U l        U R                   R                  U l        SU l        g rã   )Ú_filer2   r4   r6   )r;   Úfiles     r<   ræ   ÚScriptFile.__init__x  s1   € ØŒ
Ø#Ÿz™z×9Ñ9ˆÔØŸ™×-Ñ-ˆŒØˆ�r?   c                ól   • U R                   R                  5         [        U R                  5      U l        g r8   )rú   r=   ro   r4   r6   r:   s    r<   r=   ÚScriptFile.save~  s    € Ø�
‰
�‰ÔÜ! $§.¡.Ó1ˆ�r?   )rú   r6   r4   r2   N)rû   r/   rA   rB   r@   )rC   rD   rE   rF   ræ   r=   rH   r9   r?   r<   rø   rø   w  s   † ô÷2r?   rø   c                  ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚMissingCallableSuffixiƒ  c                ó,   >• [         TU ]  SU S35        g )NzInvalid script entry point: z… - A callable suffix is required. See https://packaging.python.org/specifications/entry-points/#use-for-scripts for more information.)Úsuperræ   )r;   r~   Ú	__class__s     €r<   ræ   ÚMissingCallableSuffix.__init__„  s!   ø€ Ü‰ÑØ*¨;¨-ð 8ð õ	
r?   r9   )r~   r3   rA   rB   )rC   rD   rE   rF   ræ   rH   Ú__classcell__©r  s   @r<   r   r   ƒ  s   ø† ÷
õ 
r?   r   c                óœ  • [        U 5      nUc  g UR                  c  [        [        U5      5      e[        R
                  R                  XR                  5      n[        R
                  R                  U5      [        R
                  R                  U5      :H  nU(       d  [        X5      (       d  [        SUR                  < SU S35      eg )Nz Invalid script entry point name z?: the script would be installed outside the scripts directory (z).)r   Úsuffixr   r3   r_   rO   rš   r|   Úabspathr*   r   )ÚspecificationÚscripts_dirÚentryrõ   Úresolves_to_scripts_dirs        r<   Ú_raise_for_invalid_entrypointr  �  s©   € Ü˜]Ó+€EØ�}Øà‡|�|ÑÜ#¤C¨£JÓ/Ð/ô
 �7‰7�<‰<˜§Z¡ZÓ0€DÜ Ÿg™gŸo™o¨dÓ3´r·w±w·±À{Ó7SÑSÐÞÔ&9¸+×&LÑ&LÜØ.¨u¯z©z©nð =AØALÀÈRðQó
ð 	
ð 'Mr?   c                  ó`   ^ • \ rS rSr\R
                  " S5      r S     SU 4S jjjrSrU =r	$ )ÚPipScriptMakeri¡  zÁ        import sys
        from %(module)s import %(import_name)s
        if __name__ == '__main__':
            sys.argv[0] = sys.argv[0].removesuffix('.exe')
            sys.exit(%(func)s())
c                óL   >• [        XR                  5        [        TU ]  X5      $ r8   )r  Ú
target_dirr  Úmake)r;   r
  Úoptionsr  s      €r<   r  ÚPipScriptMaker.make¬  s    ø€ ô 	& m·_±_ÔEÜ‰w‰|˜MÓ3Ð3r?   r9   r8   )r
  r3   r  zdict[str, Any] | NonerA   ú	list[str])
rC   rD   rE   rF   ÚtextwrapÚdedentÚscript_templater  rH   r  r  s   @r<   r  r  ¡  sA   ø† ð —o’oð 'ó €Oð DHð4Ø ð4Ø+@ð4à	÷4ö 4r?   r  c	           
     ó�  ^^;^<^=^>^?^@^A• [        X5      u  pš[        U
5      (       a  UR                  mAOUR                  mA0 m@[	        5       m</ n S       S U<U@UA4S jjjnS!S jnS"U4S jjm;      S#U;4S jjn      S$U;U4S jjnS!S jn[        [        [           UR                  5       5      n[        UU5      n[        UU5      u  nnU" UTA5      n[        UU5      nS!S jn[        UU5      u  nnU" X5      n[        UU5      n[        UU5      n[        [        T5      [        U 5      5      n[!        U5      u  m=m?S%U=U?4S	 jjn[        UU5      n[        UU5      n[        ["        U5      n[        UU5      n[	        5       nU H†  n [$        R&                  R)                  U R*                  5      n!U!U;  a  [-        U!5        UR/                  U!5        U R1                  5         U" U R2                  U R*                  U R4                  5        Mˆ     S&U@UA4S
 jjn"S'S jn#U(       Ga0  [6        R8                  " [:        R<                  " [>        R@                  5      5       n$[B        RD                  " 5          [B        RF                  " S5        U"" 5        H�  n%[H        RJ                  " U%SSS9n&U&(       d  M"  U#" U%5      n'[$        R&                  RM                  U'5      (       d   e[        SU'RO                  [$        R&                  RP                  S5      5      n(U" U(U'5        M�     SSS5        SSS5        [R        RU                  W$RW                  5       5        [Y        SURZ                  5      n)Ub  UU)l.        SU)l/        S1U)l0        SU)l1        [e        T=5      n*[        [g        SRh                  T?Rk                  5       5      5      n+U)Rm                  U*5      n,URo                  U,5        URo                  U)Rm                  U+SS05      5        U(       a#  [q        U,5      n-U-b  [R        Rs                  U-5        S[u        5       ) -  m>[6        Rv                  S(U>4S jj5       n.[$        R&                  Ry                  TAU	5      n/[$        R&                  Ry                  U/S5      n0U." U05       n1U1R{                  S5        SSS5        UR}                  U05        Ubt  [$        R&                  Ry                  U/[~        5      n2U." U25       n3U3R{                  UR�                  5       Rƒ                  S5      5        SSS5        UR}                  U25        U(       aG  [$        R&                  Ry                  U/S5      n4[…        U4S5          SSS5        UR}                  U45        UR‡                  S5      n5[        [ˆ        RŠ                  " U5R�                  5       5      5      n6[�        U6T@T<UTAS9n7[$        R&                  Ry                  U/S5      n8U." U840 [‘        S5      D6 n9[ˆ        R’                  " [        SU95      5      n:U:R•                  [—        U75      5        SSS5        g! , (       d  f       GN9= f! , (       d  f       GNC= f! , (       d  f       GNÊ= f! , (       d  f       GNe= f! , (       d  f       GN)= f! , (       d  f       g= f))a   Install a wheel.

:param name: Name of the project to install
:param wheel_zip: open ZipFile for wheel being installed
:param scheme: Distutils scheme dictating the install directories
:param req_description: String used in place of the requirement, for
    logging
:param pycompile: Whether to byte-compile installed Python files
:param warn_script_location: Whether to check that scripts are installed
    into a directory on PATH
:param script_executable: Python executable to use for console scripts
:raises UnsupportedWheel:
    * when the directory holds an unpacked wheel with incompatible
      Wheel-Version
    * when the .dist-info dir does not match the wheel
r1   c                óZ   >• [        UT5      nUTU '   U(       a  TR                  U5        gg)z6Map archive RECORD paths to installation RECORD paths.N)r»   r‘   )Úsrcfilerž   ÚmodifiedÚnewpathr6   rÄ   r´   s       €€€r<   Úrecord_installedÚ(_install_wheel.<locals>.record_installedÝ  s/   ø€ ô % X¨wÓ7ˆØ$ˆ	�'ÑÞØ�K‰K˜Õ ð r?   c                ó$   • U R                  S5      $ )Nr·   )Úendswith©rO   s    r<   Úis_dir_pathÚ#_install_wheel.<locals>.is_dir_pathæ  s   € Ø�}‰}˜SÓ!Ð!r?   c                ó`   >• [        X5      (       d  Sn[        UR                  TX5      5      eg )NzRThe wheel {!r} has a file {!r} trying to install outside the target directory {!r})r*   r   r™   )Údest_dir_pathÚtarget_pathÚmessageÚ
wheel_paths      €r<   Úassert_no_path_traversalÚ0_install_wheel.<locals>.assert_no_path_traversalé  s:   ø€ Ü" =×>Ñ>ð5ð ô $Ø—‘˜z¨;ÓFóð ð ?r?   c                ó    >^ ^• SUUU 4S jjnU$ )Nc                ó¬   >• [         R                  R                  U 5      n[         R                  R                  TU5      nT" TU5        [	        XT5      $ r8   )r_   rO   Únormpathrš   rá   )r­   Únormed_pathr4   r+  rõ   rå   s      €€€r<   Úmake_root_scheme_fileÚM_install_wheel.<locals>.root_scheme_file_maker.<locals>.make_root_scheme_fileö  sB   ø€ ÜŸ'™'×*Ñ*¨;Ó7ˆKÜŸ™Ÿ™ T¨;Ó7ˆIÙ$ T¨9Ô5Ü  ¸ÓBÐBr?   ©r­   r1   rA   r/   r9   )rå   rõ   r1  r+  s   `` €r<   Úroot_scheme_file_makerÚ._install_wheel.<locals>.root_scheme_file_makeró  s   ú€ ÷	Cñ 	Cð %Ð$r?   c                ól   >^ ^• [          Vs0 s H  o"[        X5      _M     snmSUUUU 4S jjnU$ s  snf )Nc           
     óÜ  >• [         R                  R                  U 5      n UR                  [         R                  R                  S5      u  p#n T
U   n[         R                  R                  Xd5      nT	" Xh5        [        XT5      $ ! [
         a    ST SU < S3n[        U5      ef = f! [         a6    SR                  [        T
5      5      nST SU SU < SU S	3	n[        U5      ef = f)
Nr¾   zUnexpected file in z: zG. .data directory contents should be named like: '<scheme key>/<path>'.rƒ   zUnknown scheme key used in z (for file zW). .data directory contents should be in subdirectories named with a valid scheme key (Ú))r_   rO   r/  r“   rº   Ú
ValueErrorr   ÚKeyErrorrš   r—   rá   )r­   r0  Ú_Ú
scheme_keyÚdest_subpathr)  Úscheme_pathÚvalid_scheme_keysr4   r+  Úscheme_pathsr*  rå   s            €€€€r<   Úmake_data_scheme_fileÚM_install_wheel.<locals>.data_scheme_file_maker.<locals>.make_data_scheme_file  s  ø€ ÜŸ'™'×*Ñ*¨;Ó7ˆKð1Ø.9×.?Ñ.?ÄÇÁÇÁÈQÓ.OÑ+�˜|ð
1Ø*¨:Ñ6�ô Ÿ™Ÿ™ [Ó?ˆIÙ$ [Ô<Ü  ¸ÓBÐBøô+ ó 1à)¨*¨°R¸±ð GMð Mð ô (¨Ó0Ð0ð1ûô ó 1Ø$(§I¡I¬f°\Ó.BÓ$CÐ!à1°*°¸RÀ
¸|ð L!Ø!,¡ð 0à-Ð.¨að1ð ô (¨Ó0Ð0ð1ús   ¢-B ÁB+ Â B(Â+A C+r3  )r!   Úgetattr)rå   ÚschemeÚkeyrA  r@  r+  r*  s   `   @€€r<   Údata_scheme_file_makerÚ._install_wheel.<locals>.data_scheme_file_makerþ  s<   ú€ õ >IÓIº[°cœW VÓ1Ò1¹[ÑIˆ÷	Cò 	Cð6 %Ð$ùò; Js   Œ1c                óJ   • U R                  SS5      S   R                  S5      $ )Nr·   r‚   r   ú.data)r“   r"  r#  s    r<   Úis_data_scheme_pathÚ+_install_wheel.<locals>.is_data_scheme_path   s#   € Ø�z‰z˜#˜qÓ! !Ñ$×-Ñ-¨gÓ6Ð6r?   c                ó–   • U R                  SS5      n[        U5      S:„  =(       a#    US   R                  S5      =(       a    US   S:H  $ )Nr·   r¾   r   rI  r‚   rœ   )r“   r˜   r"  )rO   Úpartss     r<   Úis_script_scheme_pathÚ-_install_wheel.<locals>.is_script_scheme_path*  sB   € Ø—
‘
˜3 Ó"ˆÜ�5‹z˜A‰~×V %¨¡(×"3Ñ"3°GÓ"<×VÀÀqÁÈYÑAVÐVr?   c                ó|  >• U R                   n[        R                  R                  U5      nUR	                  5       R                  S5      (       a  US S nOVUR	                  5       R                  S5      (       a  US S nO,UR	                  5       R                  S5      (       a  US S nOUnUT;   =(       d    UT;   $ )Nz.exeéüÿÿÿz
-script.pyiöÿÿÿz.pya)r4   r_   rO   Úbasenamers   r"  )rû   rO   r|   Ú	matchnamerØ   Úguis       €€r<   Úis_entrypoint_wrapperÚ-_install_wheel.<locals>.is_entrypoint_wrapper=  s¢   ø€ ð �~‰~ˆÜ�w‰w×Ñ Ó%ˆØ�:‰:‹<× Ñ  ×(Ñ(Ø˜S˜b˜	‰IØ�Z‰Z‹\×"Ñ" <×0Ñ0Ø˜T˜c˜
‰IØ�Z‰Z‹\×"Ñ" 6×*Ñ*Ø˜S˜b˜	‰IàˆIà˜GÑ#×7 y°CÑ'7Ð7r?   c               3  ó$  >#   • [        [        TR                  5       5      5       He  n [        R                  R                  TU 5      n[        R                  R                  U5      (       d  MI  UR                  S5      (       d  Ma  Uv •  Mg     g 7f)Nz.py)r—   rŽ   rÂ   r_   rO   rš   r`   r"  )Úinstalled_pathÚfull_installed_pathrÄ   r´   s     €€r<   Úpyc_source_file_pathsÚ-_install_wheel.<locals>.pyc_source_file_paths`  sk   øé € ô
 %¤S¨×)9Ñ)9Ó);Ó%<Ö=ˆNÜ"$§'¡'§,¡,¨w¸Ó"GÐÜ—7‘7—>‘>Ð"5×6Ñ6ÙØ&×/Ñ/°×6Ñ6ÙØ%Ô%ò >ùs   ƒBBc                ó@   • [         R                  R                  U 5      $ )z8Return the path the pyc file would have been written to.)Ú	importlibÚutilÚcache_from_sourcer#  s    r<   Úpyc_output_pathÚ'_install_wheel.<locals>.pyc_output_pathm  s   € ä�~‰~×/Ñ/°Ó5Ð5r?   ÚignoreT)ÚforceÚquietr·   NrU   rÒ   rT  i¶  c              ;  óÐ   >#   • [        U 40 UD6 nUv •  S S S 5        [        R                  " WR                  T5        [	        UR                  U 5        g ! , (       d  f       NF= f7fr8   )r#   r_   Úchmodr|   r$   )rO   ÚkwargsrÊ   Úgenerated_file_modes      €r<   Ú_generate_fileÚ&_install_wheel.<locals>._generate_fileª  sH   øé € ä˜tÑ. vÒ.°!ØŠG÷ /ä
�Š�—‘Ð,Ô-Ü�—‘˜Õ÷ /Õ.üs   ƒA&�A•A A&Á
A#ÁA&Ú	INSTALLERs   pip
rV   Ú	REQUESTEDr^   ÚRECORD)rÄ   r6   rÅ   r´   ÚwzIO[str])F)r  r1   rž   r3   r  r5   rA   rB   )rO   r1   rA   r5   )r'  r3   r(  r3   rA   rB   )rå   r   rõ   r3   rA   úCallable[[RecordPath], File])rå   r   rD  r"   rA   ro  )rû   r/   rA   r5   )rA   zGenerator[str, None, None])rO   r3   rA   r3   )rO   r3   rg  r   rA   zGenerator[BinaryIO, None, None])Lr-   ru   ÚpurelibÚplatlibrŽ   r   Úlistr1   Únamelistr   r(   Úmapr   r   r   r   r   rø   r_   rO   Údirnamer4   r&   r‘   r=   r2   r6   Ú
contextlibÚredirect_stdoutr%   Úfrom_streamrd   ÚstdoutÚwarningsÚcatch_warningsÚfilterwarningsÚ
compileallÚcompile_filerî   r$   rº   r¿   ÚdebugÚgetvaluer  rœ   re   ÚclobberÚvariantsÚset_moderß   r   r™   r–   Úmake_multipler×   rª   rÀ   r)   Úcontextmanagerrš   rj   r•   r   Úto_jsonrf   ra   Ú	read_textÚcsvÚreaderÚ
splitlinesrÌ   rZ   ÚwriterÚ	writerowsr²   )Br|   Ú	wheel_zipr*  rD  Ú	pycompileÚwarn_script_locationÚ
direct_urlÚ	requestedÚscript_executableÚinfo_dirrt   rÅ   r  r$  r4  rF  rJ  ÚpathsÚ
file_pathsÚroot_scheme_pathsÚdata_scheme_pathsr1  ÚfilesrN  Úother_scheme_pathsÚscript_scheme_pathsrA  Úother_scheme_filesÚdistributionrU  Úscript_scheme_filesÚexisting_parentsrû   rŸ   rZ  r`  ry  rO   ÚsuccessÚpyc_pathÚpyc_record_pathÚmakerrÙ   Úgui_scripts_to_generateÚgenerated_console_scriptsÚmsgri  Údest_info_dirÚinstaller_pathÚinstaller_fileÚdirect_url_pathÚdirect_url_fileÚrequested_pathÚrecord_textÚrecord_rowsÚrowsr­   Úrecord_filer‹  r+  r6   rØ   rh  rT  rÄ   r´   sB     `                                                        @@@@@@@r<   Ú_install_wheelr°  ³  sâ  ÿ€ ô6 % YÓ5Ñ€Hä˜X×&Ñ&Ø—.‘.‰à—.‘.ˆð /1€IÜ"›u€GØ€Ið >Cð!Øð!Ø'*ð!Ø6:ð!à	÷!ò !ô"÷ð	%Øð	%Ø!$ð	%à	%÷	%ð %Øð %Ø#)ð %à	%÷ %ð  %ôD7ô ””jÑ! 9×#5Ñ#5Ó#7Ó8€EÜ˜[¨%Ó0€JÜ+4Ð5HÈ*Ó+UÑ(ÐÐ(á2°9¸gÓFÐÜÐ 5Ð7HÓI€EôWô /8ØÐ0ó/Ñ+ÐÐ+ñ 3°9ÓEÐÜÐ2Ð4FÓGÐÜ�%Ð+Ó,€Eô *Ü˜
Ó#Ü˜$Óó€Lô # <Ó0�L€GˆS÷8ð 8ô  +.ØÐ2ó+Ðô &Ð&;Ð=PÓQÐÜœjÐ*=Ó>ÐÜ�%Ð,Ó-€Eä“uÐÛˆô —W‘W—_‘_ T§^¡^Ó4ˆ
ØÐ-Ó-Ü�zÔ"Ø× Ñ  Ô,Ø�	‰	ŒÙ˜×-Ñ-¨t¯~©~¸t¿|¹|ÖLñ ÷&ð &ô6÷
 Ü×'Ò'Ü×%Ò%¤c§j¡jÓ1ô
àÜ×(Ò(Õ*Ü×'Ò'¨Ô1Ù1Ö3�DÜ(×5Ò5°dÀ$ÈdÑS�Gß�wÙ#2°4Ó#8˜Ü!Ÿw™wŸ~™~¨h×7Ñ7Ð7Ð7Ü*.Ø(¨(×*:Ñ*:¼2¿7¹7¿;¹;ÈÓ*Ló+˜ñ )¨¸(ÖCñ 4÷ +÷
ô 	�‰�V—_‘_Ó&Ô'ä˜4 §¡Ó0€Eð
 Ñ$Ø,ˆÔð €E„Mð
 �T€E„Nð
 €E„Nô 3°7Ó;Ðä"¤7¨9×+;Ñ+;¸S¿Y¹Y»[Ó#IÓJÐà %× 3Ñ 3Ð4GÓ HÐØ×ÑÐ.Ô/à×Ñ�U×(Ñ(Ð)@À5È$À-ÓPÔQæÜ/Ð0IÓJˆØ‰?Ü�N‰N˜3Ôà¤=£?Ð"2Ñ2Ðä×Ñöó ðô —G‘G—L‘L ¨(Ó3€Mô —W‘W—\‘\ -°Ó=€NÙ	˜Ô	'¨>Ø×Ñ˜XÔ&÷ 
(à×Ñ�^Ô$ð ÑÜŸ'™'Ÿ,™, }Ô6NÓOˆÙ˜OÔ,°Ø×!Ñ! *×"4Ñ"4Ó"6×"=Ñ"=¸gÓ"FÔG÷ -à×Ñ˜Ô)ö ÜŸ™Ÿ™ m°[ÓAˆÜ�. $Õ'Ø÷ (à×Ñ˜Ô(à×(Ñ(¨Ó2€KÜ”s—z’z +×"8Ñ"8Ó":Ó;Ó<€Kä%ØØØØØñ€Dô —'‘'—,‘,˜}¨hÓ7€Ká	˜Ñ	:¤}°SÓ'9Ò	:¸kô —’œD ¨KÓ8Ó9ˆØ×ÑÔ,¨TÓ2Ô3÷	 
;Ð	:÷ +Ö*ú÷
ö 
ú÷D 
(Ö	'ú÷ -Ö,ú÷ (Ö'ú÷$ 
;Õ	:ús[   É&Y/É<<YÊ<A/YÌ+Y/Ò,ZÔ/ZÖZ%Ø;Z7Ù
Y,	Ù'Y/Ù/
Y>Ú
ZÚ
Z"Ú%
Z4Ú7
[c              #  ó|   #   •  S v •  g ! [          a&  nSU  SUR                  S    3n[        U5      UeS nAff = f7f)Nz	For req: z. r   )r   Úargs)Úreq_descriptionÚer)  s      r<   Úreq_error_contextrµ  Ü  sD   é € ð0ÜøÜó 0Ø˜oÐ.¨b°·±¸±°Ð<ˆÜ Ó(¨aÐ/ûð0üs   ‚<„	 ˆ<‰
9“!4´9¹<c	                ó¸   • [        USS9 n	[        U5         [        U U	UUUUUUUS9	  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)NT)Ú
allowZip64)	r|   r�  r*  rD  rŽ  r�  r�  r‘  r’  )r   rµ  r°  )
r|   r*  rD  r³  rŽ  r�  r�  r‘  r’  Úzs
             r<   Úinstall_wheelr¹  å  sX   € ô 
�¨Ò	-°Ü˜Õ/ÜØØØ%ØØ#Ø%9Ø%Ø#Ø"3ò
÷ 0÷ 
.Ð	-ß/Õ/ú÷ 
.Õ	-ús   ‹A—:©Aº
A	ÁAÁ
A)rí   )rO   r3   rP   ÚintrA   ztuple[str, str])rW   r3   rA   zdict[str, Any])rO   r3   rA   r5   )rt   r
   rA   r5   )r}   r   rA   z%tuple[dict[str, str], dict[str, str]])rœ   zSequence[str]rA   ú
str | None)r±   zIterable[InstalledCSVRow]rA   zlist[tuple[str, str, str]])r­   r1   r´   r3   rA   r3   )rO   r3   r´   r3   rA   r1   )rÃ   zlist[list[str]]rÄ   zdict[RecordPath, RecordPath]r6   zset[RecordPath]rÅ   r  r´   r3   rA   zlist[InstalledCSVRow])rØ   zdict[str, str]rA   r  )r
  r3   r  r3   rA   rB   )TTNFN)r|   r3   r�  r   r*  r3   rD  r"   rŽ  r5   r�  r5   r�  úDirectUrl | Noner‘  r5   r’  r»  rA   rB   )r³  r3   rA   zGenerator[None, None, None])r|   r3   r*  r3   rD  r"   r³  r3   rŽ  r5   r�  r5   r�  r¼  r‘  r5   r’  r»  rA   rB   )jÚ__doc__Ú
__future__r   rŒ   r}  rv  rˆ  r]  ÚloggingÚos.pathr_   rÕ   rò   rd   r  rz  Úbase64r   Úcollections.abcr   r   r   r   r	   Úemail.messager
   Ú	itertoolsr   r   r   Úpathlibr   Útypingr   r   r   r   r   r   Úzipfiler   r   Úpip._vendor.distlib.scriptsr   Úpip._vendor.distlib.utilr   Úpip._vendor.packaging.utilsr   Úpip._internal.exceptionsr   Úpip._internal.locationsr   Úpip._internal.metadatar   r   r   Úpip._internal.models.direct_urlr   r    Úpip._internal.models.schemer!   r"   Úpip._internal.utils.filesystemr#   r$   Úpip._internal.utils.miscr%   r&   r'   r(   Úpip._internal.utils.unpackingr)   r*   r+   r,   Úpip._internal.utils.wheelr-   r/   Ú	getLoggerrC   r¿   r3   r1   Útuplerº  ÚInstalledCSVRowrS   rZ   ro   ru   r   rª   r²   rµ   r»   rÌ   rß   rá   rø   r   r  r  r°  r…  rµ  r¹  r9   r?   r<   Ú<module>r×     s˜  ðÙ Lå "ã Û Û Û 
Û Û Û Û 	Û Û 
Û Û Ý $ß MÕ MÝ !ß 1Ñ 1Ý ÷÷ ÷ %å 3Ý 5Ý 9å 6Ý ;÷ñ ÷
 Pß ;ß Eß TÓ T÷ó õ 2ôˆ8ô ð 
×	Ò	˜8Ó	$€á�\ 3Ó'€
Ø˜
 C¨¨s©Ð2Ñ3€ö!ô>ôô(Aô(ôC ðLØ&ðàôô4.ô$ðØ!ðà+ðð ðð ð	ð
 ðð ôô@H÷V#Oñ #O÷L	2ñ 	2ô
Ð-ô 
ô
ô(4�[ô 4ð. Ø!%Ø#'ØØ$(ðf4Ø
ðf4àðf4ð ðf4ð ð	f4ð
 ðf4ð ðf4ð !ðf4ð ðf4ð "ðf4ð 
õf4ðR	 ×Ñó0ó ð0ð Ø!%Ø#'ØØ$(ðØ
ðàðð ðð ð	ð
 ðð ðð !ðð ðð "ðð 
ör?   