U
    ƒIÀd  ã                   @   sÜ   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  e¡ZG d	d
„ d
eƒZG dd„ deƒZee eeddf dœdd„Zee eeedœdd„ZdS )é    N)ÚValues)Ú	GeneratorÚIterableÚ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   úT/home/sam/Atlas/atlas_env/lib/python3.8/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 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< dS )Ú_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,   r-   r.   r2   Ú__annotations__r   r   r   r   r   r   r4   4   s"   
r4   )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 �]4}zˆ | }W n t
k
rž   Y qtY nX tdd„ | ¡ D ƒt	jd�}t||ƒt	jd�}z| d¡}	|	jdd�}
W n tk
�r   g }
Y nX | ¡ }|dk�rd}nt|ƒ}|j}t|jt	|jƒ|j�pBd|j|||j|j�pXd| dg ¡| dd¡| dd¡| dg ¡| 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>Q   s      z(search_packages_info.<locals>.<dictcomp>c                 S   s   g | ]}t |ƒ‘qS r   r	   )rH   r5   r   r   r   Ú
<listcomp>R   s     z(search_packages_info.<locals>.<listcomp>c                    s   g | ]\}}|ˆ kr|‘qS r   r   )rH   r5   Úpkg©Ú	installedr   r   rK   T   s      zPackage(s) not found: %sú, )Úcurrent_distr   c                    s   ‡ fdd„ˆ  ¡ D ƒS )Nc                 3   s4   | ],}ˆ j d d„ | ¡ D ƒkr|jd p*dV  qdS )c                 S   s   h | ]}t |jƒ’qS r   )r
   r5   )rH   Údr   r   r   Ú	<setcomp>^   s     zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>ÚNameÚUNKNOWNN)rF   Úiter_dependenciesÚmetadatarG   ©rP   r   r   Ú	<genexpr>Z   s
   ÿþzHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)ÚvaluesrW   rM   rW   r   Ú_get_requiring_packagesY   s    
þz5search_packages_info.<locals>._get_requiring_packagesc                 s   s   | ]}|j V  qd S )N)r5   )rH   Úreqr   r   r   rX   g   s     z'search_packages_info.<locals>.<genexpr>)Úkeyzentry_points.txtF)ÚkeependsNÚ Ú
ClassifierÚSummaryz	Home-pagezProject-URLÚAuthorzAuthor-emailÚLicense)r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   r   )r   Úiter_all_distributionsÚsortedÚzipr%   r&   Újoinr   r   r2   ÚKeyErrorrU   ÚlowerÚ	read_textÚ
splitlinesÚFileNotFoundErrorÚiter_declared_entriesrV   r4   Úraw_namer6   r7   r8   r;   r<   Úget_allÚget)r)   ÚenvZquery_namesÚmissingrZ   Z
query_namerI   r9   r:   Zentry_points_textrD   Z
files_iterr   rV   r   rM   r   r'   H   sZ    ÿ













ïr'   )Údistributionsr#   r$   r   c           
      C   sˆ  d}t | ƒD �]t\}}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	ƒ |j
dk	r td|j
ƒ tdd |j¡ƒ tdd |j¡ƒ |�rDtd|jƒ td|jƒ tdƒ |jD ]}td|ƒ qðtdƒ |jD ]}td| ¡ ƒ �qtdƒ |jD ]}td|ƒ �q2|rtdƒ |jdk�rftdƒ q|jD ]}	td|	 ¡ ƒ �qlq|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: %sNzEditable project location: %szRequires: %srO   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   r5   r6   r>   r?   rA   rB   rC   r7   r8   rf   r9   r:   r<   r;   r=   rD   Ústripr@   r   )
rr   r#   r$   Zresults_printedÚirI   Ú
classifierÚentryÚproject_urlÚliner   r   r   r(   �   sN    
 ÿ




r(   )ÚloggingÚoptparser   Útypingr   r   r   r   r   r   Z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   r4   r2   r'   Úboolr(   r   r   r   r   Ú<module>   s     
%Fü