3 2aa@s,dZddddddddd d d d d ddddgZddlZddlZddlZddlZ ddl Z ddl Z ddlmZmZdZdZdZdZdZdZdZGdddeZddZGd ddeZGd!ddeZGd"ddeZGd#ddeZGd$d d eZd%d&Z Gd'dde!Z"Gd(dde!Z#Gd)d d eZ$Gd*d+d+e$Z%Gd,d-d-e$Z&Gd.d/d/e&Z'Gd0d1d1e&Z(Gd2d3d3e$Z)Gd4d5d5e$Z*Gd6d7d7e$Z+Gd8d9d9e$Z,Gd:d;d;e$Z-GdddeZ/Gd?d d eZ0Gd@dAdAeZ1GdBdCdCe1Z2GdDdEdEe2Z3GdFddee1Z4dS)Gz1.1ArgumentParser ArgumentErrorArgumentTypeErrorFileType HelpFormatterArgumentDefaultsHelpFormatterRawDescriptionHelpFormatterRawTextHelpFormatterMetavarTypeHelpFormatter NamespaceAction ONE_OR_MOREOPTIONALPARSER REMAINDERSUPPRESS ZERO_OR_MOREN)gettextngettextz ==SUPPRESS==?*+zA...z..._unrecognized_argsc@s$eZdZddZddZddZdS)_AttributeHoldercCst|j}g}i}x|jD]}|jt|qWx8|jD],\}}|jr`|jd||fq<|||<qsz6HelpFormatter._Section.format_help..z%*s%s:  ) rYrXrV _join_partsr.rWrZrrE)r"r! item_helpcurrent_indentrZr)r)r* format_helps    z"HelpFormatter._Section.format_help)N)rr/r0rTrdr)r)r)r*rHs rHcCs|jjj||fdS)N)rJr.r)r"r\r]r)r)r* _add_itemszHelpFormatter._add_itemcCs0|j|j||j|}|j|jg||_dS)N)rVrHrJrerd)r"rZsectionr)r)r* start_sectionszHelpFormatter.start_sectioncCs|jj|_|jdS)N)rJrYrW)r"r)r)r* end_sections zHelpFormatter.end_sectioncCs$|tk r |dk r |j|j|gdS)N)rre _format_text)r"textr)r)r*add_textszHelpFormatter.add_textcCs&|tk r"||||f}|j|j|dS)N)rre _format_usage)r"usageactionsgroupsprefixr]r)r)r* add_usages zHelpFormatter.add_usagecCsz|jtk rv|j}||g}x |j|D]}|j||q&Wtdd|D}||j}t|j||_|j|j |gdS)NcSsg|] }t|qSr))len)r[sr)r)r*r^ sz.HelpFormatter.add_argument..) helpr_format_action_invocation_iter_indented_subactionsrrCrErGre_format_action)r"actionget_invocation invocations subactioninvocation_length action_lengthr)r)r* add_arguments   zHelpFormatter.add_argumentcCsx|D]}|j|qWdS)N)r~)r"rnrxr)r)r* add_argumentss zHelpFormatter.add_argumentscCs.|jj}|r*|jjd|}|jdd}|S)Nz r`)rIrdrOsubstrip)r"rtr)r)r*rds  zHelpFormatter.format_helpcCsdjdd|DS)Nr_cSsg|]}|r|tk r|qSr))r)r[partr)r)r*r^!sz-HelpFormatter._join_parts..)r!)r" part_stringsr)r)r*ra s zHelpFormatter._join_partscs|dkrtd}|dk r,|t|jd}n|dkrN| rNdt|jd}n|dkrdt|jd}g}g}x(|D] }|jr|j|qv|j|qvW|j} | |||} djdd|| gD}|j|jt |t |krd} | ||} | ||} t j | | }t j | | }dfdd }t |t |d krdt |t |d }|r||g|||}|j |||n |r||g|||}n|g}nZdt |}||}|||}t |d krg}|j ||||j ||||g|}d j|}d ||fS)Nzusage: )rPz%(prog)s cSsg|] }|r|qSr)r))r[rsr)r)r*r^Asz/HelpFormatter._format_usage..z%\(.*?\)+(?=\s|$)|\[.*?\]+(?=\s|$)|\S+csg}g}|dk rt|d}n t|d}xb|D]Z}|dt|krp|rp|j|dj|g}t|d}|j||t|d7}q0W|r|j|dj||dk r|dt|d|d<|S)NrUrr)rrrr!)partsindentrplineslineline_lenr) text_widthr)r* get_linesUs"    z.HelpFormatter._format_usage..get_linesg?rUr`z%s%s )N) _dictr?option_stringsr_format_actions_usager!rDrErrrKfindallextend)r"rmrnrorprP optionals positionalsrxformat action_usage part_regexp opt_usage pos_usage opt_parts pos_partsrrrrr))rr*rl%sV            zHelpFormatter._format_usagec Cst}i}x|D]}y|j|jd}Wntk r>wYqX|t|j}||||jkrx|jD]}|j|qhW|js||kr||d7<nd||<d||<n*||kr||d7<nd||<d||<xt|d|D] } d || <qWqWg} x2t|D]$\} }|j t krj| j d|j | d krF|j | n"|j | dd kr.|j | dn|js|j|} |j|| } ||kr| ddkr| ddkr| dd} | j | nh|jd} |jdkrd | } n"|j|} |j|| }d | |f} |j r$||kr$d | } | j | q Wx(t|d dD]} || g| | | <qBWdjdd| D}d}d}tjd|d|}tjd|d|}tjd||fd|}tjdd|}|j}|S)Nrz [[]z (()rU|z%sz%s %sz[%s]T)reversercSsg|]}|dk r|qS)Nr))r[itemr)r)r*r^sz7HelpFormatter._format_actions_usage..z[\[(]z[\])]z(%s) z\1z (%s)z%s *%sr_z \(([^|]*)\)r)setindex_group_actionsr>rraddrequiredrange enumeratertrrgetpopr#_get_default_metavar_for_positional _format_argsnargs!_get_default_metavar_for_optionalr,r!rKrr)r"rnro group_actionsinsertsgroupstartendrxirdefaultr option_string args_stringrjopencloser)r)r*rsr                 z#HelpFormatter._format_actions_usagecCsFd|kr|t|jd}t|j|jd}d|j}|j|||dS)Nz%(prog))rP rz )rr?rCrDrE _fill_text)r"rjrrr)r)r*ris  zHelpFormatter._format_textc CsBt|jd|j}t|j|d}||jd}|j|}|jsV|jd|f}d|}n@t||kr~|jd||f}d|}d}n|jd|f}d|}|}|g}|jr|j |} |j | |} |j d|d| dfx@| ddD]} |j d|d| fqWn|j ds|j dx$|j |D]} |j |j| qW|j|S) Nr5rr_z%*s%s z %*s%-*s rrUr`)rBrGrArCrDrErurtrr _expand_help _split_linesrendswithrvrwra) r"rx help_position help_width action_width action_headertup indent_firstr help_text help_linesrr{r)r)r*rws6          zHelpFormatter._format_actioncCs|js&|j|}|j||d\}|Sg}|jdkrB|j|jn8|j|}|j||}x |jD]}|jd||fq`Wdj|SdS)NrUrz%s %sz, ) rr_metavar_formatterrrrrrr!)r"rxrmetavarrrrr)r)r*rus     z'HelpFormatter._format_action_invocationcsP|jdk r|jn.|jdk r.z{%s},csttrSf|SdS)N) isinstancetuple) tuple_size)resultr)r*r=s z0HelpFormatter._metavar_formatter..format)rchoicesr!)r"rxdefault_metavar choice_strsrr))rr*r4s   z HelpFormatter._metavar_formattercCs|j||}|jdkr$d|d}n|jtkr.r) rrr rr rrrr!)r"rxr get_metavarrformatsr)r)r*rDs        zHelpFormatter._format_argscCstt||jd}x"t|D]}||tkr||=qWx,t|D] }t||dr@||j||<q@W|jddk rdjdd|dD}||d<|j ||S)N)rPrrz, cSsg|] }t|qSr))r)r[cr)r)r*r^`sz.HelpFormatter._expand_help..) rvarsr?listrhasattrrrr!_get_help_string)r"rxparamsr' choices_strr)r)r*rWs  zHelpFormatter._expand_helpc cs@y |j}Wntk rYnX|j|EdH|jdS)N)_get_subactionsAttributeErrorrVrW)r"rxget_subactionsr)r)r*rvds  z'HelpFormatter._iter_indented_subactionscCs|jjd|j}tj||S)Nr)rNrr _textwrapwrap)r"rjrSr)r)r*rnszHelpFormatter._split_linescCs$|jjd|j}tj||||dS)Nr)initial_indentsubsequent_indent)rNrrrfill)r"rjrSrr)r)r*rrs zHelpFormatter._fill_textcCs|jS)N)rt)r"rxr)r)r*rwszHelpFormatter._get_help_stringcCs |jjS)N)destupper)r"rxr)r)r*rzsz/HelpFormatter._get_default_metavar_for_optionalcCs|jS)N)r)r"rxr)r)r*r}sz1HelpFormatter._get_default_metavar_for_positional)r5r6N)N)rr/r0rTrVrWobjectrHrergrhrkrqr~rrdrarlrrirwrurrrrvrrrrrr)r)r)r*rs:   `a/  c@seZdZddZdS)rcs djfdd|jddDS)Nr_c3s|]}|VqdS)Nr))r[r)rr)r* sz9RawDescriptionHelpFormatter._fill_text..T)keepends)r! splitlines)r"rjrSrr))rr*rsz&RawDescriptionHelpFormatter._fill_textN)rr/r0rr)r)r)r*rsc@seZdZddZdS)rcCs|jS)N)r)r"rjrSr)r)r*rsz!RawTextHelpFormatter._split_linesN)rr/r0rr)r)r)r*rsc@seZdZddZdS)rcCs>|j}d|jkr:|jtk r:ttg}|js2|j|kr:|d7}|S)Nz %(default)z (default: %(default)s))rtrrr rrr)r"rxrtdefaulting_nargsr)r)r*rs  z.ArgumentDefaultsHelpFormatter._get_help_stringN)rr/r0rr)r)r)r*rsc@seZdZddZddZdS)r cCs|jjS)N)rr)r"rxr)r)r*rsz:MetavarTypeHelpFormatter._get_default_metavar_for_optionalcCs|jjS)N)rr)r"rxr)r)r*rsz.r))r"namesr))r"r*r/szAction._get_kwargscCsttddS)Nz.__call__() not defined)NotImplementedErrorr)r"parserr3valuesrr)r)r*__call__=szAction.__call__)NNNNNFNN)N)rr/r0rTrrr)r)r)r*r s6 cs(eZdZdfdd ZdddZZS) _StoreActionNFc sT|dkrtd|dk r,|tkr,tdttt|j||||||||| | d dS)Nrznargs 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) rrrrrrrrrtr)r>r superrrT) r"rrrrrrrrrtr) __class__r)r*rTCs   z_StoreAction.__init__cCst||j|dS)N)r2r)r"rr3rrr)r)r*r`sz_StoreAction.__call__)NNNNNFNN)N)rr/r0rTr __classcell__r)r))rr*rAsrcs(eZdZdfdd ZdddZZS) _StoreConstActionNFc s"tt|j||d||||ddS)Nr)rrrrrrrt)rrrT)r"rrrrrrtr)rr)r*rTfs z_StoreConstAction.__init__cCst||j|jdS)N)r2rr)r"rr3rrr)r)r*rwsz_StoreConstAction.__call__)NFNN)N)rr/r0rTrrr)r))rr*rds  rcseZdZdfdd ZZS)_StoreTrueActionFNcs tt|j||d|||ddS)NT)rrrrrrt)rrrT)r"rrrrrt)rr)r*rT}s z_StoreTrueAction.__init__)FFN)rr/r0rTrr)r))rr*r{srcseZdZdfdd ZZS)_StoreFalseActionTFNcs tt|j||d|||ddS)NF)rrrrrrt)rrrT)r"rrrrrt)rr)r*rTs z_StoreFalseAction.__init__)TFN)rr/r0rTrr)r))rr*rsrcs(eZdZdfdd ZdddZZS) _AppendActionNFc sT|dkrtd|dk r,|tkr,tdttt|j||||||||| | d dS)Nrznargs 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) rrrrrrrrrtr)r>r rrrT) r"rrrrrrrrrtr)rr)r*rTs   z_AppendAction.__init__cCs0tjt||jg}|j|t||j|dS)N)_copycopyr4rrr2)r"rr3rrr.r)r)r*rs z_AppendAction.__call__)NNNNNFNN)N)rr/r0rTrrr)r))rr*rsrcs(eZdZdfdd ZdddZZS) _AppendConstActionNFc s$tt|j||d|||||ddS)Nr)rrrrrrrtr)rrrT)r"rrrrrrtr)rr)r*rTs z_AppendConstAction.__init__cCs2tjt||jg}|j|jt||j|dS)N)rrr4rrrr2)r"rr3rrr.r)r)r*rs z_AppendConstAction.__call__)NFNN)N)rr/r0rTrrr)r))rr*rs  rcs(eZdZdfdd ZdddZZS) _CountActionNFcs tt|j||d|||ddS)Nr)rrrrrrt)rrrT)r"rrrrrt)rr)r*rTs z_CountAction.__init__cCs$t||jdd}t||j|dS)NrrU)r4rr2)r"rr3rr new_countr)r)r*rsz_CountAction.__call__)NFN)N)rr/r0rTrrr)r))rr*rs rcs.eZdZeedffdd ZdddZZS) _HelpActionNcstt|j|||d|ddS)Nr)rrrrrt)rrrT)r"rrrrt)rr)r*rTs  z_HelpAction.__init__cCs|j|jdS)N) print_helpexit)r"rr3rrr)r)r*rsz_HelpAction.__call__)N)rr/r0rrTrrr)r))rr*rsrcs0eZdZdeedffdd ZdddZZS)_VersionActionNz&show program's version number and exitcs$tt|j|||d|d||_dS)Nr)rrrrrt)rrrTversion)r"rr rrrt)rr)r*rTs z_VersionAction.__init__cCsD|j}|dkr|j}|j}|j||j|jtj|jdS)N)r _get_formatterrk_print_messagerd_sysstdoutr)r"rr3rrr rXr)r)r*rs z_VersionAction.__call__)N)rr/r0rrTrrr)r))rr*rs  rcsNeZdZGdddeZeddffdd ZddZdd Zd d d Z Z S) _SubParsersActioncseZdZfddZZS)z&_SubParsersAction._ChoicesPseudoActioncs@|}}|r|ddj|7}ttj|}|jg|||ddS)Nz (%s)z, )rrrtr)r!rr_ChoicesPseudoActionrT)r"r'aliasesrtrrsup)rr)r*rT"s   z/_SubParsersAction._ChoicesPseudoAction.__init__)rr/r0rTrr)r))rr*r srNcs>||_||_tj|_g|_tt|j||t |j||ddS)N)rrrrrtr) _prog_prefix _parser_class _collections OrderedDict_name_parser_map_choices_actionsrrrTr)r"rrP parser_classrrtr)rr)r*rT*s  z_SubParsersAction.__init__cKs|jddkr d|j|f|d<|jdf}d|krX|jd}|j|||}|jj||jf|}||j|<x|D]}||j|<qtW|S)NrPz%s %srrt)rrrrrrrr)r"r'kwargsrrt choice_actionraliasr)r)r* add_parser?s      z_SubParsersAction.add_parsercCs|jS)N)r)r"r)r)r*rVsz!_SubParsersAction._get_subactionsc Cs|d}|dd}|jtk r,t||j|y|j|}Wn<tk rv|dj|jd}td|}t||YnX|j|d\} }x$t | j D]\} } t|| | qW|rt |j t gt |t j|dS)NrrUz, ) parser_namerz5unknown parser %(parser_name)r (choices: %(choices)s))rrr2rr=r!rrparse_known_argsrr. setdefault_UNRECOGNIZED_ARGS_ATTRr1r) r"rr3rrrr$r]msg subnamespacekeyr(r)r)r*rYs"    z_SubParsersAction.__call__)N) rr/r0r rrrTrrrrr)r))rr*rsrc@s&eZdZd ddZddZdd ZdS) rrrUNcCs||_||_||_||_dS)N)_mode_bufsize _encoding_errors)r"modebufsizeencodingerrorsr)r)r*rTszFileType.__init__cCs|dkr>d|jkrtjSd|jkr(tjStd|j}t|yt||j|j|j|j St k r}ztd}t |||fWYdd}~XnXdS)N-r$wzargument "-" with mode %rzcan't open '%s': %s) r%r stdinr rr>rr&r'r(OSErrorr)r"stringr!err)r)r*rs  zFileType.__call__cCsT|j|jf}d|jfd|jfg}djdd|Ddd|D}dt|j|fS)Nr+r,z, cSsg|]}|dkrt|qS)rUr)r)r[r&r)r)r*r^sz%FileType.__repr__..cSs$g|]\}}|dk rd||fqS)Nz%s=%rr))r[kwr&r)r)r*r^sz%s(%s))r%r&r'r(r!rr)r"r]rargs_strr)r)r*r+s  zFileType.__repr__r)r$rNN)rr/r0rTrr+r)r)r)r*r~s c@s$eZdZddZddZddZdS)r cKs"x|D]}t||||qWdS)N)r2)r"rr'r)r)r*rTs zNamespace.__init__cCst|tstSt|t|kS)N)rr NotImplementedr)r"otherr)r)r*__eq__s zNamespace.__eq__cCs ||jkS)N)r-)r"r#r)r)r* __contains__szNamespace.__contains__N)rr/r0rTr7r8r)r)r)r*r scseZdZfddZddZd&ddZdd Zd d Zd d ZddZ ddZ ddZ ddZ ddZ ddZddZd'ddZddZd d!Zd"d#Zd$d%ZZS)(_ActionsContainercstt|j||_||_||_||_i|_|jddt |jddt |jddt |jddt |jddt |jddt |jddt|jddt|jdd t|jdd t|jdd t|jg|_i|_g|_g|_i|_tjd |_g|_dS) Nrxstore store_const store_true store_falser append_constcountrtr parsersz^-\d+$|^-\d*\.\d+$)rr9rT descriptionargument_default prefix_charsconflict_handler _registriesregisterrrrrrrrrrr _get_handler_actions_option_string_actions_action_groups_mutually_exclusive_groups _defaultsrKrL_negative_number_matcher_has_negative_number_optionals)r"rArCrBrD)rr)r*rTs2 z_ActionsContainer.__init__cCs|jj|i}|||<dS)N)rEr)r" registry_namer(rregistryr)r)r*rFsz_ActionsContainer.registerNcCs|j|j||S)N)rEr)r"rOr(rr)r)r* _registry_getsz_ActionsContainer._registry_getcKs6|jj|x$|jD]}|j|kr||j|_qWdS)N)rLupdaterHrr)r"rrxr)r)r* set_defaultss   z_ActionsContainer.set_defaultscCs8x(|jD]}|j|kr|jdk r|jSqW|jj|dS)N)rHrrrLr)r"rrxr)r)r* get_defaults  z_ActionsContainer.get_defaultc Os0|j}| s(t|dkrJ|dd|krJ|r_get_positional_kwargs_get_optional_kwargsrLrB_pop_action_classcallablerQrrr r TypeError _add_action)r"r]rcharsr action_classrx type_funcr)r)r*r~s2 "        z_ActionsContainer.add_argumentcOs t|f||}|jj||S)N)_ArgumentGrouprJr)r"r]rrr)r)r*add_argument_groupJs z$_ActionsContainer.add_argument_groupcKst|f|}|jj||S)N)_MutuallyExclusiveGrouprKr)r"rrr)r)r*add_mutually_exclusive_groupOs  z._ActionsContainer.add_mutually_exclusive_groupcCsh|j||jj|||_x|jD]}||j|<q$Wx,|jD]"}|jj|r>|js>|jjdq>W|S)NT) _check_conflictrHr containerrrIrMmatchrN)r"rxrr)r)r*rZTs     z_ActionsContainer._add_actioncCs|jj|dS)N)rHremove)r"rxr)r)r*_remove_actionisz _ActionsContainer._remove_actioncCsi}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] }|||<qWqWx |j D]}|j ||j |qWdS)Nz.cannot merge actions - two groups are named %r)titlerArD)r)rJrgrr>r_rArDrrKrarrHrrZ)r"rctitle_group_maprr! group_maprx mutex_groupr)r)r*_add_container_actionsls,         z(_ActionsContainer._add_container_actionscKs^d|krtd}t||jdttgkr2d|d<|jdtkrPd|krPd|d<t||gdS)Nrz1'required' is an invalid argument for positionalsrTr)rr)rrYrr rr)r"rrr!r)r)r*rUsz(_ActionsContainer._get_positional_kwargsc Osg}g}xv|D]n}|d|jkr@||jd}td}t|||j||d|jkrt|dkr|d|jkr|j|qW|jdd}|dkr|r|d}n|d}|j|j}|std}t|||jdd}t|||d S) Nr)optionrCzNinvalid option string %(option)r: must start with a character %(prefix_chars)rrUrz%dest= is required for options like %rr-r)rr) rCrr>rrrrlstripreplacer) r"r]rrlong_option_stringsrr!rdest_option_stringr)r)r*rVs0          z&_ActionsContainer._get_optional_kwargscCs|jd|}|jd||S)Nrx)rrQ)r"rrrxr)r)r*rWs z#_ActionsContainer._pop_action_classc CsDd|j}y t||Stk r>td}t||jYnXdS)Nz_handle_conflict_%sz%invalid conflict_resolution value: %r)rDr1rrr>)r"handler_func_namer!r)r)r*rGs   z_ActionsContainer._get_handlercCsPg}x0|jD]&}||jkr |j|}|j||fq W|rL|j}|||dS)N)rrIrrG)r"rxconfl_optionalsrconfl_optionalrDr)r)r*rbs   z!_ActionsContainer._check_conflictcCs6tddt|}djdd|D}t|||dS)Nzconflicting option string: %szconflicting option strings: %sz, cSsg|] \}}|qSr)r))r[rrxr)r)r*r^sz<_ActionsContainer._handle_conflict_error..)rrrr!r)r"rxconflicting_actionsrconflict_stringr)r)r*_handle_conflict_errors    z(_ActionsContainer._handle_conflict_errorcCsBx<|D]4\}}|jj||jj|d|js|jj|qWdS)N)rrerIrrcrf)r"rxrtrr)r)r*_handle_conflict_resolves  z*_ActionsContainer._handle_conflict_resolve)N)N)rr/r0rTrFrQrSrTr~r_rarZrfrkrUrVrWrGrbrvrwrr)r))rr*r9s$ 4   /($   r9cs6eZdZdfdd ZfddZfddZZS) r^Nc s|j}|d|j|d|j|d|jtt|j}|fd|i|||_g|_|j |_ |j |_ |j |_ |j |_ |j |_ |j|_dS)NrDrCrBrA)rrDrCrBrr^rTrgrrErHrIrLrNrK)r"rcrgrArrR super_init)rr)r*rTs    z_ArgumentGroup.__init__cs tt|j|}|jj||S)N)rr^rZrr)r"rx)rr)r*rZs z_ArgumentGroup._add_actioncs tt|j||jj|dS)N)rr^rfrre)r"rx)rr)r*rfsz_ArgumentGroup._remove_action)NN)rr/r0rTrZrfrr)r))rr*r^s r^cs.eZdZdfdd ZddZddZZS) r`Fcs tt|j|||_||_dS)N)rr`rTr _container)r"rcr)rr)r*rTsz _MutuallyExclusiveGroup.__init__cCs2|jrtd}t||jj|}|jj||S)Nz-mutually exclusive arguments must be optional)rrr>ryrZrr)r"rxr!r)r)r*rZ$s   z#_MutuallyExclusiveGroup._add_actioncCs|jj||jj|dS)N)ryrfrre)r"rxr)r)r*rf,s z&_MutuallyExclusiveGroup._remove_action)F)rr/r0rTrZrfrr)r))rr*r`sr`c seZdZddddgeddddddf fdd ZddZd d Zd d Zd dZddZ dd1d2Zd?d3d4Zd@d5d6ZdAd8d9Zd:d;ZZS)BrNr-errorTc  s&tt|j} | ||| | d|dkr6tjjtjd}||_||_ ||_ ||_ ||_ | |_ | |_|j}|td|_|td|_d|_dd}|jdd|d|krdn|d}|j r|j|d |d d d ttd d xD|D]<}|j|y |j}Wntk rYqX|jj|qWdS)N)rArCrBrDrzpositional argumentszoptional argumentscSs|S)Nr))r1r)r)r*identityjsz)ArgumentParser.__init__..identityrr-hr5rtzshow this help message and exit)rxrrt)rrrTr;pathbasenamer argvrPrmepilogformatter_classfromfile_prefix_charsadd_help allow_abbrevr_r _positionals _optionals _subparsersrFr~rrkrLrrR)r"rPrmrArparentsrrCrrBrDrr superinit add_groupr{default_prefixrYdefaults)rr)r*rTDsB     zArgumentParser.__init__cs"ddddddg}fdd|DS) NrPrmrArrDrcsg|]}|t|fqSr))r1)r[r')r"r)r*r^sz.ArgumentParser._get_kwargs..r))r"rr))r"r*rszArgumentParser._get_kwargsc Ks|jdk r|jtd|jdt|d|ks8d|krht|jdd}t|jdd}|j|||_n|j|_|jddkr|j }|j }|j }|j |j ||d|jj|d<|j|d}|fd gi|}|jj||S) Nz(cannot have multiple subparser argumentsrrgrA subcommandsrPr_r@r)rrzrrrrr_rrr _get_positional_actionsrKrqrmrdrrWrZ) r"rrgrArXrro parsers_classrxr)r)r*add_subparserss$   zArgumentParser.add_subparserscCs$|jr|jj|n |jj||S)N)rrrZr)r"rxr)r)r*rZs zArgumentParser._add_actioncCsdd|jDS)NcSsg|]}|jr|qSr))r)r[rxr)r)r*r^sz8ArgumentParser._get_optional_actions..)rH)r"r)r)r*_get_optional_actionssz$ArgumentParser._get_optional_actionscCsdd|jDS)NcSsg|]}|js|qSr))r)r[rxr)r)r*r^sz:ArgumentParser._get_positional_actions..)rH)r"r)r)r*rsz&ArgumentParser._get_positional_actionscCs4|j||\}}|r0td}|j|dj||S)Nzunrecognized arguments: %sr)rrrzr!)r"r]r3rr!r)r)r* parse_argss zArgumentParser.parse_argsc Cs |dkrtjdd}nt|}|dkr.t}x>|jD]4}|jtk r6t||js6|jtk r6t ||j|jq6Wx*|j D] }t||svt |||j |qvWy<|j ||\}}t|t r|j t|t t|t ||fStk rtjd}|jt|YnXdS)NrU)r rrr rHrrrrr2rL_parse_known_argsr rr1delattrrexc_inforzr)r"r]r3rxrerrr)r)r*rs,         zArgumentParser.parse_known_argscs" jdk r jix` jD]V}|j}xJt|jD]<\}}j|g}|j|d||j||ddq6Wq Wig}t} xnt| D]b\}} | dkr|jdxF| D]} |jdqWq j | } | dkrd} n | |<d} |j| qWdj |t t d fdd  fd d } j  fd d }gd rpt }nd}x| |krt fddD} |kr| }| kr| qvn| kr |}j|| |  qvW| }j|dg}x jD]|}|kr|jr>|jt|nT|jdk rt|jtrt|jr|jt|jkrt|j j||jqW|r jtddj |xb jD]X}|jrxH|jD]}|krPqWdd|jD}td} j|dj |qWfS)NrUz--r-AOr_csj|j||}||jk rfj|x:j|gD]*}|kr8td}t|}t|||q8W|tk r||||dS)Nznot allowed with argument %s)r _get_valuesrrrrrr)rxargument_stringsrargument_valuesconflict_actionr! action_name)action_conflictsr3 seen_actionsseen_non_default_actionsr"r)r* take_actions    z5ArgumentParser._parse_known_args..take_actioncs|}|\}}}j}g}x>|dkr>j||dS|dk r||d}j}|dkr|d|kr|j|g|f|d} | |d}|ddpd} j} || kr| |}| }ntd} t|| |n@|dkr|d} |g}|j|||fPntd} t|| |q |d}|d}|||}||} || }|j|||fPq Wx |D]\}}}|||qdW| S)NrUrrzignored explicit argument %r)_match_argumentrrCrIrr) start_index option_tuplerxr explicit_argmatch_argument action_tuples arg_countr[charnew_explicit_arg optionals_mapr!stopr]rselected_patterns)r$arg_strings_patternextrasoption_string_indicesr"rr)r*consume_optional3sN       z:ArgumentParser._parse_known_args..consume_optionalcsrj}|d}||}x8t|D]*\}}|||}||7}||q(Wt|ddd<|S)N)_match_arguments_partialziprr)r match_partialselected_pattern arg_countsrxrr])r$rrr"rr)r*consume_positionalss  z=ArgumentParser._parse_known_args..consume_positionalsrcsg|]}|kr|qSr)r))r[r)rr)r*r^sz4ArgumentParser._parse_known_args..z(the following arguments are required: %sz, cSsg|]}|jtk rt|qSr))rtrr)r[rxr)r)r*r^sz#one of the arguments %s is requiredr)Nr)r_read_args_from_filesrKrrrriterr_parse_optionalr!rrrCrBrHrrrrrrrr1r2 _get_valuerzr)r"r$r3rjrr mutex_action conflictsarg_string_pattern_partsarg_strings_iter arg_stringrpatternrrmax_option_string_indexnext_option_string_indexpositionals_end_indexstrings stop_indexrequired_actionsrxrrr!r)) rr$rrr3rrrrr"rrr*rs        J                 z ArgumentParser._parse_known_argscCsg}x|D]}| s"|d|jkr.|j|q ylt|ddR}g}x2|jjD]"}x|j|D]}|j|qdWqTW|j|}|j|WdQRXWq tk rt j d}|j t |Yq Xq W|S)NrrU) rrrreadrconvert_arg_line_to_argsrrr0r rrzr)r"r$new_arg_stringsr args_filearg_liner&rr)r)r*rs     z$ArgumentParser._read_args_from_filescCs|gS)Nr))r"rr)r)r*rsz'ArgumentParser.convert_arg_line_to_argscCst|j|}tj||}|dkrfdtdttdttdi}tdd|j|j}|j|j|}t ||t |j dS)Nzexpected one argumentzexpected at most one argumentzexpected at least one argumentzexpected %s argumentzexpected %s argumentsrU) _get_nargs_patternrKrdrr r rrrrrrr)r"rxr nargs_patternrd nargs_errorsrr!r)r)r*rs    zArgumentParser._match_argumentcstg}xjtt|ddD]V}|d|}djfdd|D}tj||}|dk r|jdd|jDPqW|S)NrrUr_csg|]}j|qSr))r)r[rx)r"r)r*r^sz;ArgumentParser._match_arguments_partial..cSsg|] }t|qSr))rr)r[r1r)r)r*r^!sr)rrrr!rKrdrro)r"rnrrr actions_slicerrdr))r"r*rs   z'ArgumentParser._match_arguments_partialc Cs|sdS|d|jkrdS||jkr8|j|}||dfSt|dkrHdSd|kr~|jdd\}}||jkr~|j|}|||fS|jr|j|}t|dkrdjdd|D}||d}td}|j||nt|dkr|\} | S|j j |r|j sdSd |krdSd|dfS) NrrU=z, cSsg|]\}}}|qSr)r))r[rxrrr)r)r*r^Gsz2ArgumentParser._parse_optional..)rlmatchesz4ambiguous option: %(option)s could match %(matches)sr) rCrIrrsplitr_get_option_tuplesr!rrzrMrdrN) r"rrxrr option_tuplesoptionsr]r!rr)r)r*r's>              zArgumentParser._parse_optionalc Cs0g}|j}|d|kr~|d|kr~d|kr<|jdd\}}n|}d}x|jD],}|j|rL|j|}|||f}|j|qLWn|d|ko|d|kr|}d}|dd}|dd} xr|jD]T}||kr|j|}||| f}|j|q|j|r|j|}|||f}|j|qWn|jtd||S)NrrUrr5zunexpected option string: %s)rCrrI startswithrrzr) r"rrr[ option_prefixrrxrshort_option_prefixshort_explicit_argr)r)r*rbs8             z!ArgumentParser._get_option_tuplescCs|j}|dkrd}nX|tkr"d}nJ|tkr0d}n<|tkr>d}n.|tkrLd}n |tkrZd}nddjd |}|jr|jdd }|jd d }|S) Nz(-*A-*)z(-*A?-*)z (-*[A-]*)z (-*A[A-]*)z([-AO]*)z (-*A[-AO]*)z(-*%s-*)z-*rr_r-) rr rr rrr!rrn)r"rxrrr)r)r*rs$  z!ArgumentParser._get_nargs_patternc sxjttgkr2y|jdWntk r0YnX| rzjtkrzjrPj}nj}t |t rxj |}j |n| rjt krj rjdk rj}n|}j |nt|dkrjdtgkr|\}j |}j |njtkrfdd|D}nbjtkrDfdd|D}j |dn0fdd|D}x|D]}j |q^W|S)Nz--rUcsg|]}j|qSr))r)r[v)rxr"r)r*r^sz.ArgumentParser._get_values..csg|]}j|qSr))r)r[r)rxr"r)r*r^srcsg|]}j|qSr))r)r[r)rxr"r)r*r^s)rrrrer>r rrrrrr _check_valuerrr)r"rxr$r(rrr))rxr"r*rs>       zArgumentParser._get_valuesc Cs|jd|j|j}t|s0td}t|||y ||}Wntk r~t|jdt|j}tt j d}t||YnLt t fk rt|jdt|j}||d}td}t|||YnX|S)Nrz%r is not callablerrU)rr(z!invalid %(type)s value: %(value)r) rQrrXrrrr1rrr rrYr>)r"rxrr]r!rr'r]r)r)r*rs   zArgumentParser._get_valuecCsF|jdk rB||jkrB|djtt|jd}td}t|||dS)Nz, )r(rz3invalid choice: %(value)r (choose from %(choices)s))rr!maprrr)r"rxr(r]r!r)r)r*r s zArgumentParser._check_valuecCs$|j}|j|j|j|j|jS)N)r rqrmrHrKrd)r"rXr)r)r* format_usage s zArgumentParser.format_usagecCsx|j}|j|j|j|j|j|jx:|jD]0}|j|j |j|j|j |j |j q0W|j|j |jS)N)r rqrmrHrKrkrArJrgrgrrrhrrd)r"rX action_groupr)r)r*rd s        zArgumentParser.format_helpcCs|j|jdS)N)rP)rrP)r"r)r)r*r 0 szArgumentParser._get_formattercCs"|dkrtj}|j|j|dS)N)r r r r)r"filer)r)r* print_usage6 szArgumentParser.print_usagecCs"|dkrtj}|j|j|dS)N)r r r rd)r"rr)r)r*r; szArgumentParser.print_helpcCs |r|dkrtj}|j|dS)N)r stderrwrite)r"rrr)r)r*r @ szArgumentParser._print_messagercCs |r|j|tjtj|dS)N)r r rr)r"statusrr)r)r*rI szArgumentParser.exitcCs0|jtj|j|d}|jdtd|dS)N)rPrr5z%(prog)s: error: %(message)s )rr rrPrr)r"rr]r)r)r*rzN s  zArgumentParser.error)NN)NN)N)N)N)rN) rr/r0rrTrrrZrrrrrrrrrrrrrrrrrdr rrr rrzrr)r))rr*r1sN4  #w;,,4    )5 __version____all__ collectionsrrrosr;rerKsysr textwraprrrrrr rr rrr rrr4rrrrr r Exceptionrrr rrrrrrrrrrrr r9r^r`rr)r)r)r*@s~ n    [#%`65"