Ë
    ¨Õ°j–q  ã                  ó†  — d Z 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	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mZmZmZ ddl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#m$Z$m%Z%m&Z& dd
l'm(Z(m)Z) ddl*m+Z+ ddl,m-Z- ddl.m/Z/ ddl0m1Z1 ddl2m3Z3 ddl4m5Z5m6Z6m7Z7 ddl8m9Z9m:Z: ddl;m<Z<m=Z= ddl>m?Z?m@Z@ ddlAmBZBmCZCmDZDmEZE ddlFmGZGmHZHmIZImJZJ ddlKmLZL  G d„ de%«      ZM ejœ                  eO«      ZP e$deQ«      ZReSeReQeTeQz  f   ZUd1d2d„ZVd3d„ZWd4d„ZXd5d„ZYd6d„ZZd7d„Z[	 	 	 	 d8d „Z\d9d!„Z]d:d"„Z^	 	 	 	 	 	 	 	 	 	 	 	 d;d#„Z_d<d$„Z` G d%„ d&«      Za G d'„ d(«      Zb G d)„ d*e1«      Zcd=d+„Zd G d,„ d-e+«      Ze	 	 	 	 	 d>	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 d?d.„ZfejÎ                  d@d/„«       Zh	 	 	 	 	 d>	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 dAd0„Ziy)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                  ó4   — e Zd ZU ded<   ded<   ded<   d	d„Zy)
ÚFileÚ
RecordPathÚsrc_record_pathÚstrÚ	dest_pathÚboolÚchangedc                 ó   — y ©N© ©Úselfs    ú\/var/www/mission/venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.pyÚsavez	File.save=   s   € Øó    N©ÚreturnÚNone)Ú__name__Ú
__module__Ú__qualname__Ú__annotations__r<   r8   r=   r;   r/   r/   8   s   … ØÓØƒNØƒMôr=   r/   r0   c                ó®   — t        | |«      \  }}dt        |j                  «       «      j                  d«      j	                  d«      z   }|t        |«      fS )z?Return (encoded_digest, length) for path using hashlib.sha256()zsha256=Úlatin1ú=)r'   r   ÚdigestÚdecodeÚrstripr2   )ÚpathÚ	blocksizeÚhÚlengthrH   s        r;   ÚrehashrO   G   sM   € ä˜$ 	Ó*�I€A€vØÔ*¨1¯8©8«:Ó6×=Ñ=¸hÓG×NÑNÈsÓSÑS€FØ”C˜“KÐ Ð r=   c                ó   — | dddœS )zPReturn keyword arguments to properly open a CSV file
    in the given mode.
    Ú úutf-8)ÚmodeÚnewlineÚencodingr8   )rS   s    r;   Úcsv_io_kwargsrV   N   s   € ð  R°WÑ=Ð=r=   c                ó0  — t         j                  j                  | «      sJ ‚t        | d«      5 }|j	                  «       }|j                  d«      s
	 ddd«       yt        j                  j                  t        j                  «       «      }d|z   t         j                  j                  d«      z   }|j                  «       }ddd«       t        | d«      5 }|j                  «       |j                  «       ddd«       y# 1 sw Y   ŒAxY w# 1 sw Y   yxY w)	zQReplace #!python with #!/path/to/python
    Return True if file was changed.
    Úrbs   #!pythonNFs   #!ÚasciiÚwbT)ÚosrK   ÚisfileÚopenÚreadlineÚ
startswithÚsysÚ
executableÚencodeÚgetfilesystemencodingÚlinesepÚreadÚwrite)rK   ÚscriptÚ	firstlineÚexenameÚrests        r;   Ú
fix_scriptrk   U   sé   € ô
 �7‰7�>‰>˜$ÔÐÐä	ˆd�DÓ	ð ˜VØ—O‘OÓ%ˆ	Ø×#Ñ# KÔ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   — | j                  dd«      j                  «       dk(  S )NzRoot-Is-PurelibrQ   Útrue)ÚgetÚlower)Úmetadatas    r;   Úwheel_root_is_purelibrq   i   s"   € Ø�<‰<Ð)¨2Ó.×4Ñ4Ó6¸&Ñ@Ð@r=   c                óà   — i }i }| j                  «       D ]T  }|j                  dk(  r|j                  ||j                  <   Œ,|j                  dk(  sŒ<|j                  ||j                  <   ŒV ||fS )NÚconsole_scriptsÚgui_scripts)Úiter_entry_pointsÚgroupÚvalueÚname)Údistrs   rt   Úentry_points       r;   Úget_entrypointsr{   m   sz   € Ø€OØ€KØ×-Ñ-Ó/ò >ˆØ×ÑÐ 1Ò1Ø0;×0AÑ0AˆO˜K×,Ñ,Ò-Ø×Ñ -Ó/Ø,7×,=Ñ,=ˆK˜×(Ñ(Ò)ð	>ð
 ˜KÐ'Ð'r=   c                ó  — | syt        j                  t        «      }| D ]G  }t        |«      }|j                  j                  «       }|j                  }||   j                  |«       ŒI t        j                  j                  dd«      j                  t        j                  «      D �cg c]  }t        |«      j                  «       ‘Œ }}|j                  t        t        j                  «      j                  j                  «       «       |j!                  «       D �� ci c]  \  }} ||vr|| “Œ }}} |syg }	|j!                  «       D ]l  \  }}
