
}_                 @   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 Gd d	   d	 e  Z d
 d   Z d d d d  Z d S)    )absolute_import)
FeedParserN)Command)SUCCESSERROR)pkg_resources)canonicalize_namec                   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-3_sjtvrs/pip/pip/commands/show.pyr      s    		zShowCommand.__init__c             C   sO   | s t  j d  t S| } t |  } t | d | j d | j sK t St S)Nz.ERROR: Please provide a package name or names.
list_filesverbose)loggerwarningr   search_packages_infoprint_resultsr   r   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  i   x$ t  j D] } |  t | j  <q Wd d   |  D } x f d d   | D D]r  d   j d   j d   j d d d     j   D i } 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  } nn   j	 d  r  j
 d  }   f d d   | D }   f d d   | D }   j	 d  r  j d  }   j	 d  r  j
 d  } | | d <  j	 d  rx4   j
 d  D]# }	 |	 j   r|	 j   | d <PqWt   }
 |
 j |  |
 j   } x! d  D] } | j |  | | <qAWg  } x@ | j   D]2 }	 |	 j d  rq| j |	 t d  d	   qqW| | d <| rt |  | d <| VqZ 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  |  ] } t  |   q Sr   )r   ).0r+   r   r   r   
<listcomp>:   s   	 z(search_packages_info.<locals>.<listcomp>c                s&   g  |  ] } |   k r   |  q Sr   r   )r.   pkg)	installedr   r   r/   <   s   	 r+   versionlocationrequiresc             S   s   g  |  ] } | j   q Sr   )project_name)r.   depr   r   r   r/   A   s   	 N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 Sr   )ospathjoinr3   )r.   p)distr   r   r/   J   s   	 c                s(   g  |  ] } t  j j |   j   q Sr   )r;   r<   relpathr3   )r.   r>   )r?   r   r   r/   K   s   	 METADATAzinstalled-files.txtc                s(   g  |  ] } t  j j   j |   q Sr   )r;   r<   r=   egg_info)r.   r>   )r?   r   r   r/   S   s   	 c                s(   g  |  ] } t  j j |   j   q Sr   )r;   r<   r@   r3   )r.   r>   )r?   r   r   r/   T   s   	 zPKG-INFOzentry_points.txtentry_points	INSTALLER	installermetadata-versionr-   	home-pageauthorauthor-emaillicensezClassifier: classifiersr   )rF   r-   rG   rH   rI   rJ   )r   working_setr   r5   r2   r3   r4   
isinstanceDistInfoDistributionhas_metadataget_metadata_linesget_metadatastripr   feedcloseget
splitlines
startswithappendlensorted)r$   r>   query_namespackage	file_listmetadatalinespathsrC   linefeed_parserpkg_info_dictkeyrK   r   )r?   r1   r   r!   /   s^     			
	
!
r!   Fc       	      C   sb  d } xUt  |   D]G\ } } d } | d k r> t 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     | rt j d | j d d   t j d | j d d   t j d  x* | j d g   D] } t j d |  qWt j d   x0 | j d! g   D] } t j d | j    qW| r t j d"  x0 | j d# g   D] } t j d | j    q!Wd# | k r t j d$  q W| S)%zD
    Print the informations from installed distributions found.
    FTr   z---zName: %sr+    zVersion: %sr2   zSummary: %sr-   zHome-page: %sz	home-pagez
Author: %srH   zAuthor-email: %szauthor-emailzLicense: %srJ   zLocation: %sr3   zRequires: %sz, r4   zMetadata-Version: %szmetadata-versionzInstaller: %srE   zClassifiers:rK   z  %szEntry-points:rC   zFiles:r   z!Cannot locate installed-files.txt)	enumerater   inforU   r=   rR   )	distributionsr   r   results_printedir?   
classifierentryra   r   r   r   r"   x   s>    %	r"   )
__future__r   email.parserr   loggingr;   pip.basecommandr   pip.status_codesr   r   pip._vendorr   pip._vendor.packaging.utilsr   	getLoggerr'   r   r	   r!   r"   r   r   r   r   <module>   s   I