ó
    9—Íf«  ã                   óæ  • % 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  S SKJrJrJr  S SKJr  S SKJrJr  S SKJr  S SKJr  \R8                  " \5      rS	/S
/S.SS/0SS/S/S.S.SS/0S.r\\ \\ \4   4   \!S'   Sr"\RF                  " S5      r$S)S\ S\%4S jjr&S\ S\ S\4S jr'S\S \4S! jr(S*S"\%4S# jjr)S$\\    4S% jr*S*S"\%S$\\ \ 4   4S& jjr+S'\ 4S( jr,g)+é    N)Úpartial)ÚPath)ÚAnyÚDictÚList)Úurlopen)Ú	constantsÚpaths)Úanimate)Ú	PipxErrorz(aarch64-apple-darwin-install_only.tar.gzz'x86_64-apple-darwin-install_only.tar.gz)Úarm64Úx86_64Úglibcz-aarch64-unknown-linux-gnu-install_only.tar.gzz/x86_64_v3-unknown-linux-gnu-install_only.tar.gzz,x86_64-unknown-linux-gnu-install_only.tar.gzz0x86_64_v3-unknown-linux-musl-install_only.tar.gz)r   Úmusl)Úaarch64r   ÚAMD64z1x86_64-pc-windows-msvc-shared-install_only.tar.gz)ÚDarwinÚLinuxÚWindowsÚMACHINE_SUFFIXzMhttps://api.github.com/repos/indygreg/python-build-standalone/releases/latestzcpython-(\d+\.\d+\.\d+)Úpython_versionÚoverridec                 ó  • [         R                  " SSU 5      n [        R                  R                  U -  n[
        R                  (       a  US-  OUS-  S-  nU(       a,  UR                  5       (       a  [        R                  " U5        OdUR                  5       (       a  [        U5      $ UR                  5       (       a/  [        R                  SU  S35        [        R                  " U5        [        U 5      u  pE[        R                  " 5        n[!        U5      SU S	3-  n[!        U5      S
-  n[#        XEU5        [%        XEXx5        US-  n	[        R&                  " X’5        SSS5        [        U5      $ ! , (       d  f       N= f)zØWhen all other python executable resolutions have failed,
attempt to download and use an appropriate python build
from https://github.com/indygreg/python-build-standalone
and unpack it into the pipx shared directory.z
[c]?pythonÚ z
python.exeÚbinÚpython3z%A previous attempt to install python z failed. Retrying.zpython-z.tar.gzÚdownloadÚpythonN)ÚreÚsubr
   ÚctxÚstandalone_python_cachedirr	   ÚWINDOWSÚexistsÚshutilÚrmtreeÚstrÚloggerÚwarningÚresolve_python_versionÚtempfileÚTemporaryDirectoryr   Ú	_downloadÚ_unpackÚmove)
r   r   Úinstall_dirÚinstalled_pythonÚfull_versionÚdownload_linkÚtempdirÚarchiveÚdownload_dirÚextracted_dirs
             Ú8/usr/lib/python3/dist-packages/pipx/standalone_python.pyÚ download_python_build_standaloner9   2   sD  € ô —V’V˜M¨2¨~Ó>€Nä—)‘)×6Ñ6¸ÑG€KÜ5>×5F×5F�{ \Ò1ÈKÐZ_ÑL_ÐbkÑLkÐæØ×Ñ×ÑÜ�MŠM˜+Ô&øà×"Ñ"×$Ñ$ÜÐ'Ó(Ð(à×Ñ×ÑÜ�N‰NÐBÀ>ÐBRÐRdÐeÔfÜ�MŠM˜+Ô&ä"8¸Ó"HÑ€Lä	×	$Ò	$Ô	&¨'Ü�w“- G¨L¨>¸Ð"AÑAˆÜ˜G“} zÑ1ˆô 	�,¨wÔ7ô 	�¨WÔCð
 % xÑ/ˆÜ�Š�MÔ/÷ 
'ô  ÐÓ Ð ÷! 
'Õ	&ús   ÄAE8Å8
Fr2   r3   r5   c           	      óÌ  • [        SU  S3S5          [        U5       n[        US5       n[        [	        UR
                  S5      S5       H  nUR                  U5        M     S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! [        R                  R                   a  n[        SU  S35      UeS nAff = f! , (       d  f       g = f)	NzDownloading python ú buildTÚwbi €  ó    zUnable to download python z build.)r   r   ÚopenÚiterr   ÚreadÚwriteÚurllibÚerrorÚURLErrorr   )r2   r3   r5   ÚresponseÚfile_handleÚdataÚes          r8   r-   r-   _   sÀ   € Ü	Ð& | n°FÐ;¸TÕ	Bð	Wô ˜Ô'¨8´T¸'À4Ô5HÈKÜ ¤¨¯©¸Ó!>ÀÖD�DØ×%Ñ% dÖ+ñ E÷ 6I×'÷	 
CÐ	B÷ 6IÕ5Hú×'Õ'ûô �|‰|×$Ñ$ó 	WÜÐ8¸¸ÀgÐNÓOÐUVÐVûð	Wú÷ 
CÕ	Búsb   ‘C“BžB«9A=Á$BÁ,BÁ=
BÂBÂ
B	ÂBÂCÂBÂCÂ=CÃCÃCÃ
C#r6   c           
      ó4  • [        SU  S3S5         [        US5       n[        R                  " UR	                  5       5      R                  5       nS S S 5        US-   n[        U5      R	                  5       R                  5       R                  S5      nWU:w  a  [        SU  SU S	U S
35      e[        R                  " USS9 nUR                  U5        S S S 5        S S S 5        g ! , (       d  f       Nœ= f! , (       d  f       N(= f! , (       d  f       g = f)NzUnpacking python r;   TÚrbz.sha256Ú
zChecksum mismatch for python z build. Expected z, got Ú.zr:gz)Úmode)r   r>   ÚhashlibÚsha256r@   Ú	hexdigestr   ÚdecodeÚrstripr   ÚtarfileÚ
extractall)	r2   r3   r5   r6   Ú
python_zipÚchecksumÚchecksum_linkÚexpected_checksumÚtars	            r8   r.   r.   k   sô   € Ü	Ð$ \ N°&Ð9¸4Õ	@ä�'˜4Ô  JÜ—~’~ j§o¡oÓ&7Ó8×BÑBÓDˆH÷ !ð &¨	Ñ1ˆÜ# MÓ2×7Ñ7Ó9×@Ñ@ÓB×IÑIÈ$ÓOÐØÐ(Ó(ÜØ/°¨~Ð=NÐO`ÐNaÐagÐhpÐgqÐqrÐsóð ô �\Š\˜'¨Ò/°3Ø�N‰N˜<Ô(÷ 0÷ 
AÐ	@ç Õ ú÷ 0Õ/ú÷ 
AÕ	@ús;   ‘D	ž3C'ÁA3D	ÃC8ÃD	Ã'
C5	Ã1D	Ã8
D	ÄD	Ä	
DÚ	use_cachec                 óF  • [         R                  R                  S-  nU (       a•  UR                  5       (       a€  [        R
                  " UR                  5       5      n[        R                  R                  US   5      n[        R                  R                  5       U-
  [        R                  " SS9:”  a  0 nO0 nU(       d^  [        5       n[        R                  R                  5       R                  5       US.nUR                  [        R                  " U5      5        U$ )z_Get or update the index of available python builds from
the python-build-standalone repository.z
index.jsonÚfetchedé   )Údays)r\   Úreleases)r
   r!   r"   r$   ÚjsonÚloadsÚ	read_textÚdatetimeÚfromtimestampÚnowÚ	timedeltaÚget_latest_python_releasesÚ	timestampÚ
write_textÚdumps)rZ   Ú
index_fileÚindexr\   r_   s        r8   Úget_or_update_indexrm   }   sÖ   € ô —‘×5Ñ5¸ÑD€JÞ�Z×&Ñ&×(Ñ(Ü—
’
˜:×/Ñ/Ó1Ó2ˆä×#Ñ#×1Ñ1°%¸	Ñ2BÓCˆÜ×Ñ× Ñ Ó" WÑ,¬x×/AÒ/AÀrÑ/JÓJØˆEøàˆÞÜ-Ó/ˆÜ$×-Ñ-×1Ñ1Ó3×=Ñ=Ó?ÈXÑVˆà×ÑœdŸjšj¨Ó/Ô0Ø€Lr=   Úreturnc                  ó0  •  [        [        5       n [        R                  " U 5      nSSS5        WS    Vs/ s H  o3S   PM	     sn$ ! , (       d  f       N&= f! [        R
                  R                   a  n[        S[         S35      UeSnAff = fs  snf )zIReturns the list of python download links from the latest github release.Nz;Unable to fetch python-build-standalone release data (from z).ÚassetsÚbrowser_download_url)r   ÚGITHUB_API_URLr`   ÚloadrB   rC   rD   r   )rE   Úrelease_datarH   Úassets       r8   rg   rg   ‘   sŽ   € ðqÜ”^Ô$¨ÜŸ9š9 XÓ.ˆL÷ %ð 8DÀHÒ7MÓNÒ7M¨eÐ(Ô)Ñ7MÑNÐN÷ %Õ$ûô �<‰<× Ñ ó qäÐUÔVdÐUeÐegÐhÓiÐopÐpûðqüò Os8   ‚A ‘A¨A ·BÁ
AÁA ÁA ÁBÁ7BÂBc                 ó
  • [         R                  " 5       [         R                  " 5       p![        U   U   nUS:X  a%  [         R                  " 5       S   =(       d    SnX4   n[        U 5      S   nU VVs/ s H'  nU  H  nUR                  U5      (       d  M  UPM     M)     nnn0 n	U H-  n[        R                  U5      n
U
c   eU
S   nX¹;   a  M)  XyU'   M/     [        U	S SS9 Vs0 s H  nXÉU   _M
     sn$ s  snnf s  snf )	zLReturns available python versions for your machine and their download links.r   r   r   r_   é   c                 ób   • U R                  S5       Vs/ s H  n[        U5      PM     sn$ s  snf )NrL   )ÚsplitÚint)ÚversionÚks     r8   Ú<lambda>Úlist_pythons.<locals>.<lambda>Â   s%   € °·±¸sÔ1CÓ DÒ1C¨A¤ Q¦Ñ1CÒ DùÒ Ds   ”,T)ÚkeyÚreverse)
ÚplatformÚsystemÚmachiner   Úlibc_verrm   ÚendswithÚPYTHON_VERSION_REGEXÚsearchÚsorted)rZ   r‚   rƒ   Údownload_link_suffixesÚlibc_versionÚpython_releasesÚdownload_link_suffixÚlinkÚavailable_python_linksÚpython_versionsÚmatchr   r{   s                r8   Úlist_pythonsr‘   ž   s/  € ä—o’oÓ'¬×)9Ò)9Ó);ˆGÜ+¨FÑ3°GÑ<Ðà�Óä×(Ò(Ó*¨1Ñ-×7°ˆØ!7Ñ!EÐä)¨)Ó4°ZÑ@€Oñ
 %;ôò %;Ð Ü#ˆDØ�=‰=Ð-×.÷	 	ñ $ñ 	á$:ð ñ ð ')€OÛ&ˆÜ$×+Ñ+¨DÓ1ˆØÑ Ð Ð Ø˜q™ˆàÓ,Ùà*.˜Ó'ñ 'ô ØáDØò	
óò
ˆGð 	 Ñ)Ò)ñ
ñð ùó'ùò&s   Á4 C:Â
C:Ã(D Úrequested_versionc                 óÖ   • [        5       nU R                  S5      nUR                  5        H,  u  p4UR                  S5      nX%S [        U5       :X  d  M)  X44s  $    [	        SU  S35      e)NrL   z5Unable to acquire a standalone python build matching )r‘   ry   ÚitemsÚlenr   )r’   ÚpythonsÚrequested_releaser2   r3   Ústandalone_releases         r8   r*   r*   È   su   € Ü‹n€GØ)×/Ñ/°Ó4Ðà'.§}¡}¦Ñ#ˆØ)×/Ñ/°Ó4ÐØÐ3K´SÐ9JÓ5KÐ LÕLØÐ.Ò.ñ (7ô
 ÐKÐL]ÐK^Ð^_Ð`Ó
aÐar=   )F)T)-rc   rN   r`   Úloggingr�   r   r%   rS   r+   Úurllib.errorrB   Ú	functoolsr   Úpathlibr   Útypingr   r   r   Úurllib.requestr   Úpipxr	   r
   Úpipx.animater   Ú	pipx.utilr   Ú	getLoggerÚ__name__r(   r   r'   Ú__annotations__rr   Úcompiler†   Úboolr9   r-   r.   rm   rg   r‘   r*   © r=   r8   Ú<module>r¨      sb  ðÜ Û Û Û Û Û 	Û Û Û Û Ý Ý ß "Ñ "Ý "ç !Ý  Ý à	×	Ò	˜8Ó	$€ð =Ð=Ø<Ð=ñð ÐEÐFð
ð BØ>ðð HÐHñ
ñð ÐMÐNÐOñ%-€��S˜$˜s C˜x™.Ð(Ñ)ó ð* a€Ø—z’zÐ"<Ó=Ð ñ*!°Sð *!ÀDõ *!ðZ	W˜Cð 	W°ð 	W¸dô 	Wð)°$ð )Àdô )ñ$ 4õ ð(
O D¨¡Iô 
Oñ'˜Dð '¨D°°c°©Nõ 'ðT	b¨cõ 	br=   