t#        |
«      }t%        |«      dk(  r
d|d   › d�}n,dj'                  d	j)                  |dd
 «      dz   |d
   z   «      }|	j                  d|› d|› d�«       Œn d}t%        |	«      dk(  r!|	j                  |j'                  d«      «       n |	j                  |j'                  d«      «       t+        d„ t        j                  j                  dd«      j                  t        j                  «      D «       «      }|rd}|	j                  |«       dj)                  |	«      S c c}w c c} }w )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ÚPATHrQ   é   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  ó2   K  — | ]  }|sŒ|d    dk(  –— Œ y­w)r   ú~Nr8   )Ú.0Úis     r;   ú	<genexpr>z4message_about_scripts_not_on_PATH.<locals>.<genexpr>°   s   è ø€ ò ØÊQˆˆ!‰��ñùs   ‚ŠziNOTE: The current PATH contains path(s) starting with `~`, which may not be expanded by all applications.ú
)ÚcollectionsÚdefaultdictÚsetr   ÚparentÚresolverx   Úaddr[   Úenvironrn   ÚsplitÚpathsepÚappendr`   ra   ÚitemsÚsortedÚlenÚformatÚjoinÚany)ÚscriptsÚgrouped_by_dirÚdestfiler3   Ú
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   st  € ñ
 Øô ,7×+BÑ+BÄ3Ó+G€NØò 4ˆÜ˜“Nˆ	Ø×%Ñ%×-Ñ-Ó/ˆ
Ø—n‘nˆØ�zÑ"×&Ñ& {Õ3ð	4ô $&§:¡:§>¡>°&¸"Ó#=×#CÑ#CÄBÇJÁJÓ#OöØŒˆQ‹�‰Õð€Mð ð
 ×ÑœœcŸn™nÓ-×4Ñ4×<Ñ<Ó>Ô?ð $2×#7Ñ#7Ó#9÷&áˆJ˜Ø˜]Ñ*ð 	�GÑð&€Hñ &ñ
 Øð €IØ#+§>¡>Ó#3ò 
Ñˆ
�KÜ$*¨;Ó$7ˆÜˆ~Ó !Ò#Ø" >°!Ñ#4Ð"5°SÐ9‰Jà)×0Ñ0Ø—	‘	˜.¨¨"Ð-Ó.°Ñ8¸>È"Ñ;MÑMóˆJð 	×ÑØ�:�,˜o¨j¨\Ð9PÐQõ	
ð
ð	Cð ô ˆ9ƒ~˜ÒØ×Ñ˜×-Ñ-Ð.>Ó?Õ@à×Ñ˜×-Ñ-Ð.AÓBÔCô ñ ÜŸZ™ZŸ^™^¨F°BÓ7×=Ñ=¼b¿j¹jÓIôó €Nñ ð=ð 	ð 	×ÑÐ*Ô+ð �9‰9�YÓÐùòeùó&s   Â( I9ÄI>c                ó&   — t        d„ | D «       «      S )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  ó@   K  — | ]  \  }}}||t        |«      f–— Œ y ­wr7   )r2   )rƒ   Úrecord_pathÚhash_Úsizes       r;   r…   z&_normalized_outrows.<locals>.<genexpr>Ó   s&   è ø€ ò Ù,D¨K¸Àˆ�eœS ›YÔ'ñùs   ‚)r’   )Úoutrowss    r;   Ú_normalized_outrowsr¬   ¾   s   € ô* ñ ØHOôó ð r=   c                óB   — t         j                  j                  || «      S r7   )r[   rK   r•   )r¨   Úlib_dirs     r;   Ú_record_to_fs_pathr¯   Ø   s   € Ü�7‰7�<‰<˜ Ó-Ð-r=   c                óp  — t         j                  j                  | «      d   j                  «       t         j                  j                  |«      d   j                  «       k(  r t         j                  j	                  | |«      } | j                  t         j                  j                  d«      } t        d| «      S )Nr   ú/r0   )r[   rK   Ú
splitdrivero   Úrelpathr$   Úsepr   )rK   r®   s     r;   Ú_fs_to_record_pathrµ   Ü   s   € ô 
‡w�w×Ñ˜$Ó Ñ"×(Ñ(Ó*¬b¯g©g×.@Ñ.@ÀÓ.IÈ!Ñ.L×.RÑ.RÓ.TÒTÜ�w‰w�‰˜t WÓ-ˆà�<‰<œŸ™Ÿ™ SÓ)€DÜ�˜dÓ#Ð#r=   c                ó  — g }| D ]¢  }t        |«      dkD  rt        j                  d|«       t        d|d   «      }|j	                  ||«      }||v rt        t        ||«      «      \  }	}
n*t        |«      dkD  r|d   nd}	t        |«      dkD  r|d   nd}
|j                  ||	|
f«       Œ¤ |D ]0  }t        ||«      }t        |«      \  }	}
|j                  ||	|
f«       Œ2 ||j                  «       D �cg c]  }|ddf‘Œ	 c}z   S c c}w )z_
    :param installed: A map from archive RECORD path to installation RECORD
        path.
    é   z,RECORD line has more than three elements: %sr0   r   r~   rQ   é   )
r“   ÚloggerÚwarningr   ÚpoprO   r¯   r�   rµ   Úvalues)Úold_csv_rowsÚ	installedr5   Ú	generatedr®   Úinstalled_rowsÚrowÚold_record_pathÚnew_record_pathrH   rN   ÚfrK   Úinstalled_record_paths                 r;   Úget_csv_rows_for_installedrÆ   æ   s(  € ð -/€NØò 
AˆÜˆs‹8�aŠ<Ü�N‰NÐIÈ3ÔOÜ˜|¨S°©VÓ4ˆØ#Ÿ-™-¨¸ÓIˆØ˜gÑ%Ü#Ô$6°ÈÓ$PÓQ‰NˆF‘Fä" 3›x¨!š|�S˜’V°ˆFÜ" 3›x¨!š|�S˜’V°ˆFØ×Ñ˜°¸Ð?Õ@ð
Að ò 6ˆÜ! ! WÓ-ˆÜ ›‰ˆ�Ø×Ñ˜t V¨VÐ4Õ5ð6ð ØEN×EUÑEUÓEWöØ,AÐ	  BÒ'òñ ð ùò s   Ã2Dc                ó^  — | j                  «       } g }| j                  dd«      }|rÀdt        j                  vr|j	                  d|z   «       t        j                  j                  dd«      dk7  r(|j	                  dt        j                  d   › d|› �«       |j	                  dt        «       › d|› �«       | D �cg c]  }t        j                  d	|«      sŒ|‘Œ }}|D ]  }| |= Œ | j                  d
d«      }|rudt        j                  vr|j	                  d|z   «       |j	                  dt        «       › d|› �«       | D �cg c]  }t        j                  d|«      sŒ|‘Œ }}|D ]  }| |= Œ |j                  t        dj                  | j                  «       «      «       |S c c}w c c}w )zk
    Given the mapping from entrypoint name to callable, return the relevant
    console script specs.
    ÚpipNÚENSUREPIP_OPTIONSzpip = rQ   Ú
altinstallr   z = zpip(\d+(\.\d+)?)?$Úeasy_installzeasy_install = zeasy_install-zeasy_install(-\d+\.\d+)?$ú{} = {})Úcopyr»   r[   r�   r�   rn   r`   Ú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˜¬¯©Ð1FÈÕ(J’!ÐKˆÐKØò 	ˆAØ˜‘
ð	à!Ÿ+™+ n°dÓ;ÐÙØ¤b§j¡jÑ0Ø×&Ñ&Ð'8Ð;NÑ'NÔOà×"Ñ"ØÔ3Ó5Ð6°cÐ:MÐ9NÐOô	
ð
 ö
Ø¤"§(¡(Ð+GÈÕ"KŠAð
ˆð 
ð !ò 	ˆAØ˜‘
ð	ð ×Ñœw y×'7Ñ'7¸¿¹»ÓIÔJàÐùò+ Lùò
s   Â;F%ÃF%ÅF*Å F*c                  ó4   — e Zd Z	 	 	 	 	 	 	 	 dd„Zdd„Zdd„Zy)ÚZipBackedFilec                ó<   — || _         || _        || _        d| _        y ©NF)r1   r3   Ú	_zip_filer5   )r:   r1   r3   Úzip_files       r;   Ú__init__zZipBackedFile.__init__R  s!   € ð  /ˆÔØ"ˆŒØ!ˆŒØˆ�r=   c                óL   — | j                   j                  | j                  «      S r7   )rÞ   Úgetinfor1   r9   s    r;   Ú_getinfozZipBackedFile._getinfoZ  s   € Ø�~‰~×%Ñ% d×&:Ñ&:Ó;Ð;r=   c                ó$  — t         j                  j                  | j                  «      rt        j                  | j                  «       | j                  «       }t        | j                  d«      5 }|j                  dkD  rQ| j                  j                  |«      5 }t        |j                  d«      }t        j                  |||«       d d d «       d d d «       t        |«      rt        | j                  «       y y # 1 sw Y   Œ3xY w# 1 sw Y   Œ7xY w)NrZ   r   é   )r[   rK   Úexistsr3   Úunlinkrã   r]   Ú	file_sizerÞ   ÚminÚshutilÚcopyfileobjr,   r+   )r:   ÚzipinfoÚdestrÄ   rL   s        r;   r<   zZipBackedFile.save]  sÐ   € ô �7‰7�>‰>˜$Ÿ.™.Ô)Ü�I‰I�d—n‘nÔ%à—-‘-“/ˆô �$—.‘. $Ó'ð 	;¨4Ø× Ñ  1Ò$Ø—^‘^×(Ñ(¨Ó1ð ;°QÜ # G×$5Ñ$5°{Ó C�IÜ×&Ñ& q¨$°	Ô:÷;÷	;ô " 'Ô*Ü>¸t¿~¹~ÕNð +÷	;ð ;ú÷	;ð 	;ús$   Á/+DÂ.C:ÃDÃ:D	Ã?DÄDN)r1   r0   r3   r2   rß   r   r?   r@   )r?   r   r>   )rA   rB   rC   rà   rã   r<   r8   r=   r;   rÛ   rÛ   Q  s2   „ ðØ)ðØ69ðØELðà	óó<ôOr=   rÛ   c                  ó   — e Zd Zdd„Zdd„Zy)Ú
ScriptFilec                óŒ   — || _         | j                   j                  | _        | j                   j                  | _        d| _        y rÝ   )Ú_filer1   r3   r5   )r:   Úfiles     r;   rà   zScriptFile.__init__x  s3   € ØˆŒ
Ø#Ÿz™z×9Ñ9ˆÔØŸ™×-Ñ-ˆŒØˆ�r=   c                ól   — | j                   j                  «        t        | j                  «      | _        y r7   )rñ   r<   rk   r3   r5   r9   s    r;   r<   zScriptFile.save~  s    € Ø�
‰
�‰ÔÜ! $§.¡.Ó1ˆ�r=   N)rò   r/   r?   r@   r>   )rA   rB   rC   rà   r<   r8   r=   r;   rï   rï   w  s   „ óô2r=   rï   c                  ó    ‡ — e Zd Zdˆ fd„Zˆ xZS )ÚMissingCallableSuffixc                ó,   •— t         ‰| �  d|› d�«       y )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:   rz   Ú	__class__s     €r;   rà   zMissingCallableSuffix.__init__„  s!   ø€ Ü‰ÑØ*¨;¨-ð 8ð õ	
r=   )rz   r2   r?   r@   )rA   rB   rC   rà   Ú__classcell__©rø   s   @r;   rõ   rõ   ƒ  s   ø„ ÷
ñ 
r=   rõ   c                ó†  — t        | «      }|€y |j                  €t        t        |«      «      ‚t        j
                  j                  ||j                  «      }t        j
                  j                  |«      t        j
                  j                  |«      k(  }|st        ||«      st        d|j                  ›d|› d�«      ‚y )Nz Invalid script entry point name z?: the script would be installed outside the scripts directory (z).)r   Úsuffixrõ   r2   r[   rK   r•   rx   Úabspathr*   r   )ÚspecificationÚscripts_dirÚentryrí   Úresolves_to_scripts_dirs        r;   Ú_raise_for_invalid_entrypointr  �  sª   € Ü˜]Ó+€EØ€}Øà‡|�|ÐÜ#¤C¨£JÓ/Ð/ô
 �7‰7�<‰<˜ U§Z¡ZÓ0€DÜ Ÿg™gŸo™o¨dÓ3´r·w±w·±À{Ó7SÑSÐÙÔ&9¸+ÀtÔ&LÜØ.¨u¯z©z¨nð =AØALÀÈRðQó
ð 	
ð 'Mr=   c                  óR   ‡ — e Zd Z ej                  d«      Z	 d	 	 	 	 	 dˆ fd„Zˆ xZS )ÚPipScriptMakerzÁ        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                óP   •— t        || j                  «       t        ‰| �  ||«      S r7   )r  Ú
target_dirr÷   Úmake)r:   rþ   Úoptionsrø   s      €r;   r  zPipScriptMaker.make¬  s$   ø€ ô 	& m°T·_±_ÔEÜ‰w‰|˜M¨7Ó3Ð3r=   r7   )rþ   r2   r  zdict[str, Any] | Noner?   ú	list[str])rA   rB   rC   ÚtextwrapÚdedentÚscript_templater  rù   rú   s   @r;   r  r  ¡  sC   ø„ ð &�h—o‘oð 'ó €Oð DHð4Ø ð4Ø+@ð4à	÷4ñ 4r=   r  c	           
     óä  ‡‡;‡<‡=‡>‡?‡@‡A— t        || «      \  }	}
