509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
3
ÝPf  ã               @   sŒ   d dl mZ d dlmZ d dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ ejeƒZG dd	„ d	eƒZd
d„ Zddd„ZdS )é    )Úabsolute_import)Ú
FeedParserN)ÚCommand)ÚSUCCESSÚERROR)Úpkg_resources)Úcanonicalize_namec                   s4   e Zd ZdZdZdZdZ‡ fdd„Zdd„ Z‡  Z	S )	ÚShowCommandz6Show information about one or more installed packages.Zshowz$
      %prog [options] <package> ...z*Show information about installed packages.c                s>   t t| ƒj||Ž | jjddddddd� | jjd| jƒ d S )	Nz-fz--filesÚfilesÚ
store_trueFz7Show the full list of installed files for each package.)ÚdestÚactionÚdefaultÚhelpr   )Úsuperr	   Ú__init__Zcmd_optsZ
add_optionÚparserZinsert_option_group)ÚselfÚargsÚkw)Ú	__class__© ú/usr/lib/python3.6/show.pyr      s    zShowCommand.__init__c             C   s8   |st jdƒ tS |}t|ƒ}t||j|jd�s4tS tS )Nz.ERROR: Please provide a package name or names.)Ú
list_filesÚverbose)ÚloggerZwarningr   Úsearch_packages_infoÚprint_resultsr
   r   r   )r   Zoptionsr   ÚqueryÚresultsr   r   r   Úrun"   s    
zShowCommand.run)
Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameZusageÚsummaryr   r    Ú__classcell__r   r   )r   r   r	      s   r	   c             #   s  i ‰xt jD ]}|ˆt|jƒ< qW dd„ | D ƒ}�xæ‡fdd„|D ƒD �]Î‰ ˆ jˆ jˆ jdd„ ˆ jƒ D ƒdœ}d}d}tˆ t jƒrÞˆ j	dƒrÈˆ j
dƒ}dd„ |D ƒ}‡ fd	d„|D ƒ}‡ fd
d„|D ƒ}ˆ j	dƒrÜˆ jdƒ}nPˆ j	dƒ�rˆ j
dƒ}‡ fdd„|D ƒ}‡ fdd„|D ƒ}ˆ j	dƒ�r.ˆ jdƒ}ˆ j	dƒ�rLˆ j
dƒ}||d< ˆ j	dƒ�r†x,ˆ j
dƒD ]}	|	jƒ �rd|	jƒ |d< P �qdW tƒ }
|
j|ƒ |
jƒ }xdD ]}|j|ƒ||< �q¤W g }x4|jƒ D ](}	|	jdƒ�rÊ|j|	tdƒd… ƒ �qÊW ||d< |�rt|ƒ|d< |V  qFW 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   g | ]}t |ƒ‘qS r   )r   )Ú.0r%   r   r   r   ú
<listcomp>:   s    z(search_packages_info.<locals>.<listcomp>c                s   g | ]}|ˆ krˆ | ‘qS r   r   )r(   Zpkg)Ú	installedr   r   r)   <   s    c             S   s   g | ]
}|j ‘qS r   )Úproject_name)r(   Zdepr   r   r   r)   A   s    )r%   ÚversionÚlocationÚrequiresNZRECORDc             S   s   g | ]}|j d ƒd ‘qS )ú,r   )Úsplit)r(   Úlr   r   r   r)   I   s    c                s   g | ]}t jjˆ j|ƒ‘qS r   )ÚosÚpathÚjoinr-   )r(   Úp)Údistr   r   r)   J   s    c                s   g | ]}t jj|ˆ jƒ‘qS r   )r2   r3   Úrelpathr-   )r(   r5   )r6   r   r   r)   K   s    ZMETADATAzinstalled-files.txtc                s   g | ]}t jjˆ j|ƒ‘qS r   )r2   r3   r4   Zegg_info)r(   r5   )r6   r   r   r)   S   s    c                s   g | ]}t jj|ˆ jƒ‘qS r   )r2   r3   r7   r-   )r(   r5   )r6   r   r   r)   T   s    zPKG-INFOzentry_points.txtÚentry_pointsZ	INSTALLERÚ	installerúmetadata-versionr&   ú	home-pageÚauthorúauthor-emailÚlicensezClassifier: Úclassifiersr
   )r:   r&   r;   r<   r=   r>   )r   Zworking_setr   r+   r,   r-   r.   Ú
isinstanceZDistInfoDistributionZhas_metadataZget_metadata_linesZget_metadataÚstripr   ZfeedÚcloseÚgetÚ
splitlinesÚ
startswithÚappendÚlenÚsorted)r   r5   Zquery_namesÚpackageZ	file_listZmetadataÚlinesÚpathsr8   ÚlineZfeed_parserZpkg_info_dictÚkeyr?   r   )r6   r*   r   r   /   s^    







r   Fc       	      C   sÈ  d}�x¼t | ƒD �]®\}}d}|dkr0tjdƒ tjd|jddƒƒ tjd|jd	dƒƒ tjd
|jddƒƒ tjd|jddƒƒ tjd|jddƒƒ tjd|jddƒƒ tjd|jddƒƒ tjd|jddƒƒ tjddj|jdg ƒƒƒ |�rxtjd|jddƒƒ tjd|jddƒƒ tjdƒ x"|jdg ƒD ]}tjd|ƒ �q0W tjd ƒ x&|jd!g ƒD ]}tjd|jƒ ƒ �q^W |rtjd"ƒ x&|jd#g ƒD ]}tjd|jƒ ƒ �q”W d#|krtjd$ƒ qW |S )%zD
    Print the informations from installed distributions found.
    FTr   z---zName: %sr%   Ú zVersion: %sr,   zSummary: %sr&   zHome-page: %sz	home-pagez
Author: %sr<   zAuthor-email: %szauthor-emailzLicense: %sr>   zLocation: %sr-   zRequires: %sz, r.   zMetadata-Version: %szmetadata-versionzInstaller: %sr9   zClassifiers:r?   z  %szEntry-points:r8   zFiles:r
   z!Cannot locate installed-files.txt)Ú	enumerater   ÚinforC   r4   rA   )	Zdistributionsr   r   Zresults_printedÚir6   Z
classifierÚentryrL   r   r   r   r   x   s>    



r   )FF)Z
__future__r   Zemail.parserr   Zloggingr2   Zpip.basecommandr   Zpip.status_codesr   r   Zpip._vendorr   Zpip._vendor.packaging.utilsr   Z	getLoggerr!   r   r	   r   r   r   r   r   r   Ú<module>   s   
I