
    9fC                        % 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
  S SKJrJrJrJrJr  S SK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  S S
KJrJr  S SKJ r J!r!  S SK"J#r#  S SK$J%r%J&r&J'r'J(r(J)r)  S SK*J+r+  \ RX                  " \-5      r. " S S5      r/SS.S\0S\S\\   S\1S\0SS4S jjr20 r3\\\14   \4S'   S\S\14S jr5SFS\S\S\0SS4S jjr6SSS .S\S\S\1S\0S!\1SS4S" jjr7SGS#\+S$\\0   S\\/\04   4S% jjr8SSSS&.S'\S$\\0   S(\1S)\1S\\0\/4   4
S* jjr9 SGS+\S\S,\\\0      S\\   4S- jjr: SGS.\S/\S0\\\0      S\\   4S1 jjr;  SHS2\0S3\1S4\0S$\0S(\1S5\\0   S6\\0   S7\\0   S8\\0   S9\\\0\#4      S\0S\04S: jjr<S;\0S<\0S=\\0   S>\1S\04
S? jr=S#\+S$\0S@\S/\S'\SA\1S\1SS4SB jr>S@\SS4SC jr?SD\0S\0S\04SE jr@g)I    N)Path)which)TemporaryDirectory)DictListOptionalSetTuple)canonicalize_name)paths)boldred)MAN_SECTIONSWINDOWS)hazardstars)parse_specifier_for_installvalid_pypi_name)PackageInfo)	PipxErrormkdir	pipx_wraprmdirsafe_unlink)Venvc                   V    \ rS rSr    SS\S\S\S\SS4
S jjrS\4S	 jrSS
 jrSrg)VenvProblems   bad_venv_nameinvalid_interpretermissing_metadatanot_installedreturnNc                 4    Xl         X l        X0l        X@l        g Nr   r    r!   r"   )selfr   r    r!   r"   s        6/usr/lib/python3/dist-packages/pipx/commands/common.py__init__VenvProblems.__init__   s     +#6  0*    c                 H    [        U R                  R                  5       5      $ r%   )any__dict__values)r'   s    r(   any_VenvProblems.any_)   s    4=='')**r+   c           	      z    U R                    H+  n[        U U[        X5      =(       d    [        X5      5        M-     g r%   )r.   setattrgetattr)r'   venv_problems	attributes      r(   or_VenvProblems.or_,   s0    I(MGM,M 'r+   r&   )FFFF)r5   r   r#   N)	__name__
__module____qualname____firstlineno__boolr)   r0   r7   __static_attributes__ r+   r(   r   r      sV     $$)!&#
+
+ "
+ 	
+
 
+ 

