ž 7’Reβc@sτdZddlZddlZddlZddlZddlmZddlmZm Z ddl m Z ddl m Z mZddlmZGdd „d ejƒZGd d „d eƒZGd d „d ejƒZGdd„deƒZdS(uBase option parser setupiN(u strtobool(u ConfigParseru string_types(udefault_config_file(uget_terminal_sizeuget_prog(u pkg_resourcescBs€|EeZdZdZdd„Zdd„Zdddd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS(uPrettyHelpFormatteru4A prettier/less verbose help formatter for optparse.cOsCd|du, (u_format_option_strings(uselfuoption((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuformat_option_stringssu)PrettyHelpFormatter.format_option_stringsu <%s>u, cCsΆg}|jr&|j|jdƒn|jrF|j|jdƒnt|ƒdkrk|jd|ƒn|jƒr©|jpŒ|jjƒ}|j||jƒƒndj |ƒS(u 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 - evaluated as mvarfmt % metavar :param optsep: separator iiu( u _short_optsuappendu _long_optsulenuinsertu takes_valueumetavarudestulowerujoin(uselfuoptionumvarfmtuoptsepuoptsumetavar((u'/tmp/pip-zej_zi-build/pip/baseparser.pyu_format_option_stringss   u*PrettyHelpFormatter._format_option_stringscCs|dkrdS|dS(NuOptionsuu: ((uselfuheading((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuformat_heading3s u"PrettyHelpFormatter.format_headingcCs#d|jtj|ƒdƒ}|S(uz Ensure there is only one newline between usage and the first heading if there is no description. u Usage: %s u (u indent_linesutextwrapudedent(uselfuusageumsg((u'/tmp/pip-zej_zi-build/pip/baseparser.pyu format_usage8su PrettyHelpFormatter.format_usagecCsy|rqt|jdƒr!d}nd}|jdƒ}|jƒ}|jtj|ƒdƒ}d||f}|SdSdS(NumainuCommandsu Descriptionu u u%s: %s u(uhasattruparserulstripurstripu indent_linesutextwrapudedent(uselfu descriptionulabel((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuformat_description@s  u&PrettyHelpFormatter.format_descriptioncCs|r |SdSdS(Nu((uselfuepilog((u'/tmp/pip-zej_zi-build/pip/baseparser.pyu format_epilogRsu!PrettyHelpFormatter.format_epilogcs/‡fdd†|jdƒDƒ}dj|ƒS(Ncsg|]}ˆ|‘qS(((u.0uline(uindent(u'/tmp/pip-zej_zi-build/pip/baseparser.pyu Zs u4PrettyHelpFormatter.indent_lines..u (usplitujoin(uselfutextuindentu new_lines((uindentu'/tmp/pip-zej_zi-build/pip/baseparser.pyu indent_linesYs"u PrettyHelpFormatter.indent_linesN( u__name__u __module__u __qualname__u__doc__u__init__uformat_option_stringsu_format_option_stringsuformat_headingu format_usageuformat_descriptionu format_epilogu indent_lines(u __locals__((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuPrettyHelpFormatters      uPrettyHelpFormattercBs&|EeZdZdZdd„ZdS(uUpdatingDefaultsHelpFormatteru£Custom help formatter for use in ConfigOptionParser that updates the defaults before expanding them, allowing them to show up correctly in the help listingcCs;|jdk r(|jj|jjƒntjj||ƒS(N(uparseruNoneuupdate_defaultsudefaultsuoptparseuIndentedHelpFormatteruexpand_default(uselfuoption((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuexpand_defaultcsu,UpdatingDefaultsHelpFormatter.expand_defaultN(u__name__u __module__u __qualname__u__doc__uexpand_default(u __locals__((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuUpdatingDefaultsHelpFormatter^suUpdatingDefaultsHelpFormattercBs2|EeZdZdd„Zedd„ƒZdS(uCustomOptionParsercOs6|j||Ž}|jjƒ|jj||ƒ|S(u*Insert an OptionGroup at a given position.(uadd_option_groupu option_groupsupopuinsert(uselfuidxuargsukwargsugroup((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuinsert_option_groupjs u&CustomOptionParser.insert_option_groupcCs;|jdd…}x!|jD]}|j|jƒqW|S(u<Get a list of all options, including those in option groups.N(u option_listu option_groupsuextend(uselfuresui((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuoption_list_allssu"CustomOptionParser.option_list_allN(u__name__u __module__u __qualname__uinsert_option_groupupropertyuoption_list_all(u __locals__((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuCustomOptionParseris uCustomOptionParsercBs‰|EeZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z ddd„Z dd„Z dd„Z dS(uConfigOptionParserusCustom option parser which updates its defaults by checking the configuration files and environmental variablescOsxtjƒ|_|jdƒ|_|jƒ|_|jrO|jj|jƒn|js^t‚t j j |||ŽdS(Nuname( u ConfigParseruRawConfigParseruconfigupopunameuget_config_filesufilesureaduAssertionErroruoptparseu OptionParseru__init__(uselfuargsukwargs((u'/tmp/pip-zej_zi-build/pip/baseparser.pyu__init__s uConfigOptionParser.__init__cCsNtjjddƒ}|tjkr(gS|rGtjj|ƒrG|gStgS(NuPIP_CONFIG_FILEF(uosuenvironugetuFalseudevnullupathuexistsudefault_config_file(uselfu config_file((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuget_config_filesŠs u#ConfigOptionParser.get_config_filesc Cs[y|j||ƒSWn@tjk rVtjƒd}td|ƒtjdƒYnXdS(Niu*An error occurred during configuration: %si(u check_valueuoptparseuOptionValueErrorusysuexc_infouprintuexit(uselfuoptionukeyuvalue((u'/tmp/pip-zej_zi-build/pip/baseparser.pyu check_default’s u ConfigOptionParser.check_defaultcs#i}x6dˆjfD]%}|jˆjˆj|ƒƒƒqW|jˆjˆjƒƒƒxΑ|jƒD]³\‰}ˆjˆƒ‰ˆdk rh|s›qhnˆjd krΉt |ƒ}nˆjdkrφ|j ƒ}‡‡‡fdd†|Dƒ}nˆj ˆˆ|ƒ}||ˆj °s u6ConfigOptionParser.update_defaults..N(u store_trueu store_falseucount( unameuupdateunormalize_keysuget_config_sectionuget_environ_varsuitemsu get_optionuNoneuactionu strtoboolusplitu check_defaultudest(uselfudefaultsuconfigusectionuval((ukeyuoptionuselfu'/tmp/pip-zej_zi-build/pip/baseparser.pyuupdate_defaultsšs"#  "u"ConfigOptionParser.update_defaultscCsYi}xL|D]D\}}|jddƒ}|jdƒsGd|}n||||j ƒ}|j ||ƒ||jq>Wtj|ƒS(u‹Overridding to make updating the defaults after instantiation of the option parser possible, update_defaults() does the dirty work.( uprocess_default_valuesuoptparseuValuesudefaultsuupdate_defaultsucopyu_get_all_optionsugetudestu isinstanceu string_typesuget_opt_stringu check_value(uselfudefaultsuoptionudefaultuopt_str((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuget_default_valuesΟs   u%ConfigOptionParser.get_default_valuescCs(|jtjƒ|jdd|ƒdS(Niu%s (u print_usageusysustderruexit(uselfumsg((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuerrorήsuConfigOptionParser.errorN( u__name__u __module__u __qualname__u__doc__u__init__uget_config_filesu check_defaultuupdate_defaultsunormalize_keysuget_config_sectionuget_environ_varsuget_default_valuesuerror(u __locals__((u'/tmp/pip-zej_zi-build/pip/baseparser.pyuConfigOptionParser}s     uConfigOptionParser(u__doc__usysuoptparseuosutextwrapudistutils.utilu strtoboolupip.backwardcompatu ConfigParseru string_typesu pip.locationsudefault_config_fileupip.utiluget_terminal_sizeuget_progu pip._vendoru pkg_resourcesuIndentedHelpFormatteruPrettyHelpFormatteruUpdatingDefaultsHelpFormatteru OptionParseruCustomOptionParseruConfigOptionParser(((u'/tmp/pip-zej_zi-build/pip/baseparser.pyus    O