3
zYði-  ã               @   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�rªe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rÂtjdƒ |dkoÔˆ j	dƒ �rJg }ˆ j
ƒ }x<tdd�D ].}|jj	|ƒrð|j| dd… krð|j|jƒ qðW |�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|
ƒ �q®W 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 )zÃCommand 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-ue6tjl93/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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| ƒ\}}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	|ƒr®d}y|||ƒ}W n2 t
k
r€ }	 ztjd|	ƒ d }W Y d d }	~	X nX |d kr¬tjd|ƒ |jdƒ |jƒ }d}nðd}|jƒ }|j}
t|
ƒdkrÜ|
d d dksìt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*	
[
