ó
    9—ÍfÉ  ã                   ó€  • S SK r S SKrS SKJr  S SKJr  S SKJr  S SKJ	r	J
r
JrJr  S SKJr  S SKJr  S SKJrJr  S S	KJrJr  \ R.                  " \5      rS
\\   4S jrS\S
\\   4S jrS\S\\   S
\\   4S jrS\4S jrS\4S jrS\R>                  S\\R>                     S
\R>                  4S jr S\S\!4S jr"g)é    N)ÚPath)ÚList)Úversion)ÚcommandsÚ	constantsÚpathsÚstandalone_python)Úanimate)ÚPipxMetadata)Úis_paths_relativeÚrmdir)ÚVenvÚVenvContainerÚreturnc                  óª   • [         R                  R                  R                  5        V s/ s H  o R	                  5       (       d  M  U PM     sn $ s  sn f ©N)r   ÚctxÚstandalone_python_cachedirÚiterdirÚis_dir)Ú
python_dirs    Ú;/usr/lib/python3/dist-packages/pipx/commands/interpreter.pyÚ%get_installed_standalone_interpretersr      s8   € Ü).¯©×)MÑ)M×)UÑ)UÔ)WÓoÒ)W˜:×[lÑ[l×[n�JÑ)WÑoÐoùÒos   «AÁAÚvenv_containerc                 óª   • / nU R                  5        H<  n[        U5      nUR                  R                  (       d  M+  UR	                  U5        M>     U$ r   )Úiter_venv_dirsr   Úpipx_metadataÚsource_interpreterÚappend)r   ÚvenvsÚvenv_dirÚvenvs       r   Ú&get_venvs_using_standalone_interpreterr#      sH   € Ø€EØ"×1Ñ1Ö3ˆÜ�H‹~ˆØ×Ñ×0×0Ñ0Ø�L‰L˜Öñ 4ð €Ló    Úinterpreterr    c                 óÎ   • U Vs/ s HS  nUR                   R                  (       d  M   [        UR                   R                  U 5      (       d  MG  UR                   PMU     sn$ s  snf r   )r   r   r   )r%   r    r"   s      r   Úget_interpreter_usersr'      s]   € ñ óâˆDØ×Ñ×0Õ0ó 	ô ˜d×0Ñ0×CÑCÀ[×Qó 	ˆ×ÔÙñð ùò s   …A"¨#A"ÁA"c                 óÆ  • [        5       n[        U 5      n/ nUR                  S[        R                  R
                   35        U Ho  nUR                  SUR                   35        [        XB5      nU(       a+  UR                  S5        UR                  S U 5       5        M^  UR                  S5        Mq     [        SR                  U5      5        [        R                  $ )NzStandalone interpreters are in zPython z    Used in:c              3   ó‚   #   • U  H5  nS UR                   R                   SUR                   R                   3v •  M7     g7f)z     - Ú N)Úmain_packageÚpackageÚpackage_version)Ú.0Úps     r   Ú	<genexpr>Ú$list_interpreters.<locals>.<genexpr>3   s6   é € ÐoÒgnÐbc˜G A§N¡N×$:Ñ$:Ð#;¸1¸Q¿^¹^×=[Ñ=[Ð<\Õ]Ògnùs   ‚=?z
    UnusedÚ
)r   r#   r   r   r   r   Únamer'   ÚextendÚprintÚjoinr   ÚEXIT_CODE_OK)r   Úinterpretersr    Úoutputr%   Úused_ins         r   Úlist_interpretersr;   '   sµ   € ô 9Ó:€LÜ2°>ÓB€EØ€FØ
‡M�MÐ3´E·I±I×4XÑ4XÐ3YÐZÔ[Û#ˆØ�‰˜ × 0Ñ 0Ð1Ð2Ô3Ü'¨Ó;ˆÞØ�M‰M˜.Ô)Ø�M‰MÑoÑgnÓoÖoà�M‰M˜,Ö'ñ $ô 
ˆ$�)‰)�FÓ
ÔÜ×!Ñ!Ð!r$   c                 óX  • [        5       n[        U 5      n/ nU H:  n[        XB5      (       a  M  [        USS9  UR	                  UR
                  5        M<     U(       a2  [        S5        U H  n[        SU 35        M     [        R                  $ [        S5        [        R                  $ )NT)Úsafe_rmzSuccessfully removed:z
 - Python zNothing to remove)	r   r#   r'   r   r   r3   r5   r   r7   )r   r8   r    Úremovedr%   Úinterpreter_names         r   Úprune_interpretersr@   ;   sž   € ô 9Ó:€LÜ2°>ÓB€EØ€GÛ#ˆÜ  ×4Ñ4ÙÜˆk 4Ò(Ø�‰�{×'Ñ'Ö(ñ	 $ö
 ÜÐ%Ô&Û 'ÐÜ�JÐ/Ð0Ð1Ö2ñ !(ô ×!Ñ!Ð!ô 	Ð!Ô"Ü×!Ñ!Ð!r$   Úcurrent_versionÚlatest_python_versionsc                 óŒ   • U H=  nU R                   UR                   :X  d  M  U R                  UR                  :X  d  M;  Us  $    U $ r   )ÚmajorÚminor)rA   rB   Úlatest_python_versions      r   Úget_latest_micro_versionrG   O   sF   € ó "8ÐØ× Ñ Ð$9×$?Ñ$?Õ?ÀO×DYÑDYÐ]r×]xÑ]xÕDxØ(Ò(ñ "8ð Ðr$   Úverbosec           
      ó†  • [        SU(       + 5         [        R                  " SS9nS S S 5        / nW H)  n UR                  [        R
                  " U5      5        M+     / n[        R                  R                  R                  5        GHÛ  nUR                  5       (       d  M  [        R                  (       a  US-  OUS-  S-  n[         R"                  " [%        U5      S	/[         R&                  S
S
S9R(                  R+                  5       R-                  5       S   n [        R
                  " U5      n	[/        X“5      n
X©:”  d  M¿  [        R0                  " U
R2                   SU
R4                   3S
S9  U R7                  5        HÚ  n[9        U5      nUR:                  R<                  c  M'  [?        UR:                  R<                  U5      (       d  MN  [A        SURB                   SU SU
 35        [D        RF                  " U[        R                  RH                  [        R                  RJ                  [%        U5      US9  UR                  URB                  XŠ45        MÜ     GMÞ     U(       a;  [A        S5        U H  u  pÞn[A        SU SU SU 35        M     [        RL                  $ [A        S5        [        RL                  $ ! , (       d  f       GN§= f! [        R                   a    [        R                  SU S35         GM×  f = f! [        R                   a    [        R                  SU S35         GMµ  f = f)Nz8Getting the index of the latest standalone python buildsF)Ú	use_cachez)Invalid version found in latest pythons: z. Skipping.z
python.exeÚbinÚpython3z	--versionT)ÚstdoutÚcheckÚtexté   z(Invalid version found in interpreter at Ú.)ÚoverridezUpgrade the interpreter of z from z to )r!   Úlocal_bin_dirÚlocal_man_dirÚpythonrH   z)Successfully upgraded the interpreter(s):z - z: z -> zNothing to upgrade)'r
   r	   Úlist_pythonsr   r   ÚparseÚInvalidVersionÚloggerÚinfor   r   r   r   r   r   ÚWINDOWSÚ
subprocessÚrunÚstrÚPIPErM   ÚstripÚsplitrG   Ú download_python_build_standalonerD   rE   r   r   r   r   r   r5   r3   r   Ú	reinstallÚbin_dirÚman_dirr7   )r   rH   Úlatest_pythonsÚparsed_latest_python_versionsrF   ÚupgradedÚinterpreter_dirÚinterpreter_pythonÚinterpreter_full_versionÚparsed_interpreter_full_versionÚlatest_micro_versionr!   r"   Ú	venv_nameÚold_versionÚnew_versions                   r   Úupgrade_interpretersrq   X   sâ  € Ü	ÐKÐQXÌ[Õ	YÜ*×7Ò7À%ÑHˆ÷ 
Zð %'Ð!Û!/Ðð	hØ)×0Ñ0´·²Ð?TÓ1UÖVñ "0ð €Hä Ÿ9™9×?Ñ?×GÑG×IˆØ×%Ñ%×'Ñ'Ùä?H×?P×?P˜_¨|Ò;ÐVeÐhmÑVmÐpyÑVyÐä�NŠNœCÐ 2Ó3°[ÐAÌ*Ï/É/ÐaeÐlpÑqß‰V—E‘E“Gß‰U‹W�Qñð 	!ð
	Ü.5¯mªmÐ<TÓ.UÐ+ô  8Ð8WÓwÐØÕAÜ×>Ò>Ø'×-Ñ-Ð.¨aÐ0D×0JÑ0JÐ/KÐLØòð
 +×9Ñ9Ö;�Ü˜H“~�Ø×%Ñ%×8Ñ8ÓDÔIZØ×&Ñ&×9Ñ9¸?÷Jó Jô Ø5°d·i±i°[ÀÐG_ÐF`Ð`dÐeyÐdzÐ{ôô ×&Ò&Ø!)Ü&+§i¡i×&7Ñ&7Ü&+§i¡i×&7Ñ&7Ü"Ð#5Ó6Ø 'òð —O‘O T§Y¡YÐ0HÐ$_Ö`ô <ñ- JöN ÜÐ9Ô:Û3;Ñ/ˆI KÜ�C˜	�{ " [ M°°k°]ÐCÖDñ 4<ô ×!Ñ!Ð!ô 	Ð"Ô#ô ×!Ñ!Ð!÷w 
ZÖ	Yûô ×%Ñ%ó 	hÜ�K‰KÐCÐDYÐCZÐZeÐf×gÐgð	hûô" ×%Ñ%ó 	Ü�K‰KÐBÀ?ÐBSÐS^Ð_Ô`Ûð	ús.   ’K·%KÄ!LË
KË-LÌ
LÌ-M Ì?M )#Úloggingr\   Úpathlibr   Útypingr   Ú	packagingr   Úpipxr   r   r   r	   Úpipx.animater
   Úpipx.pipx_metadata_filer   Ú	pipx.utilr   r   Ú	pipx.venvr   r   Ú	getLoggerÚ__name__rY   r   r#   r'   r;   r@   ÚVersionrG   Úboolrq   © r$   r   Ú<module>r€      sÞ   ðÛ Û Ý Ý å ç >Ó >Ý  Ý 0ß .ß )à	×	Ò	˜8Ó	$€ðp¨t°D©zô pð¸=ð ÈTÐRVÉZô ð tð °D¸±Jð À4ÈÑCUô ð"Ø!ô"ð("Ø!ô"ð(Ø—_‘_ðØ>BÀ7Ç?Á?Ñ>Sðà‡_�_ôð<"¨ð <"Àõ <"r$   