a
    sh                     @  s   d dl mZ d dlZd dlZd dlmZmZmZ d dlm	Z	 d dl
mZ d dl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dddddZG dd deZG dd deZdddddZ dddddddZ!dS )    )annotationsN)	GeneratorIterableIterator)Values)
NamedTuple)InvalidRequirementcanonicalize_name)Command)ERRORSUCCESS)BaseDistributionget_default_environment)write_outputstr)labelreturnc                 C  s(   t jt j }tdd|}| | S )N )stringpunctuation
whitespacer   	maketrans	translatelower)r   Zchars_to_removeZremoval_map r   W/var/www/html/assistant/venv/lib/python3.9/site-packages/pip/_internal/commands/show.pynormalize_project_url_label   s    r   c                   @  s8   e Zd ZdZdZdZddddZdd	d
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> ...TNone)r   c                 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)selfr   r   r   add_options&   s    	zShowCommand.add_optionsr   	list[str]int)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    r1   r   )r*   r.   r/   queryresultsr   r   r   run2   s    

zShowCommand.runN)__name__
__module____qualname____doc__usageignore_require_venvr+   r8   r   r   r   r   r      s
   r   c                   @  s   e Zd ZU ded< ded< ded< ded< ded< ded	< ded
< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< ded< dS )_PackageInfor   nameversionlocationz
str | Noneeditable_project_locationr,   requiresrequired_by	installermetadata_versionclassifierssummaryhomepageproject_urlsauthorauthor_emaillicenselicense_expressionentry_pointszlist[str] | Noner    N)r9   r:   r;   __annotations__r   r   r   r   r?   @   s$   
r?   r,   z#Generator[_PackageInfo, None, None])r6   r   c                 #  sD  t  }dd | D  dd | D }t fddt| |D }|rXtdd| dd	d
 fdd}|D ]}z | }W n ty   Y qpY n0 z tdd | D t	j
d}W n$ ty   t| t	j
d}Y n0 zt||t	j
d}W n ty   dg}Y n0 z|d}	|	jdd}
W n tyD   g }
Y n0 | }|du r^d}nt|}|j}|dg }|dd}|s|D ]8}|jddd\}}t|}|dkr| } qȐqt|j|j|jpd|j|||j|jpd|dg |dd|||dd|dd|d d|d!d|
|d"V  qpd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>^       z(search_packages_info.<locals>.<dictcomp>c                 S  s   g | ]}t |qS r   r	   )rT   r@   r   r   r   
<listcomp>_   rW   z(search_packages_info.<locals>.<listcomp>c                   s   g | ]\}}| vr|qS r   r   )rT   r@   pkg	installedr   r   rX   a   rW   zPackage(s) not found: %s, r   zIterator[str])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
   r@   )rT   dr   r   r   	<setcomp>k   rW   zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>NameUNKNOWNN)rR   iter_dependenciesmetadatarS   r]   r   r   	<genexpr>g   s
   zHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)valuesrd   rZ   rd   r   _get_requiring_packagesf   s    
z5search_packages_info.<locals>._get_requiring_packagesc                 S  s   h | ]
}|j qS r   )r@   )rT   reqr   r   r   r_   w   rW   z'search_packages_info.<locals>.<setcomp>)keyz#N/Azentry_points.txtF)keependsNzProject-URLz	Home-pager   ,   )maxsplitrJ   
ClassifierZSummaryZAuthorzAuthor-emailZLicensezLicense-Expression)r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   r    )r   Ziter_all_distributionssortedzipr2   r3   joinKeyErrorrb   r   r   r   Ziter_raw_dependencies	read_text
splitlinesFileNotFoundErrorZiter_declared_entriesrc   get_allgetsplitr   stripr?   Zraw_nameZraw_versionrB   rC   rF   rG   )r6   envZquery_namesmissingrg   Z
query_namerU   rD   rE   Zentry_points_textrP   Z
files_iterr    rc   rK   rJ   urlZ	url_labelZnormalized_labelr   rZ   r   r4   U   s    















r4   zIterable[_PackageInfo]bool)distributionsr0   r1   r   c                 C  s  d}t | D ]\}}d}|dkr*td ttt|jd}td|j td|j td|j	 td	|j
 td
|j td|j |dkr|jrtd|j ntd|j td|j |jdurtd|j tdd|j tdd|j |rxtd|j td|j td |jD ]}td| q"td |jD ]}td|  qBtd |jD ]}	td|	 qf|rtd |jdu rtd q|jD ]}
td|
  qq|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: %s)      zLicense-Expression: %szLicense: %szLocation: %sNzEditable project location: %szRequires: %sr\   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   tuplemapr-   rG   rx   r@   rA   rI   rJ   rL   rM   rO   rN   rB   rC   rq   rD   rE   rF   rH   rP   ry   rK   r    )r~   r0   r1   Zresults_printedirU   Zmetadata_version_tuple
classifierentryproject_urlliner   r   r   r5      sR    





r5   )"
__future__r   loggingr   collections.abcr   r   r   optparser   typingr   "pip._vendor.packaging.requirementsr   pip._vendor.packaging.utilsr
   pip._internal.cli.base_commandr   pip._internal.cli.status_codesr   r   Zpip._internal.metadatar   r   pip._internal.utils.miscr   	getLoggerr9   r2   r   r   r?   r4   r5   r   r   r   r   <module>   s"   
%]