o
    a+)h                     @   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dee deeddf fddZdee dededef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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   ZC:\Users\User\Downloads\Proyecto_IoT\venv\Lib\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 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 }|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 rd}nt|}|j}td,i d|jdt	|jd|jpdd|jd|d|d|jd|jpdd|dg d|ddd |d!d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>Q       z(search_packages_info.<locals>.<dictcomp>c                 S   s   g | ]}t |qS r   r	   )rH   r5   r   r   r   
<listcomp>R   rK   z(search_packages_info.<locals>.<listcomp>c                    s   g | ]
\}}| vr|qS r   r   )rH   r5   pkg	installedr   r   rL   T   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
   r5   )rH   dr   r   r   	<setcomp>^   s    zRsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>.<setcomp>NameUNKNOWNN)rF   iter_dependenciesmetadatarG   rQ   r   r   	<genexpr>Z   s    zHsearch_packages_info.<locals>._get_requiring_packages.<locals>.<genexpr>)valuesrX   rN   rX   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   rY   g   s    z'search_packages_info.<locals>.<genexpr>)keyzentry_points.txtF)keependsNr5   r6   r7    r8   r9   r:   r;   r<   r=   
Classifierr>   Summaryr?   z	Home-pager@   zProject-URLrA   AuthorrB   zAuthor-emailrC   LicenserD   r   r   )r   iter_all_distributionssortedzipr%   r&   joinr   r   r2   KeyErrorrV   lower	read_text
splitlinesFileNotFoundErroriter_declared_entriesrW   r4   raw_namer6   r7   r8   r;   r<   get_allget)r)   envZquery_namesmissingr[   Z
query_namerI   r9   r:   Zentry_points_textrD   Z
files_iterr   rW   r   rN   r   r'   H   s   

	
r'   distributionsr#   r$   c           
      C   s|  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	 |j
durOtd|j
 tdd|j tdd|j |rtd|j td|j td |jD ]}td| qvtd |jD ]	}td|  qtd |jD ]}td| q|rt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: %szLicense: %szLocation: %sNzEditable project location: %szRequires: %srP   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   rg   r9   r:   r<   r;   r=   rD   stripr@   r   )
rs   r#   r$   Zresults_printedirI   Z
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*     
% E