î
Ó^ÝV·  ã               @   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 e j e ƒ Z Gd d „  d e ƒ Z d	 d
 „  Z d d „  Z d S)é    )Úabsolute_import)Ú
FeedParserN)ÚCommand)ÚSUCCESSÚERROR)Úpkg_resourcesc                   sF   e  Z d  Z d Z d Z d Z d Z ‡  f d d †  Z d d „  Z ‡  S)	ÚShowCommandz6Show information about one or more installed packages.Úshowz$
      %prog [options] <package> ...z*Show information about installed packages.c                s^   t  t |  ƒ j | | Ž  |  j j d d d d d d d d d	 d
 ƒ|  j j d |  j ƒ d  S)Nz-fz--filesÚdestÚfilesÚactionÚ
store_trueÚdefaultFÚhelpz7Show the full list of installed files for each package.r   )Úsuperr   Ú__init__Úcmd_optsÚ
add_optionÚparserÚinsert_option_group)ÚselfÚargsÚkw)Ú	__class__© ú0/tmp/pip-build-9m6vxulb/pip/pip/commands/show.pyr      s    		zShowCommand.__init__c             C   sC   | s t  j d ƒ t S| } t | ƒ } t | | j ƒ s? t St S)Nz.ERROR: Please provide a package name or names.)ÚloggerÚwarningr   Úsearch_packages_infoÚprint_resultsr   r   )r   Úoptionsr   ÚqueryÚresultsr   r   r   Úrun!   s    zShowCommand.run)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__ÚnameÚusageÚsummaryr   r#   r   r   )r   r   r      s   r   c             #   sø  t  d d „  t j Dƒ ƒ ‰ d d „  |  Dƒ } xÂ‡ f d d †  | Dƒ D]§‰  i ˆ  j d 6ˆ  j d 6ˆ  j d 6d d „  ˆ  j ƒ  Dƒ d	 6} d
 } d
 } t ˆ  t j ƒ r5ˆ  j	 d ƒ rˆ  j
 d ƒ } d d „  | Dƒ } ‡  f d d †  | Dƒ } ‡  f d d †  | Dƒ } n  ˆ  j	 d ƒ r©ˆ  j d ƒ } q©nt ˆ  j	 d ƒ rˆˆ  j
 d ƒ } ‡  f d d †  | Dƒ } ‡  f d d †  | Dƒ } n  ˆ  j	 d ƒ r©ˆ  j d ƒ } n  ˆ  j	 d ƒ rÔˆ  j
 d ƒ } | | d <n  d
 } ˆ  j	 d ƒ r"x6 ˆ  j
 d ƒ D]" }	 |	 j ƒ  rù|	 j ƒ  } PqùqùWn  | | d <t ƒ  }
 |
 j | ƒ |
 j ƒ  } x! d! D] } | j | ƒ | | <qUWg  } xM | j ƒ  D]? }	 |	 s•Pn  |	 j d ƒ r…| j |	 t d ƒ d
 … ƒ q…q…W| | d <| rët | ƒ | d  <n  | VqI Wd
 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  |  ] } | j  j ƒ  | f ‘ q Sr   )Úproject_nameÚlower)Ú.0Úpr   r   r   ú
<listcomp>5   s   	 z(search_packages_info.<locals>.<listcomp>c             S   s   g  |  ] } | j  ƒ  ‘ q Sr   )r,   )r-   r(   r   r   r   r/   6   s   	 c                s&   g  |  ] } | ˆ  k r ˆ  | ‘ q Sr   r   )r-   Úpkg)Ú	installedr   r   r/   7   s   	 r(   ÚversionÚlocationc             S   s   g  |  ] } | j  ‘ q Sr   )r+   )r-   Údepr   r   r   r/   <   s   	 ÚrequiresNÚRECORDc             S   s#   g  |  ] } | j  d  ƒ d ‘ q S)ú,r   )Úsplit)r-   Úlr   r   r   r/   D   s   	 c                s(   g  |  ] } t  j j ˆ  j | ƒ ‘ q Sr   )ÚosÚpathÚjoinr3   )r-   r.   )Údistr   r   r/   E   s   	 c                s(   g  |  ] } t  j j | ˆ  j ƒ ‘ q Sr   )r:   r;   Úrelpathr3   )r-   r.   )r=   r   r   r/   F   s   	 ÚMETADATAzinstalled-files.txtc                s(   g  |  ] } t  j j ˆ  j | ƒ ‘ q Sr   )r:   r;   r<   Úegg_info)r-   r.   )r=   r   r   r/   N   s   	 c                s(   g  |  ] } t  j j | ˆ  j ƒ ‘ q Sr   )r:   r;   r>   r3   )r-   r.   )r=   r   r   r/   O   s   	 zPKG-INFOzentry_points.txtÚentry_pointsÚ	INSTALLERÚ	installerúmetadata-versionr*   ú	home-pageÚauthorúauthor-emailÚlicensezClassifier: Úclassifiersr   )rD   zsummaryrE   zauthorrG   zlicense)Údictr   Úworking_setr+   r2   r3   r5   Ú
isinstanceÚDistInfoDistributionÚhas_metadataÚget_metadata_linesÚget_metadataÚstripr   ÚfeedÚcloseÚgetÚ
splitlinesÚ
startswithÚappendÚlenÚsorted)r!   Úquery_namesÚpackageÚ	file_listÚmetadataÚlinesÚpathsrA   rC   ÚlineÚfeed_parserÚpkg_info_dictÚkeyrI   r   )r=   r1   r   r   -   sf     



	
$
r   c             C   s  d } x|  D]} d } t  j d ƒ t  j d | j d ƒ ƒ t  j d | d ƒ t  j d | d	 ƒ t  j d
 | j d ƒ ƒ t  j d | j d ƒ ƒ t  j d | j d ƒ ƒ t  j d | j d ƒ ƒ | d d k	 rò t  j d | d ƒ n  t  j d | j d ƒ ƒ t  j d | d ƒ t  j d d j | d ƒ ƒ t  j d ƒ x" | d D] } t  j d | ƒ qTW| rËt  j d ƒ d  | k r»x8 | d  D] } t  j d | j ƒ  ƒ q˜WqËt  j d! ƒ n  d" | k r t  j d# ƒ x+ | d" D] } t  j d | j ƒ  ƒ qïWq q W| S)$zD
    Print the informations from installed distributions found.
    FTz---zMetadata-Version: %szmetadata-versionzName: %sr(   zVersion: %sr2   zSummary: %sr*   zHome-page: %sz	home-pagez
Author: %srF   zAuthor-email: %szauthor-emailrC   NzInstaller: %szLicense: %srH   zLocation: %sr3   zRequires: %sz, r5   zClassifiers:rI   z  %szFiles:r   z!Cannot locate installed-files.txtrA   zEntry-points:)r   ÚinforT   r<   rQ   )ÚdistributionsÚlist_all_filesÚresults_printedr=   Ú
classifierr`   r   r   r   r   x   s<    !r   )Ú
__future__r   Úemail.parserr   Úloggingr:   Úpip.basecommandr   Úpip.status_codesr   r   Úpip._vendorr   Ú	getLoggerr$   r   r   r   r   r   r   r   r   Ú<module>   s   K