
    9f                        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[nJ)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LL 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     ognbcGANN$:$:#;1Q^^=[=[<\]gns   =?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>BEF
MM3EII4X4X3YZ[# 0 0123';MM.)MMognooMM,' $ 
$))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>BEG# 44k4({''(	 $
 %& '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$?$??ODYDY]r]x]xDx(( "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	[/        X5      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                  X45        M     GM     U(       a;  [A        S5        U H  u  pn[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   	KQX[	Y*77%H 
Z %'!!/	h)00?T1UV "0 H 99??GGI%%''?H?P?P_|;VehmVmpyVyNNC 23[A*//aelpqVEEGUWQ 	!
	.5mm<T.U+  88WwA>>'--.a0D0J0J/KL
 +99;H~%%88DIZ&&99?J J 5dii[G_F``deydz{ &&!)&+ii&7&7&+ii&7&7"#56 ' OOTYY0H$_` <- JN 9:3;/IKC	{"[Mk]CD 4< !!! 	"# !!!w 
Z	Y %% 	hKKCDYCZZefgg	h" %% 	KKB?BSS^_`	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tDz p= TRVZ t DJ 4CU "!"("!"(__>B7??>S__<" <" <"r$   