
§|jT,  ã               @   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)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-5c7ija6t/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*	[