
 X                 @   s   d  d l  m Z d  d l m Z 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 m Z Gd d	   d	 e  Z d
 S)    )Command)DistributionNotFoundBestVersionAlreadyInstalled)PackageFinder)logger)InstallRequirement)get_installed_distributionsdist_is_editable)make_option_groupindex_groupc                   s   e  Z d  Z d Z d Z d Z d Z d g Z   f d d   Z d d	   Z	 d
 d   Z
 d d   Z d d   Z d d   Z d d   Z d d   Z d d   Z   S)ListCommandz-List installed packages, including editables.listz
      %prog [options]zList installed packages.pythonc          	      s  t  t |   j | |   |  j } | j d d d d d d d d | j d	 d
 d d d d d d | j d d d d d d d d | j d d d d d d d d | j d d d d d d d t t |  j  } |  j j d |  |  j j d |  d  S)Nz-oz
--outdatedaction
store_truedefaultFhelpz,List outdated packages (excluding editables)z-uz
--uptodatez,List uptodate packages (excluding editables)z-ez
--editablezList editable projects.z-lz--localzSIf in a virtualenv that has global access, do not list globally-installed packages.z--prezYInclude pre-release and development versions. By default, pip only finds stable versions.r   )	superr   __init__cmd_opts
add_optionr
   r   parserinsert_option_group)selfargskwr   
index_opts)	__class__ </home/ubuntu/projects/ifolica/build/pip/pip/commands/list.pyr      s<    					zListCommand.__init__c             C   sI   t  d | j d | d | j d | j d | j d | j d | j d |  S)	zK
        Create a package finder appropriate to this list command.
        
find_links
index_urlsallow_externalallow_unverifiedallow_all_externalallow_all_prereleasesprocess_dependency_linkssession)r   r    r"   r#   r$   prer&   )r   optionsr!   r'   r   r   r   _build_package_finder9   s    					z!ListCommand._build_package_finderc             C   s\   | j  r |  j |  n? | j r2 |  j |  n& | j rK |  j |  n |  j |  d  S)N)outdatedrun_outdateduptodaterun_uptodateeditablerun_editablesrun_listing)r   r)   r   r   r   r   runH   s    			zListCommand.runc             C   sY   xR |  j  |  D]A \ } } } | | j k r t j d | j | j | f  q q Wd  S)Nz%s (Current: %s Latest: %s))find_packages_latests_versionsparsed_versionr   notifyproject_nameversion)r   r)   distremote_version_rawremote_version_parsedr   r   r   r,   R   s    zListCommand.run_outdatedc             c   s  | j  g | j } | j r? t j d d j |   g  } n  | j r[ t j d d  n  | j r t j d d  | | j 7} n  g  } xK t	 d | j
 d |  j  D]. } | j d  r | j | j d   q q W|  j |  } |  j | | |  } | j |  t	 d | j
 d	 d
 d |  j  } x | D] } t j | j d   } y( | j | d  }	 |	 d  k rsw1n  Wn/ t k
 rw1YnH t k
 r| j }
 Yn. X| j |	 | j  d }
 |
 d } |
 d } | | | f Vq1Wd  S)NzIgnoring indexes: %s,z1.7z--use-mirrors has been deprecated and will be removed in the future. Explicit uses of --index-url and/or --extra-index-url is suggested.z--mirrors has been deprecated and will be removed in  the future. Explicit uses of --index-url and/or --extra-index-url is suggested.
local_onlyskipzdependency_links.txtinclude_editablesFTr      )	index_urlextra_index_urlsno_indexr   r5   joinuse_mirrors
deprecatedmirrorsr   localr=   has_metadataextendget_metadata_lines_build_sessionr*   add_dependency_linksr   	from_linekeyfind_requirementr   r   installed_version_link_package_versionsname)r   r)   r!   dependency_linksr8   r'   finderinstalled_packagesreqlinkremote_versionr9   r:   r   r   r   r3   X   sD    				
		"!


z*ListCommand.find_packages_latests_versionsc             C   s,   t  d | j d |  j  } |  j |  d  S)Nr<   r=   )r   rG   r=   output_package_listing)r   r)   rU   r   r   r   r1      s    zListCommand.run_listingc             C   s)   t  d | j d d  } |  j |  d  S)Nr<   editables_onlyT)r   rG   rY   )r   r)   rU   r   r   r   r0      s    zListCommand.run_editablesc             C   s{   t  | d d d   } x\ | D]T } t |  rP d | j | j | j f } n d | j | j f } t j |  q Wd  S)NrN   c             S   s   |  j  j   S)N)r6   lower)r8   r   r   r   <lambda>   s    z4ListCommand.output_package_listing.<locals>.<lambda>z%s (%s, %s)z%s (%s))sortedr	   r6   r7   locationr   r5   )r   rU   r8   liner   r   r   rY      s    z"ListCommand.output_package_listingc             C   sY   g  } x? |  j  |  D]. \ } } } | j | k r | j |  q q W|  j |  d  S)N)r3   r4   appendrY   )r   r)   r-   r8   r9   r:   r   r   r   r.      s
    zListCommand.run_uptodate)__name__
__module____qualname____doc__rR   usagesummaryr=   r   r*   r2   r,   r3   r1   r0   rY   r.   r   r   )r   r   r   
   s   	%
4	r   N)pip.basecommandr   pip.exceptionsr   r   	pip.indexr   pip.logr   pip.reqr   pip.utilr   r	   Zpip.cmdoptionsr
   r   r   r   r   r   r   <module>   s   