ó
“àfac           @@  s   d  d l  m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d  d l m	 Z	 d  d l
 m Z d  d l m Z d  d l m Z d  d	 l m Z d  d
 l m Z d  d l m Z d  d l m Z m Z m Z m Z d  d l m Z d  d l m Z d  d l m  Z  e  red  d l! m" Z" d  d l# m$ Z$ m% Z% m& Z& m' Z' d  d l( m) Z) d  d l* m+ Z+ n  e j, e- ƒ Z. d e	 f d „  ƒ  YZ/ d „  Z0 d „  Z1 d S(   i    (   t   absolute_importN(   t   six(   t
   cmdoptions(   t   IndexGroupCommand(   t   SUCCESS(   t   CommandError(   t   LinkCollector(   t   PackageFinder(   t   SelectionPreferences(   t   stdlib_pkgs(   t   dist_is_editablet   get_installed_distributionst   tabulatet   write_output(   t   get_installer(   t   map_multithread(   t   MYPY_CHECK_RUNNING(   t   Values(   t   Iteratort   Listt   Sett   Tuple(   t   Distribution(   t
   PipSessiont   ListCommandc           B@  sk   e  Z d  Z e Z d Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z d „  Z d	 „  Z d
 „  Z RS(   st   
    List installed packages, including editables.

    Packages are listed in a case-insensitive sorted order.
    s   
      %prog [options]c         C@  sé  |  j  j d d d d d t d d ƒ|  j  j d d	 d d d t d d
 ƒ|  j  j d d d d d t d d ƒ|  j  j d d d d d t d d ƒ|  j  j d d d d d d t d d ƒ|  j  j t j ƒ  ƒ |  j  j d d d d t d d ƒ|  j  j d d d d d d d d d) d d ƒ|  j  j d d d d d  d d! ƒ|  j  j d" d d# d d$ d d% ƒ|  j  j d& d d d d$ d d' d t ƒ|  j  j t j ƒ  ƒ t j t j |  j	 ƒ } |  j	 j
 d( | ƒ |  j	 j
 d( |  j  ƒ d  S(*   Ns   -os
   --outdatedt   actiont
   store_truet   defaultt   helps   List outdated packagess   -us
   --uptodates   List uptodate packagess   -es
   --editables   List editable projects.s   -ls   --localsS   If in a virtualenv that has global access, do not list globally-installed packages.s   --usert   destt   users,   Only output packages installed in user-site.s   --presY   Include pre-release and development versions. By default, pip only finds stable versions.s   --formatt   storet   list_formatt   columnst   choicest   freezet   jsonsB   Select the output format among: columns (default), freeze, or jsons   --not-requiredt   not_requireds>   List packages that are not dependencies of installed packages.s   --exclude-editablet   store_falset   include_editables%   Exclude editable package from output.s   --include-editables%   Include editable package from output.i    (   R!   R#   R$   (   t   cmd_optst
   add_optiont   FalseR   t	   list_patht   Truet   list_excludet   make_option_groupt   index_groupt   parsert   insert_option_group(   t   selft
   index_opts(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyt   add_options0   sx    														c         C@  sC   t  j | d | ƒ} t d t d | j ƒ } t j d | d | ƒ S(   sK   
        Create a package finder appropriate to this list command.
        t   optionst   allow_yankedt   allow_all_prereleasest   link_collectort   selection_prefs(   R   t   createR   R*   t   preR   (   R2   R5   t   sessionR8   R9   (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyt   _build_package_finder~   s    	c         C@  s   | j  r! | j r! t d ƒ ‚ n  t j | ƒ t t ƒ } | j rV | j | j ƒ n  t	 d | j
 d | j d | j d | j d | j d | ƒ } | j r° |  j | | ƒ } n  | j  rÎ |  j | | ƒ } n | j rì |  j | | ƒ } n  |  j | | ƒ t S(   Ns5   Options --outdated and --uptodate cannot be combined.t
   local_onlyt	   user_onlyt   editables_onlyt   include_editablest   pathst   skip(   t   outdatedt   uptodateR   R   t   check_list_path_optiont   setR	   t   excludest   updateR   t   localR   t   editableR'   t   pathR%   t   get_not_requiredt   get_outdatedt   get_uptodatet   output_package_listingR   (   R2   R5   t   argsRC   t   packages(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyt   run   s,    										c         C@  s5   g  |  j  | | ƒ D] } | j | j k r | ^ q S(   N(   t   iter_packages_latest_infost   latest_versiont   parsed_version(   R2   RR   R5   t   dist(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRN   ´   s    c         C@  s5   g  |  j  | | ƒ D] } | j | j k r | ^ q S(   N(   RT   RU   RV   (   R2   RR   R5   RW   (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRO   »   s    c         @  sQ   t  ƒ  ‰  x+ | D]# } ˆ  j d „  | j ƒ  Dƒ ƒ q Wt ‡  f d †  | Dƒ ƒ S(   Nc         s@  s   |  ] } | j  Vq d  S(   N(   t   key(   t   .0t   requirement(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pys	   <genexpr>Æ   s    c         @  s%   h  |  ] } | j  ˆ  k r | ’ q S(    (   RX   (   RY   t   pkg(   t   dep_keys(    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pys	   <setcomp>Ë   s   	 (   RG   RI   t   requirest   list(   R2   RR   R5   RW   (    (   R\   s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRM   Â   s    	!c         #@  sn   |  j  ˆ ƒ Y } |  j ˆ | ƒ ‰  ‡  ‡ f d †  } x+ t | | ƒ D] } | d  k	 rF | VqF qF WWd  QXd  S(   Nc         @  s±   ˆ  j  |  j ƒ } ˆ j sC g  | D] } | j j s" | ^ q" } n  ˆ  j d |  j ƒ } | j | ƒ } | d  k rw d  S| j } | j	 j
 r• d } n d } | |  _ | |  _ |  S(   Nt   project_namet   wheelt   sdist(   t   find_all_candidatesRX   R;   t   versiont   is_prereleaset   make_candidate_evaluatorR_   t   sort_best_candidatet   Nonet   linkt   is_wheelRU   t   latest_filetype(   RW   t   all_candidatest	   candidatet	   evaluatort   best_candidatet   remote_versiont   typ(   t   finderR5   (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyt   latest_infoÒ   s     						(   t   _build_sessionR=   R   Rg   (   R2   RR   R5   R<   Rr   RW   (    (   Rq   R5   s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRT   Í   s    c         C@  sâ   t  | d d „  ƒ} | j d k rR | rR t | | ƒ \ } } |  j | | ƒ nŒ | j d k r¹ xz | D]J } | j d k rœ t d | j | j | j ƒ qh t d | j | j ƒ qh Wn% | j d k rÞ t t	 | | ƒ ƒ n  d  S(	   NRX   c         S@  s   |  j  j ƒ  S(   N(   R_   t   lower(   RW   (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyt   <lambda>ó   t    R!   R#   i   s   %s==%s (%s)s   %s==%sR$   (
   t   sortedR    t   format_for_columnst   output_package_listing_columnst   verboseR   R_   Rc   t   locationt   format_for_json(   R2   RR   R5   t   datat   headerRW   (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRP   ï   s    c         C@  s   t  | ƒ d k r% | j d | ƒ n  t | ƒ \ } } t  | ƒ d k rq | j d d j t d „  | ƒ ƒ ƒ n  x | D] } t | ƒ qx Wd  S(   Ni    i   t    c         S@  s   d |  S(   Nt   -(    (   t   x(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRu     Rv   (   t   lent   insertR   t   joint   mapR   (   R2   R}   R~   t   pkg_stringst   sizest   val(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRy     s    ((   t   __name__t
   __module__t   __doc__R,   t   ignore_require_venvt   usageR4   R=   RS   RN   RO   RM   RT   RP   Ry   (    (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyR   %   s   	N		$				"	c         C@  s@  | j  } | r$ d d d d g } n d d g } g  } | j d k s[ t d „  |  Dƒ ƒ rk | j d ƒ n  | j d k rŠ | j d ƒ n  x© |  D]¡ } | j | j g } | rÒ | j | j ƒ | j | j ƒ n  | j d k sí t | ƒ r | j | j	 ƒ n  | j d k r%| j t
 | ƒ ƒ n  | j | ƒ q‘ W| | f S(	   s_   
    Convert the package data into something usable
    by output_package_listing_columns.
    t   Packaget   Versiont   Latestt   Typei   c         s@  s   |  ] } t  | ƒ Vq d  S(   N(   R
   (   RY   R   (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pys	   <genexpr>   s    t   Locationt	   Installer(   RD   Rz   t   anyt   appendR_   Rc   RU   Rj   R
   R{   R   (   t   pkgsR5   t   running_outdatedR~   R}   t   projt   row(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyRx     s(    	%c         C@  s²   g  } xœ |  D]” } i | j  d 6t j | j ƒ d 6} | j d k re | j | d <t | ƒ | d <n  | j r” t j | j ƒ | d <| j	 | d <n  | j
 | ƒ q Wt j | ƒ S(   Nt   nameRc   i   R{   t	   installerRU   Rj   (   R_   R   t	   text_typeRc   Rz   R{   R   RD   RU   Rj   R•   R$   t   dumps(   RR   R5   R}   RW   t   info(    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyR|   8  s    
	(2   t
   __future__R    R$   t   loggingt   pip._vendorR   t   pip._internal.cliR   t   pip._internal.cli.req_commandR   t   pip._internal.cli.status_codesR   t   pip._internal.exceptionsR   t   pip._internal.index.collectorR   t"   pip._internal.index.package_finderR   t$   pip._internal.models.selection_prefsR   t   pip._internal.utils.compatR	   t   pip._internal.utils.miscR
   R   R   R   t   pip._internal.utils.packagingR   t   pip._internal.utils.parallelR   t   pip._internal.utils.typingR   t   optparseR   t   typingR   R   R   R   t   pip._vendor.pkg_resourcesR   t   pip._internal.network.sessionR   t	   getLoggerR‰   t   loggerR   Rx   R|   (    (    (    s:   /tmp/pip-install-YjPQSb/pip/pip/_internal/commands/list.pyt   <module>   s0   ""í	&