t        |
«      r|j                  ŠAn|j                  ŠAi Š@t	        «       Š<g }	 d	 	 	 	 	 	 	 d ˆ<ˆ@ˆAfd„}d!d„}d"ˆfd„Š;	 	 	 	 	 	 d#ˆ;fd„}	 	 	 	 	 	 d$ˆ;ˆfd„}d!d„}t        t        t           |j                  «       «      }t        ||«      }t        ||«      \  }} ||‰A«      }t        ||«      }d!d„}t        ||«      \  }} |||«      }t        ||«      }t        ||«      }t        t        ‰«      t        | «      «      }t!        |«      \  Š=Š?d%ˆ=ˆ?fd	„}t        ||«      }t        ||«      }t        t"        |«      }t        ||«      }t	        «       }|D ]ƒ  } t$        j&                  j)                  | j*                  «      }!|!|vrt-        |!«       |j/                  |!«       | j1                  «         || j2                  | j*                  | j4                  «       Œ… d&ˆ@ˆAfd
„}"d'd„}#|�r"t7        j8                  t;        j<                  t>        j@                  «      «      5 }$tC        jD                  «       5  tC        jF                  d«        |"«       D ]ƒ  }%tI        jJ                  |%dd¬«      }&|&sŒ |#|%«      }'t$        j&                  jM                  |'«      sJ ‚t        d|'jO                  t$        j&                  jP                  d«      «      }( ||(|'«       Œ… 	 ddd«       ddd«       tR        jU                  $jW                  «       «       tY        d|jZ                  «      })|�||)_.        d|)_/        dh|)_0        d|)_1        te        ‰=«      }*t        tg        djh                  ‰?jk                  «       «      «      }+|)jm                  |*«      },|jo                  |,«       |jo                  |)jm                  |+ddi«      «       |r"tq        |,«      }-|-�tR        js                  |-«       dtu        «        z  Š>t6        jv                  d(ˆ>fd„«       }.t$        j&                  jy                  ‰A|	«      }/t$        j&                  jy                  |/d«      }0 |.|0«      5 }1|1j{                  d«       ddd«       |j}                  |0«       |�tt$        j&                  jy                  |/t~        «      }2 |.|2«      5 }3|3j{                  |j�                  «       jƒ                  d«      «       ddd«       |j}                  |2«       |rGt$        j&                  jy                  |/d«      }4t…        |4d«      5  	 ddd«       |j}                  |4«       |j‡                  d«      }5t        t‰        jŠ                  |5j�                  «       «      «      }6t�        |6‰@‰<|‰A¬«      }7t$        j&                  jy                  |/d«      }8 |.|8fi t‘        d«      ¤Ž5 }9t‰        j’                  t        d|9«      «      }:|:j•                  t—        |7«      «       ddd«       y# 1 sw Y   �Œ&xY w# 1 sw Y   �Œ+xY w# 1 sw Y   �Œ¶xY w# 1 sw Y   �ŒMxY w# 1 sw Y   �ŒxY w# 1 sw Y   yxY w))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
    r0   c                óP   •— t        |‰«      }|‰| <   |r‰j                  |«       yy)z6Map archive RECORD paths to installation RECORD paths.N)rµ   rŒ   )Úsrcfiler™   ÚmodifiedÚnewpathr5   r¾   r®   s       €€€r;   Úrecord_installedz(_install_wheel.<locals>.record_installedÝ  s/   ø€ ô % X¨wÓ7ˆØ$ˆ	�'ÑÙØ�K‰K˜Õ ð r=   c                ó$   — | j                  d«      S )Nr±   )Úendswith©rK   s    r;   Úis_dir_pathz#_install_wheel.<locals>.is_dir_pathæ  s   € Ø�}‰}˜SÓ!Ð!r=   c                óZ   •— t        | |«      sd}t        |j                  ‰|| «      «      ‚y )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_traversalz0_install_wheel.<locals>.assert_no_path_traversalé  s;   ø€ Ü" =°+Ô>ð5ð ô $Ø—‘˜z¨;¸ÓFóð ð ?r=   c                ó   •‡ ‡— dˆˆˆ fd„}|S )Nc                ó®   •— t         j                  j                  | «      }t         j                  j                  ‰|«      } ‰‰|«       t	        | |‰«      S r7   )r[   rK   Únormpathr•   rÛ   )r¨   Únormed_pathr3   r  rí   rß   s      €€€r;   Úmake_root_scheme_filezM_install_wheel.<locals>.root_scheme_file_maker.<locals>.make_root_scheme_fileö  sD   ø€ ÜŸ'™'×*Ñ*¨;Ó7ˆKÜŸ™Ÿ™ T¨;Ó7ˆIÙ$ T¨9Ô5Ü  ¨i¸ÓBÐBr=   ©r¨   r0   r?   r/   r8   )rß   rí   r!  r  s   `` €r;   Úroot_scheme_file_makerz._install_wheel.<locals>.root_scheme_file_makeró  s   ú€ ÷	Cð %Ð$r=   c                óf   •‡ ‡— t         D �ci c]  }|t        ||«      “Œ c}Šdˆˆˆˆ fd„}|S c c}w )Nc           
     óÜ  •— t         j                  j                  | «      }	 |j                  t         j                  j                  d«      \  }}}	 ‰
