o Ec$*@sdZddlZddlZddlZddlZddlZddlmZddlm Z m Z m Z m Z m Z ddlmZddlmZmZddlmZmZeeZGdd d ejZGd d d eZGd d d ejZGdddeZdS)zBase option parser setupN)suppress)AnyDictIteratorListTuple) UNKNOWN_ERROR) ConfigurationConfigurationError)redact_auth_from_url strtoboolc seZdZdZdededdffdd Zdejdefd d Z d!dejd ededefddZ dedefddZ dedefddZ dedefddZ dedefddZdededefdd ZZS)"PrettyHelpFormatterz4A prettier/less verbose help formatter for optparse.argskwargsreturnNcs:d|d<d|d<tdd|d<tj|i|dS)NZmax_help_positionZindent_incrementrwidth)shutilget_terminal_sizesuper__init__)selfrr __class__K/opt/alt/python310/lib/python3.10/site-packages/pip/_internal/cli/parser.pyrszPrettyHelpFormatter.__init__optioncCs ||SN)_format_option_strings)rrrrrformat_option_stringss z)PrettyHelpFormatter.format_option_strings <{}>, mvarfmtoptsepcCs~g}|jr ||jd|jr||jdt|dkr$|d||r:|jp/|j}|| |d |S)z 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 rr) Z _short_optsappendZ _long_optsleninsertZ takes_valuemetavardestlowerformatjoin)rrr$r%Zoptsr*rrrr s    z*PrettyHelpFormatter._format_option_stringsheadingcCs|dkrdS|dS)NZOptionsr&: r)rr/rrrformat_heading9sz"PrettyHelpFormatter.format_headingusagecCsd|t|d}|S)zz Ensure there is only one newline between usage and the first heading if there is no description. z Usage: {}  )r- indent_linestextwrapdedent)rr2msgrrr format_usage>sz PrettyHelpFormatter.format_usage descriptioncCsV|r)t|jdr d}nd}|d}|}|t|d}|d|d}|SdS)NmainZCommandsZ Description r3r0r&)hasattrparserlstriprstripr4r5r6)rr9Zlabelrrrformat_descriptionFs  z&PrettyHelpFormatter.format_descriptionepilogcCs |r|SdS)Nr&r)rrArrr format_epilogXsz!PrettyHelpFormatter.format_epilogtextindentcs"fdd|dD}d|S)Ncsg|]}|qSrr).0linerDrr `sz4PrettyHelpFormatter.indent_lines..r;)splitr.)rrCrDZ new_linesrrGrr4_s z PrettyHelpFormatter.indent_lines)r"r#)__name__ __module__ __qualname____doc__rroptparseOptionstrr!r r1r8r@rBr4 __classcell__rrrrr s& r cs,eZdZdZdejdeffdd ZZS)UpdatingDefaultsHelpFormatterzCustom 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 rrcsd}|jdur|j|jj|jj|j}t|}|r@|jdkr@t|t r,|g}t|t s3g}|D] }| |t |}q5|S)NZURL) r=_update_defaultsdefaultsgetr+rexpand_defaultr* isinstancerPlistreplacer )rrZdefault_valuesZ help_textvalrrrrVms    z,UpdatingDefaultsHelpFormatter.expand_default) rJrKrLrMrNrOrPrVrQrrrrrRds rRc@s@eZdZdedededejfddZede ej fddZ d S) CustomOptionParseridxrrrcOs,|j|i|}|j|j|||S)z*Insert an OptionGroup at a given position.)Zadd_option_group option_groupspopr))rr\rrgrouprrrinsert_option_groups z&CustomOptionParser.insert_option_groupcCs*|jdd}|jD]}||jq |S)zq8dS)Nglobalz:env:cSsi|]}|gqSrr)rErirrr szGConfigOptionParser._get_ordered_configuration_items..z7Ignoring configuration key '%s' as it's value is empty..r)rirjitemsloggerdebugrIr')rZoverride_orderZ section_itemsZ section_keyrZZsectionrkrrr _get_ordered_configuration_itemss*  z3ConfigOptionParser._get_ordered_configuration_itemsrTc stj_t}D]\}ddurqjdvr.callbackr)rNValuesrTvaluessetryZ get_optionactionr ValueErrorerrorr-rrerWrIaddr+get_opt_stringZ convert_valueZ callback_argsZcallback_kwargsr~rrgetattr)rrTZ late_evalrZopt_strrrrr}rrSsX                z#ConfigOptionParser._update_defaultsc Cs|js t|jSz|jWnty*}z|tt |WYd}~nd}~ww| |j }| D]}| |j}t|t rQ|}|||||j<q7t|S)zOverriding to make updating the defaults after instantiation of the option parser possible, _update_defaults() does the dirty work.N)Zprocess_default_valuesrNrrTrjloadr rprrPrScopyZ_get_all_optionsrUr+rWrrm)rerrrTrdefaultrrrrget_default_values s      z%ConfigOptionParser.get_default_valuesr7cCs"|tj|t|ddS)Nr;)Z print_usagerostderrrpr)rr7rrrr"s zConfigOptionParser.error)rJrKrLrMrrPboolrrNrOrrrrryrrSrrrrQrrrrrgs& "@rg)rMZloggingrNrror5 contextlibrtypingrrrrrZpip._internal.cli.status_codesrZpip._internal.configurationr r Zpip._internal.utils.miscr r Z getLoggerrJrwZIndentedHelpFormatterr rRZ OptionParserr[rgrrrrs    R