� 7�Re�c@sUdZddlZddlZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZddlmZmZmZmZmZddlmZdd lmZmZdd lmZmZmZmZmZdd l m!Z!d gZ"Gd d �d e#�Z$ddd�Z&ddd�Z'dS(u(Base Command class, and related routinesiN(u cmdoptions(urunning_under_virtualenv(ulogger(u PipSession(u BadCommanduInstallationErroruUninstallationErroru CommandErroruPreviousBuildDirError(uStringIO(uConfigOptionParseruUpdatingDefaultsHelpFormatter(uSUCCESSuERRORu UNKNOWN_ERRORuVIRTUALENV_NOT_FOUNDuPREVIOUS_BUILD_DIR_ERROR(uget_proguCommandcBsb|EeZdZd Zd Zd Zdd�Zdd�Z dd�Z dd�Z d d �Z d S( uCommandcCs�i|jd6dt�|jfd6t�d6d d6|jd6|jd6}t|�|_d|jj�}t j |j|�|_ t j t j|j�}|jj|�dS( Nuusageu%s %suprogu formatteruadd_help_optionunameu descriptionu %s OptionsF(uusageuget_progunameuUpdatingDefaultsHelpFormatteruFalseu__doc__uConfigOptionParseruparseru capitalizeuoptparseu OptionGroupucmd_optsu cmdoptionsumake_option_groupu general_groupuadd_option_group(uselfu parser_kwu optgroup_nameugen_opts((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu__init__s    uCommand.__init__cCsvt�}|jr!|j|_n|jr9|j|_n|jrbi|jd6|jd6|_n|j |j_|S(Nuhttpuhttps( u PipSessionucertuverifyutimeoutuproxyuproxiesuno_inputuauthu prompting(uselfuoptionsusession((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu_build_session3s     uCommand._build_sessioncCsdS(N((uself((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu setup_loggingJsuCommand.setup_loggingcCs|jj|�S(N(uparseru parse_args(uselfuargs((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu parse_argsMsuCommand.parse_argscCs�|j|�\}}d}||j7}||j8}tjd|�}g}tj|tjftj|j f�|j r�dt_ n|j �|jr�dtjd<n|jr�dj|j�tjd<n|jrt�stjd�tjt�qn|jr6t|jd�}tjtj|f�nd}t}d}y.|j||�}t|t�ru|}nWn�t k r�tj!�d} tjt"| ��tj#d t$��d}t%}Yn`t&t'fk r'tj!�d} tjt"| ��tj#d t$��d}t(}Ynt)k r{tj!�d} tjt"| ��tj#d t$��d}t(}Yn�t*k r�tj!�d} tjd | �tj#d t$��t(}Ynft+k rtjd �tj#d t$��d}t(}Yn(tjd t$��d}t,}YnX|r�|j-} d j|�} yt| d�} Wn<t.k r�t/j0dd�} | j1} t| d�} YnXtjd| �| j2| �| j3�n|dk r�|j3�n|S(Niiu1u PIP_NO_INPUTu uPIP_EXISTS_ACTIONu2Could not find an activated virtualenv (required).uauException information: %su ERROR: %suOperation cancelled by useru Exception: %su uwudeleteu#Storing debug log for failure in %sTF(4u parse_argsuverboseuquietuloggerulevel_for_integeru add_consumersusysustdoutuDEBUGuappendulog_explicit_levelsuTrueuexplicit_levelsu setup_logginguno_inputuosuenvironu exists_actionujoinu require_venvurunning_under_virtualenvufataluexituVIRTUALENV_NOT_FOUNDulogu open_logfileuNoneuSUCCESSuFalseurunu isinstanceuintuPreviousBuildDirErroruexc_infoustruinfou format_excuPREVIOUS_BUILD_DIR_ERRORuInstallationErroruUninstallationErroruERRORu BadCommandu CommandErroruKeyboardInterruptu UNKNOWN_ERRORulog_fileuIOErrorutempfileuNamedTemporaryFileunameuwriteuclose(uselfuargsuoptionsulevelu complete_logulog_fpuexitu store_logustatusueu log_file_fnutextu log_file_fputemp((u(/tmp/pip-zej_zi-build/pip/basecommand.pyumainQs�                               u Command.mainNF( u__name__u __module__u __qualname__uNoneunameuusageuFalseuhiddenu__init__u_build_sessionu setup_loggingu parse_argsumain(u __locals__((u(/tmp/pip-zej_zi-build/pip/basecommand.pyuCommands    cCsG|dkrtj�}nt�}tj|td|��|j�S(Nufile(uNoneusysuexc_infouStringIOu tracebackuprint_exceptionudictugetvalue(uexc_infouout((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu format_exc�s   u format_excuacCs�tjj|�}tjj|�}tjj|�}tjj|�sXtj|�ntjj|�}t||�}|r�|jddd�|jdt j dt j d�f�n|S(u�Open the named log file in append mode. If the file already exists, a separator will also be printed to the file to separate past activity from current activity. u%s u-i<u %s run on %s iu%c( uosupathu expanduseruabspathudirnameuexistsumakedirsuopenuwriteusysuargvutimeustrftime(ufilenameumodeudirnameuexistsulog_fp((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu open_logfile�s*u open_logfile((u__doc__uosusysutempfileu tracebackutimeuoptparseupipu cmdoptionsu pip.locationsurunning_under_virtualenvupip.loguloggeru pip.downloadu PipSessionupip.exceptionsu BadCommanduInstallationErroruUninstallationErroru CommandErroruPreviousBuildDirErrorupip.backwardcompatuStringIOupip.baseparseruConfigOptionParseruUpdatingDefaultsHelpFormatterupip.status_codesuSUCCESSuERRORu UNKNOWN_ERRORuVIRTUALENV_NOT_FOUNDuPREVIOUS_BUILD_DIR_ERRORupip.utiluget_progu__all__uobjectuCommanduNoneu format_excu open_logfile(((u(/tmp/pip-zej_zi-build/pip/basecommand.pyu<module>s&      (( �