Your IP : 216.73.217.17


Current Path : /usr/lib/python2.7/site-packages/pip/_internal/cli/
Upload File :
Current File : //usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyc

�
��Eac@@s-dZddlmZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZddl
mZddlmZmZdd	lmZdd
lmZeje�Zdejfd��YZd
efd��YZdejfd��YZdefd��YZdS(sBase option parser setupi(tabsolute_importN(t	strtobool(tsuppress(tstring_types(t
UNKNOWN_ERROR(t
ConfigurationtConfigurationError(tget_terminal_size(tredact_auth_from_urltPrettyHelpFormattercB@s\eZdZd�Zd�Zddd�Zd�Zd�Zd�Zd	�Z	d
�Z
RS(s4A prettier/less verbose help formatter for optparse.cO@sCd|d<d|d<t�dd|d<tjj|||�dS(Nitmax_help_positionitindent_incrementiitwidth(RtoptparsetIndentedHelpFormattert__init__(tselftargstkwargs((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyRs

cC@s
|j|�S(N(t_format_option_strings(Rtoption((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytformat_option_strings#ss <{}>s, cC@s�g}|jr&|j|jd�n|jrF|j|jd�nt|�dkrk|jd|�n|j�r�|jp�|jj�}|j|j	|j���ndj
|�S(s�
        Return a comma-separated list of option strings and metavars.

        :param option:  tuple of (short opt, long opt), e.g: ('-f', '--format')
        :param mvarfmt: metavar format string
        :param optsep:  separator
        iit(t_short_optstappendt
_long_optstlentinsertttakes_valuetmetavartdesttlowertformattjoin(RRtmvarfmttoptseptoptsR((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyR&s		cC@s|dkrdS|dS(NtOptionsRs:
((Rtheading((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytformat_heading=scC@s(dj|jtj|�d��}|S(sz
        Ensure there is only one newline between usage and the first heading
        if there is no description.
        s
Usage: {}
s  (R tindent_linesttextwraptdedent(Rtusagetmsg((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytformat_usageBscC@s{|rst|jd�r!d}nd}|jd�}|j�}|jtj|�d�}dj||�}|SdSdS(NtmaintCommandstDescriptions
s  s{}:
{}
R(thasattrtparsertlstriptrstripR(R)R*R (Rtdescriptiontlabel((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytformat_descriptionKs	cC@s|r
|SdSdS(NR((Rtepilog((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyt
format_epilog]scC@s3g|jd�D]}||^q}dj|�S(Ns
(tsplitR!(Rttexttindenttlinet	new_lines((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyR(ds&(t__name__t
__module__t__doc__RRRR'R-R7R9R((((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyR	s							tUpdatingDefaultsHelpFormattercB@seZdZd�ZRS(s�Custom help formatter for use in ConfigOptionParser.

    This is updates the defaults before expanding them, allowing
    them to show up correctly in the help listing.

    Also redact auth from url type options
    cC@s�d}|jdk	rF|jj|jj�|jjj|j�}ntjj||�}|r�|j	dkr�t
|t�r�|g}nt
|t�s�g}nx)|D]}|j
|t|��}q�Wn|S(NtURL(tNoneR2t_update_defaultstdefaultstgetRR
Rtexpand_defaultRt
isinstanceRtlisttreplaceR(RRtdefault_valuest	help_texttval((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyRHrs	
(R?R@RARH(((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyRBistCustomOptionParsercB@s eZd�Zed��ZRS(cO@s6|j||�}|jj�|jj||�|S(s*Insert an OptionGroup at a given position.(tadd_option_groupt
option_groupstpopR(RtidxRRtgroup((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytinsert_option_group�s
cC@s2|j}x!|jD]}|j|j�qW|S(s<Get a list of all options, including those in option groups.(toption_listRQtextend(Rtresti((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytoption_list_all�s
(R?R@RUtpropertyRZ(((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyRO�s		tConfigOptionParsercB@sDeZdZd�Zd�Zd�Zd�Zd�Zd�ZRS(ssCustom option parser which updates its defaults by checking the
    configuration files and environmental variablescO@s\|jd�|_|jdt�}t|�|_|jsBt�tjj|||�dS(Ntnametisolated(	RRR]tFalseRtconfigtAssertionErrorR
tOptionParserR(RRRR^((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyR�s
cC@sLy|j||�SWn1tjk
rG}dj|�GHtjd�nXdS(Ns*An error occurred during configuration: {}i(tcheck_valueR
tOptionValueErrorR tsystexit(RRtkeyRNtexc((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyt
check_default�s
cc@s�d|jdg}d�|D�}xw|jj�D]f\}}|sZtjd|�q2n|jdd�\}}||kr2||j||f�q2q2Wx4|D],}x#||D]\}}||fVq�Wq�WdS(Ntglobals:env:cS@si|]}g|�qS(((t.0R]((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pys
<dictcomp>�s	s7Ignoring configuration key '%s' as it's value is empty.t.i(R]R`titemstloggertdebugR:R(Rtoverride_ordert
section_itemstsection_keyRNtsectionRg((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyt _get_ordered_configuration_items�s
c

C@sMtj|j�|_t�}x�|j�D]�\}}|jd|�}|dkr\q+n|jdkr�yt	|�}Wqt
k
r�|jdj||��qXn]|jdkr3t
t
��t	|�}WdQXt
t
��t|�}WdQXt|t�s|dkr|jdj||��qn�|jd	kry|j�}g|D]}|j|||�^qU}n�|jd
kr�|j|j�|j�}|j||�}|jp�d}|jp�i}	|j||||||	�n|j|||�}|||j<q+Wx$|D]}t|j|�||<q Wd|_|S(
s�Updates the given defaults with values from the config files and
        the environ. Does a little special handling for certain types of
        options (lists).s--t
store_truetstore_falsesm{} is not a valid value for {} option, please specify a boolean value like yes/no, true/false or 1/0 instead.tcountNis�{} is not a valid value for {} option, please instead specify either a non-negative integer or a boolean value like yes/no or false/true which is equivalent to 1/0.Rtcallback(s
store_truesstore_false((R
tValuesRFtvaluestsetRtt
get_optionRDtactionRt
ValueErrorterrorR RtintRIR:RitaddRtget_opt_stringt
convert_valuet
callback_argstcallback_kwargsRxtgetattr(
RRFt	late_evalRgRNRtvtopt_strRR((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyRE�sL	


+
	cC@s�|jstj|j�Sy|jj�Wn)tk
rU}|jtt	|��nX|j
|jj��}x]|j�D]O}|j
|j�}t|t�r{|j�}|j||�||j<q{q{Wtj|�S(s�Overriding to make updating the defaults after instantiation of
        the option parser possible, _update_defaults() does the dirty work.(tprocess_default_valuesR
RyRFR`tloadRRfRtstrREtcopyt_get_all_optionsRGRRIRR�Rc(RterrRFRtdefaultR�((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pytget_default_valuess	 cC@s-|jtj�|jtdj|��dS(Ns{}
(tprint_usageRetstderrRfRR (RR,((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyRs(	R?R@RARRiRtRER�R(((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyR\�s					=	(RAt
__future__RtloggingR
ReR)tdistutils.utilRtpip._vendor.contextlib2Rtpip._vendor.sixRtpip._internal.cli.status_codesRtpip._internal.configurationRRtpip._internal.utils.compatRtpip._internal.utils.miscRt	getLoggerR?RnRR	RBRbROR\(((s</usr/lib/python2.7/site-packages/pip/_internal/cli/parser.pyt<module>s"P