
    9f/                     ^   S SK r S SKrS SKrS SKJr  S SKJrJrJrJ	r	J
r
JrJr  S SK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  \R6                  " \5      r " S	 S
\	5      r " S S\	5      rS\ S\\RB                     S\
\RB                     4S jr"S\RB                  S\\    S\\ \ 4   S\\   4S jr#S\RB                  S\4S jr$S\RB                  S\S\4S jr%S\RB                  S\S\4S jr&S\RB                  S\S\S\\\    \\    4   4S jr' S*S\RB                  S\S\S\\ \\   4   S\\ \\   4   S\
\\ \(4      S\\\ \\   4   \\ \\   4   4   4S  jjr)S!\\   S\\   4S" jr*S#\S\\\    \\ \ 4   \ 4   4S$ jr+S%\ S&\\    S'\S#\S(\S\4S) jr,g! \ a    S SKr GNsf = f)+    N)Path)
CollectionDictList
NamedTupleOptionalSetTuple)Requirement)canonicalize_name)metadata)MAN_SECTIONSWINDOWS)	PipxErrorrun_subprocessc                   b    \ rS rSr% \\R                     \S'   \\	\	4   \S'   \
\S'   \
\S'   Srg)VenvInspectInformation   distributionsenvbin_pathman_path N)__name__
__module____qualname____firstlineno__r   r   Distribution__annotations__r   strr   __static_attributes__r       3/usr/lib/python3/dist-packages/pipx/venv_inspect.pyr   r      s+    h3344	c3hNNr"   r   c                       \ rS rSr% \\   \S'   \\   \S'   \\   \S'   \\\\   4   \S'   \\   \S'   \\   \S'   \\   \S'   \\\\   4   \S	'   \\S
'   \\S'   Sr	g)VenvMetadata   apps	app_pathsapps_of_dependenciesapp_paths_of_dependencies	man_pages	man_pathsman_pages_of_dependenciesman_paths_of_dependenciespackage_versionpython_versionr   N)
r   r   r   r   r   r    r   r   r   r!   r   r"   r#   r%   r%      so    
s)ODzs)##CdO44CyDz#Cy(#CdO44r"   r%   packager   returnc                 h    U H,  n[        UR                  S   5      [        U 5      :X  d  M*  Us  $    g)z6Find matching distribution in the canonicalized sense.nameN)r   r   )r1   r   dists      r#   get_distr6   )   s2    T]]6237H7QQK  r"   r5   extrasr   c                 x   UR                  5       nU(       d  UR                  S5        / n[        [        U R                  =(       d    / 5       Hh  nUR
                  (       d  UR                  U5        M'  U H;  nXcS'   UR
                  R                  U5      (       d  M)  UR                  U5          Mf     Mj     U$ )N extra)copyaddmapr   requiresmarkerappendevaluate)r5   r7   r   eval_envdependenciesreqr:   s          r#   get_package_dependenciesrE   1   s    xxzH

