o
    Ëý°jã  ã                   @   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dee dee fdd„Zdee dededef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„Zded	ee	 de
f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> ...TÚreturnNc                 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   úŽ/root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/pip/_internal/commands/show.pyÚadd_options   s   ú	zShowCommand.add_optionsÚoptionsÚargsc                 C   s8   |s	t  d¡ tS |}t|ƒ}t||j|jd�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Úresultsr   r   r   Úrun&   s   

ÿzShowCommand.run)r   N)Ú__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 ƒƒ}|r-t dd |¡¡ dtd	tt	 f‡ fd
d„}|D ]‹}zˆ | }W n	 t
yM   Y q<w tdd„ | ¡ D ƒt	jd�}t||ƒt	jd�}z| d¡}	|	jdd�}
W n ty}   g }
Y nw | ¡ }|du r‰d}nt|ƒ}|j}t|jt	|jƒ|jp›d|||j|jp£d| dg ¡| dd¡| dd¡| dd¡| dd¡| dd¡|
|d�V  q<d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   s    zPackage(s) not found: %sú, Úcurrent_distr   c                    s   ‡ fdd„ˆ  ¡ D ƒS )Nc                 3   s6   � | ]}ˆ 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>\   s    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   s   € z'search_packages_info.<locals>.<genexpr>)Úkeyzentry_points.txtF)ÚkeependsNÚ Ú
ClassifierÚSummaryz	Home-pageÚAuthorzAuthor-emailÚ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'   ÚenvÚquery_namesÚmissingrW   Ú
query_namerE   r6   r7   Úentry_points_textr@   Ú
files_iterr   rS   r   rJ   r   r%   F   s^   €ÿÿ
ÿ






ñér%   Údistributionsr!   r"   c           	      C   sH  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|ƒ qktdƒ |jD ]	}td| ¡ ƒ qz|r¡tdƒ |jdu r”tdƒ q|jD ]	}td| ¡ ƒ q—q|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   rc   r6   r7   r9   r8   r:   r@   Ústripr   )	rs   r!   r"   Ú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*    
%Cÿþýü