ó
b]c           @   s   d  Z  d d l 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 „  Z d „  Z d „  Z d S(	   sB   Logic that powers autocompletion installed by ``pip completion``.
iÿÿÿÿN(   t   create_main_parser(   t   commands_dictt   get_summaries(   t   get_installed_distributionsc          C   s<  d t  j k r d St  j d j ƒ  d }  t t  j d ƒ } y |  | d } Wn t k
 rh d } n Xg  t ƒ  D] \ } } | ^ qs } g  } y- g  |  D] } | | k r› | ^ q› d } Wn t k
 r× d } n Xt ƒ  }	 | rF| d k rt j	 d ƒ n  | d k o| j
 d ƒ }
 |
 r¸g  } | j ƒ  } xO t d t ƒ D]> } | j j
 | ƒ rG| j |  d k rG| j | j ƒ qGqGW| r¸x | D] } | GHq–Wt j	 d ƒ q¸n  t | ƒ  } xZ | j j D]L } | j t j k rÒx1 | j | j D] } | j | | j f ƒ qûWqÒqÒWg  |  d | d !D] } | j d ƒ d ^ q4} g  | D]$ \ } } | | k rZ| | f ^ qZ} g  | D]' \ } } | j
 | ƒ r‹| | f ^ q‹} t |  | | j j ƒ } | røt | | ƒ } d „  | Dƒ } n  x0| D]@ } | d } | d r:| d d  d k r:| d 7} n  | GHqÿWnå g  |	 j D] } | j ^ qP} | j |	 j ƒ d „  | Dƒ } | j
 d ƒ rÑxd | D]/ } | j t j k r›| | j | j 7} q›q›Wn* t |  | | ƒ } | rût | | ƒ } n  d j g  | D] } | j
 | ƒ r| ^ qƒ GHt j	 d ƒ d S(   s?   Entry Point for completion of main and subcommand options.
    t   PIP_AUTO_COMPLETENt
   COMP_WORDSi   t
   COMP_CWORDt    i    t   helpt   showt	   uninstallt   -t
   local_onlyt   =c         s   s   |  ] } | d  f Vq d S(   i    N(    (   t   .0t   opt(    (    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pys	   <genexpr>M   s    i   s   --c         s   s"   |  ] } | D] } | Vq q d  S(   N(    (   R   t   itt   o(    (    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pys	   <genexpr>Y   s    t    (   R	   R
   (   t   ost   environt   splitt   intt
   IndexErrorR   t   NoneR    t   syst   exitt
   startswitht   lowerR   t   Truet   keyt   appendR   t   parsert   option_list_allR   t   optparset   SUPPRESS_HELPt
   _long_optst   _short_optst   nargst   get_path_completion_typet   auto_complete_pathst   option_groupst   option_listt   join(   t   cwordst   cwordt   currentt   cmdt   summaryt   subcommandst   optionst   wt   subcommand_nameR    t   should_list_installedt	   installedt   lct   distt
   subcommandR   t   opt_strt   xt	   prev_optst   vt   kt   completion_typet   optiont	   opt_labelt   it   opts(    (    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pyt   autocomplete   sx    
"-
	%	!114
0c         C   sÌ   | d k  s$ |  | d j  d ƒ r( d Sx | D]• } | j t j k rM q/ n  xt t | ƒ j d ƒ D]] } |  | d j d ƒ d | k rc | j s¶ t d „  | j j d ƒ Dƒ ƒ rÀ | j Sqc qc Wq/ Wd S(   sL  Get the type of path completion (``file``, ``dir``, ``path`` or None)

    :param cwords: same as the environmental variable ``COMP_WORDS``
    :param cword: same as the environmental variable ``COMP_CWORD``
    :param opts: The available options to check
    :return: path completion type (``file``, ``dir``, ``path`` or None)
    i   R   Nt   /R   i    c         s   s   |  ] } | d k Vq d S(   t   patht   filet   dirN(   RF   RG   RH   (    (   R   R;   (    (    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pys	   <genexpr>x   s   (   R   R   R"   R#   t   strR   t   metavart   any(   R,   R-   RC   R   R   (    (    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pyR'   h   s    $!c         #   s  t  j j |  ƒ \ } ‰  t  j j | ƒ } t  j | t  j ƒ sC d St  j j ˆ  ƒ ‰  ‡  f d †  t  j | ƒ Dƒ } x“ | D]‹ } t  j j | | ƒ } t  j j t  j j | | ƒ ƒ } | d k rÝ t  j j	 | ƒ rÝ | Vq{ t  j j
 | ƒ r{ t  j j | d ƒ Vq{ q{ Wd S(   so  If ``completion_type`` is ``file`` or ``path``, list all regular files
    and directories starting with ``current``; otherwise only list directories
    starting with ``current``.

    :param current: The word to be completed
    :param completion_type: path completion type(`file`, `path` or `dir`)i
    :return: A generator of regular files and/or directories
    Nc         3   s0   |  ]& } t  j j | ƒ j ˆ  ƒ r | Vq d  S(   N(   R   RF   t   normcaseR   (   R   R;   (   t   filename(    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pys	   <genexpr>   s    RH   R   (   R   RF   R   t   abspatht   accesst   R_OKRL   t   listdirR+   t   isfilet   isdir(   R.   R?   t	   directoryt   current_patht	   file_listt   fR   t	   comp_file(    (   RM   s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pyR(   }   s    	!(   t   __doc__R"   R   R   t   pip._internal.cli.main_parserR    t   pip._internal.commandsR   R   t   pip._internal.utils.miscR   RD   R'   R(   (    (    (    s?   lib/python2.7/site-packages/pip/_internal/cli/autocompletion.pyt   <module>   s   	[	