3 �Pf�.�@s�ddlmZddlZddlZddlZddlZddlZddlZddlZddl m Z ej de d�y ddl Z Wne k r~YnNXejdkr�ee dd�dkr�ydd lmZWne efk r�Yn Xej�dd lmZmZmZdd lmZmZdd lmZmZdd lmZmZm Z m!Z!ddl"m#Z#m$Z$ddl%m&Z&m'Z'ddl%m(Z(ddl m)Z)ddl*Z+e+j,Z,dZ-ej.e/�Z0ej de)d�dd�Z1dd�Z2dd�Z3dd�Z4d dd�Z5Gdd�de6�Z7e/dk�r�ej8e5��dS)!�)�absolute_importN)�DependencyWarning�ignore)�category�darwinZOPENSSL_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)�InsecureRequestWarningz9.0.3c sZdtjkrdStjdj�dd�}ttjd�}y||d�Wntk rZd�YnXdd�t�D��g}y�fd d�|D�d }Wntk r�d}YnXt�}|�r�|d kr�tjd�|d koԈj d � �rJg}�j �}xUsz autocomplete..csg|]}|�kr|�qSrr)r�w)� subcommandsrrrYsr�helpZ uninstall�-T)Z local_onlycSs&g|]}|jtjkr|j�|jf�qSr)r"�optparse� SUPPRESS_HELP�get_opt_string�nargs)r�optrrrrqscSsg|]}|jd�d�qS)�=r)�split)r�xrrrrvscs g|]\}}|�kr||f�qSrr)rr+�v)� prev_optsrrrwscs"g|]\}}|j��r||f�qSr)� startswith)r�kr,)�currentrrrysr)z--cSsg|] }|j�qSr)� option_list)r�irrrr�scss|]}|D] }|Vq qdS)Nr)r�it�orrr� �szautocomplete..cSs g|]}|jtjkr|j��qSr)r"r$r%r&)rr2rrrr�s� csg|]}|j��r|�qSr)r.)rr+)r0rrr�s)�os�environr*�int� IndexErrorr�create_main_parser�sys�exitr.�lowerr �key�append�printr�parserZoption_list_allZ option_groupsr1�join) ZcwordsZcwordZoptionsZsubcommand_namerBZ installedZlc�distZ subcommandZoptionZ opt_labelZoptsr)r0r-r!r� autocompleteEs\          rEcCs�ddt�dt�d�}tf|�}|j�tjjtjjtjjt���}dt |t j dd�f|_ t j t j|�}|j|�d|_t�}dgd d �|D�}d j|�|_|S) Nz %prog [options]F�global)ZusageZadd_help_optionZ formatter�name�progzpip %s from %s (python %s)�TrcSsg|]\}}d||f�qS)z%-27s %sr)rr2�jrrrr�sz&create_main_parser..� )rr rZdisable_interspersed_argsr7�path�dirname�abspath�__file__� __version__r<�version� cmdoptionsZmake_option_groupZ general_groupZadd_option_group�mainrrC� description)Z parser_kwrBZ pip_pkg_dirZgen_optsZcommand_summariesrTrrrr;�s"    r;cCs�t�}|j|�\}}|jr>tjj|j�tjjtj�tj�| s\|ddkrlt |�dkrl|j �tj�|d}|t kr�t |�}d|g}|r�|j d|�tdj|���|dd�}|j|�||fS)Nrr"rzunknown command "%s"zmaybe you meant "%s"z - )r;� parse_argsrQr<�stdout�writer7�linesepr=�lenZ print_helprrr@r rC�remove)�argsrBZgeneral_optionsZ args_else�cmd_nameZguess�msg�cmd_argsrrr� parseopts�s&    r_cCsd}d|krd}|S)NFz --isolatedTr)r[�isolatedrrr�check_isolated�sracCs�|dkrtjdd�}tj�t�yt|�\}}WnJtk r~}z.tjjd|�tjjt j �tj d�WYdd}~XnXyt j t jd�Wn0t jk r�}ztjd|�WYdd}~XnXt|t|�d�}|j|�S)Nrz ERROR: %srz%Ignoring error %s when setting locale)r`)r<�argvr Zinstall_warning_loggerrEr_r �stderrrWr7rXr=�locale� setlocale�LC_ALL�Error�logger�debugrrarS)r[r\r^�exc�eZcommandrrrrS�s rSc@sLeZdZffdd�Zejd�Zejd�Zedd��Z e dd��Z d d �Z d S) �FrozenRequirementcCs||_||_||_||_dS)N)rG�req�editable�comments)�selfrGrmrnrorrr�__init__�szFrozenRequirement.__init__z-r(\d+)$z-(20\d\d\d\d\d\d)$cCs�tjjtjj|j��}g}ddlm}m}t|�r�|j |�r�d}y|||�}Wn2t k r�} zt j d| �d}WYdd} ~ XnX|dkr�t j d|�|j d�|j�}d}n�d}|j�}|j} t| �dkr�| dddks�td | |f��| dd} |jj| �} |jj| �} | �s| �r�|jd �}|�r:|�j||�}|�sXt j d |�|j d�nF|j d|�| �rx| jd�}nd| jd�}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 = %rZsvnz(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)rtru)r7rL�normcaserN�location�pip.vcsrrrsrZget_backend_namerrhZwarningr@Zas_requirement�specsrY�AssertionError�_rev_re�search�_date_reZ get_backendZ get_location�group�egg_nameZ project_name)�clsrDZdependency_linksrwrorrrsrnrmrjryrQZ ver_matchZ date_matchZ svn_backendZ svn_locationZrevrrr� from_distsf       zFrozenRequirement.from_distcCs,|j�}tjd|�}|r(|d|j��}|S)Nz -py\d\.\d$)r�rer|�start)rDrG�matchrrrrIs  zFrozenRequirement.egg_namecCs2|j}|jrd|}djt|j�t|�g�dS)Nz-e %srK)rmrnrC�listro�str)rprmrrr�__str__QszFrozenRequirement.__str__N) �__name__� __module__� __qualname__rqr��compiler{r}� classmethodr�� staticmethodrr�rrrrrl�s     A rl�__main__)N)9Z __future__rrdZloggingr7r$�warningsr<r�Zpip._vendor.urllib3.exceptionsr�filterwarningsZssl� ImportError�platform�getattrZpip._vendor.urllib3.contribr�OSErrorZinject_into_urllib3Zpip.exceptionsrr r Z pip.utilsr r r rrxrrrrZpip.baseparserrrZ pip.commandsrrrrZpip.cmdoptionsZpiprRrPZ getLoggerr�rhrEr;r_rarS�objectrlr=rrrr�sR       I* [