++d +r+   r    suffixresource_typelocal_resource_dirr   forcerB   r#   c          	         U H  nUR                  5       nU S:X  a  XR                  R                  -  nOUnUR                  5       (       d  [	        U5        [        U5      (       d  [        XuUS9  Mp  [        UUUUU S:H  S9  M     g )NmanrA   app)rE   rB   
executable)resolveparentnameis_dirr   can_symlink_copy_package_resource_symlink_package_resource)rC   rD   r   rE   rB   pathsrcdest_dirs           r(   expose_resources_globallyrT   5   s{     llnE!)JJOO;H)H  (O8$$"8&A%)U2 r+   _can_symlink_cachec                 f   [         (       d  gU [        ;  a[  [        U S9 n[        U5      nUS-  nUR	                  5         US-  n UR                  U5        S[        U '   S S S 5        [        U    $ [        U    $ ! [        [        4 a    S[        U '    N5f = f! , (       d  f       [        U    $ = f)NT)dirabF)r   rU   r   r   touch
symlink_toOSErrorNotImplementedError)rD   dptargetlnks        r(   rN   rN   T   s    7!33$671QAWFLLNc'C?v&9="#56 8 011011 01 ?9>"#56? 87 011s)   &BA;;BBBB
B0rS   rQ   c                    UR                  5       nUR                  n[        U [        XB5      -  5      nUR                  R                  5       (       d  [        UR                  5        UR                  5       (       a.  [        R                  [         SU< SU< 35        [        U5        UR                  5       (       a  [        R                  " X55        g g )Nz  Overwriting file z with )rJ   rL   r   
add_suffixrK   rM   r   existsloggerwarningr   r   shutilcopy)rS   rQ   rB   rR   rL   dests         r(   rO   rO   h   s    
,,.C88D:d334D;;dkk{{}}&!4THF3'JKD
zz||C r+   F)rB   rI   rI   c                   [        UR                  U5      n[        X-  5      nUR                  R	                  5       (       d  [        UR                  5        U(       a+  [        R                  SU< S35         UR                  5         UR                  5       nUR                  5       nU(       as  UR                  U5      (       a  [        R                  SU< SU< 35        g [        R                  [!        S["         SU< SUR%                  5        SU< S	3	S
S95        g U(       a1  U(       d*  [        R                  SU< S35        UR                  5         U(       a  ['        U5      n	OS n	UR)                  U5        U(       a4  U	(       a,  [        R                  [!        S["         SU SU	 S3S
S95        g g g ! [         a     GNA[         a    [        U5         GNXf = f)NzForce is true. Removing .z
Same path z and z
                    z  File exists at z# and points
                    to z, not z9. Not
                    modifying.
                        subsequent_indentzRemoving existing symlink z' since it pointed non-existent location
                z  Note: z- was already on your
                PATH at )rc   rL   r   rK   rM   r   re   infounlinkFileNotFoundErrorIsADirectoryErrorr   rd   
is_symlinksamefilerf   r   r   rJ   r   r[   )
rS   rQ   rE   rB   rI   name_suffixedsymlink_pathrd   rt   existing_executable_on_paths
             r(   rP   rP   u   s    tyy&1M01L%%''l!!".|.>a@A	 !   "F((*J  &&KK*\$4E$BC 	 NNH-l-= >$,,./vdX >
 '.	 	&00@@ghi&+M&:#&*#D!1 045 6 #*	
 2zA ! 	  	 ,	 s   :F> >
G#G#"G#venvpackage_namec           	         U R                   nU R                  R                  5       nUc  U R                  nUR	                  5       (       d5  [        SS9S[        [        UR                  5      5       SU< S[         34$ U R                  (       d1  [        SS9S[        [        UR                  5      5       S[         34$ UR                  [        UR                  5      :w  a1  [        SS9S[        [        UR                  5      5       S	[         34$ U R                  U   R                  S
:X  a@  [        SS9S[        [        U5      5       S[        S5       SUR                   S[         34$ [        5       S
4$ )NT)r    z   package z has invalid interpreter )r!   z% has missing internal pipx metadata.)r   z" needs its internal data updated.r@   )r"    zis not installedz in the venv )rootpython_pathrJ   main_package_nameis_filer   r   r   rL   r   package_metadatar   package_version)ry   rz   venv_dirr   s       r(   venv_health_checkr      sz   yyH""**,K--  T2#d8==1233L[O[]^d]ef
 	
   $/#d8==1233YZ`Yab
 	
 }})(--88t,#d8==1233VW]V^_
 	
 \*::b@t,#d<012!C8J4K3LMZbZgZgYhhjkqjrs
 	
 NBr+   )rz   new_installinclude_injectedr   r   r   c                `   [        U 5      nUc  UR                  n[        XA5      u  pVUR                  5       (       a  Xe4$ UR                  U   nUR
                  nUR                  n	UR                  (       a  XR                  -  nXR                  -  n	[        UR                  [        R                  R                  U V
s/ s H  n
[        XR                   5      PM     sn
5      n[#        S U 5       5      n[#        UR
                   Vs1 s H  n[        XR                   5      iM     sn[%        U5      -
  5      n[%        5       n[&         H;  nU[)        UR*                  U-  [        R                  R,                  U-  U	5      -  nM=     [#        S U 5       5      n[#        [%        UR                  5      [%        U5      -
  5      nUR.                  R0                  b  UR.                  R0                  OSnUR.                  R2                  nU(       aI  [5        U5      R7                  [5        [        R                  R8                  R;                  5       5      5      OSn[=        UUUR>                  UUUUUUU(       a  UR.                  R@                  OS UR                   S9U4$ s  sn
f s  snf )Nc              3   8   #    U  H  oR                   v   M     g 7fr%   )rL   .0r_   s     r(   	<genexpr>#get_venv_summary.<locals>.<genexpr>   s     !D2CQ&&2Cs   c              3      #    U  H:  n[        [        UR                  R                  5      UR                  -  5      v   M<     g 7fr%   )strr   rK   rL   r   s     r(   r   r      s0     \J[Qs4#6#?@@J[s   AAr@   FrA   )!r   r   r   r0   r   apps	man_pagesinclude_dependenciesapps_of_dependenciesman_pages_of_dependenciesget_exposed_paths_for_packagebin_pathr   ctxbin_dirrc   rB   sortedsetr   !get_exposed_man_paths_for_packageman_pathman_dirpipx_metadatapython_versionsource_interpreterr   
startswithstandalone_python_cachedirrJ   _get_list_outputr   injected_packages)r   rz   r   r   ry   r5   warning_messager   r   r   rH   exposed_app_pathsexposed_binary_namesrL   unavailable_binary_namesexposed_man_pathsman_sectionexposed_man_pagesunavailable_man_pagesr   r   is_standalones                         r(   get_venv_summaryr      so    >D--'8'L$]//,,\:  D **I,,555???	5		=ABTcC00	1TB
 "!D2C!DD%?O?T?TU?TtD11	2?TUX[\pXqq  #>MMK'II+
 	
 $ \J[\\"3'7'A'A#BSIZE[#[\ ;?:L:L:[:[:gT''66moN++>>  	**3uyy/S/S/[/[/]+^_  	,, $!4DD00$#**	
 	 1 	C 	Vs   J&J+venv_resource_pathpackage_resource_namesc                    Uc  / nUR                  5       (       d
  [        5       $ [        5       nUR                  5        H  n Sn[        U5      (       a?  UR	                  5       (       a*  UR                  5       R                  R                  U 5      nO[        U5      (       d  UR                  U;   nU(       a  UR                  U5        M  M     U$ ! [         a     M  f = f)NF)rd   r   iterdirrN   rt   rJ   rK   ru   rL   addrr   )r   rD   r   symlinksrY   is_same_files         r(   r   r     s     %!#$$&&uuH'')	 !L-..1<<>> yy{11::;MN !344 vv)??Q  *$ O ! 		s   BC
C! C!venv_man_pathlocal_man_dirpackage_man_pagesc                    U R                   nU[        R                  -   n[        U UU=(       d    /  Vs/ s HA  nUR	                  U5      (       d  M  UR	                  U5      (       a  U[        U5      S  OUPMC     sn5      $ s  snf r%   )rL   ossepr   r   len)r   r   r   r   prefixrL   s         r(   r   r   8  s    
  $$K266!F( */R/	
/v& FDOOF$;$;T#f+- E/	
 	
s   B*Br   python_is_standaloner   r   r   r   r   r   c                   ^	 / nU
(       a%  S[        [        R                  " X:-   5      5       S3OSn
UR                  SU(       a  SOS S[        [        R                  " U5      5       S[        U5       U
 SU  3	U(       a  S	OS-   5        U(       a  U(       d  U(       a  UR                  S
5        UR	                  S U 5       5        UR	                  S U 5       5        U(       a  U(       d  U(       a  UR                  S5        UR	                  S U 5       5        UR	                  S U 5       5        T	(       a,  UR                  S5        UR	                  U	4S jT	 5       5        SR                  U5      $ )Nz ()r@   z  	installedz	 package r}   z, installed using z (standalone)z'  These apps are now globally availablec              3   ,   #    U  H
  nS U 3v   M     g7f    - Nr?   r   rL   s     r(   r   #_get_list_output.<locals>.<genexpr>a  s     C.BdF4&/.B   c              3   @   #    U  H  nS [        U5       S3v   M     g7fr   z5 (symlink missing or pointing to unexpected location)Nr   r   s     r(   r   r   b  s#      ^vVZ&TPQ^v   z/  These manual pages are now globally availablec              3   ,   #    U  H
  nS U 3v   M     g7fr   r?   r   s     r(   r   r   g  s     @.?dF4&/.?r   c              3   @   #    U  H  nS [        U5       S3v   M     g7fr   r   r   s     r(   r   r   h  s#      ^sVZ&TPQ^sr   z    Injected Packages:c              3   N   >#    U  H  nS U STU   R                    3v   M     g7f)z      - r}   N)r   )r   rL   r   s     r(   r   r   m  s.     p^oVZa(9$(?(O(O'PQ^os   "%
)r   shlexquoteappendextendjoin)r   r   r   rz   r   r   r   r   r   r   rB   outputs            `  r(   r   r   J  sB    FAGr$u{{<#89:;1=RF
MM
K[R0	$u{{<?X:Y9Z
D!"6(*<^<L	N2?	< ,0H?@
MMC.BCC
MM ^v  )-BGH
MM@.?@@
MM ^s  ./p^opp99Vr+   package_specpythonpip_argsverbosec                    [         R                   " 5       n[        U 5      nUbL  Un[        R                  SU 35        [        R                  S[         R                   " 5       U-
  S S35        U$ [	        X5      u  p[
        R                  " 5        n[        [        U5      XS9nUR                  / / S9  UR                  XS9nS S S 5        [        R                  S[         R                   " 5       U-
  S S35        W$ ! , (       d  f       N@= f)NzDetermined package name: zPackage name determined in z.1fs)r   r   )	venv_argsr   )package_or_urlr   )timer   re   rp   r   tempfiler   r   r   create_venvinstall_package_no_deps)	r   r   r   r   
start_time	pypi_namerz   temp_venv_dirry   s	            r(   package_name_from_specr   q  s    J  -I !/~>?1$))+j2H1MQOP  ;<R\		$	$	&-D'H2333<3c 
'
 KK-diik*.DS-IKL 
'	&s   3C??
Dlocal_bin_dirr   c          	         U R                   U   nU UR                   3nU R                  U:X  d3  U R                   U R                     R                  UR                  :X  a  UnUR                  (       d  UR                  (       d4  U R                  5       (       a  U R                  5         [        SU S35      eUR                  (       a  U(       d  UR                  R                  5        HB  u  n	n
[        SU	 S[        U
5       S35        U
 H  n[        SUR                   35        M     MD     U R                  5       (       a  U R                  5         [        SU S35      e[        SUUR                  UUR                  S	9  [        S
X7R                  US9  U(       ad  UR                  R!                  5        H  n[        SUUUUR                  S	9  M     UR"                  R!                  5        H  n[        S
X=US9  M     [%        XASS9u  p[        U5        ['        U5        [        S[(         3[*        R,                  S9  g )Nz1
                No apps associated with package z or its
                dependencies. If you are attempting to install a library, pipx
                should not be used. Consider using pip or a similar tool instead.
                zNote: Dependent package 'z' contains z appsz  - a$  . Try again
                with '--include-deps' to include apps of dependent packages,
                which are listed above. If you are attempting to install a
                library, pipx should not be used. Consider using pip or a
                similar tool instead.
                rH   )rE   rB   rG   )rE   T)rz   r   zdone! )file)r   rB   r   r   r   safe_to_removeremove_venvr   app_paths_of_dependenciesitemsprintr   rL   rT   	app_paths	man_pathsr/   man_paths_of_dependenciesr   warn_if_not_on_pathr   sysstderr)ry   rz   r   r   r   r   rE   r   display_namedepdependent_appsrH   r   r   package_summary_s                   r(   run_post_install_actionsr     s4    ,,\:"^$4$;$;#<=L ""l2!!$"8"89@@DTD[D[[#  44""$$  "11= ?  009M ";;AAC1#k#nBUAVV[\])CD
+, * D ""$$  "11= ?  ""&& e]4N4NV[\)CCJJLI%'.. M *CCJJLI%e]US M *([_`O	/&	F5'
,r+   c           	          [         R                  " [        U 5      5      (       d)  [        R	                  [        S[         SU  S3SS95        g g )Nro   z	  Note: 'a=  ' is not on your PATH
                environment variable. These apps will not be globally
                accessible until your PATH is updated. Run `pipx ensurepath` to
                automatically add it, or manually modify your PATH in your
                shell's config file (e.g. ~/.bashrc).
                rl   rm   )userpathin_current_pathr   re   rf   r   r   )r   s    r(   r   r     sP    ##C$677	- 1 #*		
 8r+   rL   c                 P    [        U 5      nUR                   U UR                   3$ )zAdd suffix to app.)r   stemrB   )rL   rB   rH   s      r(   rc   rc     s(     t*ChhZx

|,,r+   )r@   r%   )Nr@   )Aloggingr   r   rg   r   r   r   pathlibr   r   r   typingr   r   r   r	   r
   r   packaging.utilsr   pipxr   pipx.colorsr   r   pipx.constantsr   r   pipx.emojisr   r   pipx.package_specifierr   r   pipx.pipx_metadata_filer   	pipx.utilr   r   r   r   r   	pipx.venvr   	getLoggerr9   re   r   r   r=   rT   rU   __annotations__rN   rO   rP   r   r   r   r   r   r   r   r   rc   r?   r+   r(   <module>r     s    	   
     ' 3 3  -  ! 0 % O / E E 			8	$ >  :
   
8 (* Dt$ )2D 2T 2(
T 
 
s 
D 
$ ;
;

;
 	;

 ;
 ;
 
;
| D    |]`O`Ia  B #'"AA 3-A 	A
 A 3AN 37    %T#Y/  	Y	 L .2  S	* 	Y	8 ;?$$$ $ 	$
 $ s)$ #3i$ Cy$  9$  S+%5 67$ $ 	$N c S	 \` eh 2K-
K-K- K- 	K-
 K- K- K- 
K-\
t 
 
 -S -# -# -r+   