U
    KQh-                     @   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z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" z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(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2e/  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                     sN  dt jkrdS t jd  dd } tt jd }z| |d   W n tk
rZ   d Y nX dd t D g }zfd	d| D d
 }W n tk
r   d}Y nX t }|r|dkrtd |dkrB 	dsBg } 
 }tddD ].}|j	|r|j| dd kr||j q|rB|D ]}t| q(td t|  }|dd |jjD 7 }dd | d|d  D fdd|D } fdd|D }|D ](}	|	d
 }
|	d r|
d7 }
t|
 qnp 	ds 	dr$dd |jD }||j dd |D }dd |D 7 td fddD  t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-tlro1kwj/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fqS r   )r$   optparseSUPPRESS_HELPget_opt_stringnargs)r   optr   r   r    r!   j   s   c                 S   s   g | ]}| d d qS )=r   )splitr   xr   r   r    r!   o   s     c                    s    g | ]\}}| kr||fqS r   r   )r   r0   v)	prev_optsr   r    r!   p   s      c                    s"   g | ]\}}|  r||fqS r   
startswith)r   kr1   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| qS r   )r$   r(   r)   r*   r9   r   r   r    r!      s     c                    s   g | ]}|  r|qS r   r3   r/   r6   r   r    r!      s     
 )osenvironr.   int
IndexErrorr   create_main_parsersysexitr4   lowerr	   keyappendprintr   parseroption_list_alloption_groupsr8   join)cwordscwordoptionssubcommand_namerK   	installedlcdist
subcommandoption	opt_labeloptsr   )r7   r2   r#   r    autocomplete>   s^    






rZ   c                  C   s   ddt  dt d} tf | }|  tjtjtjt}dt	|t
jd d f |_ttj|}|| d|_t }dgd	d
 |D  }d||_|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   r:   jr   r   r    r!      s     z&create_main_parser.<locals>.<listcomp>
)r   r
   r   disable_interspersed_argsr@   pathdirnameabspath__file____version__rE   version
cmdoptionsmake_option_groupgeneral_groupadd_option_groupmainr   rN   description)	parser_kwrK   pip_pkg_dirgen_optscommand_summariesrp   r   r   r    rD      s*    
  
rD   c                 C   s   t  }|| \}}|jr>tj|j tjtj t  |rZ|d dkrjt	|dkrj|
  t  |d }|tkrt|}d| g}|r|d|  td|| d d  }|| ||fS )Nr   r$   r   zunknown command "%s"zmaybe you meant "%s"z - )rD   
parse_argsrj   rE   stdoutwriter@   lineseprF   len
print_helpr   r   rI   r   rN   remove)argsrK   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   )r|   isolatedr   r   r    check_isolated   s    r   c              
   C   s   | d krt jdd  } t  t  zt| \}}W nJ tk
r~ } z,t jd|  t jt	j
 t d W 5 d }~X Y nX zttjd W n0 tjk
r } ztd| W 5 d }~X Y nX t| t|d}||S )Nr   z	ERROR: %sr   z%Ignoring error %s when setting locale)r   )rE   argvr   install_warning_loggerrZ   r   r   stderrrw   r@   rx   rF   locale	setlocaleLC_ALLErrorloggerdebugr   r   ro   )r|   r   r   excecommandr   r   r    ro      s     ro   c                   @   sJ   e Zd ZdddZedZedZedd Z	e
dd	 Zd
d ZdS )FrozenRequirementr   c                 C   s   || _ || _|| _|| _d S r;   )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t j|j}g }ddlm}m} t|r|	|rd}z|||}W n2 t
k
r }	 ztd|	 d }W 5 d }	~	X Y nX |d krtd| |d | }d}nd}| }|j}
t|
dkr|
d d d	kstd
|
|f |
d d }| j|}| j|}|s|r|d}|r:| ||}|sXtd| |d nF|d|  |rx|d}nd|d }d}d||| |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   )z==z===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@   re   normcaserg   locationpip.vcsr   r   r   get_backend_namer   r   warningrI   as_requirementspecsry   AssertionError_rev_research_date_reget_backendget_locationgroupegg_nameproject_name)clsrU   dependency_linksr   r   r   r   r   r   r   r   rj   	ver_match
date_matchsvn_backendsvn_locationrevr   r   r    	from_dist  s     
 zFrozenRequirement.from_distc                 C   s,   |   }td|}|r(|d |  }|S )Nz
-py\d\.\d$)r   rer   start)rU   r_   matchr   r   r    r   B  s
    zFrozenRequirement.egg_namec                 C   s2   | j }| jrd| }dt| jt|g d S )Nz-e %src   )r   r   rN   listr   str)r   r   r   r   r    __str__J  s    zFrozenRequirement.__str__N)r   )__name__
__module____qualname__r   r   compiler   r   classmethodr   staticmethodr   r   r   r   r   r    r      s   



@
r   __main__)N)3
__future__r   r   loggingr@   r(   warningsrE   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piprk   ri   	getLoggerr   r   rZ   rD   r   r   ro   objectr   rF   r   r   r   r    <module>   sH   
	
I*	
[
