
    c f                        d dl Z d dlmZ d dlmZmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlmZmZ d dlmZ  e j,                  e      Z G d	 d
e      Z G d de      Zdee   deeddf   fdZdee   dededefdZy)    N)Values)	GeneratorIterableIteratorList
NamedTupleOptional)canonicalize_name)Command)ERRORSUCCESS)BaseDistributionget_default_environment)write_outputc                   :    e Zd ZdZdZdZd
dZdedee	   de
fd	Zy)ShowCommandzx
    Show information about one or more installed packages.

    The output is in RFC-compliant mail header format.
    z$
      %prog [options] <package> ...TreturnNc                     | j                   j                  dddddd       | j                  j                  d| j                          y )	Nz-fz--filesfiles
store_trueFz7Show the full list of installed files for each package.)destactiondefaulthelpr   )cmd_opts
add_optionparserinsert_option_group)selfs    U/var/www/html/py/new-venv/lib/python3.12/site-packages/pip/_internal/commands/show.pyadd_optionszShowCommand.add_options   sE      J 	! 	
 	''4==9    optionsargsc                     |st         j                  d       t        S |}t        |      }t	        ||j
                  |j                        st        S t        S )Nz.ERROR: Please provide a package name or names.)
list_filesverbose)loggerwarningr   search_packages_infoprint_resultsr   r'   r   )r   r#   r$   queryresultss        r    runzShowCommand.run&   sI    NNKLL&u-w
 Lr"   )r   N)__name__
__module____qualname____doc__usageignore_require_venvr!   r   r   strintr.    r"   r    r   r      s7    'E
:6 c s r"   r   c                       e Zd ZU eed<   eed<   eed<   ee   ed<   ee   ed<   ee   ed<   eed<   eed<   ee   ed	<   eed
<   eed<   ee   ed<   eed<   eed<   eed<   ee   ed<   eee      ed<   y)_PackageInfonameversionlocationeditable_project_locationrequiresrequired_by	installermetadata_versionclassifierssummaryhomepageproject_urlsauthorauthor_emaillicenseentry_pointsr   N)r/   r0   r1   r5   __annotations__r	   r   r7   r"   r    r9   r9   4   s    
ILM'},3icNcLMs)KLs)DIr"   r9   r,   r   c           
   #   8  K   t               }|j                         D ci c]  }|j                  | c}| D cg c]  }t        |       }}t	        t        | |      D cg c]  \  }}|vs| c}}      }|r%t        j                  ddj                  |             dt        dt        t           ffd}|D ]  }	 |   }t	        d |j                         D        t        j                        }	t	         ||      t        j                        }
	 |j                  d      }|j!                  d	
      }|j%                         }|d}nt	        |      }|j&                  }t)        d%i d|j*                  dt        |j,                        d|j.                  xs dd|j0                  d|	d|
d|j2                  d|j4                  xs dd|j7                  dg       d|j9                  dd      d|j9                  dd      d|j7                  dg       d|j9                  dd      d|j9                  d d      d!|j9                  d"d      d#|d$|  yc c}w c c}w c c}}w # t        $ r Y w xY w# t"        $ r g }Y Yw xY ww)&z
    Gather details from installed distributions. Print distribution name,
    version, location, and installed files. Installed files requires a
    pip generated 'installed-files.txt' in the distributions '.egg-info'
    directory.
    zPackage(s) not found: %s, current_distr   c                 8      fdj                         D        S )Nc              3      K   | ]T  }j                   |j                         D ch c]  }t        |j                         c}v r|j                  d    xs d V yc c}w w)NameUNKNOWNN)canonical_nameiter_dependenciesr
   r:   metadata).0distdrM   s      r    	<genexpr>zHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>Z   s`      
**373I3I3KLa!!&&)LM MM&!.Y.
 Ms   "A"A!A")values)rM   	installeds   `r    _get_requiring_packagesz5search_packages_info.<locals>._get_requiring_packagesY   s    
!((*
 	
r"   c              3   4   K   | ]  }|j                     y w)N)r:   )rU   reqs     r    rX   z'search_packages_info.<locals>.<genexpr>g   s     H388Hs   )keyzentry_points.txtF)keependsNr:   r;   r<    r=   r>   r?   r@   rA   rB   
ClassifierrC   SummaryrD   z	Home-pagerE   zProject-URLrF   AuthorrG   zAuthor-emailrH   LicenserI   r   r7   )r   iter_all_distributionsrR   r
   sortedzipr(   r)   joinr   r   r5   KeyErrorrS   lower	read_text
splitlinesFileNotFoundErroriter_declared_entriesrT   r9   raw_namer;   r<   r=   r@   rA   get_allget)r,   envrV   r:   query_namespkgmissingr[   
query_namer>   r?   entry_points_textrI   
files_iterr   rT   rZ   s                   @r    r*   r*   H   s     "
#C7:7Q7Q7STt$$d*TI7<=t$T*=K="5+6O)$#Y:NOG 1499W3EF
.> 
8C= 
 " )

	Z(D Ht/E/E/GHciiX4T:		J	 $/A B,777GL //1
)-E:&E== 

%
 ]](b
 '+&D&D	

 
 $
 nn
 "228b
 !((r:
 LLB/
 \\+r2
 "))-<
 <<"-
 "nb9
 LLB/
  &!
" #
 	
/)
! U=O   		 ! 	L	sw   JI(JI-J#I2
0I2
4AJI8AJ#J=D;J8	JJJJJJJJdistributionsr&   r'   c                    d}t        |       D ];  \  }}d}|dkD  rt        d       t        d|j                         t        d|j                         t        d|j                         t        d|j
                         t        d	|j                         t        d
|j                         t        d|j                         t        d|j                         |j                  t        d|j                         t        ddj                  |j                               t        ddj                  |j                               |rt        d|j                         t        d|j                         t        d       |j                   D ]  }t        d|        t        d       |j"                  D ]  }t        d|j%                                 t        d       |j&                  D ]  }t        d|        |st        d       |j(                  t        d       |j(                  D ]  }	t        d|	j%                                 > |S )zC
    Print the information from installed distributions found.
    FTr   z---zName: %szVersion: %szSummary: %szHome-page: %sz
Author: %szAuthor-email: %szLicense: %szLocation: %szEditable project location: %szRequires: %srL   zRequired-by: %szMetadata-Version: %szInstaller: %szClassifiers:z  %szEntry-points:zProject-URLs:zFiles:z+Cannot locate RECORD or installed-files.txt)	enumerater   r:   r;   rC   rD   rF   rG   rH   r<   r=   rh   r>   r?   rA   r@   rB   rI   striprE   r   )
ry   r&   r'   results_printedirV   
classifierentryproject_urllines
             r    r+   r+      s    O]+ &74q5Z+]DLL1]DLL1_dmm4\4;;/'):):;]DLL1^T]]3))5/1O1O 	^TYYt}}%=>&		$2B2B(CD/1F1FG$..9(".. 1
VZ01)** 4VU[[]34)#00 2V[12"zz!JK JJ 7D 67K&7N r"   )loggingoptparser   typingr   r   r   r   r   r	   pip._vendor.packaging.utilsr
   pip._internal.cli.base_commandr   pip._internal.cli.status_codesr   r   pip._internal.metadatar   r   pip._internal.utils.miscr   	getLoggerr/   r(   r   r9   r5   r*   boolr+   r7   r"   r    <module>r      s      L L 9 2 9 L 1			8	$"' "J: (B
S	 B
idD8P.Q B
J0L)00 0 
	0r"   