|   }t         j                  j                  ||«      } ‰	||«       t        | |‰«      S # t
        $ r d‰› d| ›d�}t        |«      ‚w xY w# t        $ r5 dj                  t        ‰
«      «      }d‰› d|› d| ›d|› d	�	}t        |«      ‚w xY w)
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[   rK   r  rŽ   r´   Ú
ValueErrorr   ÚKeyErrorr•   r’   rÛ   )r¨   r   Ú_Ú
scheme_keyÚdest_subpathr  Úscheme_pathÚvalid_scheme_keysr3   r  Úscheme_pathsr  rß   s            €€€€r;   Úmake_data_scheme_filezM_install_wheel.<locals>.data_scheme_file_maker.<locals>.make_data_scheme_file  s  ø€ ÜŸ'™'×*Ñ*¨;Ó7ˆKð1Ø.9×.?Ñ.?ÄÇÁÇÁÈQÓ.OÑ+��:˜|ð
1Ø*¨:Ñ6�ô Ÿ™Ÿ™ [°,Ó?ˆIÙ$ [°)Ô<Ü  ¨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*Â->C+r"  )r!   Úgetattr)rß   ÚschemeÚkeyr/  r.  r  r  s   `   @€€r;   Údata_scheme_file_makerz._install_wheel.<locals>.data_scheme_file_makerþ  s<   ú€ ô >IÖI°c˜œW V¨SÓ1Ñ1ÒIˆ÷	Cð 	Cð6 %Ð$ùò; Js   Œ.c                óJ   — | j                  dd«      d   j                  d«      S )Nr±   r~   r   ú.data)rŽ   r  r  s    r;   Úis_data_scheme_pathz+_install_wheel.<locals>.is_data_scheme_path   s#   € Ø�z‰z˜#˜qÓ! !Ñ$×-Ñ-¨gÓ6Ð6r=   c                ó‚   — | j                  dd«      }t        |«      dkD  xr |d   j                  d«      xr |d   dk(  S )Nr±   r¸   r   r5  r~   r—   )rŽ   r“   r  )rK   Úpartss     r;   Úis_script_scheme_pathz-_install_wheel.<locals>.is_script_scheme_path*  sB   € Ø—
‘
˜3 Ó"ˆÜ�5‹z˜A‰~ÒV %¨¡(×"3Ñ"3°GÓ"<ÒVÀÀqÁÈYÑAVÐVr=   c                óP  •— | j                   }t        j                  j                  |«      }|j	                  «       j                  d«      r|d d }nL|j	                  «       j                  d«      r|d d }n'|j	                  «       j                  d«      r|d d }n|}|‰v xs |‰v S )Nz.exeéüÿÿÿz
-script.pyiöÿÿÿz.pya)r3   r[   rK   Úbasenamero   r  )rò   rK   rx   Ú	matchnamerÒ   Úguis       €€r;   Úis_entrypoint_wrapperz-_install_wheel.<locals>.is_entrypoint_wrapper=  s™   ø€ ð �~‰~ˆÜ�w‰w×Ñ Ó%ˆØ�:‰:‹<× Ñ  Ô(Ø˜S˜b˜	‰IØ�Z‰Z‹\×"Ñ" <Ô0Ø˜T˜c˜
‰IØ�Z‰Z‹\×"Ñ" 6Ô*Ø˜S˜b˜	‰IàˆIà˜GÐ#Ò7 y°CÐ'7Ð7r=   c               3  ó  •K  — t        t        ‰j                  «       «      «      D ]X  } t        j                  j                  ‰| «      }t        j                  j                  |«      sŒC|j                  d«      sŒU|–— ŒZ y ­w)Nz.py)r’   r‰   r¼   r[   rK   r•   r\   r  )Úinstalled_pathÚfull_installed_pathr¾   r®   s     €€r;   Úpyc_source_file_pathsz-_install_wheel.<locals>.pyc_source_file_paths`  sk   øè ø€ ô
 %¤S¨×)9Ñ)9Ó);Ó%<Ó=ò 	&ˆNÜ"$§'¡'§,¡,¨w¸Ó"GÐÜ—7‘7—>‘>Ð"5Ô6ØØ&×/Ñ/°Ô6ØØ%Ó%ñ	&ùs   ƒA?Bc                ó@   — t         j                  j                  | «      S )z8Return the path the pyc file would have been written to.)Ú	importlibÚutilÚcache_from_sourcer  s    r;   Úpyc_output_pathz'_install_wheel.<locals>.pyc_output_pathm  s   € ä�~‰~×/Ñ/°Ó5Ð5r=   ÚignoreT)ÚforceÚquietr±   NrQ   rÌ   r>  i¶  c              ;  óÄ   •K  — t        | fi |¤Ž5 }|–— d d d «       t        j                  j                  ‰«       t	        |j                  | «       y # 1 sw Y   Œ@xY w­wr7   )r#   r[   Úchmodrx   r$   )rK   ÚkwargsrÄ   Úgenerated_file_modes      €r;   Ú_generate_filez&_install_wheel.<locals>._generate_fileª  sP   øè ø€ ä˜tÑ. vÑ.ð 	°!ØŠG÷	ä
