3 \@sdZddddddddd d d d d ddddgZdZddlZddlZddlZddZyddlmZmZWn$e k rddZddZYnXeZ Gdd d e Z Gdd d e Z Gddde ZGddde ZGd dde ZGd!d"d"eZGd#d d ZGd$d d eZGd%d d eZd&d'Zd(d)Zee d*fee d*fee d+fee d,fd-Zd.d/Zd0dZd=ZGd3ddZd>Zd?ZGd7ddZ Gd8ddZ!Gd9dde!Z"Gd:dde!Z#d;d<Z$eZ%dS)@z1.5.3Option make_option SUPPRESS_HELPSUPPRESS_USAGEValuesOptionContainer OptionGroup OptionParser HelpFormatterIndentedHelpFormatterTitledHelpFormatter OptParseError OptionErrorOptionConflictErrorOptionValueErrorBadOptionError check_choicea" Copyright (c) 2001-2006 Gregory P. Ward. All rights reserved. Copyright (c) 2002-2006 Python Software Foundation. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. NcCsd|jjt||fS)Nz<%s at 0x%x: %s>) __class____name__id)selfr /usr/lib64/python3.6/optparse.py_reprOsr)gettextngettextcCs|S)Nr)messagerrrr\srcCs|dkr |S|S)Nr)ZsingularZpluralnrrrr_src@seZdZddZddZdS)r cCs ||_dS)N)msg)rrrrr__init__hszOptParseError.__init__cCs|jS)N)r)rrrr__str__kszOptParseError.__str__N)r __module__ __qualname__r r!rrrrr gsc@seZdZddZddZdS)r cCs||_t||_dS)N)rstr option_id)rroptionrrrr uszOptionError.__init__cCs |jrd|j|jfS|jSdS)Nz option %s: %s)r%r)rrrrr!yszOptionError.__str__N)rr"r#r r!rrrrr osc@s eZdZdS)rN)rr"r#rrrrrsc@s eZdZdS)rN)rr"r#rrrrrsc@seZdZddZddZdS)rcCs ||_dS)N)opt_str)rr'rrrr szBadOptionError.__init__cCstd|jS)Nzno such option: %s)_r')rrrrr!szBadOptionError.__str__N)rr"r#r r!rrrrrsc@seZdZddZddZdS)AmbiguousOptionErrorcCstj||||_dS)N)rr possibilities)rr'r*rrrr s zAmbiguousOptionError.__init__cCstd|jdj|jfS)Nzambiguous option: %s (%s?)z, )r(r'joinr*)rrrrr!szAmbiguousOptionError.__str__N)rr"r#r r!rrrrr)sr)c@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd S)!r ZnonecCsd|_||_|dkrLyttjd}Wnttfk rBd}YnX|d8}||_t|t |d|d|_ |_ d|_ d|_ d|_||_d|_i|_d|_d|_dS) NZCOLUMNSPrz%defaultz%s %sz%s=%s)parserindent_incrementintosenvironKeyError ValueErrorwidthminmax help_positionmax_help_positioncurrent_indentlevel help_width short_first default_tagoption_strings_short_opt_fmt _long_opt_fmt)rr0r:r6r>rrrr s$  zHelpFormatter.__init__cCs ||_dS)N)r/)rr/rrr set_parserszHelpFormatter.set_parsercCs&|dkrtd|d|d|_dS)N z/invalid metavar delimiter for short options: %rz%s)rDrE)r5rA)rdelimrrrset_short_opt_delimiters z%HelpFormatter.set_short_opt_delimitercCs&|dkrtd|d|d|_dS)N=rEz.invalid metavar delimiter for long options: %rz%s)rHrE)r5rB)rrFrrrset_long_opt_delimiters z$HelpFormatter.set_long_opt_delimitercCs"|j|j7_|jd7_dS)Nr)r;r0r<)rrrrindentszHelpFormatter.indentcCs"|j|j8_|jd8_dS)Nr)r;r0r<)rrrrdedentszHelpFormatter.dedentcCs tddS)Nzsubclasses must implement)NotImplementedError)rusagerrr format_usageszHelpFormatter.format_usagecCs tddS)Nzsubclasses must implement)rL)rheadingrrrformat_headingszHelpFormatter.format_headingcCs.t|j|jd}d|j}tj||||dS)N rE)Zinitial_indentZsubsequent_indent)r8r6r;textwrapZfill)rtextZ text_widthrJrrr _format_texts  zHelpFormatter._format_textcCs|r|j|dSdSdS)N rD)rT)r descriptionrrrformat_descriptionsz HelpFormatter.format_descriptioncCs|rd|j|dSdSdS)NrUrD)rT)repilogrrr format_epilogszHelpFormatter.format_epilogcCsR|jdks|j r|jS|jjj|j}|tks8|dkr>|j}|jj|jt |S)N) r/r?helpdefaultsgetdest NO_DEFAULTNO_DEFAULT_VALUEreplacer$)rr&Z default_valuerrrexpand_defaults zHelpFormatter.expand_defaultcsg}j|}jjd}t||krBdjd|f}j}ndjd||f}d}|j||jrj|}tj|j }|jd|d|df|j fdd|ddDn|d d kr|jd dj |S) Nr-z%*s%s rDz %*s%-*s rcsg|]}djd|fqS)z%*s%s rD)r9).0line)rrr Esz/HelpFormatter.format_option..rrU) r@r9r;lenappendrZrarRZwrapr=extendr+)rr&resultoptsZ opt_widthZ indent_firstZ help_textZ help_linesr)rr format_option(s$      zHelpFormatter.format_optioncCs|jd}x6|jD],}|j|}||j|<t|t||j}qW|jxF|jD]<}x6|jD],}|j|}||j|<t|t||j}q`WqTW|j|jt |d|j |_ t|j |j d|_ dS)Nrr-rQ)rJ option_listformat_option_stringsr@r8rfr; option_groupsrKr7r:r9r6r=)rr/Zmax_lenoptZstringsgrouprrrstore_option_stringsKs        z"HelpFormatter.store_option_stringscst|jrF|jp|jjfdd|jD}fdd|jD}n |j}|j}jrb||}n||}dj|S)Ncsg|]}j|fqSr)rA)rbZsopt)metavarrrrrdasz7HelpFormatter.format_option_strings..csg|]}j|fqSr)rB)rbZlopt)rrrrrrdcsz, ) takes_valuerrr]upper _short_opts _long_optsr>r+)rr&Z short_optsZ long_optsrjr)rrrrrm]s     z#HelpFormatter.format_option_stringsN)rr"r#r_r rCrGrIrJrKrNrPrTrWrYrarkrqrmrrrrr s +  #c@s&eZdZd ddZddZd d ZdS) r r-NrcCstj|||||dS)N)r r )rr0r:r6r>rrrr tszIndentedHelpFormatter.__init__cCs td|S)Nz Usage: %s )r()rrMrrrrN|sz"IndentedHelpFormatter.format_usagecCsd|jd|fS)Nz%*s%s: rD)r;)rrOrrrrPsz$IndentedHelpFormatter.format_heading)r-rwNr)rr"r#r rNrPrrrrr ps  c@s&eZdZd ddZddZdd ZdS) r rrwNcCstj|||||dS)N)r r )rr0r:r6r>rrrr szTitledHelpFormatter.__init__cCsd|jtd|fS)Nz%s %s ZUsage)rPr()rrMrrrrNsz TitledHelpFormatter.format_usagecCsd|d|jt|fS)Nz%s %s z=-)r<rf)rrOrrrrPsz"TitledHelpFormatter.format_heading)rrwNr)rr"r#r rNrPrrrrr s  cCsh|ddjdkrd}nD|ddjdkrDd}|ddp@d}n|dddkrZd}nd}|||S) Nr-Z0xZ0b0r )lower)valtyperadixrrr _parse_numsrcCs t|tS)N)rr1)r}rrr _parse_intsrZintegerzfloating-pointcomplex)r1longfloatrc CsFt|j\}}y||Stk r@ttd|||fYnXdS)Nzoption %s: invalid %s value: %r) _builtin_cvtr~r5rr()r&rovalueZcvtZwhatrrr check_builtins rcCs:||jkr|Sdjtt|j}ttd|||fdS)Nz, z.option %s: invalid choice: %r (choose from %s))choicesr+mapreprrr()r&rorrrrrrs  NODEFAULTc @seZdZddddddddd d d d g ZdAZdBZdCZdDZdEZdFZ e e e e e dZ dZ ddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2ZeeeeeeegZ d3d4ZeZd5d6Zd7d8Zd9d:Zd;d<Zd=d>Z d?d@Z!dS)Gractionr~r]defaultnargsconstrcallback callback_argscallback_kwargsrZrrstore store_const store_true store_falserg append_constcountversionstringr1rrrchoice)r1rrrrNcOsFg|_g|_|j|}|j||j|x|jD] }||q2WdS)N)rurv_check_opt_strings_set_opt_strings _set_attrs CHECK_METHODS)rrjattrscheckerrrrr 4s    zOption.__init__cCsdd|D}|std|S)NcSsg|] }|r|qSrr)rbrorrrrdKsz-Option._check_opt_strings..z+at least one option string must be supplied) TypeError)rrjrrrrGszOption._check_opt_stringscCsx|D]}t|dkr&td||qt|dkrf|ddkoH|ddksXtd|||jj|q|dddko|ddkstd|||jj|qWdS) Nr-z>invalid option string %r: must be at least two characters longr-rzMinvalid short option string %r: must be of the form -x, (x any non-dash char)z--zGinvalid long option string %r: must start with --, followed by non-dash)rfr rurgrv)rrjrorrrrPs$    zOption._set_opt_stringscCszxP|jD]F}||kr,t||||||=q|dkrBt||tqt||dqW|rvt|j}tddj||dS)Nrzinvalid keyword arguments: %sz, )ATTRSsetattrr^sortedkeysr r+)rrattrrrrres   zOption._set_attrscCs2|jdkrd|_n|j|jkr.td|j|dS)Nrzinvalid action: %r)rACTIONSr )rrrr _check_actionxs  zOption._check_actioncCs|jdkr0|j|jkr|jdk r(d|_qd|_n^t|jtrF|jj|_|jdkrVd|_|j|jkrrtd|j||j|jkrtd|j|dS)Nrrr$zinvalid option type: %rz$must not supply a type for action %r) r~rALWAYS_TYPED_ACTIONSr isinstancerTYPESr TYPED_ACTIONS)rrrr _check_type~s        zOption._check_typecCsr|jdkrT|jdkr td|qnt|jttfsntdtt|jjdd|n|jdk rntd|j|dS)Nrz/must supply a list of choices for type 'choice'z1choices must be a list of strings ('%s' supplied)'rz#must not supply choices for type %r)r~rr rtuplelistr$split)rrrr _check_choices     zOption._check_choicecCs\|j|jkp|jdk }|jdkrX|rX|jrH|jdddjdd|_n|jdd|_dS)Nrr-rr(r)r STORE_ACTIONSr~r]rvr`ru)rrsrrr _check_dests   zOption._check_destcCs*|j|jkr&|jdk r&td|j|dS)Nz*'const' must not be supplied for action %r)r CONST_ACTIONSrr )rrrr _check_constszOption._check_constcCs<|j|jkr|jdkr8d|_n|jdk r8td|j|dS)Nrz*'nargs' must not be supplied for action %r)rrrr )rrrr _check_nargss   zOption._check_nargscCs|jdkrvt|js$td|j||jdk rLt|jt rLtd|j||jdk rt|jt rtd|j|nB|jdk rtd|j||jdk rtd||jdk rtd|dS)Nrzcallback not callable: %rz3callback_args, if supplied, must be a tuple: not %rz4callback_kwargs, if supplied, must be a dict: not %rz.callback supplied (%r) for non-callback optionz.callback_args supplied for non-callback optionz0callback_kwargs supplied for non-callback option) rcallablerr rrrrdict)rrrr_check_callbacks0         zOption._check_callbackcCsdj|j|jS)N/)r+rurv)rrrrr!szOption.__str__cCs |jdk S)N)r~)rrrrrsszOption.takes_valuecCs|jr|jdS|jdSdS)Nr)rvru)rrrrget_opt_strings zOption.get_opt_stringcCs*|jj|j}|dkr|S||||SdS)N) TYPE_CHECKERr\r~)rrorrrrr check_valueszOption.check_valuecs:|dk r6jdkrj|Stfdd|DSdS)Nrcsg|]}j|qSr)r)rbv)rorrrrdsz(Option.convert_value..)rrr)rrorr)rorr convert_values  zOption.convert_valuecCs$|j||}|j|j|j||||S)N)r take_actionrr])rrorvaluesr/rrrprocesss zOption.processc Cs:|dkrt|||n|dkr2t|||jn|dkrHt||dn|dkr^t||dn|dkrz|j|gj|n|dkr|j|gj|jn|d krt|||j|d d n||d kr|jpf}|jpi}|j||||f||nF|d kr |j|jn*|dkr(|j |jnt d|j d S)NrrrTrFrgrrrrrrZrzunknown action %r) rr ensure_valuergrrr print_helpexit print_versionr5r) rrr]rorrr/argskwargsrrrrs4      zOption.take_action) rrrrrgrrrrZr)rrrrrgrr)rrgr)rrg)rr)rr1rrrr)"rr"r#rrrrrrrrrrrr rrrrrrrrrrr!r__repr__rsrrrrrrrrrrs      ZSUPPRESSZHELPZUSAGEc@s^eZdZdddZddZeZddZdd Zd d Z d d Z dddZ dddZ ddZ dS)rNcCs*|r&x |jD]\}}t|||qWdS)N)itemsr)rr[rr}rrrr 9szValues.__init__cCs t|jS)N)r$__dict__)rrrrr!>szValues.__str__cCs2t|tr|j|jkSt|tr*|j|kStSdS)N)rrrrNotImplemented)rotherrrr__eq__Cs     z Values.__eq__cCs:x4t|D](}||kr ||}|dk r t|||q WdS)N)dirr)rrrZdvalrrr_update_carefulKs zValues._update_carefulcCs|jj|dS)N)rupdate)rrrrr _update_looseXszValues._update_loosecCs8|dkr|j|n |dkr(|j|n td|dS)NcarefulZloosezinvalid update mode: %r)rrr5)rrmoderrr_update`s   zValues._updatercCs&t|tj|}|jt||dS)N) __import__sysmodulesrvars)rmodnamermodrrr read_modulehs zValues.read_modulecCs&i}tt|j||j||dS)N)execopenreadr)rfilenamerrrrr read_filemszValues.read_filecCs0t|| st||dkr&t|||t||S)N)hasattrgetattrr)rrrrrrrrs zValues.ensure_value)N)r)r)rr"r#r r!rrrrrrrrrrrrrr7s    c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!S)"rcCs&|j||_|j||j|dS)N)_create_option_list option_classset_conflict_handlerset_description)rrconflict_handlerrVrrrr s zOptionContainer.__init__cCsi|_i|_i|_dS)N) _short_opt _long_optr[)rrrr_create_option_mappingssz'OptionContainer._create_option_mappingscCs|j|_|j|_|j|_dS)N)rrr[)rr/rrr_share_option_mappingssz&OptionContainer._share_option_mappingscCs|dkrtd|||_dS)Nerrorresolvez$invalid conflict_resolution value %r)rr)r5r)rhandlerrrrrs z$OptionContainer.set_conflict_handlercCs ||_dS)N)rV)rrVrrrrszOptionContainer.set_descriptioncCs|jS)N)rV)rrrrget_descriptionszOptionContainer.get_descriptioncCs|`|`|`dS)N)rrr[)rrrrdestroyszOptionContainer.destroycCsg}x,|jD]"}||jkr |j||j|fq Wx,|jD]"}||jkr:|j||j|fq:W|r|j}|dkrtddjdd|D|nh|dkrx^|D]V\}}|jdr|jj ||j|=n|jj ||j|=|jp|js|j j j |qWdS)Nrz conflicting option string(s): %sz, cSsg|] }|dqS)rr)rbcorrrrdsz3OptionContainer._check_conflict..rz--) rurrgrvrrrr+ startswithremove containerrl)rr&Z conflict_optsrorZc_optionrrr_check_conflicts.         zOptionContainer._check_conflictcOst|dtr|j||}n:t|dkrN| rN|d}t|tsVtd|ntd|j||jj|||_ x|j D]}||j |<qzWx|j D]}||j |<qW|jdk r|jtk r|j|j|j<n|j|jkrd|j|j<|S)Nrrznot an Option instance: %rzinvalid arguments)rr$rrfrrrrlrgrrurrvrr]rr^r[)rrrr&rorrr add_options(         zOptionContainer.add_optioncCsx|D]}|j|qWdS)N)r)rrlr&rrr add_optionss zOptionContainer.add_optionscCs|jj|p|jj|S)N)rr\r)rr'rrr get_options zOptionContainer.get_optioncCs||jkp||jkS)N)rr)rr'rrr has_option s zOptionContainer.has_optioncCsv|jj|}|dkr |jj|}|dkr4td|x|jD] }|j|=qZ!d?d@Z"dRdAdBZ#dCdDZ$dSdEdFZ%dTdGdHZ&dIdJZ'dUdKdLZ(dVdMdNZ)dS)WrNrTc Csrtj|||||j|| |_||_d|_d|_|dkr@t}||_|jj || |_ |j ||d|j dS)NT)add_help) rr set_usageprograllow_interspersed_argsprocess_default_valuesr rrCrX_populate_option_list_init_parsing_state) rrMrlrrrrVrZadd_help_optionrrXrrrr s    zOptionParser.__init__cCs2tj|x|jD] }|jqW|`|`|`dS)N)rrrnrlr)rrprrrrs    zOptionParser.destroycCsg|_g|_|jdS)N)rlrnr)rrrrrsz OptionParser._create_option_listcCs|jdddtdddS)Nz-hz--helprZzshow this help message and exit)rrZ)rr()rrrr_add_help_optionszOptionParser._add_help_optioncCs|jddtdddS)Nz --versionrz&show program's version number and exit)rrZ)rr()rrrr_add_version_optionsz OptionParser._add_version_optioncCs>|jr|j|j|r |j||jr.|j|r:|jdS)N)standard_option_listrrr r )rrlrrrrr s  z"OptionParser._populate_option_listcCsd|_d|_d|_dS)N)rargslargsr)rrrrr sz OptionParser._init_parsing_statecCsL|dkrtd|_n4|tkr$d|_n$|jjdrB|dd|_n||_dS)Nz%prog [options]zusage: )r(rMrr|r)rrMrrrrs zOptionParser.set_usagecCs d|_dS)NT)r)rrrrenable_interspersed_argssz%OptionParser.enable_interspersed_argscCs d|_dS)NF)r)rrrrdisable_interspersed_argssz&OptionParser.disable_interspersed_argscCs ||_dS)N)r )rrrrrset_process_default_values sz'OptionParser.set_process_default_valuescCs||j|<dS)N)r[)rr]rrrr set_defaultszOptionParser.set_defaultcKs|jj|dS)N)r[r)rrrrr set_defaultsszOptionParser.set_defaultscCs.|jdd}x|jD]}|j|jqW|S)N)rlrnrh)rZoptionsrprrr_get_all_optionss zOptionParser._get_all_optionscCsd|jst|jS|jj}x@|jD]4}|j|j}t|tr$|j }|j ||||j<q$Wt|S)N) r rr[copyrr\r]rr$rr)rr[r&rr'rrrget_default_valuess    zOptionParser.get_default_valuescOs|t|dtr t|f||}nLt|dkrd| rd|d}t|tsPtd||j|k rltdntd|jj||S)Nrrznot an OptionGroup instance: %rz"invalid OptionGroup (wrong parser)zinvalid arguments) rr$rrfrr/r5rnrg)rrrrprrradd_option_group+s     zOptionParser.add_option_groupcCs0|jj|p|jj|}|r,|j|k r,|jSdS)N)rr\rr)rr'r&rrrget_option_group;s   zOptionParser.get_option_groupcCs&|dkrtjddS|ddSdS)Nr)rargv)rrrrr _get_argsEszOptionParser._get_argscCs|j|}|dkr|j}||_g|_}||_y|j|||}Wn4ttfk rv}z|jt |WYdd}~XnX||}|j ||S)N) rrrrr _process_argsrrrr$ check_values)rrrrrstoperrrrr parse_argsKs    zOptionParser.parse_argscCs||fS)Nr)rrrrrrrrs zOptionParser.check_valuescCsx|r|d}|dkr |d=dS|dddkr>|j||q|dddkrht|dkrh|j||q|jr|j||d=qdSqWdS)Nrz--r-rr)_process_long_optrf_process_short_optsrrg)rrrrargrrrrs  zOptionParser._process_argscCs t||jS)N) _match_abbrevr)rrorrr_match_long_optszOptionParser._match_long_optc Cs|jd}d|kr4|jdd\}}|jd|d}n|}d}|j|}|j|}|jr|j}t||kr|jt dd|||dq|dkr|jd} qt |d|} |d|=n|r|jt d |nd} |j || ||dS) NrrHrTFz.%(option)s option requires %(number)d argumentz/%(option)s option requires %(number)d arguments)r&numberz%s option does not take a value) poprinsertr'rrsrrfrrrr(r) rrrr%roZnext_argZhad_explicit_valuer&rrrrrr#s0       zOptionParser._process_long_optc Cs|jd}d}d}x|ddD]}d|}|jj|}|d7}|sLt||jr|t|krx|jd||dd}|j} t|| kr|jt dd| || dq| dkr|jd} qt |d| } |d| =nd} |j || |||r Pq WdS) NrFrrTz.%(option)s option requires %(number)d argumentz/%(option)s option requires %(number)d arguments)r&r() r)rr\rrsrfr*rrrrr) rrrr%r iZchror&rrrrrr$s6      z OptionParser._process_short_optscCs&|jdkrtjjtjdS|jSdS)Nr)rr2pathbasenamerr)rrrr get_prog_names zOptionParser.get_prog_namecCs|jd|jS)Nz%prog)r`r.)rsrrrexpand_prog_nameszOptionParser.expand_prog_namecCs |j|jS)N)r0rV)rrrrrszOptionParser.get_descriptionrcCs|rtjj|tj|dS)N)rstderrwriter)rZstatusrrrrrs zOptionParser.exitcCs(|jtj|jdd|j|fdS)Nr-z%s: error: %s ) print_usagerr1rr.)rrrrrrs zOptionParser.errorcCs"|jr|jj|j|jSdSdS)NrD)rMrrNr0)rrrr get_usage#szOptionParser.get_usagecCs|jrt|j|ddS)N)file)rMprintr4)rr5rrrr3*s zOptionParser.print_usagecCs|jr|j|jSdSdS)NrD)rr0)rrrr get_version6s zOptionParser.get_versioncCs|jrt|j|ddS)N)r5)rr6r7)rr5rrrr<szOptionParser.print_versioncCs|dkr|j}|j|g}|j|jtd|j|jrZ|jtj|||jdx(|j D]}|j|j ||jdqbW|j dj |ddS)NZOptionsrUrDrre) rrqrgrPr(rJrlrrrnrrKr+)rrrirprrrrGs   zOptionParser.format_option_helpcCs |j|jS)N)rYrX)rrrrrrYXszOptionParser.format_epilogcCsn|dkr|j}g}|jr*|j|jd|jrD|j|j|d|j|j||j|j|dj|S)NrUrD) rrMrgr4rVrWrrYr+)rrrirrrr[szOptionParser.format_helpcCs |dkrtj}|j|jdS)N)rstdoutr2r)rr5rrrrgszOptionParser.print_help)T)NN)rN)N)N)N)N)N)*rr"r#rrr rrr r r r rrrrrrrrrrrr"rrr'r#r$r.r0rrrr4r3r7rrrYrrrrrrrRs^F      ' 3 $)     csZ|kr Sfdd|jD}t|dkr6|dS|sDtn|jt|dS)Ncsg|]}|jr|qSr)r)rbZword)r/rrrdsz!_match_abbrev..rr)rrfrsortr))r/Zwordmapr*r)r/rr&ts  r&)rrZ SUPPRESSHELPZ SUPPRESSUSAGE)& __version____all__Z __copyright__rr2rRrrr ImportErrorr( Exceptionr r rrrr)r r r rrrrrrrr^rrrrrrrr&rrrrrs|    P     uA=&