ó vÆ_c@@sdZddlmZddlZddlZddlZddlZddlmZddl m Z ddl m Z ddl mZmZddlmZejeƒZd ejfd „ƒYZd efd „ƒYZd ejfd„ƒYZdefd„ƒYZd„ZdS(sBase option parser setupi(tabsolute_importN(t strtobool(t string_types(t UNKNOWN_ERROR(t ConfigurationtConfigurationError(tget_terminal_sizetPrettyHelpFormattercB@s\eZdZd„Zd„Zddd„Zd„Zd„Zd„Zd „Z d „Z RS( s4A prettier/less verbose help formatter for optparse.cO@sCd|ds, 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_optstlentinsertt takes_valuetmetavartdesttlowertformattjoin(RRtmvarfmttoptseptoptsR((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyR$s   cC@s|dkrdS|dS(NtOptionsRs: ((Rtheading((sI/opt/alt/python38/lib/python3.8/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 (Rt indent_linesttextwraptdedent(Rtusagetmsg((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyt format_usage@scC@s{|rst|jdƒr!d}nd}|jdƒ}|jƒ}|jtj|ƒdƒ}dj||ƒ}|SdSdS(NtmaintCommandst Descriptions s s{}: {} R(thasattrtparsertlstriptrstripR&R'R(R(Rt descriptiontlabel((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pytformat_descriptionIs  cC@s|r |SdSdS(NR((Rtepilog((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyt format_epilog[scC@s3g|jdƒD]}||^q}dj|ƒS(Ns (tsplitR(Rttexttindenttlinet new_lines((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyR&bs&( t__name__t __module__t__doc__R RRR%R+R5R7R&(((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyRs     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. cC@s;|jdk r(|jj|jjƒntjj||ƒS(N(R0tNonet_update_defaultstdefaultsR R texpand_default(RR((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyRDns(R=R>R?RD(((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyR@gstCustomOptionParsercB@s eZd„Zed„ƒZRS(cO@s6|j||Ž}|jjƒ|jj||ƒ|S(s*Insert an OptionGroup at a given position.(tadd_option_groupt option_groupstpopR(RtidxRRtgroup((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pytinsert_option_groupvs cC@s2|j}x!|jD]}|j|jƒqW|S(s<Get a list of all options, including those in option groups.(t option_listRGtextend(Rtresti((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pytoption_list_alls (R=R>RKtpropertyRP(((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyREts tConfigOptionParsercB@sDeZdZd„Zd„Zd„Zd„Zd„Zd„ZRS(ssCustom option parser which updates its defaults by checking the configuration files and environmental variablescO@sM|jdƒ|_|jdtƒ}t|ƒ|_tjj|||ŽdS(Ntnametisolated(RHRStFalseRtconfigR t OptionParserR (RRRRT((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyR scC@sLy|j||ƒSWn1tjk rG}dj|ƒGHtjdƒnXdS(Ns*An error occurred during configuration: {}i(t check_valueR tOptionValueErrorRtsystexit(RRtkeytvaltexc((sI/opt/alt/python38/lib/python3.8/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.0RS((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pys ¢s s7Ignoring configuration key '%s' as it's value is empty.t.i(RSRVtitemstloggertdebugR8R(Rtoverride_ordert section_itemst section_keyR]tsectionR\((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyt _get_ordered_configuration_itemss  c C@sÎtj|jƒ|_tƒ}xy|jƒD]k\}}|jd|ƒ}|dkr\q+n|jdkr´yt |ƒ}Wq‰t k r°t |j||ƒ}|j |ƒq‰XnÕ|jdkrú|j ƒ}g|D]}|j|||ƒ^qÖ}n|jdkrt|j|jƒ|jƒ}|j||ƒ}|jpCd } |jpRi} |j||||| | Žn|j|||ƒ}|||jR?R R_RjRBRŠRv(((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyRR‰s   1 cC@s,|dkrdj||ƒSdj||ƒS(sQReturns a better error message when invalid configuration option is provided.RkRlso{0} is not a valid value for {1} option, please specify a boolean value like yes/no, true/false or 1/0 instead.s[{0} is not a valid value for {1} option, please specify a numerical value like 1/0 instead.(s store_trues store_false(R(RsR\R]((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyRus   (R?t __future__RtloggingR RZR'tdistutils.utilRtpip._vendor.sixRtpip._internal.cli.status_codesRtpip._internal.configurationRRtpip._internal.utils.compatRt getLoggerR=RdR RR@RWRERRRu(((sI/opt/alt/python38/lib/python3.8/site-packages/pip/_internal/cli/parser.pyts     P w