2L; 34zz$$)!::&&x00 '',	  	 5 r"   r   c                    [        5       nSS1nU R                   H  nUR                  U;  a  M  XR                  -  R	                  5       (       a  UR                  UR                  5        [        (       d  M^  XR                  S-   -  R	                  5       (       d  M  UR                  UR                  S-   5        M     U$ )Nconsole_scriptsgui_scriptsz.exe)setentry_pointsgroupr4   existsr<   r   )r5   r   	app_namessectionseps        r#   get_apps_from_entry_pointsrP   D   s    I!=1H888#ww&&((MM"''"7GGf$45==??MM"''F*+   r"   r   c                    [        5       n[        5       nU R                  =(       d    /  GH  n[        U5      R                  S   S:w  a  M"  [        [	        U R                  U5      5      5      n UR                  R                  U5      (       a  UR                  UR                  5        UR                  R                  [        ;   at  UR                  R                  R                  U5      (       aG  UR                  [	        [        UR                  R                  5      UR                  -  5      5        GM  GM  GM     X44$ ! [         a     GM)  f = f)Nr   z..)rI   filesr   partsr    locate_fileparentsamefiler<   r4   r   FileNotFoundError)r5   r   r   rM   	man_namespathdist_file_paths          r#   get_resources_from_dist_filesr[   S   s   II 

 b  :A$&c$"2"24"89:	$$--h77dii($$))\9n>S>S>Z>Z>c>cdl>m>mc$~'<'<'A'A"BTYY"NOP ?n9 !  ! 		s   0CE
EEc                    [        5       n[        5       nU R                  S5      =(       d    SnUR                  5        GH  nUR                  S5      S   n[	        [        U R                  U5      5      5      R                  5       n UR                  R                  U5      (       a  UR                  UR                  5        UR                  R                  [        ;   at  UR                  R                  R                  U5      (       aG  UR                  [        [	        UR                  R                  5      UR                  -  5      5        GM  GM  GM     X44$ ! [         a     GM-  f = f)Nzinstalled-files.txtr9   ,r   )rI   	read_text
splitlinessplitr   r    rT   resolverU   rV   r<   r4   r   rW   )	r5   r   r   rM   rX   
inst_fileslineentryinst_file_paths	            r#   get_resources_from_inst_filesrf   i   s    II 56<"J%%'

3"c$"2"25"9:;CCE	$$--h77n112$$))\9n>S>S>Z>Z>c>cdl>m>mc$~'<'<'A'A"B^EXEX"XYZ ?n9 (  ! 		s   	CE
E-,E-c                     [        5       n[        5       n[        X5      n[        XU5      u  pg[        XU5      u  pXV-  U-  nXy-  n[	        U5      [	        U5      4$ N)rI   rP   r[   rf   sorted)
r5   r   r   rM   rX   app_names_epapp_names_dfman_names_dfapp_names_ifman_names_ifs
             r#   get_resourcesro   {   sb    II-d=L!>tx!XL!>tx!XL+l:I+I)fY///r"   package_reqvenv_inspect_infor*   r.   dep_visitedc           	      d   Uc  [        UR                  5      S0n[        XR                  UR                  5      nU H  n[        UR                  5      nX;   a  M  [        UR                  UR                  5      n	U	c  [        SUR                  < S35      e[        XR                  UR                  5      u  pU
(       a!  U
 Vs/ s H  oR                  U-  PM     snX8'   U(       a!  U Vs/ s H  oR                  U-  PM     snXH'   SXX'   [        U	UUUUU5      u  p4M     X44$ s  snf s  snf )NT)Pipx Internal Error: cannot find package 
 metadata.)r   r4   rE   r7   r   r6   r   r   ro   r   r   _dfs_package_resources)r5   rp   rq   r*   r.   rr   rC   dep_reqdep_namedep_distrM   rX   r4   s                r#   rv   rv      s=    ()9)9:DA+D2D2DFWF[F[\L$W\\2"GLL*;*I*IJGGWWabcc,X7Q7QSdSmSmn	aj2kajY]3M3MPT3Taj2k%/aj2kajY]3M3MPT3Taj2k%/ $?U%%@
<!#<!  0 %?? 3l2ks   D(.D-r(   c                 D   U R                  5       nU  H  nUR                  UR                  S-   -  nUR                  5       (       a  UR	                  U5        UR                  UR                  S-   -  nUR                  5       (       d  Mx  UR	                  U5        M     U$ )Nz
-script.pyz.exe.manifest)r;   rU   stemrL   r@   )r(   app_paths_outputapp_pathwin_app_paths       r#   _windows_extra_app_pathsr      s    
 !~~'(--,*FG  ##L1(--/*IJ  ##L1  r"   venv_python_pathc                     [         R                  " S5      n[        R                  " [	        U SU/SSS9R
                  5      nUS   US   SUS	    34$ )
NaP  
        import json
        import os
        import platform
        import sys

        impl_ver = sys.implementation.version
        implementation_version = "{0.major}.{0.minor}.{0.micro}".format(impl_ver)
        if impl_ver.releaselevel != "final":
            implementation_version = "{}{}{}".format(
                implementation_version,
                impl_ver.releaselevel[0],
                impl_ver.serial,
            )

        sys_path = sys.path
        try:
            sys_path.remove("")
        except ValueError:
            pass

        print(
            json.dumps(
                {
                    "sys_path": sys_path,
                    "python_version": "{0.major}.{0.minor}.{0.micro}".format(sys.version_info),
                    "environment": {
                        "implementation_name": sys.implementation.name,
                        "implementation_version": implementation_version,
                        "os_name": os.name,
                        "platform_machine": platform.machine(),
                        "platform_release": platform.release(),
                        "platform_system": platform.system(),
                        "platform_version": platform.version(),
                        "python_full_version": platform.python_version(),
                        "platform_python_implementation": platform.python_implementation(),
                        "python_version": ".".join(platform.python_version_tuple()[:2]),
                        "sys_platform": sys.platform,
                    },
                }
            )
        )
        z-cFz<fetch_info_in_venv commands>)capture_stderrlog_cmd_strsys_pathenvironmentzPython r0   )textwrapdedentjsonloadsr   stdout)r   command_str	venv_infos      r#   fetch_info_in_venvr      sr    //*	,KZ 

t[1 7	
 &I 	*- 
),-./ r"   root_package_nameroot_package_extrasvenv_bin_pathvenv_man_pathc                 x   0 n/ n0 n/ n[        U 5      n	Xl        [        U5      u  pn[        [        R
                  " U
S95      n[        UUUUS9n[        U	R                  UR
                  5      nUc  [        SU	R                  < S35      e[        UU	UUU5      u  pW[        XU5      u  nnU Vs/ s H  nUU-  PM
     nnU Vs/ s H  nUU-  PM
     nn[        (       a  [        U5      nU HC  nXeU    Vs/ s H  nUR                  PM     sn-  n[        (       d  M2  [        UU   5      UU'   ME     U HO  nUUU    Vs/ s H8  n[        [        UR                   R                  5      UR                  -  5      PM:     sn-  nMQ     [#        UUUUUUUUUR$                  US9
$ s  snf s  snf s  snf s  snf )N)rY   )r   r   r   r   rt   ru   )
r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   )r   r7   r   tupler   r   r   r6   r4   r   rv   ro   r   r   r    r   rU   r%   version)r   r   r   r   r   r*   r)   r.   r-   root_reqvenv_sys_pathvenv_envvenv_python_versionr   rq   	root_distr'   r+   appr(   man_pager,   depdep_paths                           r#   inspect_venvr      s    8:&(79+-,-H)O5GHX5Y2]1 (00mDEM.#	 (9(G(GHICHMMCTT^_``;Q!!<8 $ImLOD)045$I5:CD)h))IDw,Y7	(Y\?] ^?]8?] ^^7-EF_`cFd-e%c* ) )!LefiLj&
LjCX__))*X]]:;Lj&
 	
! )
 1";";";!))*  6D
 !_&
s   2F(F-:F2?F7rh   )-r   loggingr   pathlibr   typingr   r   r   r   r   r	   r
   packaging.requirementsr   packaging.utilsr   	importlibr   ImportErrorimportlib_metadatapipx.constantsr   r   	pipx.utilr   r   	getLoggerr   loggerr   r%   r    r   r6   rE   rP   r[   rf   ro   boolrv   r   r   r   r   r"   r#   <module>r      s       K K K . -*" 1 /			8	$Z 
: 
c *X5J5J*K PXYaYnYnPo 8#8#8 #c( QUVY[^V^Q_ dhitdu &X%:%: d  (=(=    Y]  , (=(=    Y]  $0-- 0 0 0RWX\]`XacghkclXlRm 0" .2%@


%@%@ .%@  $CdO4	%@
  $CdO4%@ $sDy/*%@ 4T$Z $sDJ"778%@PT
 tDz  9 9%S	4S>SV8V2W 9xEESE E 	E
 E E]  *)*s   F 
F,+F,