a
    ”¼deT  ã                   @   sÈ   d dl mZ d dlZd dl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 d d	lmZ er˜d d
lmZ d dlmZmZmZ e e¡ZG dd„ deƒZdd„ Zddd„ZdS )é    )Úabsolute_importN)Ú
FeedParser)Úpkg_resources©Úcanonicalize_name)ÚCommand)ÚERRORÚSUCCESS)Úwrite_output)ÚMYPY_CHECK_RUNNING)ÚValues)ÚDictÚIteratorÚListc                   @   s(   e Zd ZdZdZdZdd„ Z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> ...Tc                 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/var/www/sistema_ama/venv/lib/python3.9/site-packages/pip/_internal/commands/show.pyÚadd_options!   s    ûzShowCommand.add_optionsc                 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   ÚoptionsÚargsÚqueryÚresultsr   r   r   Úrun,   s    

ÿzShowCommand.runN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚusageÚignore_require_venvr   r)   r   r   r   r   r      s
   r   c                 #   sT  i ‰t jD ]}|ˆt|jƒ< q
dd„ | D ƒ}t‡fdd„t| |ƒD ƒƒ}|r^t dd |¡¡ dd„ }‡fdd„|D ƒD �]Ô‰ ˆ jˆ j	ˆ j
d	d„ ˆ  ¡ D ƒ|ˆ jƒd
œ}d}d}tˆ t jƒ�rˆ  d¡�rˆ  d¡}dd„ |D ƒ}	‡ fdd„|	D ƒ}	‡ fdd„|	D ƒ}ˆ  d¡�rnˆ  d¡}nPˆ  d¡�rXˆ  d¡}	‡ fdd„|	D ƒ}	‡ fdd„|	D ƒ}ˆ  d¡�rnˆ  d¡}ˆ  d¡�rŒˆ  d¡}
|
|d< ˆ  d¡�rÆˆ  d¡D ]"}| ¡ �r¢| ¡ |d<  �qÆ�q¢tƒ }| |¡ | ¡ }dD ]}| |¡||< �qâg }| ¡ D ](}| d¡�r| |tdƒd… ¡ �q||d< |�rHt|ƒ|d< |V  qxd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   g | ]}t |ƒ‘qS r   r   )Ú.0Únamer   r   r   Ú
<listcomp>F   ó    z(search_packages_info.<locals>.<listcomp>c                    s   g | ]\}}|ˆ vr|‘qS r   r   )r0   r1   Úpkg©Ú	installedr   r   r2   H   r3   zPackage(s) not found: %sú, c                    s   t | ƒ‰ ‡ fdd„tjD ƒS )Nc                    s(   g | ] }ˆ d d„ |  ¡ D ƒv r|j‘qS )c                 S   s   g | ]}t |jƒ‘qS r   )r   r1   )r0   Úrequiredr   r   r   r2   S   r3   zSsearch_packages_info.<locals>.get_requiring_packages.<locals>.<listcomp>.<listcomp>)ÚrequiresÚproject_name©r0   r4   ©Úcanonical_namer   r   r2   P   s   ÿÿÿzHsearch_packages_info.<locals>.get_requiring_packages.<locals>.<listcomp>)r   r   Úworking_set)Úpackage_namer   r<   r   Úget_requiring_packagesM   s    
ÿz4search_packages_info.<locals>.get_requiring_packagesc                    s   g | ]}|ˆ v rˆ | ‘qS r   r   r;   r5   r   r   r2   W   r3   c                 S   s   g | ]
}|j ‘qS r   )r:   )r0   Údepr   r   r   r2   \   r3   )r1   ÚversionÚlocationr9   Úrequired_byNÚ ÚRECORDc                 S   s   g | ]}|  d ¡d ‘qS )ú,r   )Úsplit)r0   Úliner   r   r   r2   e   r3   c                    s   g | ]}t j ˆ j|¡‘qS r   )ÚosÚpathÚjoinrC   ©r0   Úp©Údistr   r   r2   f   r3   c                    s   g | ]}t j |ˆ j¡‘qS r   ©rJ   rK   ÚrelpathrC   rM   rO   r   r   r2   g   r3   ÚMETADATAzinstalled-files.txtc                    s   g | ]}t j ˆ j|¡‘qS r   )rJ   rK   rL   Úegg_inforM   rO   r   r   r2   o   r3   c                    s   g | ]}t j |ˆ j¡‘qS r   rQ   rM   rO   r   r   r2   p   r3   zPKG-INFOzentry_points.txtÚentry_pointsÚ	INSTALLERÚ	installer)úmetadata-versionÚsummaryú	home-pageÚauthorúauthor-emailÚlicensezClassifier: Úclassifiersr   )r   r>   r   r:   ÚsortedÚzipr!   r"   rL   rB   rC   r9   Ú
isinstanceÚDistInfoDistributionÚhas_metadataÚget_metadata_linesÚget_metadataÚstripr   ÚfeedÚcloseÚgetÚ
splitlinesÚ
startswithÚappendÚlen)r'   rN   Zquery_namesÚmissingr@   ÚpackageÚ	file_listÚmetadataÚlinesÚpathsrU   rI   Úfeed_parserÚpkg_info_dictÚkeyr^   r   )rP   r6   r   r#   :   sl    
ÿ
û






r#   Fc           	   	   C   s¨  d}t | ƒD �]”\}}d}|dkr*tdƒ td| dd¡ƒ td| d	d¡ƒ td
| dd¡ƒ td| dd¡ƒ td| dd¡ƒ td| dd¡ƒ td| dd¡ƒ td| dd¡ƒ tdd | dg ¡¡ƒ tdd | dg ¡¡ƒ |�rdtd| dd¡ƒ td| dd¡ƒ tdƒ | d g ¡D ]}td!|ƒ �q(td"ƒ | d#g ¡D ]}td!| ¡ ƒ �qN|rtd$ƒ | d%g ¡D ]}td!| ¡ ƒ �q|d%|vrtd&ƒ q|S )'zC
    Print the information from installed distributions found.
    FTr   z---zName: %sr1   rE   zVersion: %srB   zSummary: %srY   zHome-page: %srZ   z
Author: %sr[   zAuthor-email: %sr\   zLicense: %sr]   zLocation: %srC   zRequires: %sr7   r9   zRequired-by: %srD   zMetadata-Version: %srX   zInstaller: %srW   zClassifiers:r^   z  %szEntry-points:rU   zFiles:r   z!Cannot locate installed-files.txt)Ú	enumerater
   ri   rL   rf   )	Údistributionsr   r    Zresults_printedÚirP   Ú
classifierÚentryrI   r   r   r   r$   ”   sB    
ÿ
r$   )FF)Ú
__future__r   ÚloggingrJ   Úemail.parserr   Úpip._vendorr   Úpip._vendor.packaging.utilsr   Úpip._internal.cli.base_commandr   Úpip._internal.cli.status_codesr   r	   Úpip._internal.utils.miscr
   Úpip._internal.utils.typingr   Úoptparser   Útypingr   r   r   Ú	getLoggerr*   r!   r   r#   r$   r   r   r   r   Ú<module>   s    
$Z