�‰�—‘Ð,Ô-Ü�—‘˜Õ÷	ð 	üs   ƒA �A•?A ÁAÁA Ú	INSTALLERs   pip
rR   Ú	REQUESTEDrZ   ÚRECORD)r¾   r5   r¿   r®   ÚwzIO[str])F)r  r0   r™   r2   r  r4   r?   r@   )rK   r0   r?   r4   )r  r2   r  r2   r?   r@   )rß   r   rí   r2   r?   úCallable[[RecordPath], File])rß   r   r1  r"   r?   rU  )rò   r/   r?   r4   )r?   zGenerator[str, None, None])rK   r2   r?   r2   )rK   r2   rN  r   r?   zGenerator[BinaryIO, None, None])Lr-   rq   ÚpurelibÚplatlibr‰   r   Úlistr0   Únamelistr   r(   Úmapr   r   r   r   r{   rï   r[   rK   Údirnamer3   r&   rŒ   r<   r1   r5   Ú
contextlibÚredirect_stdoutr%   Úfrom_streamr`   ÚstdoutÚwarningsÚcatch_warningsÚfilterwarningsÚ
compileallÚcompile_fileræ   r$   r´   r¹   ÚdebugÚgetvaluer  r—   ra   ÚclobberÚvariantsÚset_moderÙ   r   r”   r‘   Úmake_multiplerÑ   r¥   rº   r)   Úcontextmanagerr•   rf   r�   r   Úto_jsonrb   r]   Ú	read_textÚcsvÚreaderÚ
splitlinesrÆ   rV   ÚwriterÚ	writerowsr¬   )Brx   Ú	wheel_zipr  r1  Ú	pycompileÚwarn_script_locationÚ
direct_urlÚ	requestedÚscript_executableÚinfo_dirrp   r¿   r  r  r#  r3  r6  ÚpathsÚ
file_pathsÚroot_scheme_pathsÚdata_scheme_pathsr!  Úfilesr9  Úother_scheme_pathsÚscript_scheme_pathsr/  Úother_scheme_filesÚdistributionr?  Úscript_scheme_filesÚexisting_parentsrò   rš   rC  rH  r_  rK   ÚsuccessÚpyc_pathÚpyc_record_pathÚmakerrÓ   Úgui_scripts_to_generateÚgenerated_console_scriptsÚmsgrP  Údest_info_dirÚinstaller_pathÚinstaller_fileÚdirect_url_pathÚdirect_url_fileÚrequested_pathÚrecord_textÚrecord_rowsÚrowsr¨   Úrecord_filerq  r  r5   rÒ   rO  r>  r¾   r®   sB     `                                                        @@@@@@@r;   Ú_install_wheelr–  ³  s  ÿ€ ô6 % Y°Ó5Ñ€Hˆ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¸fÓEÐÜÐ2Ð4FÓGÐÜ�%Ð+Ó,€Eô *Ü˜
Ó#Ü˜$Óó€Lô # <Ó0�L€GˆSö8ô  +.ØÐ2ó+Ðô &Ð&;Ð=PÓQÐÜœjÐ*=Ó>ÐÜ�%Ð,Ó-€Eä“uÐØò 	Mˆô —W‘W—_‘_ T§^¡^Ó4ˆ
ØÐ-Ñ-Ü�zÔ"Ø× Ñ  Ô,Ø�	‰	ŒÙ˜×-Ñ-¨t¯~©~¸t¿|¹|ÕLð	Mö&ó6ò
 Ü×'Ñ'Ü×%Ñ%¤c§j¡jÓ1ó
