ó ïRec @szdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z mZddlmZmZddlmZerýdd lmZmZmZmZmZmZmZejZed eƒZneje ƒZ!d „Z"d „Z#ed dddddddddƒZ$e rQdndZ%d„Z&de'fd„ƒYZ(dS(s Configuration management setup Some terminology: - name As written in config files. - value Value associated with a name - key Name combined with it's section (section.name) - variant A single word describing where the configuration key-value pair came from iÿÿÿÿN(t configparser(tConfigurationErrort!ConfigurationFileCouldNotBeLoaded(tappdirs(tWINDOWSt expanduser(t ensure_dirtenum(tMYPY_CHECK_RUNNING(tAnytDicttIterabletListtNewTypetOptionaltTupletKindcCs8|jƒjddƒ}|jdƒr4|d}n|S(sFMake a name consistent regardless of source (environment or file) t_t-s--i(tlowertreplacet startswith(tname((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyt_normalize_name*s cCs:d|kr*dj|ƒ}t|ƒ‚n|jddƒS(Nt.sbKey does not contain dot separated section and key. Perhaps you wanted to use 'global.{}' instead?i(tformatRtsplit(Rt error_message((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyt_disassemble_key4s   tUSERtusertGLOBALtglobaltSITEtsitetENVtenvtENV_VARsenv-varspip.inispip.confcCs¼gtjdƒD]}tjj|tƒ^q}tjjtjtƒ}tjjtdƒt rgdndtƒ}tjjtj dƒtƒ}i|t j 6|gt j 6||gt j6S(Ntpipt~s.pip(Rtsite_config_dirstostpathtjointCONFIG_BASENAMEtsystprefixRRtuser_config_dirtkindsRR!R(R*tglobal_config_filestsite_config_filetlegacy_config_filetnew_config_file((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pytget_configuration_filesLs.      t ConfigurationcBsÔeZdZdd„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d „Z e d „ƒZd „Zd „Zd „Zd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(sâHandles management of configuration. Provides an interface to accessing and managing configuration files. This class converts provides an API that takes "section.key-name" style keys and stores the value associated with it as "key-name" under the section "section". This allows for a clean interface wherein the both the section and the key-name are preserved in an easy to manage form in the configuration files and the data stored is also nice. cCsétt|ƒjƒtjtjtjdg}||krhtdj dj t t |d ƒƒƒƒ‚n||_ ||_tjtjtjtjtjg|_ddg|_d„|jDƒ|_d„|jDƒ|_g|_dS(Ns5Got invalid value for load_only - should be one of {}s, iÿÿÿÿtversionthelpcSsi|]}g|“qS(((t.0tvariant((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pys ˆs cSsi|]}i|“qS(((R9R:((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pys ‹s (tsuperR6t__init__R0RRR!tNoneRRR+tmaptreprtisolatedt load_onlyR#R%t_override_ordert_ignore_env_namest_parserst_configt_modified_parsers(tselfR@RAt_valid_load_only((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyR<qs %  'cCs$|jƒ|js |jƒndS(sELoads configuration from configuration files and environment N(t_load_config_filesR@t_load_environment_vars(RG((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pytloads  cCsF|jdk stdƒ‚y|jƒdSWntk rAdSXdS(s@Returns the file with highest priority in configuration s)Need to be specified a file to be editingiN(RAR=tAssertionErrort_get_parser_to_modifyt IndexError(RG((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pytget_file_to_edit—s   cCs |jjƒS(s`Returns key-value pairs like dict.items() representing the loaded configuration (t _dictionarytitems(RG((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRQ£scCs<y|j|SWn&tk r7tdj|ƒƒ‚nXdS(s,Get a value from the configuration. sNo such key - {}N(RPtKeyErrorRR(RGtkey((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyt get_valueªs cCs¦|jƒ|jst‚|jƒ\}}|dk r~t|ƒ\}}|j|ƒsh|j|ƒn|j|||ƒn||j |j|<|j ||ƒdS(s-Modify a value in the configuration. N( t_ensure_have_load_onlyRARLRMR=Rt has_sectiont add_sectiontsetREt_mark_as_modified(RGRStvaluetfnametparsertsectionR((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyt set_value³s  cCsî|jƒ|jst‚||j|jkrGtdj|ƒƒ‚n|jƒ\}}|dk rÙt|ƒ\}}|j |ƒo•|j ||ƒs§tdƒ‚n|j |ƒsÆ|j |ƒn|j ||ƒn|j|j|=dS(s#Unset a value in the configuration.sNo such key - {}s4Fatal Internal error [id=1]. Please report as a bug.N(RURARLRERRRMR=RRVt remove_optionRQtremove_sectionRY(RGRSR[R\R]R((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyt unset_valueÇs   cCss|jƒxb|jD]W\}}tjd|ƒttjj|ƒƒt|dƒ}|j |ƒWdQXqWdS(s*Save the current in-memory state. s Writing to %stwN( RURFtloggertinfoRR)R*tdirnametopentwrite(RGR[R\tf((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pytsaveâs  cCs5|jdkrtdƒ‚ntjd|jƒdS(Ns'Needed a specific file to be modifying.s$Will be working with %s variant only(RAR=RRctdebug(RG((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRUõscCs2i}x%|jD]}|j|j|ƒqW|S(s<A dictionary representing the loaded configuration. (RBtupdateRE(RGtretvalR:((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRPûscCsØt|jƒƒ}|tjdd!tjgkrCtjdƒdSxŽ|jƒD]€\}}xq|D]i}|j dk r ||j kr tjd||ƒqcn|j ||ƒ}|j |j ||fƒqcWqPWdS(s5Loads configuration from configuration files iisZSkipping loading configuration files due to environment's PIP_CONFIG_FILE being os.devnullNs Skipping file '%s' (variant: %s)(tdicttiter_config_filesR0R#R)tdevnullRcRjRQRAR=t _load_fileRDtappend(RGt config_filesR:tfilesR[R\((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRI s   cCsltjd||ƒ|j|ƒ}xC|jƒD]5}|j|ƒ}|j|j|j||ƒƒq/W|S(Ns'For variant '%s', will try loading '%s'(RcRjt_construct_parsertsectionsRQRERkt_normalized_keys(RGR:R[R\R]RQ((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRp$s $cCs•tjƒ}tjj|ƒr‘y|j|ƒWq‘tk ritddjt j t ƒƒd|ƒ‚q‘tj k r}td|ƒ‚q‘Xn|S(Ntreasonscontains invalid {} charactersR[terror( RtRawConfigParserR)R*texiststreadtUnicodeDecodeErrorRRtlocaletgetpreferredencodingtFalsetError(RGR[R\Rx((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRt/s   cCs-|jtjj|jd|jƒƒƒdS(s7Loads configuration from environment variables s:env:N(RER0R%RkRvtget_environ_vars(RG((sŠ/builddir/build/BUILDROOT/alt-python27-pip-20.2.4-5.el8.x86_64/opt/alt/python27/lib/python2.7/site-packages/pip/_internal/configuration.pyRJFscCs?i}x2|D]*\}}|dt|ƒ}||| s4    4