3
e-                 @   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yd dl	m
Z
 W n  ek
rt   d dlm
Z
 Y nX ejde
d 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" yd dl	m#Z# W n" ek
r.   d dlm#Z# Y nX d dl$Z%e%j&Z&dZ'ej(e)Z*ejde#d dd Z+dd Z,dd Z-dd Z.dddZ/G dd de0Z1e)dkrej2e/  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                 sZ  dt jkrdS t jd j dd } tt jd }y| |d   W n tk
rZ   d Y nX dd t D g }yfd	d| D d
 }W n tk
r   d}Y nX t }|r|dkrtjd |dkoԈ j	d rJg } j
 }x<tddD ].}|jj	|r|j| dd kr|j|j qW |rJx|D ]}t| q.W t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 r|
d7 }
t|
 qW np j	ds j	dr0d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-argcdawy/pip/pip/__init__.py
<listcomp>N   s    z autocomplete.<locals>.<listcomp>c                s   g | ]}| kr|qS r   r   )r   w)subcommandsr   r    r!   R   s    r   help	uninstall-T)
local_onlyc             S   s&   g | ]}|j tjkr|j |jfqS r   )r$   optparseSUPPRESS_HELPget_opt_stringnargs)r   optr   r   r    r!   j   s   c             S   s   g | ]}|j d d qS )=r   )split)r   xr   r   r    r!   o   s    c                s    g | ]\}}| kr||fqS r   r   )r   r/   v)	prev_optsr   r    r!   p   s    c                s"   g | ]\}}|j  r||fqS r   )
startswith)r   kr0   )currentr   r    r!   r   s    r-   z--c             S   s   g | ]
}|j qS r   )option_list)r   ir   r   r    r!   |   s    c             s   s   | ]}|D ]
}|V  q
qd S )Nr   )r   itor   r   r    	<genexpr>~   s    zautocomplete.<locals>.<genexpr>c             S   s    g | ]}|j tjkr|j qS r   )r$   r(   r)   r*   )r   r6   r   r   r    r!      s     c                s   g | ]}|j  r|qS r   )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    autocomplete>   s\    








rU   c              C   s   ddt  dt d} tf | }|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]Fglobal)usageadd_help_option	formattername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r>tjj|j tjjtj tj  | s\|d dkrlt	|dkrl|j
  tj  |d }|tkrt|}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| \}}W nJ tk
r~ } z.t jjd|  t jjt	j
 t jd W Y d d }~X nX ytjtjd W n0 tjk
r } ztjd| W Y d d }~X nX t| t|d}|j|S )Nr   z	ERROR: %sr   z%Ignoring error %s when setting locale)r   )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               @   sL   e Zd Zf 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)rZ   reqeditablecomments)selfrZ   r   r   r   r   r   r    __init__   s    zFrozenRequirement.__init__z-r(\d+)$z-(20\d\d\d\d\d\d)$c             C   s  t jjt jj|j}g }ddlm}m} t|r|j	|rd}y|||}W n2 t
k
r }	 ztjd|	 d }W Y d d }	~	X nX |d krtjd| |jd |j }d}nd}|j }|j}
t|
dkr|
d d dkstd|
|f |
d d }| jj|}| jj|}|s|r|jd}|r:| j||}|sXtjd| |jd nF|jd|  |rx|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   rZ   matchr   r   r    r   B  s
    zFrozenRequirement.egg_namec             C   s2   | 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__J  s    zFrozenRequirement.__str__N)__name__
__module____qualname__r   r   compiler   r   classmethodr   staticmethodr   r   r   r   r   r    r      s   

Ar   __main__)N)3
__future__r   r   loggingr;   r(   warningsr@   r   Z0pip._vendor.requests.packages.urllib3.exceptionsr   ImportErrorZurllib3.exceptions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>   sH   
	
I*	
[