ð 	DàÜ×(Ñ(Ó*ñ 
DÜ×'Ñ'¨Ô1Ù1Ó3ò D�DÜ(×5Ñ5°dÀ$ÈdÔS�GÚÙ#2°4Ó#8˜Ü!Ÿw™wŸ~™~¨hÔ7Ð7Ð7Ü*.Ø(¨(×*:Ñ*:¼2¿7¹7¿;¹;ÈÓ*Ló+˜ñ )¨¸(ÕCñD÷
D÷	Dô 	�‰�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Ó,ð 	H°Ø×!Ñ! *×"4Ñ"4Ó"6×"=Ñ"=¸gÓ"FÔG÷	Hà×Ñ˜Ô)ñ ÜŸ™Ÿ™ m°[ÓAˆÜ�. $Ó'ñ 	Ø÷	à×Ñ˜Ô(à×(Ñ(¨Ó2€KÜ”s—z‘z +×"8Ñ"8Ó":Ó;Ó<€Kä%ØØØØØô€Dô —'‘'—,‘,˜}¨hÓ7€Ká	˜Ñ	:¤}°SÓ'9Ñ	:ð 4¸kô —‘œD ¨KÓ8Ó9ˆØ×ÑÔ,¨TÓ2Ô3÷	4ð 4÷
Dñ 
Dú÷	Dñ 	Dú÷D'ñ 'ú÷	Hñ 	Hú÷	ñ 	ú÷$4ð 4ús[   ÉX2É:X%ÊA(X%ÌX2Ñ9X?Ó/YÕY×":Y&Ø%X/	Ø*X2Ø2X<Ø?Y	ÙYÙY#Ù&Y/c              #  óz   K  — 	 d –— y # t         $ r&}d| › d|j                  d   › �}t        |«      |‚d }~ww xY w­w)Nz	For req: z. r   )r   Úargs)Úreq_descriptionÚer  s      r;   Úreq_error_contextr›  Ü  sE   è ø€ ð0ÜøÜò 0Ø˜oÐ.¨b°·±¸±°Ð<ˆÜ Ó(¨aÐ/ûð0üs   ‚;„	 ˆ;‰	8’!3³8¸;c	                ó°   — t        |d¬«      5 }	t        |«      5  t        | |	|||||||¬«	       d d d «       d d d «       y # 1 sw Y   ŒxY w# 1 sw Y   y xY w)NT)Ú
allowZip64)	rx   rs  r  r1  rt  ru  rv  rw  rx  )r   r›  r–  )
rx   r  r1  r™  rt  ru  rv  rw  rx  Úzs
             r;   Úinstall_wheelrŸ  å  sj   € ô 
�¨Ô	-ð °Ü˜Ó/ñ 	ÜØØØ%ØØ#Ø%9Ø%Ø#Ø"3õ
÷	÷ð ÷	ð 	ú÷ð ús!   ŽAšA ¯AÁ A		ÁAÁA)rå   )rK   r2   rL   Úintr?   ztuple[str, str])rS   r2   r?   zdict[str, Any])rK   r2   r?   r4   )rp   r
   r?   r4   )ry   r   r?   z%tuple[dict[str, str], dict[str, str]])r—   zSequence[str]r?   ú
