
^V!(                 @   s  d  d l  m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l m	 Z	 m
 Z
 m Z d  d l m Z m Z d  d l m Z m Z d  d l m Z m Z m Z m Z d  d l m Z m Z d  d l m Z m Z d  d	 l m Z d  d
 l m Z d  d l Z  e  j! Z! d Z" e j# e$  Z% e j& d d e d d   Z' d d   Z( d d   Z) d d   Z* d d d  Z+ Gd d   d e,  Z- e$ d k re j. e+    n  d S)    )absolute_importN)InstallationErrorCommandErrorPipError)get_installed_distributionsget_prog)deprecationdist_is_editable)git	mercurial
subversionbazaar)ConfigOptionParserUpdatingDefaultsHelpFormatter)get_summariesget_similar_commands)commands_dict)InsecureRequestWarningz8.1.0ignorecategoryc                 s  d t  j k r d St  j d j   d d  }  t t  j d  } y |  | d   Wn t k
 ro d   Yn Xd d   t   D  g  } y!  f d	 d   |  D d
 } Wn t k
 r d } Yn Xt   } | ri| d k r t j d  n  | d k r  j	 d  rg  }   j
   } xU t d d  D]D } | j j	 |  r1| j |  d d  k r1| j | j  q1q1W| rx | D] } t |  qWt j d  qn  t |   } | d d   | j j D 7} d d   |  d | d  D   f d d   | D }   f d d   | D } x | D]1 }	 |	 d
 }
 |	 d rX|
 d 7}
 n  t |
  q1Wn   j	 d  s  j	 d  rd d   | j D } | j | j  d d   | D }  d d   | D 7 n  t d j   f d d    D   t j d  d S)zCommand and option completion for the main option parser (and options)
    and its subcommands (and options).

    Enable by sourcing one of the completion shell scripts (bash or zsh).
    PIP_AUTO_COMPLETEN
COMP_WORDS   
COMP_CWORD c             S   s   g  |  ] \ } } |  q S r   ).0cmdsummaryr   r   +/tmp/pip-build-9m6vxulb/pip/pip/__init__.py
<listcomp>:   s   	 z autocomplete.<locals>.<listcomp>c                s"   g  |  ] } |   k r |  q Sr   r   )r   w)subcommandsr   r   r    >   s   	 r   help	uninstall-
local_onlyTc             S   s7   g  |  ]- } | j  t j k r | j   | j f  q Sr   )r#   optparseSUPPRESS_HELPget_opt_stringnargs)r   optr   r   r   r    V   s   	c             S   s#   g  |  ] } | j  d   d  q S)=r   )split)r   xr   r   r   r    [   s   	 c                s.   g  |  ]$ \ } } |   k r | | f  q Sr   r   )r   r.   v)	prev_optsr   r   r    \   s   	 c                s1   g  |  ]' \ } } | j     r | | f  q Sr   )
startswith)r   kr/   )currentr   r   r    ^   s   	 r,   z--c             S   s   g  |  ] } | j   q Sr   )option_list)r   ir   r   r   r    h   s   	 c             s   s"   |  ] } | D] } | Vq q d  S)Nr   )r   itor   r   r   	<genexpr>j   s    zautocomplete.<locals>.<genexpr>c             S   s.   g  |  ]$ } | j  t j k r | j    q Sr   )r#   r'   r(   r)   )r   r5   r   r   r   r    l   s   	  c                s%   g  |  ] } | j     r |  q Sr   )r1   )r   r.   )r3   r   r   r    o   s   	 )osenvironr-   int
IndexErrorr   create_main_parsersysexitr1   lowerr   keyappendprintr   parseroption_list_alloption_groupsr4   join)cwordscwordoptionssubcommand_namerE   	installedlcdist
subcommandoption	opt_labeloptsr   )r3   r0   r"   r   autocomplete*   s\    !	+!

&rT   c              C   s   i d d 6d d 6t    d 6d d 6t   d 6}  t |    } | j   t j j t j j t j j t    } d	 t	 | t
 j d  d
  f | _ t j t j |  } | j |  d | _ t   } d g d d   | D } d j |  | _ | S)Nz
%prog <command> [options]usageFadd_help_option	formatterglobalnameprogzpip %s from %s (python %s)   Tr   c             S   s&   g  |  ] \ } } d  | | f  q S)z%-27s %sr   )r   r5   jr   r   r   r       s   	 z&create_main_parser.<locals>.<listcomp>
)r   r   r   disable_interspersed_argsr:   pathdirnameabspath__file____version__r?   version
cmdoptionsmake_option_groupgeneral_groupadd_option_groupmainr   rH   description)	parser_kwrE   pip_pkg_dirgen_optscommand_summariesrj   r   r   r   r>   s   s$    

