grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026B »à�YNØ^ã@sdZdZdddddddd d d d d dddddgZddlZddlZddlZddl m Z m Z dZ dZ dZdZdZdZdZGdd„deƒZdd „ZGd!d„deƒZGd"d„deƒZGd#d „d eƒZGd$d„deƒZGd%d „d eƒZd&d'„ZGd(d„deƒZGd)d„deƒZGd*d „d eƒZGd+d,„d,eƒZ Gd-d.„d.eƒZ!Gd/d0„d0e!ƒZ"Gd1d2„d2e!ƒZ#Gd3d4„d4eƒZ$Gd5d6„d6eƒZ%Gd7d8„d8eƒZ&Gd9d:„d:eƒZ'Gd;d<„d„d>eƒZ)Gd?d„deƒZ*Gd@d „d eƒZ+GdAdB„dBeƒZ,GdCdD„dDe,ƒZ-GdEdF„dFe-ƒZ.GdGd„dee,ƒZ/dS)Haû Command-line parsing library This module is an optparse-inspired command-line parsing library that: - handles both optional and positional arguments - produces highly informative usage messages - supports parsers that dispatch to sub-parsers The following is a simple usage example that sums integers from the command-line and writes the result to a file:: parser = argparse.ArgumentParser( description='sum the integers at the command line') parser.add_argument( 'integers', metavar='int', nargs='+', type=int, help='an integer to be summed') parser.add_argument( '--log', default=sys.stdout, type=argparse.FileType('w'), help='the file where the sum should be written') args = parser.parse_args() args.log.write('%s' % sum(args.integers)) args.log.close() The module contains the following public classes: - ArgumentParser -- The main entry point for command-line parsing. As the example above shows, the add_argument() method is used to populate the parser with actions for optional and positional arguments. Then the parse_args() method is invoked to convert the args at the command-line into an object with attributes. - ArgumentError -- The exception raised by ArgumentParser objects when there are errors with the parser's actions. Errors raised while parsing the command-line are caught by ArgumentParser and emitted as command-line messages. - FileType -- A factory for defining types of files to be created. As the example above shows, instances of FileType are typically passed as the type= argument of add_argument() calls. - Action -- The base class for parser actions. Typically actions are selected by passing strings like 'store_true' or 'append_const' to the action= argument of add_argument(). However, for greater customization of ArgumentParser actions, subclasses of Action may be defined and passed as the action= argument. - HelpFormatter, RawDescriptionHelpFormatter, RawTextHelpFormatter, ArgumentDefaultsHelpFormatter -- Formatter classes which may be passed as the formatter_class= argument to the ArgumentParser constructor. HelpFormatter is the default, RawDescriptionHelpFormatter and RawTextHelpFormatter tell the parser not to change the formatting for help text, and ArgumentDefaultsHelpFormatter adds information about argument defaults to the help. All other classes in this module are considered implementation details. (Also note that HelpFormatter and RawDescriptionHelpFormatter are only considered public as object names -- the API of the formatter objects is still considered an implementation detail.) z1.1ÚArgumentParserÚ ArgumentErrorÚArgumentTypeErrorÚFileTypeÚ HelpFormatterÚArgumentDefaultsHelpFormatterÚRawDescriptionHelpFormatterÚRawTextHelpFormatterÚMetavarTypeHelpFormatterÚ NamespaceÚActionÚ ONE_OR_MOREÚOPTIONALÚPARSERÚ REMAINDERÚSUPPRESSÚ ZERO_OR_MOREéN)ÚgettextÚngettextz ==SUPPRESS==ú?Ú*ú+zA...z...Z_unrecognized_argsc@s(eZdZdZdd„Zdd„Zdd„ZdS) Ú_AttributeHolderaAbstract base class that provides __repr__. The __repr__ method returns a string in the format:: ClassName(attr=name, attr=name, ...) The attributes are determined either by a class-level attribute, '_kwarg_names', or by inspecting the instance __dict__. cCs”t|ƒj}g}i}x| ¡D]}| t|ƒ¡qWx8| ¡D],\}}| ¡r`| d||f¡q<|||<q×sz6HelpFormatter._Section.format_help..Úz%*s%s: Ú ) rSrRrPÚ _join_partsr+rQrTrrA)r!r Z item_helpZcurrent_indentrTr&r&r'Ú format_helpÒs    z"HelpFormatter._Section.format_help)N)rr,r-rNr\r&r&r&r'rDÊs rDcCs|jj ||f¡dS)N)rFr+r)r!rVrWr&r&r'Ú _add_itemészHelpFormatter._add_itemcCs0| ¡| ||j|¡}| |jg¡||_dS)N)rPrDrFr]r\)r!rTZsectionr&r&r'Ú start_sectionïszHelpFormatter.start_sectioncCs|jj|_| ¡dS)N)rFrSrQ)r!r&r&r'Ú end_sectionõs zHelpFormatter.end_sectioncCs$|tk r |dk r | |j|g¡dS)N)rr]Ú _format_text)r!Útextr&r&r'Úadd_textùszHelpFormatter.add_textcCs&|tk r"||||f}| |j|¡dS)N)rr]Ú _format_usage)r!ÚusageÚactionsÚgroupsÚprefixrWr&r&r'Ú add_usageýs zHelpFormatter.add_usagecCsz|jtk rv|j}||ƒg}x | |¡D]}| ||ƒ¡q&Wtdd„|Dƒƒ}||j}t|j|ƒ|_| |j |g¡dS)NcSsg|] }t|ƒ‘qSr&)Úlen)rUÚsr&r&r'rX sz.HelpFormatter.add_argument..) ÚhelprÚ_format_action_invocationÚ_iter_indented_subactionsrr?rArCr]Ú_format_action)r!ÚactionZget_invocationZ invocationsÚ subactionZinvocation_lengthZ action_lengthr&r&r'Ú add_arguments   zHelpFormatter.add_argumentcCsx|D]}| |¡qWdS)N)rq)r!reror&r&r'Ú add_argumentss zHelpFormatter.add_argumentscCs.|j ¡}|r*|j d|¡}| d¡d}|S)Nz rZ)rEr\rKÚsubÚstrip)r!rkr&r&r'r\s  zHelpFormatter.format_helpcCsd dd„|Dƒ¡S)NrYcSsg|]}|r|tk r|‘qSr&)r)rUÚpartr&r&r'rX#sz-HelpFormatter._join_parts..)r )r!Z part_stringsr&r&r'r["s zHelpFormatter._join_partscs|dkrtdƒ}|dk r,|t|jd�}�nÚ|dkrL|sLdt|jd�}�nº|dk�rdt|jd�}g}g}x(|D] }|jrŠ| |¡qt| |¡qtW|j} | |||ƒ} d dd„|| gDƒ¡}|j|j‰t |ƒt |ƒˆk�rd} | ||ƒ} | ||ƒ} t   | | ¡}t   | | ¡}d‡fdd „ }t |ƒt |ƒd ˆk�r¢dt |ƒt |ƒd }|�r€||g|||ƒ}|  |||ƒ¡n |�rš||g|||ƒ}n|g}nZdt |ƒ}||}|||ƒ}t |ƒd k�ròg}|  |||ƒ¡|  |||ƒ¡|g|}d  |¡}d ||fS)Nzusage: )rLz%(prog)sú cSsg|] }|r|‘qSr&r&)rUrjr&r&r'rXCsz/HelpFormatter._format_usage..z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+csÊg}g}|dk rt|ƒd}n t|ƒd}xb|D]Z}|dt|ƒˆkrp|rp| |d |¡¡g}t|ƒd}| |¡|t|ƒd7}q0W|r¦| |d |¡¡|dk rÆ|dt|ƒd…|d<|S)NrOrvr)rirr )ÚpartsÚindentrgÚlinesÚlineZline_lenru)Ú text_widthr&r'Ú get_linesWs"    z.HelpFormatter._format_usage..get_linesgè?rOrZz%s%s )N) Ú_Údictr;Úoption_stringsrÚ_format_actions_usager r@rArirGÚfindallÚextend)r!rdrerfrgrLÚ optionalsÚ positionalsroÚformatZ action_usageZ part_regexpZ opt_usageZ pos_usageZ opt_partsZ pos_partsr|rxryrwr&)r{r'rc'sV             zHelpFormatter._format_usagec Cstƒ}i}�x(|D�]}y| |jd¡}Wntk rBwYqX|t|jƒ}|||…|jkrx|jD]}| |¡qlW|jsÊ||krž||d7<nd||<||krÀ||d7<nd||<nF||krä||d7<nd||<||k�r||d7<nd||<x t|d|ƒD]} d || <�q WqWg} �x0t|ƒD�]"\} }|j t k�r¦|   d¡|  | ¡d k�r‚|  | ¡n"|  | d¡d k�rh|  | d¡nÂ|j�s| |¡} | || ¡} ||k�rö| ddk�rö| d dk�rö| dd …} |   | ¡nf|jd} |jdk�r"d | } n"| |¡} | || ¡}d | |f} |j�s^||k�r^d | } |   | ¡�qFWx(t|dd�D]} || g| | | …<�q|Wd dd„| Dƒ¡}d}d}t d|d|¡}t d|d|¡}t d||fd|¡}t dd|¡}| ¡}|S)Nrz [ú[ú]z (ú(ú)rOú|éÿÿÿÿz%sz%s %sz[%s]T)ÚreverservcSsg|]}|dk r|‘qS)Nr&)rUÚitemr&r&r'rXàsz7HelpFormatter._format_actions_usage..z[\[(]z[\])]z(%s) z\1z (%s)z%s *%srYz \(([^|]*)\))ÚsetÚindexÚ_group_actionsr:riÚaddÚrequiredÚrangeÚ enumeraterkrrÚgetÚpoprÚ#_get_default_metavar_for_positionalÚ _format_argsÚnargsÚ!_get_default_metavar_for_optionalr)r rGrsrt)r!rerfÚ group_actionsZinsertsÚgroupÚstartÚendroÚirwÚdefaultruÚ option_stringÚ args_stringraÚopenÚcloser&r&r'r€‡sz                 z#HelpFormatter._format_actions_usagecCsFd|kr|t|jd�}t|j|jdƒ}d|j}| |||¡dS)Nz%(prog))rLé rvz )r~r;r?r@rAÚ _fill_text)r!rar{rxr&r&r'r`îs  zHelpFormatter._format_textc CsBt|jd|jƒ}t|j|dƒ}||jd}| |¡}|jsV|jd|f}d|}n@t|ƒ|kr~|jd||f}d|}d}n|jd|f}d|}|}|g}|jrü|  |¡} |  | |¡} |  d|d| df¡x@| dd…D]} |  d|d| f¡qÞWn|  d¡�s|  d¡x$|  |¡D]} |  | | ¡¡�qW| |¡S) Nr2r¥rYz%*s%s z %*s%-*s rrOrZ)r>rCr=r?r@rArlrkriÚ _expand_helpÚ _split_linesrÚendswithrmrnr[) r!roZ help_positionZ help_widthZ action_widthZ action_headerÚtupZ indent_firstrwZ help_textZ help_linesrzrpr&r&r'rnõs6          zHelpFormatter._format_actioncCsˆ|js&| |¡}| ||¡dƒ\}|Sg}|jdkrB| |j¡n8| |¡}| ||¡}x |jD]}| d||f¡q`Wd |¡SdS)NrOrz%s %sz, ) rr—Ú_metavar_formatterr™r‚ršr˜rr )r!ror Úmetavarrwr¢r¡r&r&r'rl$s     z'HelpFormatter._format_action_invocationcsP|jdk r|j‰n.|jdk r.z{%s}ú,cstˆtƒrˆSˆf|SdS)N)Ú isinstanceÚtuple)Z tuple_size)Úresultr&r'r…Es z0HelpFormatter._metavar_formatter..format)r¬Úchoicesr )r!roÚdefault_metavarZ choice_strsr…r&)r±r'r«<s   z HelpFormatter._metavar_formattercCsÐ| ||¡}|jdkr$d|dƒ}n¨|jtkr.rv) r«r™r rr rrrr“r )r!ror³Z get_metavarr±Zformatsr&r&r'r˜Ls$        zHelpFormatter._format_argscCs tt|ƒ|jd�}x"t|ƒD]}||tkr||=qWx,t|ƒD] }t||dƒr@||j||<q@W| d¡dk r’d dd„|dDƒ¡}||d<|  |¡|S)N)rLrr²z, cSsg|] }t|ƒ‘qSr&)r­)rUÚcr&r&r'rXjsz.HelpFormatter._expand_help..) r~Úvarsr;r/rÚhasattrrr•r Ú_get_help_string)r!roZparamsr$Z choices_strr&r&r'r§as  zHelpFormatter._expand_helpccs@y |j}Wntk rYnX| ¡|ƒEdH| ¡dS)N)Ú_get_subactionsÚAttributeErrorrPrQ)r!roZget_subactionsr&r&r'rmns  z'HelpFormatter._iter_indented_subactionscCs&|j d|¡ ¡}ddl}| ||¡S)Nrvr)rJrsrtÚtextwrapZwrap)r!rarMrºr&r&r'r¨xszHelpFormatter._split_linescCs,|j d|¡ ¡}ddl}|j||||d�S)Nrvr)Zinitial_indentZsubsequent_indent)rJrsrtrºZfill)r!rarMrxrºr&r&r'r¦s zHelpFormatter._fill_textcCs|jS)N)rk)r!ror&r&r'r·†szHelpFormatter._get_help_stringcCs |j ¡S)N)ÚdestÚupper)r!ror&r&r'rš‰sz/HelpFormatter._get_default_metavar_for_optionalcCs|jS)N)r»)r!ror&r&r'r—Œsz1HelpFormatter._get_default_metavar_for_positional)r2r3N)N) rr,r-r.rNrPrQÚobjectrDr]r^r_rbrhrqrrr\r[rcr€r`rnrlr«r˜r§rmr¨r¦r·ršr—r&r&r&r'r˜s<  `g/  c@seZdZdZdd„ZdS)rzÙHelp message formatter which retains any formatting in descriptions. Only the name of this class is considered a public API. All the methods provided by the class are considered an implementation detail. cs d ‡fdd„|jdd�Dƒ¡S)NrYc3s|]}ˆ|VqdS)Nr&)rUrz)rxr&r'ú ˜sz9RawDescriptionHelpFormatter._fill_text..T)Úkeepends)r Ú splitlines)r!rarMrxr&)rxr'r¦—sz&RawDescriptionHelpFormatter._fill_textN)rr,r-r.r¦r&r&r&r'r�sc@seZdZdZdd„ZdS)rzÖHelp message formatter which retains formatting of all help text. Only the name of this class is considered a public API. All the methods provided by the class are considered an implementation detail. cCs| ¡S)N)rÀ)r!rarMr&r&r'r¨¢sz!RawTextHelpFormatter._split_linesN)rr,r-r.r¨r&r&r&r'r›sc@seZdZdZdd„ZdS)rz×Help message formatter which adds default values to argument help. Only the name of this class is considered a public API. All the methods provided by the class are considered an implementation detail. cCs>|j}d|jkr:|jtk r:ttg}|js2|j|kr:|d7}|S)Nz %(default)z (default: %(default)s))rkr rr rrr™)r!rorkZdefaulting_nargsr&r&r'r·­s  z.ArgumentDefaultsHelpFormatter._get_help_stringN)rr,r-r.r·r&r&r&r'r¦sc@s eZdZdZdd„Zdd„ZdS)r a Help message formatter which uses the argument 'type' as the default metavar value (instead of the argument 'dest') Only the name of this class is considered a public API. All the methods provided by the class are considered an implementation detail. cCs|jjS)N)rr)r!ror&r&r'rš¿sz:MetavarTypeHelpFormatter._get_default_metavar_for_optionalcCs|jjS)N)rr)r!ror&r&r'r—Âsz.r&)r!Únamesr&)r!r'r>szAction._get_kwargscCsttdƒƒ‚dS)Nz.__call__() not defined)ÚNotImplementedErrorr})r!ÚparserÚ namespaceÚvaluesr¡r&r&r'Ú__call__LszAction.__call__)NNNNNFNN)N)rr,r-r.rNrrÎr&r&r&r'r õs1 cs(eZdZd‡fdd„ Zddd„Z‡ZS) Ú _StoreActionNFc sT|dkrtdƒ‚|dk r,|tkr,tdtƒ‚tt|ƒj||||||||| | d� dS)Nrz„nargs for store actions must be > 0; if you have nothing to store, actions such as store true or store const may be more appropriatez nargs must be %r to supply const) rr»r™rÇr rr²r’rkr¬)r:r ÚsuperrÏrN) r!rr»r™rÇr rr²r’rkr¬)Ú __class__r&r'rNRs   z_StoreAction.__init__cCst||j|ƒdS)N)Úsetattrr»)r!rËrÌrÍr¡r&r&r'rÎosz_StoreAction.__call__)NNNNNFNN)N)rr,r-rNrÎÚ __classcell__r&r&)rÑr'rÏPsrÏcs(eZdZd‡fdd„ Zddd„Z‡ZS) Ú_StoreConstActionNFc s"tt|ƒj||d||||d�dS)Nr)rr»r™rÇr r’rk)rÐrÔrN)r!rr»rÇr r’rkr¬)rÑr&r'rNus z_StoreConstAction.__init__cCst||j|jƒdS)N)rÒr»rÇ)r!rËrÌrÍr¡r&r&r'rΆsz_StoreConstAction.__call__)NFNN)N)rr,r-rNrÎrÓr&r&)rÑr'rÔss  rÔcseZdZd‡fdd„ Z‡ZS)Ú_StoreTrueActionFNcs tt|ƒj||d|||d�dS)NT)rr»rÇr r’rk)rÐrÕrN)r!rr»r r’rk)rÑr&r'rNŒs z_StoreTrueAction.__init__)FFN)rr,r-rNrÓr&r&)rÑr'rÕŠsrÕcseZdZd‡fdd„ Z‡ZS)Ú_StoreFalseActionTFNcs tt|ƒj||d|||d�dS)NF)rr»rÇr r’rk)rÐrÖrN)r!rr»r r’rk)rÑr&r'rN�s z_StoreFalseAction.__init__)TFN)rr,r-rNrÓr&r&)rÑr'rÖ›srÖcs(eZdZd‡fdd„ Zddd„Z‡ZS) Ú _AppendActionNFc sT|dkrtdƒ‚|dk r,|tkr,tdtƒ‚tt|ƒj||||||||| | d� dS)Nrz‹nargs for append actions must be > 0; if arg strings are not supplying the value to append, the append const action may be more appropriatez nargs must be %r to supply const) rr»r™rÇr rr²r’rkr¬)r:r rÐr×rN) r!rr»r™rÇr rr²r’rkr¬)rÑr&r'rN®s   z_AppendAction.__init__cCs2t||jdƒ}t|ƒ}| |¡t||j|ƒdS)N)rÈr»r1rrÒ)r!rËrÌrÍr¡r+r&r&r'rÎËs z_AppendAction.__call__)NNNNNFNN)N)rr,r-rNrÎrÓr&r&)rÑr'r׬sr×cs(eZdZd‡fdd„ Zddd„Z‡ZS) Ú_AppendConstActionNFc s$tt|ƒj||d|||||d�dS)Nr)rr»r™rÇr r’rkr¬)rÐrØrN)r!rr»rÇr r’rkr¬)rÑr&r'rNÔs z_AppendConstAction.__init__cCs4t||jdƒ}t|ƒ}| |j¡t||j|ƒdS)N)rÈr»r1rrÇrÒ)r!rËrÌrÍr¡r+r&r&r'rÎæs z_AppendConstAction.__call__)NFNN)N)rr,r-rNrÎrÓr&r&)rÑr'rØÒs  rØcs(eZdZd‡fdd„ Zddd„Z‡ZS) Ú _CountActionNFcs tt|ƒj||d|||d�dS)Nr)rr»r™r r’rk)rÐrÙrN)r!rr»r r’rk)rÑr&r'rNïs z_CountAction.__init__cCs0t||jdƒ}|dkrd}t||j|dƒdS)NrrO)rÈr»rÒ)r!rËrÌrÍr¡Úcountr&r&r'rÎýsz_CountAction.__call__)NFN)N)rr,r-rNrÎrÓr&r&)rÑr'rÙís rÙcs.eZdZeedf‡fdd„ Zddd„Z‡ZS)Ú _HelpActionNcstt|ƒj|||d|d�dS)Nr)rr»r r™rk)rÐrÛrN)r!rr»r rk)rÑr&r'rNs  z_HelpAction.__init__cCs| ¡| ¡dS)N)Ú print_helpÚexit)r!rËrÌrÍr¡r&r&r'rÎsz_HelpAction.__call__)N)rr,r-rrNrÎrÓr&r&)rÑr'rÛsrÛcs0eZdZdeedf‡fdd„ Zddd„Z‡ZS)Ú_VersionActionNz&show program's version number and exitcs$tt|ƒj|||d|d�||_dS)Nr)rr»r r™rk)rÐrÞrNÚversion)r!rrßr»r rk)rÑr&r'rNs z_VersionAction.__init__cCsD|j}|dkr|j}| ¡}| |¡| | ¡tj¡| ¡dS)N)rßÚ_get_formatterrbÚ_print_messager\Ú_sysÚstdoutrÝ)r!rËrÌrÍr¡rßrRr&r&r'rÎ's z_VersionAction.__call__)N)rr,r-rrNrÎrÓr&r&)rÑr'rÞs  rÞcsPeZdZGdd„deƒZedddf‡fdd„ Zdd„Zd d „Zd d d „Z ‡Z S)Ú_SubParsersActioncseZdZ‡fdd„Z‡ZS)z&_SubParsersAction._ChoicesPseudoActioncs@|}}|r|dd |¡7}ttj|ƒ}|jg|||d�dS)Nz (%s)z, )rr»rkr¬)r rÐräÚ_ChoicesPseudoActionrN)r!r$Úaliasesrkr¬r»Zsup)rÑr&r'rN5s   z/_SubParsersAction._ChoicesPseudoAction.__init__)rr,r-rNrÓr&r&)rÑr'rå3sråFNc s<||_||_i|_g|_tt|ƒj||t|j|||d�dS)N)rr»r™r²r’rkr¬)Ú _prog_prefixÚ _parser_classÚ_name_parser_mapÚ_choices_actionsrÐrärNr)r!rrLÚ parser_classr»r’rkr¬)rÑr&r'rN=s  z_SubParsersAction.__init__cKsŠ| d¡dkr d|j|f|d<| dd¡}d|krX| d¡}| |||¡}|j |¡|jf|Ž}||j|<x|D]}||j|<qtW|S)NrLz%s %srær&rk)r•rçr–rårêrrèré)r!r$ÚkwargsrærkZ choice_actionrËÚaliasr&r&r'Ú add_parserTs      z_SubParsersAction.add_parsercCs|jS)N)rê)r!r&r&r'r¸ksz!_SubParsersAction._get_subactionsc CsÖ|d}|dd…}|jtk r,t||j|ƒy|j|}Wn<tk rv|d |j¡dœ}tdƒ|}t||ƒ‚YnX| |d¡\} }x$t | ƒ  ¡D]\} } t|| | ƒq–W|rÒt |ƒ  t g¡t |t ƒ |¡dS)NrrOz, )Ú parser_namer²z5unknown parser %(parser_name)r (choices: %(choices)s))r»rrÒrér9r r}rÚparse_known_argsrµr+Ú setdefaultÚ_UNRECOGNIZED_ARGS_ATTRrÈr‚) r!rËrÌrÍr¡rïr"rWÚmsgZ subnamespaceÚkeyr%r&r&r'rÎns"    z_SubParsersAction.__call__)N) rr,r-r rårrNrîr¸rÎrÓr&r&)rÑr'rä1sräc@s*eZdZdZd dd„Zdd„Zd d „ZdS) raÆFactory for creating file object types Instances of FileType are typically passed as type= arguments to the ArgumentParser add_argument() method. Keyword Arguments: - mode -- A string indicating how the file is to be opened. Accepts the same values as the builtin open() function. - bufsize -- The file's desired buffer size. Accepts the same values as the builtin open() function. - encoding -- The file's encoding. Accepts the same values as the builtin open() function. - errors -- A string indicating how encoding and decoding errors are to be handled. Accepts the same value as the builtin open() function. Úrr‹NcCs||_||_||_||_dS)N)Ú_modeÚ_bufsizeÚ _encodingÚ_errors)r!ÚmodeÚbufsizeÚencodingÚerrorsr&r&r'rN¤szFileType.__init__c Cs–|dkr>d|jkrtjSd|jkr(tjStdƒ|j}t|ƒ‚yt||j|j|j|j ƒSt k r�}ztdƒ}t |||fƒ‚Wdd}~XYnXdS)Nú-rõÚwzargument "-" with mode %rzcan't open '%s': %s) rörâÚstdinrãr}r:r£r÷rørùÚOSErrorr)r!ÚstringróÚerÅr&r&r'rΪs  zFileType.__call__cCsT|j|jf}d|jfd|jfg}d dd„|Dƒdd„|Dƒ¡}dt|ƒj|fS)Nrürýz, cSsg|]}|dkrt|ƒ‘qS)r‹)r)rUr#r&r&r'rXÀsz%FileType.__repr__..cSs$g|]\}}|dk rd||f‘qS)Nz%s=%rr&)rUÚkwr#r&r&r'rXÁsz%s(%s))rör÷rørùr rr)r!rWrìZargs_strr&r&r'r(½s  zFileType.__repr__)rõr‹NN)rr,r-r.rNrÎr(r&r&r&r'r“s c@s(eZdZdZdd„Zdd„Zdd„ZdS) r z“Simple object for storing attributes. Implements equality by attribute names and values, and provides a simple string representation. cKs"x|D]}t||||ƒqWdS)N)rÒ)r!rìr$r&r&r'rNÐs zNamespace.__init__cCst|tƒstSt|ƒt|ƒkS)N)r¯r ÚNotImplementedrµ)r!Úotherr&r&r'Ú__eq__Ôs zNamespace.__eq__cCs ||jkS)N)r*)r!rôr&r&r'Ú __contains__ÙszNamespace.__contains__N)rr,r-r.rNrrr&r&r&r'r Éscs¨eZdZ‡fdd„Zdd„Zd&dd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zd'dd„Zdd„Zd d!„Zd"d#„Zd$d%„Z‡ZS)(Ú_ActionsContainercstt|ƒ ¡||_||_||_||_i|_| ddt ¡| ddt ¡| ddt ¡| ddt ¡| ddt ¡| ddt ¡| ddt¡| ddt¡| dd t¡| dd t¡| dd t¡| ¡g|_i|_g|_g|_i|_t d ¡|_g|_dS) NroZstoreZ store_constÚ store_trueZ store_falserZ append_constrÚrkrßÚparsersz^-\d+$|^-\d*\.\d+$)rÐr rNÚ descriptionÚargument_defaultÚ prefix_charsÚconflict_handlerÚ _registriesÚregisterrÏrÔrÕrÖr×rØrÙrÛrÞräÚ _get_handlerÚ_actionsÚ_option_string_actionsÚ_action_groupsÚ_mutually_exclusive_groupsÚ _defaultsrGrHÚ_negative_number_matcherÚ_has_negative_number_optionals)r!r rr r)rÑr&r'rNßs2 z_ActionsContainer.__init__cCs|j |i¡}|||<dS)N)rrñ)r!Ú registry_namer%r½Úregistryr&r&r'rsz_ActionsContainer.registerNcCs|j| ||¡S)N)rr•)r!rr%r r&r&r'Ú _registry_getsz_ActionsContainer._registry_getcKs6|j |¡x$|jD]}|j|kr||j|_qWdS)N)rÚupdaterr»r )r!rìror&r&r'Ú set_defaultss   z_ActionsContainer.set_defaultscCs8x(|jD]}|j|kr|jdk r|jSqW|j |d¡S)N)rr»r rr•)r!r»ror&r&r'Ú get_default&s  z_ActionsContainer.get_defaultcOs.|j}|r&t|ƒdkrH|dd|krH|r:d|kr:tdƒ‚|j||Ž}n |j||Ž}d|kr’|d}||jkr~|j||d<n|jdk r’|j|d<| |¡}t|ƒs²td|fƒ‚|f|Ž}|  d|j |j ¡}t|ƒsätd |fƒ‚t |d ƒ�r$y|  ¡  |d¡Wntk �r"td ƒ‚YnX| |¡S) zƒ add_argument(dest, ..., name=value, ...) add_argument(option_string, option_string, ..., name=value, ...) rOrr»z+dest supplied twice for positional argumentr Nzunknown action "%s"rz%r is not callableràz,length of metavar tuple does not match nargs)rrir:Ú_get_positional_kwargsÚ_get_optional_kwargsrr Ú_pop_action_classÚcallablerrr¶ràr˜Ú TypeErrorÚ _add_action)r!rWrìÚcharsr»Z action_classroÚ type_funcr&r&r'rq0s2          z_ActionsContainer.add_argumentcOs t|f|ž|Ž}|j |¡|S)N)Ú_ArgumentGrouprr)r!rWrìrœr&r&r'Úadd_argument_group_s z$_ActionsContainer.add_argument_groupcKst|f|Ž}|j |¡|S)N)Ú_MutuallyExclusiveGrouprr)r!rìrœr&r&r'Úadd_mutually_exclusive_groupds  z._ActionsContainer.add_mutually_exclusive_groupcCsh| |¡|j |¡||_x|jD]}||j|<q$Wx,|jD]"}|j |¡r>|js>|j d¡q>W|S)NT) Ú_check_conflictrrÚ containerrrrÚmatchr)r!ror¡r&r&r'r%is     z_ActionsContainer._add_actioncCs|j |¡dS)N)rÚremove)r!ror&r&r'Ú_remove_action~sz _ActionsContainer._remove_actioncCsòi}x8|jD].}|j|kr0tdƒ}t||jƒ‚|||j<q Wi}xR|jD]H}|j|krt|j|j|j|jd�||j<x|jD]}||j||<q|WqJWx4|jD]*}|j |j d�}x|jD] }|||<q¸WqžWx |j D]}|  ||¡  |¡qÔWdS)Nz.cannot merge actions - two groups are named %r)Útitler r)r’)rr1r}r:r)r rr�rr+r’rr•r%)r!r-Ztitle_group_maprœróZ group_maproÚ mutex_groupr&r&r'Ú_add_container_actions�s,         z(_ActionsContainer._add_container_actionscKs^d|krtdƒ}t|ƒ‚| d¡ttgkr2d|d<| d¡tkrPd|krPd|d<t||gd�S)Nr’z1'required' is an invalid argument for positionalsr™Tr )r»r)r}r$r•r rr~)r!r»rìrór&r&r'r ©sz(_ActionsContainer._get_positional_kwargsc Osèg}g}xv|D]n}|d|jkr@||jdœ}tdƒ}t||ƒ‚| |¡|d|jkrt|ƒdkr|d|jkr| |¡qW| dd¡}|dkrÚ|r¢|d}n|d}| |j¡}|sÎtdƒ}t||ƒ‚| dd¡}t|||d �S) Nr)ÚoptionrzNinvalid option string %(option)r: must start with a character %(prefix_chars)rrOr»z%dest= is required for options like %rrþr})r»r) rr}r:rrir–ÚlstripÚreplacer~) r!rWrìrZlong_option_stringsr¡rór»Zdest_option_stringr&r&r'r!¹s0          z&_ActionsContainer._get_optional_kwargscCs| d|¡}| d||¡S)Nro)r–r)r!rìr ror&r&r'r"Ýs z#_ActionsContainer._pop_action_classcCsDd|j}y t||ƒStk r>tdƒ}t||jƒ‚YnXdS)Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)rrÈr¹r}r:)r!Zhandler_func_namerór&r&r'rás   z_ActionsContainer._get_handlercCsPg}x0|jD]&}||jkr |j|}| ||f¡q W|rL| ¡}|||ƒdS)N)rrrr)r!roZconfl_optionalsr¡Zconfl_optionalrr&r&r'r,ês   z!_ActionsContainer._check_conflictcCs6tddt|ƒƒ}d dd„|Dƒ¡}t|||ƒ‚dS)Nzconflicting option string: %szconflicting option strings: %sz, cSsg|] \}}|‘qSr&r&)rUr¡ror&r&r'rXüsz<_ActionsContainer._handle_conflict_error..)rrir r)r!roÚconflicting_actionsrÅZconflict_stringr&r&r'Ú_handle_conflict_errorøs    z(_ActionsContainer._handle_conflict_errorcCsBx<|D]4\}}|j |¡|j |d¡|js|j |¡qWdS)N)rr/rr–r-r0)r!ror7r¡r&r&r'Ú_handle_conflict_resolves  z*_ActionsContainer._handle_conflict_resolve)N)N)rr,r-rNrrrrrqr)r+r%r0r3r r!r"rr,r8r9rÓr&r&)rÑr'r Ýs$ 4   /($   r cs6eZdZd‡fdd„ Z‡fdd„Z‡fdd„Z‡ZS) r(Nc sˆ|j}|d|jƒ|d|jƒ|d|jƒtt|ƒj}|fd|i|—Ž||_g|_|j |_ |j |_ |j |_ |j |_ |j |_ |j|_dS)Nrrr r )rñrrr rÐr(rNr1r�rrrrrr)r!r-r1r rìrZ super_init)rÑr&r'rNs    z_ArgumentGroup.__init__cs tt|ƒ |¡}|j |¡|S)N)rÐr(r%r�r)r!ro)rÑr&r'r%(s z_ArgumentGroup._add_actioncs tt|ƒ |¡|j |¡dS)N)rÐr(r0r�r/)r!ro)rÑr&r'r0-sz_ArgumentGroup._remove_action)NN)rr,r-rNr%r0rÓr&r&)rÑr'r(s r(cs.eZdZd‡fdd„ Zdd„Zdd„Z‡ZS) r*Fcs tt|ƒ |¡||_||_dS)N)rÐr*rNr’Ú _container)r!r-r’)rÑr&r'rN4sz _MutuallyExclusiveGroup.__init__cCs2|jrtdƒ}t|ƒ‚|j |¡}|j |¡|S)Nz-mutually exclusive arguments must be optional)r’r}r:r:r%r�r)r!rorór&r&r'r%9s   z#_MutuallyExclusiveGroup._add_actioncCs|j |¡|j |¡dS)N)r:r0r�r/)r!ror&r&r'r0As z&_MutuallyExclusiveGroup._remove_action)F)rr,r-rNr%r0rÓr&r&)rÑr'r*2sr*c s*eZdZdZddddgeddddddf ‡fdd„ Zdd „Zd d „Zd d „Zdd„Z dd„Z dAdd„Z dBdd„Z dd„Z dd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„ZdCd&d'„ZdDd(d)„Zd*d+„Zd,d-„Zd.d/„Zd0d1„Zd2d3„Zd4d5„ZdEd6d7„ZdFd8d9„ZdGd:d;„ZdHd=d>„Z d?d@„Z!‡Z"S)Ira®Object for parsing command line strings into Python objects. Keyword Arguments: - prog -- The name of the program (default: sys.argv[0]) - usage -- A usage message (default: auto-generated from arguments) - description -- A description of what the program does - epilog -- Text following the argument descriptions - parents -- Parsers whose arguments should be copied into this one - formatter_class -- HelpFormatter class for printing help messages - prefix_chars -- Characters that prefix optional arguments - fromfile_prefix_chars -- Characters that prefix files containing additional arguments - argument_default -- The default value for all arguments - conflict_handler -- String indicating how to handle conflicts - add_help -- Add a -h/-help option - allow_abbrev -- Allow long options to be abbreviated unambiguously NrþÚerrorTc  s&tt|ƒj} | ||| | d�|dkr6tj tjd¡}||_||_ ||_ ||_ ||_ | |_ | |_|j}|tdƒƒ|_|tdƒƒ|_d|_dd„}| dd|¡d|krªdn|d}|j rÜ|j|d |d d d ttd ƒd �xD|D]<}| |¡y |j}Wntk �rYqâX|j |¡qâWdS)N)r rr rrzpositional argumentszoptional argumentscSs|S)Nr&)rr&r&r'Úidentitysz)ArgumentParser.__init__..identityrrþÚhr2rkzshow this help message and exit)ror rk)rÐrrNr7ÚpathÚbasenamerâÚargvrLrdÚepilogÚformatter_classÚfromfile_prefix_charsÚadd_helpÚ allow_abbrevr)r}Ú _positionalsÚ _optionalsÚ _subparsersrrqrr3rr¹r)r!rLrdr rAÚparentsrBrrCr rrDrEZ superinitZ add_groupr<Zdefault_prefixrSÚdefaults)rÑr&r'rNYsB     zArgumentParser.__init__cs"ddddddg}‡fdd„|DƒS) NrLrdr rBrrDcsg|]}|tˆ|ƒf‘qSr&)rÈ)rUr$)r!r&r'rX¢sz.ArgumentParser._get_kwargs..r&)r!rÉr&)r!r'r™szArgumentParser._get_kwargsc Ksä|jdk r| tdƒ¡| dt|ƒ¡d|ks8d|krht| dd¡ƒ}t| dd¡ƒ}| ||¡|_n|j|_| d¡dkr¶|  ¡}|  ¡}|j }|  |j ||d¡| ¡ ¡|d<| |d¡}|fd gi|—Ž}|j |¡|S) Nz(cannot have multiple subparser argumentsrër1r Z subcommandsrLrYr r)rHr;r}rñrr–r)rFr•ràÚ_get_positional_actionsrrhrdr\rtr"r%) r!rìr1r rRr„rfZ parsers_classror&r&r'Úadd_subparsers§s$   zArgumentParser.add_subparserscCs$|jr|j |¡n |j |¡|S)N)rrGr%rF)r!ror&r&r'r%Æs zArgumentParser._add_actioncCsdd„|jDƒS)NcSsg|]}|jr|‘qSr&)r)rUror&r&r'rXÎsz8ArgumentParser._get_optional_actions..)r)r!r&r&r'Ú_get_optional_actionsÍsz$ArgumentParser._get_optional_actionscCsdd„|jDƒS)NcSsg|]}|js|‘qSr&)r)rUror&r&r'rXÓsz:ArgumentParser._get_positional_actions..)r)r!r&r&r'rKÒsz&ArgumentParser._get_positional_actionscCs4| ||¡\}}|r0tdƒ}| |d |¡¡|S)Nzunrecognized arguments: %srv)rðr}r;r )r!rWrÌr@rór&r&r'Ú parse_argsÚs zArgumentParser.parse_argscCs |dkrtjdd…}nt|ƒ}|dkr.tƒ}x>|jD]4}|jtk r6t||jƒs6|jtk r6t ||j|jƒq6Wx*|j D] }t||ƒsvt |||j |ƒqvWy<|  ||¡\}}t|t ƒrÐ|  t|t ƒ¡t|t ƒ||fStk �rt ¡d}| t|ƒ¡YnXdS)NrO)râr@r/r rr»rr¶r rÒrÚ_parse_known_argsròr‚rÈÚdelattrrÚexc_infor;r­)r!rWrÌror»Úerrr&r&r'rðás,         zArgumentParser.parse_known_argscs"ˆ jdk rˆ  ˆ¡‰i‰x`ˆ jD]V}|j}xJt|jƒD]<\}}ˆ |g¡}| |d|…¡| ||dd…¡q6Wq Wi‰g}tˆƒ} xnt| ƒD]b\}} | dkrÈ| d¡xF| D]} | d¡q´Wq”ˆ   | ¡} | dkràd} n | ˆ|<d} | | ¡q”Wd  |¡‰t ƒ‰t ƒ‰d‡‡‡‡‡ fdd„ ‰ ‡‡‡‡‡ ‡ fd d „} ˆ   ¡‰‡‡‡‡ ‡ fd d „}g‰d ‰ ˆ�rpt ˆƒ}nd}x|ˆ |k�rðt‡ fdd„ˆDƒƒ}ˆ |k�rÀ|ˆ ƒ}|ˆ k�r¼|‰ �qvn|‰ ˆ ˆk�r䈈 |…}ˆ |¡|‰ | ˆ ƒ‰ �qvW|ˆ ƒ}ˆ ˆ|d…¡g}x†ˆ jD]|}|ˆk�r|j�r>| t|ƒ¡nT|jdk �rt|jtƒ�rtˆ|jƒ�r|jtˆ|jƒk�rtˆ|jˆ  ||j¡ƒ�qW|�r¶ˆ  tdƒd  |¡¡xbˆ jD]X}|j�r¾xH|jD]}|ˆk�rÒP�qÒWdd„|jDƒ}tdƒ}ˆ  |d  |¡¡�q¾WˆˆfS)NrOz--rþÚAÚOrYcs€ˆ |¡ˆ ||¡}||jk rfˆ |¡x:ˆ |g¡D]*}|ˆkr8tdƒ}t|ƒ}t|||ƒ‚q8W|tk r||ˆˆ||ƒdS)Nznot allowed with argument %s)r‘Ú _get_valuesr r•r}rÃrr)roZargument_stringsr¡Zargument_valuesZconflict_actionróZ action_name)Úaction_conflictsrÌÚ seen_actionsÚseen_non_default_actionsr!r&r'Ú take_action3s    z5ArgumentParser._parse_known_args..take_actioncs„ˆ|}|\}}}ˆj}g}�x>|dkr>ˆ ˆ|¡|dS|dk �r||dƒ}ˆj}|dkrÔ|d|krÔ| |g|f¡|d} | |d}|dd…pžd} ˆj} || kr¼| |}| }ntdƒ} t|| |ƒ‚n@|dkrþ|d} |g}| |||f¡Pntdƒ} t|| |ƒ‚q |d}ˆ|d…}|||ƒ}||} ˆ|| …}| |||f¡Pq Wx |D]\}}}ˆ|||ƒ�qdW| S)NrOrSrzignored explicit argument %r)Ú_match_argumentrrrr}r)Ú start_indexÚ option_tupleror¡Ú explicit_argZmatch_argumentZ action_tuplesÚ arg_countr&ÚcharZnew_explicit_argZ optionals_mapróÚstoprWr�Zselected_patterns)r"Úarg_strings_patternÚextrasÚoption_string_indicesr!rYr&r'Úconsume_optionalHsN       z:ArgumentParser._parse_known_args..consume_optionalcsrˆj}ˆ|d…}|ˆ|ƒ}x8tˆ|ƒD]*\}}ˆ|||…}||7}ˆ||ƒq(Wˆt|ƒd…ˆdd…<|S)N)Ú_match_arguments_partialÚzipri)r[Z match_partialZselected_patternZ arg_countsror^rW)r"rar„r!rYr&r'Úconsume_positionals•s  z=ArgumentParser._parse_known_args..consume_positionalsrr‹csg|]}|ˆkr|‘qSr&r&)rUr�)r[r&r'rX³sz4ArgumentParser._parse_known_args..z(the following arguments are required: %sz, cSsg|]}|jtk rt|ƒ‘qSr&)rkrrÃ)rUror&r&r'rXñsz#one of the arguments %s is requiredrv)N)rCÚ_read_args_from_filesrr�r”rñr‚ÚiterrÚ_parse_optionalr rŽrKr?r>rr’rÃr r¯r­r¶r»rÈrÒÚ _get_valuer;r})r!r"rÌr2r›rŸZ mutex_actionZ conflictsZarg_string_pattern_partsZarg_strings_iterÚ arg_stringr\ÚpatternrdrgZmax_option_string_indexZnext_option_string_indexZpositionals_end_indexZstringsZ stop_indexZrequired_actionsrorœrÉrór&) rVr"rarbrÌrcr„rWrXr!r[rYr'rOs˜        J                 z ArgumentParser._parse_known_argsc CsÐg}xÆ|D]¾}|r |d|jkr,| |¡q ylt|dd…ƒ�R}g}x2| ¡ ¡D]"}x| |¡D]}| |¡qbWqRW| |¡}| |¡WdQRXWq tk rÆt   ¡d}|  t |ƒ¡Yq Xq W|S)NrrO) rCrr£ÚreadrÀÚconvert_arg_line_to_argsrhr‚rrârQr;r­)r!r"Znew_arg_stringsrlZ args_fileÚarg_liner#rRr&r&r'rhús     z$ArgumentParser._read_args_from_filescCs|gS)Nr&)r!rpr&r&r'rosz'ArgumentParser.convert_arg_line_to_argscCsz| |¡}t ||¡}|dkrldtdƒttdƒttdƒi}| |j¡}|dkrbtdd|jƒ|j}t ||ƒ‚t |  d¡ƒS)Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrO) Ú_get_nargs_patternrGr.r}r r r•r™rrrirœ)r!roraÚ nargs_patternr.Z nargs_errorsrór&r&r'rZs     zArgumentParser._match_argumentcstg}xjtt|ƒddƒD]V}|d|…}d ‡fdd„|Dƒ¡}t ||¡}|dk r| dd„| ¡Dƒ¡PqW|S)Nrr‹rYcsg|]}ˆ |¡‘qSr&)rq)rUro)r!r&r'rX3sz;ArgumentParser._match_arguments_partial..cSsg|] }t|ƒ‘qSr&)ri)rUrr&r&r'rX7s)r“rir rGr.r‚rf)r!rerar±rŸZ actions_slicermr.r&)r!r're-s   z'ArgumentParser._match_arguments_partialc Cs|sdS|d|jkrdS||jkr8|j|}||dfSt|ƒdkrHdSd|kr~| dd¡\}}||jkr~|j|}|||fS|jræ| |¡}t|ƒdkrÐd dd„|Dƒ¡}||dœ}tdƒ}| ||¡nt|ƒdkræ|\} | S|j   |¡rü|j südSd |k�r dSd|dfS) NrrOú=z, cSsg|]\}}}|‘qSr&r&)rUror¡r]r&r&r'rX]sz2ArgumentParser._parse_optional..)r4Zmatchesz4ambiguous option: %(option)s could match %(matches)srv) rrriÚsplitrEÚ_get_option_tuplesr r}r;rr.r) r!rlror¡r]Z option_tuplesZoptionsrWrór\r&r&r'rj=s>               zArgumentParser._parse_optionalc Cs2g}|j}|d|kr~|d|kr~d|kr<| dd¡\}}n|}d}xè|jD],}| |¡rL|j|}|||f}| |¡qLWn°|d|k�r|d|k�r|}d}|dd…}|dd…} xr|jD]T}||krî|j|}||| f}| |¡qÂ| |¡rÂ|j|}|||f}| |¡qÂWn| tdƒ|¡|S)NrrOrsr2zunexpected option string: %s)rrtrÚ startswithrr;r}) r!r¡r±r&Z option_prefixr]rorªZshort_option_prefixZshort_explicit_argr&r&r'ruxs8             z!ArgumentParser._get_option_tuplescCsœ|j}|dkrd}nf|tkr"d}nX|tkr0d}nJ|tkr>d}n<|tkrLd}n.|tkrZd}n |tkrhd}ndd  d |¡}|jr˜|  d d ¡}|  d d ¡}|S) Nz(-*A-*)z(-*A?-*)z (-*[A-]*)z (-*A[A-]*)z([-AO]*)z (-*A[-AO]*)z(-*-*)z(-*%s-*)z-*rSrYrþ) r™r rr rrrr rr6)r!ror™rrr&r&r'rq¤s(  z!ArgumentParser._get_nargs_patterncCs4| ||¡\}}|r0tdƒ}| |d |¡¡|S)Nzunrecognized arguments: %srv)Úparse_known_intermixed_argsr}r;r )r!rWrÌr@rór&r&r'Úparse_intermixed_argsÕs z$ArgumentParser.parse_intermixed_argsc sÈ| ¡‰dd„ˆDƒ}|r,td|djƒ‚‡fdd„|jDƒrHtdƒ‚�zl|j}z®|jdkrp| ¡dd…|_x(ˆD] }|j|_t|_|j|_ t|_qvW|  ||¡\}}xRˆD]J}t ||j ƒr°t ||j ƒgkr°ddlm}|d |j |fƒt||j ƒq°WWdxˆD]}|j|_|j |_�qWX| ¡}zRx|D]}|j|_d |_�q4Wx|jD]} | j| _d | _�qTW|  ||¡\}} Wdx|D]}|j|_�q†Wx|jD]} | j| _�q WXWd||_X|| fS) NcSsg|]}|jttgkr|‘qSr&)r™rr)rUror&r&r'rXêsz>ArgumentParser.parse_known_intermixed_args..z3parse_intermixed_args: positional arg with nargs=%srcs&g|]}|jD]}|ˆkr|j‘qqSr&)r�r»)rUrœro)r„r&r'rXðsz;parse_intermixed_args: positional in mutuallyExclusiveGroupé)ÚwarnzDo not expect %s in %sF)rKr$r™rrdÚ format_usageZ save_nargsrr Z save_defaultrðr¶r»rÈÚwarningsrzrPrMr’Z save_required) r!rWrÌÚaZ save_usageroZremaining_argsrzrƒrœrbr&)r„r'rwÜsX               z*ArgumentParser.parse_known_intermixed_argscs†ˆjttgkr2y| d¡Wntk r0YnX|szˆjtkrzˆjrNˆj}nˆj}t |t ƒrvˆ  ˆ|¡}ˆ  ˆ|¡�n|s²ˆjt kr²ˆjs²ˆjdk r ˆj}n|}ˆ  ˆ|¡nÐt|ƒdkrìˆjdtgkrì|\}ˆ  ˆ|¡}ˆ  ˆ|¡n–ˆjtk�r‡‡fdd„|Dƒ}ntˆjtk�r@‡‡fdd„|Dƒ}ˆ  ˆ|d¡nBˆjtk�rRt}n0‡‡fdd„|Dƒ}x|D]}ˆ  ˆ|¡�qlW|S)Nz--rOcsg|]}ˆ ˆ|¡‘qSr&)rk)rUÚv)ror!r&r'rXM sz.ArgumentParser._get_values..csg|]}ˆ ˆ|¡‘qSr&)rk)rUr~)ror!r&r'rXQ srcsg|]}ˆ ˆ|¡‘qSr&)rk)rUr~)ror!r&r'rXZ s)r™rrr/r:r rrÇr r¯r­rkÚ _check_valuerrir)r!ror"r%rlr~r&)ror!r'rU) sB        zArgumentParser._get_valuesc CsÎ| d|j|j¡}t|ƒs0tdƒ}t|||ƒ‚y ||ƒ}WnŒtk r~t|jdt|jƒƒ}tt   ¡dƒ}t||ƒ‚YnLt t fk rÈt|jdt|jƒƒ}||dœ}tdƒ}t|||ƒ‚YnX|S)Nrz%r is not callablerrO)rr%z!invalid %(type)s value: %(value)r) rrr#r}rrrÈrr­rârQr$r:)r!rorlr'rór±r$rWr&r&r'rka s   zArgumentParser._get_valuecCsF|jdk rB||jkrB|d tt|jƒ¡dœ}tdƒ}t|||ƒ‚dS)Nz, )r%r²z3invalid choice: %(value)r (choose from %(choices)s))r²r Úmaprr}r)r!ror%rWrór&r&r'r{ s zArgumentParser._check_valuecCs$| ¡}| |j|j|j¡| ¡S)N)ràrhrdrrr\)r!rRr&r&r'r{† s zArgumentParser.format_usagecCsx| ¡}| |j|j|j¡| |j¡x:|jD]0}| |j ¡| |j¡|  |j ¡|  ¡q0W| |j ¡| ¡S)N)ràrhrdrrrbr rr^r1rrr�r_rAr\)r!rRZ action_groupr&r&r'r\Œ s        zArgumentParser.format_helpcCs|j|jd�S)N)rL)rBrL)r!r&r&r'r࣠szArgumentParser._get_formattercCs"|dkrtj}| | ¡|¡dS)N)rârãrár{)r!Úfiler&r&r'Ú print_usage© szArgumentParser.print_usagecCs"|dkrtj}| | ¡|¡dS)N)rârãrár\)r!r�r&r&r'rÜ® szArgumentParser.print_helpcCs |r|dkrtj}| |¡dS)N)râÚstderrÚwrite)r!rÅr�r&r&r'rá³ szArgumentParser._print_messagercCs |r| |tj¡t |¡dS)N)rárârƒrÝ)r!ZstatusrÅr&r&r'rݼ szArgumentParser.exitcCs0| tj¡|j|dœ}| dtdƒ|¡dS)zðerror(message: string) Prints a usage message incorporating the message to stderr and exits. If you override this in a subclass, it should not return -- it should either exit or raise an exception. )rLrÅr2z%(prog)s: error: %(message)s N)r‚rârƒrLrÝr})r!rÅrWr&r&r'r;Á s  zArgumentParser.error)NN)NN)NN)NN)N)N)N)rN)#rr,r-r.rrNrrLr%rMrKrNrðrOrhrorZrerjrurqrxrwrUrkrr{r\ràr‚rÜrárÝr;rÓr&r&)rÑr'rFsT4  #w;,1  M8    )0r.Ú __version__Ú__all__Úosr7ÚrerGÚsysrârr}rrr rr rrròr½rr1rrrrr rÃÚ Exceptionrrr rÏrÔrÕrÖr×rØrÙrÛrÞrärr r r(r*rr&r&r&r'Ú>sz{    [#&b65"