
}_T,                 @   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 Z d  d l	 m
 Z
 e j d d e
 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 j0 e-    d S)    )absolute_importN)DependencyWarningignorecategory)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9.0.1c                 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   } | rZ| d k r t j d  | d k r  j	 d  rg  }   j
   } xR t d d  D]A } | j j	 |  r.| j |  d d  k r.| j | j  q.W| rx | D] } t |  qWt j d  t |   } | d d   | j j D 7} d d   |  d | d  D   f d d   | D }   f d d   | D } x | D]. }	 |	 d
 }
 |	 d rI|
 d 7}
 t |
  q%Wn   j	 d  sx  j	 d  rd d   | j D } | j | j  d d   | D }  d d   | D 7 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, zsh or fish).
    PIP_AUTO_COMPLETEN
COMP_WORDS   
COMP_CWORD c             S   s   g  |  ] \ } } |  q S r   ).0cmdsummaryr   r   +/tmp/pip-build-3_sjtvrs/pip/pip/__init__.py
<listcomp>G   s   	 z autocomplete.<locals>.<listcomp>c                s"   g  |  ] } |   k r |  q Sr   r   )r   w)subcommandsr   r    r!   K   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!   c   s   	c             S   s#   g  |  ] } | j  d   d  q S)=r   )split)r   xr   r   r    r!   h   s   	 c                s.   g  |  ]$ \ } } |   k r | | f  q Sr   r   )r   r/   v)	prev_optsr   r    r!   i   s   	 c                s1   g  |  ]' \ } } | j     r | | f  q Sr   )
startswith)r   kr0   )currentr   r    r!   k   s   	 r-   z--c             S   s   g  |  ] } | j   q Sr   )option_list)r   ir   r   r    r!   u   s   	 c             s   s"   |  ] } | D] } | Vq q d  S)Nr   )r   itor   r   r    	<genexpr>w   s    zautocomplete.<locals>.<genexpr>c             S   s.   g  |  ]$ } | j  t j k r | j    q Sr   )r$   r(   r)   r*   )r   r6   r   r   r    r!   y   s   	  c                s%   g  |  ] } | j     r |  q Sr   )r2   )r   r/   )r4   r   r    r!   |   s   	 )osenvironr.   int
IndexErrorr   create_main_parsersysexitr2   lowerr	   keyappendprintr   parseroption_list_alloption_groupsr5   join)cwordscwordoptionssubcommand_namerF   	installedlcdist
subcommandoption	opt_labeloptsr   )r4   r1   r#   r    autocomplete7   s\    !	+!


&rU   c           
   C   s   d d d d d t    d d d t   i }  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)Nusagez
%prog <command> [options]add_help_optionF	formatternameglobalprogzpip %s from %s (python %s)   Tr   c             S   s&   g  |  ] \ } } d  | | f  q S)z%-27s %sr   )r   r6   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   rI   description)	parser_kwrF   pip_pkg_dirgen_optscommand_summariesrk   r   r   r    r?      s"    	
* 		r?   c             C   s  t    } | j |   \ } } | j rW t j j | j  t j j t j  t j   | s | d d k r t	 |  d k r | j
   t j   | d } | t k r t |  } d | g } | r | j d |  t d j |    |  d  d   } | j |  | | f S)Nr   r$   r   zunknown command "%s"zmaybe you meant "%s"z - )r?   
parse_argsre   r@   stdoutwriter;   lineseprA   len
print_helpr   r   rD   r   rI   remove)argsrF   general_options	args_elsecmd_nameguessmsgcmd_argsr   r   r    	parseopts   s&    			
)


r~   c             C   s   d } d |  k r d } | S)NFz
--isolatedTr   )rw   isolatedr   r   r    check_isolated   s    r   c              C   s  |  d  k r t  j d d   }  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 Xy t j t j d  Wn8 t j k
 r } z t j d |  WYd  d  } ~ Xn Xt | d t |   } | j |  S)Nr   z	ERROR: %sr   z%Ignoring error %s when setting localer   )r@   argvr   install_warning_loggerrU   r~   r   stderrrr   r;   rs   rA   locale	setlocaleLC_ALLErrorloggerdebugr   r   rj   )rw   rz   r}   excecommandr   r   r    rj      s     
 #rj   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   sF  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 r0t j d |  | j d  | j   } d } nCd } | j   } | j }
 t |
  d k r.|
 d d d k sDt d |
 | f   |
 d d } |  j j |  } |  j j |  } | s| r0| j d  } | r|   j | |  } | st j d |  | j d  n^ | j d |  | r| j d  } n d | j d  } d } d | | |  j |  f } |  | 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`   normcaserb   locationpip.vcsr   r   r   get_backend_namer   r   warningrD   as_requirementspecsrt   AssertionError_rev_research_date_reget_backendget_locationgroupegg_nameproject_name)clsrP   dependency_linksr   r   r   r   r   r   r   r   re   	ver_match
date_matchsvn_backendsvn_locationrevr   r   r    	from_dist   sf    !
		)		

zFrozenRequirement.from_distc             C   s>   |  j    } t j d |  } | r: | d  | j    } | S)Nz
-py\d\.\d$)r   rer   start)rP   rY   matchr   r   r    r   ;  s
    zFrozenRequirement.egg_namec             C   sC   |  j  } |  j r d | } d j t |  j  t |  g  d S)Nz-e %sr^   )r   r   rI   listr   str)r   r   r   r   r    __str__C  s    		
zFrozenRequirement.__str__N)__name__
__module____qualname__r   r   compiler   r   classmethodr   staticmethodr   r   r   r   r   r    r      s   Ar   __main__)1
__future__r   r   loggingr;   r(   warningsr@   r   Z0pip._vendor.requests.packages.urllib3.exceptionsr   filterwarningspip.exceptionsr   r   r   	pip.utilsr	   r
   r   r   r   r   r   r   r   pip.baseparserr   r   pip.commandsr   r   r   r   Zpip.cmdoptionspiprf   rd   	getLoggerr   r   rU   r?   r~   r   rj   objectr   rA   r   r   r   r    <module>   s<   
"
	I*	[