* 		r>   c             C   s"  t    } | j |   \ } } | j rZ t j j | j  t j j t j  t j   n  | s | d d k r t	 |  d k r | j
   t j   n  | d } | t k r t |  } d | g } | r | j d |  n  t d j |    n  |  d  d   } | j |  | | f S)Nr   r#   r   zunknown command "%s"zmaybe you meant "%s"z - )r>   
parse_argsrd   r?   stdoutwriter:   linesepr@   len
print_helpr   r   rC   r   rH   remove)argsrE   general_options	args_elsecmd_nameguessmsgcmd_argsr   r   r   	parseopts   s&    			)

r}   c             C   s   d } d |  k r d } n  | S)NFz
--isolatedTr   )rv   isolatedr   r   r   check_isolated   s    	r   c             C   s   |  d  k r" t  j d d   }  n  t j   t   y t |   \ } } WnY t k
 r } z9 t  j j d |  t  j j t	 j
  t  j d  WYd  d  } ~ Xn Xt | d t |   } | j |  S)Nr   z	ERROR: %sr~   )r?   argvr   install_warning_loggerrT   r}   r   stderrrq   r:   rr   r@   r   r   ri   )rv   ry   r|   exccommandr   r   r   ri      s    
 ri   c               @   sm   e  Z d  Z f  d d  Z e j d  Z e j d  Z e d d    Z	 e
 d d    Z d	 d
   Z d S)FrozenRequirementc             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)rY   reqeditablecomments)selfrY   r   r   r   r   r   r   __init__   s    			zFrozenRequirement.__init__z-r(\d+)$z-(20\d\d\d\d\d\d)$c             C   sO  t  j j t  j j | j   } g  } d d l m } m } t |  r | j	 |  r d } y | | |  } Wn; t
 k
 r }	 z t j d |	  d  } WYd  d  }	 ~	 Xn X| d  k r9t j d |  | j d  | j   } d } q9nId } | j   } | j }
 t |
  d k r1|
 d d d k sGt d |
 | f   |
 d d } |  j j |  } |  j j |  } | s| r9| j d  } | r|   j | |  } n  | st j d |  | j d  q9| j d |  | r| j d  } n d | j d  } d } d | | |  j |  f } n  |  | j | | |  S)Nr   )vcsget_src_requirementTzYError when trying to get requirement for VCS system %s, falling back to uneditable formatz-Could not determine repository location of %sz-## !! Could not determine repository locationFr   =====z5Expected 1 spec with == or ===; specs = %r; dist = %rsvnz(Warning: cannot find svn location for %szF## FIXME: could not find svn URL in dependency_links for this package:z3# Installing as editable to satisfy requirement %s:z{%s}z%s@%s#egg=%s)r   r   )r:   r_   normcasera   locationpip.vcsr   r   r	   get_backend_namer   loggerwarningrC   as_requirementspecsrs   AssertionError_rev_research_date_reget_backendget_locationgroupegg_nameproject_name)clsrO   dependency_linksr   r   r   r   r   r   r   r   rd   	ver_match
date_matchsvn_backendsvn_locationrevr   r   r   	from_dist   sf    !
	)	

zFrozenRequirement.from_distc             C   sA   |  j    } t j d |  } | r= | d  | j    } n  | S)Nz
-py\d\.\d$)r   rer   start)rO   rY   matchr   r   r   r   '  s
    zFrozenRequirement.egg_namec             C   sF   |  j  } |  j r d | } n  d j t |  j  t |  g  d S)Nz-e %sr]   )r   r   rH   listr   str)r   r   r   r   r   __str__/  s    		zFrozenRequirement.__str__N)__name__
__module____qualname__r   r   compiler   r   classmethodr   staticmethodr   r   r   r   r   r   r      s   Ar   __main__)/
__future__r   loggingr:   r'   warningsr?   r   pip.exceptionsr   r   r   	pip.utilsr   r   r   r	   r   r
   r   r   r   pip.baseparserr   r   pip.commandsr   r   r   Z0pip._vendor.requests.packages.urllib3.exceptionsr   Zpip.cmdoptionspipre   rc   	getLoggerr   r   filterwarningsrT   r>   r}   r   ri   objectr   r@   r   r   r   r   <module>   s6   "
	I*	[