3
d.                 @   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e
d yd dlZW n ek
r~   Y nNX ejdkreedd dk ryd d	lmZ W n eefk
r   Y n
X ej  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/Z0ejde)d dd Z1dd Z2dd Z3dd Z4d ddZ5G dd de6Z7e/dkrej8e5  dS )!    )absolute_importN)DependencyWarningignore)categorydarwinOPENSSL_VERSION_NUMBERi )securetransport)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.3c                 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-m1e5kync/pip/pip/__init__.py
<listcomp>U   s    z autocomplete.<locals>.<listcomp>c                s   g | ]}| kr|qS r   r   )r    w)subcommandsr   r#   r$   Y   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$   q   s   c             S   s   g | ]}|j d d qS )=r   )split)r    xr   r   r#   r$   v   s    c                s    g | ]\}}| kr||fqS r   r   )r    r2   v)	prev_optsr   r#   r$   w   s    c                s"   g | ]\}}|j  r||fqS r   )
startswith)r    kr3   )currentr   r#   r$   y   s    r0   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    r9   r   r   r#   r$      s     c                s   g | ]}|j  r|qS r   )r5   )r    r2   )r7   r   r#   r$      s    )osenvironr1   int
IndexErrorr   create_main_parsersysexitr5   lowerr   keyappendprintr   parseroption_list_alloption_groupsr8   join)cwordscwordoptionssubcommand_namerI   	installedlcdist
subcommandoption	opt_labeloptsr   )r7   r4   r&   r#   autocompleteE   s\    








rX   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    r9   jr   r   r#   r$      s    z&create_main_parser.<locals>.<listcomp>
)r   r   r   disable_interspersed_argsr>   pathdirnameabspath__file____version__rC   version
cmdoptionsmake_option_groupgeneral_groupadd_option_groupmainr   rL   description)	parser_kwrI   pip_pkg_dirgen_optscommand_summariesrn   r   r   r#   rB      s"    


rB   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 - )rB   
parse_argsrh   rC   stdoutwriter>   lineseprD   len
print_helpr   r   rG   r
   rL   remove)argsrI   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   )rz   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   )rC   argvr   install_warning_loggerrX   r   r   stderrru   r>   rv   rD   locale	setlocaleLC_ALLErrorloggerdebugr   r   rm   )rz   r}   r   excecommandr   r   r#   rm      s     rm   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)r]   reqeditablecomments)selfr]   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>   rc   normcasere   locationpip.vcsr   r   r   get_backend_namer	   r   warningrG   as_requirementspecsrw   AssertionError_rev_research_date_reget_backendget_locationgroupegg_nameproject_name)clsrS   dependency_linksr   r   r   r   r   r   r   r   rh   	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)rS   r]   matchr   r   r#   r   I  s
    zFrozenRequirement.egg_namec             C   s2   | j }| jrd| }djt| jt|g d S )Nz-e %sra   )r   r   rL   listr   str)r   r   r   r   r#   __str__Q  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)9
__future__r   r   loggingr>   r+   warningsrC   r   Zpip._vendor.urllib3.exceptionsr   filterwarningssslImportErrorplatformgetattrZpip._vendor.urllib3.contribr   OSErrorZinject_into_urllib3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pipri   rg   	getLoggerr   r   rX   rB   r   r   rm   objectr   rD   r   r   r   r#   <module>   sR   


I*	
[
