a
    [f                     @   s   d dl Z d dlmZ d dl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 eZG d	d
 d
eZG dd deZee ee dddZee eeedddZdS )    N)Values)IteratorList
NamedTupleOptionalcanonicalize_name)Command)ERRORSUCCESS)BaseDistributionget_default_environment)write_outputc                   @   s<   e Zd ZdZdZdZddddZeee	 e
dd	d
ZdS )ShowCommandzx
    Show information about one or more installed packages.

    The output is in RFC-compliant mail header format.
    z$
      %prog [options] <package> ...TN)returnc                 C   s,   | j jddddddd | jd| j  d S )	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)self r   mC:\Users\91910\OneDrive\Desktop\vts_admin_rebuild-master\vts\Lib\site-packages\pip/_internal/commands/show.pyadd_options   s    	zShowCommand.add_options)optionsargsr   c                 C   s8   |st d tS |}t|}t||j|jds4t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resultsr   r   r   run&   s    

zShowCommand.run)__name__
__module____qualname____doc__usageignore_require_venvr   r   r   strintr)   r   r   r   r   r      s
   r   c                   @   s   e Zd ZU eed< eed< 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d< eed< eed< ee ed< eee  ed< dS )_PackageInfonameversionlocationrequiresrequired_by	installermetadata_versionclassifierssummaryhomepageauthorauthor_emaillicenseentry_pointsr   N)r*   r+   r,   r0   __annotations__r   r   r   r   r   r   r2   4   s   
r2   )r'   r   c                 #   s  t  }dd | D  dd | D }t fddt| |D }|rXtdd| ttt	 d fd	d
}|D ] }z | }W n t
y   Y qtY n0 tdd | D t	jd}t||t	jd}z|d}	|	jdd}
W n ty   g }
Y n0 | }|du rd}nt|}|j}t|jt	|j|jp<d|||j|jpNd|dg |dd|dd|dd|dd|dd|
|dV  qtdS )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.
    c                 S   s   i | ]}|j |qS r   )canonical_name.0distr   r   r   
<dictcomp>O       z(search_packages_info.<locals>.<dictcomp>c                 S   s   g | ]}t |qS r   r   )rD   r3   r   r   r   
<listcomp>P   rG   z(search_packages_info.<locals>.<listcomp>c                    s   g | ]\}}| vr|qS r   r   )rD   r3   pkg	installedr   r   rH   R   rG   zPackage(s) not found: %s, )current_distr   c                    s    fdd  D S )Nc                 3   s4   | ],} j d d | D v r|jd p*dV  qdS )c                 S   s   h | ]}t |jqS r   )r   r3   )rD   dr   r   r   	<setcomp>\   rG   zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>NameUNKNOWNN)rB   iter_dependenciesmetadatarC   rM   r   r   	<genexpr>X   s
   zHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)valuesrT   rJ   rT   r   _get_requiring_packagesW   s    
z5search_packages_info.<locals>._get_requiring_packagesc                 s   s   | ]}|j V  qd S )N)r3   )rD   reqr   r   r   rU   e   rG   z'search_packages_info.<locals>.<genexpr>)keyzentry_points.txtF)keependsN 
ClassifierZSummaryz	Home-pageZAuthorzAuthor-emailZLicense)r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   r   )r   iter_distributionssortedzipr#   r$   joinr   r   r0   KeyErrorrR   lower	read_text
splitlinesFileNotFoundErroriter_declared_entriesrS   r2   raw_namer4   r5   r8   r9   get_allget)r'   envZquery_namesmissingrW   Z
query_namerE   r6   r7   Zentry_points_textr@   Z
files_iterr   rS   r   rJ   r   r%   F   sV    












r%   )distributionsr!   r"   r   c           	      C   sP  d}t | D ]<\}}d}|dk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	 tdd
|j tdd
|j |rtd|j td|j td |jD ]}td| qtd |jD ]}td|  q|rtd |jdu r.td q|jD ]}td|  q4q|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Requires: %srL   zRequired-by: %szMetadata-Version: %szInstaller: %szClassifiers:z  %szEntry-points:zFiles:Nz+Cannot locate RECORD or installed-files.txt)	enumerater   r3   r4   r;   r<   r=   r>   r?   r5   r`   r6   r7   r9   r8   r:   r@   stripr   )	rl   r!   r"   Zresults_printedirE   
classifierentryliner   r   r   r&      s>    



r&   )loggingoptparser   typingr   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   r2   r0   r%   boolr&   r   r   r   r   <module>   s    
%D