str | None)r«   zIterable[InstalledCSVRow]r?   zlist[tuple[str, str, str]])r¨   r0   r®   r2   r?   r2   )rK   r2   r®   r2   r?   r0   )r½   zlist[list[str]]r¾   zdict[RecordPath, RecordPath]r5   zset[RecordPath]r¿   r	  r®   r2   r?   zlist[InstalledCSVRow])rÒ   zdict[str, str]r?   r	  )rþ   r2   rÿ   r2   r?   r@   )TTNFN)rx   r2   rs  r   r  r2   r1  r"   rt  r4   ru  r4   rv  úDirectUrl | Nonerw  r4   rx  r¡  r?   r@   )r™  r2   r?   zGenerator[None, None, None])rx   r2   r  r2   r1  r"   r™  r2   rt  r4   ru  r4   rv  r¢  rw  r4   rx  r¡  r?   r@   )jÚ__doc__Ú
__future__r   r‡   rc  r\  rn  rE  ÚloggingÚos.pathr[   rÏ   rê   r`   r
  r`  Ú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/   Ú	getLoggerrA   r¹   r2   r0   Útupler   ÚInstalledCSVRowrO   rV   rk   rq   r{   r¥   r¬   r¯   rµ   rÆ   rÙ   rÛ   rï   rõ   r  r  r–  rk  r›  rŸ  r8   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=   