U ��.e��@s�ddlmZddlZddlZddlmZddlmZddlm Z ddl m Z ddl m Z mZddlmZe�e�ZGd d �d e �Zd d �Zddd�ZdS)�)�absolute_importN)� FeedParser)� pkg_resources��canonicalize_name)�Command)�ERROR�SUCCESS)� write_outputcs0eZdZdZdZdZ�fdd�Zdd�Z�ZS)� ShowCommandzx Show information about one or more installed packages. The output is in RFC-compliant mail header format. z$ %prog [options] ...Tcs>tt|�j||�|jjddddddd�|j�d|j�dS) Nz-fz--files�files� store_trueFz7Show the full list of installed files for each package.)�dest�action�default�helpr)�superr �__init__Zcmd_optsZ add_option�parserZinsert_option_group)�self�args�kw�� __class__��?/usr/lib/python3.8/site-packages/pip/_internal/commands/show.pyrs�zShowCommand.__init__cCs8|st�d�tS|}t|�}t||j|jd�s4tStS)Nz.ERROR: Please provide a package name or names.)� list_files�verbose)�logger�warningr�search_packages_info� print_resultsr rr )rZoptionsr�query�resultsrrr�run*s �zShowCommand.run) �__name__� __module__� __qualname__�__doc__ZusageZignore_require_venvrr$� __classcell__rrrrr s  r c#sTi�tjD]}|�t|j�<q dd�|D�}t�fdd�t||�D��}|r^t�dd�|��dd�}�fdd�|D�D�]ԉ�j�j �j d d��� �D�|�j�d �}d }d }t �tj ��r��d ��r��d �}d d�|D�} �fdd�| D�} �fdd�| D�}��d��rn��d�}nP��d��rX��d�} �fdd�| D�} �fdd�| D�}��d��rn��d�}��d��r���d�} | |d<��d��rƈ�d�D]"} | ���r�| ��|d<�qƐq�t�} | �|�| ��} dD]}| �|�||<�q�g}|��D](} | �d��r|�| td�d ���q||d<|�rHt|�|d<|Vqxd 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. cSsg|] }t|��qSrr)�.0�namerrr� Bsz(search_packages_info..csg|]\}}|�kr|�qSrr)r*r+�pkg�� installedrrr,DszPackage(s) not found: %s�, cst|���fdd�tjD�S)Ncs(g|] }�dd�|��D�kr|j�qS)cSsg|]}t|j��qSr)rr+)r*Zrequiredrrrr,NszSsearch_packages_info..get_requiring_packages...)�requires� project_name�r*r-�Zcanonical_namerrr,Ks���zHsearch_packages_info..get_requiring_packages..)rr� working_set)Z package_namerr4r�get_requiring_packagesIs �z4search_packages_info..get_requiring_packagescsg|]}|�kr�|�qSrrr3r.rrr,RscSsg|] }|j�qSr)r2)r*Zdeprrrr,Ws)r+�version�locationr1� required_byNZRECORDcSsg|]}|�d�d�qS)�,r)�split)r*�lrrrr,`scsg|]}tj��j|��qSr)�os�path�joinr8�r*�p��distrrr,ascsg|]}tj�|�j��qSr�r=r>�relpathr8r@rBrrr,bsZMETADATAzinstalled-files.txtcsg|]}tj��j|��qSr)r=r>r?Zegg_infor@rBrrr,jscsg|]}tj�|�j��qSrrDr@rBrrr,kszPKG-INFOzentry_points.txt� entry_pointsZ INSTALLER� installer)�metadata-version�summary� home-page�author� author-email�licensez Classifier: � classifiersr )rr5rr2�sorted�ziprrr?r7r8r1� isinstanceZDistInfoDistributionZ has_metadataZget_metadata_linesZ get_metadata�striprZfeed�close�get� splitlines� startswith�append�len)r"rAZ query_namesZmissingr6�packageZ file_listZmetadata�lines�pathsrF�lineZ feed_parserZ pkg_info_dict�keyrNr)rCr/rr 7sl � �                  r Fc Cs�d}t|�D�]�\}}d}|dkr*td�td|�dd��td|�d d��td |�d d��td |�d d��td|�dd��td|�dd��td|�dd��td|�dd��tdd�|�dg���tdd�|�dg���|�rdtd|�dd��td|�dd��td�|�d g�D]}td!|��q(td"�|�d#g�D]}td!|����qN|r td$�|�d%g�D]}td!|����q|d%|kr td&�q |S)'zD Print the informations from installed distributions found. FTrz---zName: %sr+�z Version: %sr7z Summary: %srIz Home-page: %srJz Author: %srKzAuthor-email: %srLz License: %srMz Location: %sr8z Requires: %sr0r1zRequired-by: %sr9zMetadata-Version: %srHz Installer: %srGz Classifiers:rNz %sz Entry-points:rFzFiles:r z!Cannot locate installed-files.txt)� enumerater rTr?rR) Z distributionsrrZresults_printed�irCZ classifier�entryr\rrrr!�sB � r!)FF)Z __future__rZloggingr=Z email.parserrZ pip._vendorrZpip._vendor.packaging.utilsrZpip._internal.cli.base_commandrZpip._internal.cli.status_codesrr Zpip._internal.utils.miscr Z getLoggerr%rr r r!rrrr�s       #X