a 4dg@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z ddl m Z ddlm Z Gddde ZGdddejZGd d d eZGd d d eZGd ddeZGdddeZddZGdddejZGdddeZefZedeiZGdddeZGdddeZGdddeZGdddeZ Gd d!d!eZ!Gd"d#d#eZ"Gd$d%d%eZ#Gd&d'd'eZ$Gd(d)d)eZ%Gd*d+d+eZ&Gd,d-d-eZ'Gd.d/d/eZ(Gd0d1d1eZ)Gd2d3d3eZ*Gd4d5d5eZ+Gd6d7d7eZ,Gd8d9d9eZ-Gd:d;d;eZ.Gdd?d?eZ0Gd@dAdAeZ1GdBdCdCeZ2GdDdEdEeZ3GdFdGdGeZ4GdHdIdIeZ5GdJdKdKeZ6GdLdMdMeZ7GdNdOdOeZ8GdPdQdQeZ9GdRdSdSeZ:GdTdUdUeZ;GdVdWdWeZGd\d]d]eZ?Gd^d_d_eZ@Gd`dadaeZAGdbdcdceZBGdddedeeZCGdfdgdgeZDGdhdidieZEGdjdkdkeZFGdldmdmeZGGdndodoeZHGdpdqdqeZIGdrdsdseZJGdtdudueZKGdvdwdweZLGdxdydyeZMGdzd{d{eZNGd|d}d}eZOGd~ddeZPGdddeZQGdddeZRGdddeZSGdddeZTGdddeZUGdddeZVGdddeZWGdddeZXGdddeZYGdddeZZGdddeZ[GdddeZ\GdddeZ]GdddeZ^GdddeZ_GdddeZ`GdddeZaGdddeZbGdddeZcGdddeZdGdddeZeGdddeZfGdddeZgGdddeZhGdddeZiGdddeZjGdddeZkGdddeZlGdddeZmGdddeZnGdddeZoGdddeeZpGdddeeZqGddÄdeZrGddńdŃZsesdƃZtesdǃZuesdȃZvGddʄdeZwGdd̄deeZxGdd΄deeZyGddЄdeeZzGdd҄deZ{e|e}edӃoe~dkdԡGddքdeeZGdd؄deeZGddڄdeZGdd܄deZGddބdeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeZGd d d eeZGd d d eeZGd ddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeeZGdddeZGdddeZGdddeZGdd d eZefZed!eiZGd"d#d#eZGd$d%d%eZGd&d'd'eZGd(d)d)eZGd*d+d+eZGd,d-d-eZGd.d/d/eZGd0d1d1eZGd2d3d3eZGd4d5d5eZGd6d7d7eZGd8d9d9eZGd:d;d;eZGd<d=d=eZGd>d?d?eZGd@dAdAeZGdBdCdCeZGdDdEdEeZGdFdGdGeZGdHdIdIeZGdJdKdKeZGdLdMdMeZGdNdOdOeZGdPdQdQeZGdRdSdSeZGdTdUdUeZGdVdWdWeZGdXdYdYeZGdZd[d[eZGd\d]d]eZGd^d_d_eZGd`dadaeZGdbdcdceZGdddedeeZGdfdgdgeZGdhdidieZGdjdkdkeZGdldmdmeZGdndodoeZGdpdqdqeZGdrdsdseZGdtdudueZGdvdwdweZGdxdydyeZGdzd{d{eZGd|d}d}eZGd~ddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZGdddeZސddZedkr e߃dS(N)StringIO)support)mockc@s eZdZdS) StdIOBufferN__name__ __module__ __qualname__r r ./usr/local/lib/python3.9/test/test_argparse.pyrsrc@seZdZddZdS)TestCasecCs t}d|d<||jdS)NZ80COLUMNS)rEnvironmentVarGuard addCleanup__exit__selfenvr r r setUpszTestCase.setUpN)rrr rr r r r r sr c@s$eZdZddZddZddZdS) TempDirMixincCs$t|_t|_t|jdSN)tempfilemkdtemptemp_dirosgetcwdold_dirchdirrr r r r!s  zTempDirMixin.setUpcCs^t|jtj|jddD].\}}}|D]}ttj|j|tj q*qt |jddS)NF)topdownT) rrrwalkrchmodpathjoinstatS_IWRITEshutilrmtree)rrootdirsfilesnamer r r tearDown&s  zTempDirMixin.tearDowncCsVtj|j|}t|d}||Wdn1s:0Yt|tjdS)Nw) rr"r#ropenwriter!r$S_IREAD)rfilenameZ file_pathfiler r r create_readonly_file-s (z!TempDirMixin.create_readonly_fileN)rrr rr,r3r r r r rsrc@seZdZddZdS)SigcOs||_||_dSr)argskwargsrr5r6r r r __init__5sz Sig.__init__Nrrr r8r r r r r43sr4c@s$eZdZddZddZddZdS)NScKs|j|dSr)__dict__update)rr6r r r r8<sz NS.__init__cCs4t|j}ddd|D}dt|j|fS)Nz, cSsg|] }d|qS)z%s=%rr ).0tupr r r AzNS.__repr__..z%s(%s))sortedr;itemsr#typer)rZ sorted_itemsZ kwarg_strr r r __repr__?sz NS.__repr__cCst|t|kSr)varsrotherr r r __eq__Dsz NS.__eq__N)rrr r8rDrHr r r r r::sr:c@seZdZdddZdS)ArgumentParserErrorNcCs,t||||||_||_||_||_dSr) Exceptionr8messagestdoutstderr error_code)rrKrLrMrNr r r r8Js zArgumentParserError.__init__)NNNr9r r r r rIHsrIc Osttjtsttjtr&||i|Stj}tj}tt_tt_zzl||i|}tt|D]<}t||tjurt|||t||tjur`t|||q`|WW|t_|t_St yt dj }tj }tj } t d|| |dYn0W|t_|t_n|t_|t_0dS)N SystemExit) isinstancesysrMrrLlistrEgetattrsetattrrPexc_infocodegetvaluerI) parse_argsr5r6Z old_stdoutZ old_stderrresultkeyrWrLrMr r r stderr_to_parser_errorRs>     r\cs4eZdZfddZfddZfddZZS)ErrorRaisingArgumentParsercs"tt|j}t|g|Ri|Sr)superr]rYr\)rr5r6rY __class__r r rYus z%ErrorRaisingArgumentParser.parse_argscs"tt|j}t|g|Ri|Sr)r^r]exitr\)rr5r6rar_r r rays zErrorRaisingArgumentParser.exitcs"tt|j}t|g|Ri|Sr)r^r]errorr\)rr5r6rbr_r r rb}s z ErrorRaisingArgumentParser.error)rrr rYrarb __classcell__r r r_r r]ss  r]c@seZdZddZdS)ParserTesterMetaclassc Cs|dkr dSt|dst|_t|ds.t|_dd}dd}dd }d d }d d }Gdddt} |||fD]} ||fD]} | || | q|qpdS)NParserTestCaseparser_signature parser_classcSs"|D]}|j|ji|jqdSr) add_argumentr5r6)parserargument_signaturessigr r r no_groupssz1ParserTesterMetaclass.__init__..no_groupscSs,|d}|D]}|j|ji|jqdS)Nfoo)add_argument_grouprhr5r6)rirjgrouprkr r r one_groups z1ParserTesterMetaclass.__init__..one_groupcSs8t|D]*\}}|d|}|j|ji|jqdS)Nzfoo:%i) enumeraternrhr5r6)rirjirkror r r many_groupssz3ParserTesterMetaclass.__init__..many_groupscSs ||Sr)rY)rir5r r r listargssz0ParserTesterMetaclass.__init__..listargscSs4tj}|dg|t_z|W|t_S|t_0dS)Nr)rRargvrY)rir5Z old_sys_argvr r r sysargssz/ParserTesterMetaclass.__init__..sysargsc@s,eZdZddZddZddZddZd S) z0ParserTesterMetaclass.__init__..AddTestsc Ss||_||_|jj}|jj}|j|jfD]T}|j}|||f}d|} |fdd} z | | _WntynYn0t|| | q(dS)N_cSs ||dSrr r test_funcr r r wrapperszJParserTesterMetaclass.__init__..AddTests.__init__..wrapper)_add_arguments _parse_argsr test_failurestest_successesr# TypeErrorrU) rZ tester_cls add_argumentsrYZadd_arguments_nameZparse_args_namery func_namenames test_namerzr r r r8s     z9ParserTesterMetaclass.__init__..AddTests.__init__cSs2|jj}|jj}|j|i|}|||j|Sr)rfr5r6rgr{rj)rtesterr5r6rir r r _get_parsers z.AddTests._get_parserc SsZ||}|jD]D}|}|jt|d||Wdq1sJ0YqdS)N)msg)rfailuressplit assertRaisesrIrY)rrriargs_strr5r r r r}s   z>ParserTesterMetaclass.__init__..AddTests.test_failurescSsH||}|jD]2\}}t|tr*|}|||}|||qdSr)r successesrQstrrr| assertEqual)rrrir5 expected_nsZ result_nsr r r r~s    z?ParserTesterMetaclass.__init__..AddTests.test_successesN)rrr r8rr}r~r r r r AddTestssr)hasattrr4rfr]rgobject) clsr+basesbodydictrlrprsrtrvrrrYr r r r8s    - zParserTesterMetaclass.__init__Nr9r r r r rdsrdrec@s^eZdZedgZgdZdeddfdeddfdeddfd ed dfd ed dfgZdS) TestOptionalsSingleDash-x)ra--foo-x --fooz-x -yNx-x ar-xaz-x -1-1z-x-1rrr r4rjrr:rr r r r rs      rc@seZdZedddeddddedgZgd Zd ed d d d fdedd d d fded d dd fded d dd fdedd dd fdedd dd fdedd dd fdedd dd fded dd d fded dd d fdedddd fdedddd fg Zd S)TestOptionalsSingleDashCombinedr store_trueactionz-yyy store_const*rconst-z) rrrrz-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzarFN)ryyyzT-zar-z az-xzaz-xz az-x -zaz-x -z a-yz -x -yyy -zaz -x -yyy -z arr r r r rs$  rc@s^eZdZedgZgdZdeddfdeddfded dfd eddfd eddfgZdS) TestOptionalsSingleDashLong-foo)rrrz -foo --fooz-foo -y-fooarNrmz-foo arz-foo -1rz-fo a-f arr r r r r"s      rc @seZdZedededgZgdZdeddddfded dddfd ed dddfd ed dddfd eddddfdedd ddfdeddd dfgZdS)&TestOptionalsSingleDashSubsetAmbiguous-f-foobar-foorab)rr-fo-foo bz-foobz-foobaz-foorarN)ffoobarfoorabrr-fa-foaZoarZooa -foobar a -foorab arr r r r r0src @seZdZededgZgdZdedddfdedddfd edddfd edddfd edddfd edddfd edddfgZdS) TestOptionalsSingleDashAmbiguousrr)rrrrrrrrN)rrz-foob arz-foor az-fooba az-foora arrrr r r r r@src@sVeZdZedddgZgdZdeddfded dfd ed dfd ed dfgZdS) TestOptionalsNumericronedest)rrz-1 --fooz-1 -yz-1 -1z-1 -2rN)rz-1 arz-1az-1-2-2rr r r r rPs    rc@s^eZdZedgZgdZdeddfdeddfdeddfd ed dfd ed dfgZdS) TestOptionalsDoubleDashr)rrrrz--foo -xz --foo --barrNrz--foo arz--foo=az --foo -2.5z-2.5z --foo=-2.5rr r r r r]s      rc @seZdZedddedgZgdZdeddd fd edd d fd ed dd fded dd fded dd fded dd fgZdS)#TestOptionalsDoubleDashPartialMatch--badgerrrz--bat)--bar--b--ba--b=2z--ba=4 --badge 5rFN)badgerZbatz--bat XX--badT--badg--badgerr r r r rks rc @seZdZedddedgZgdZdeddd fd edd d fd edd d fd eddd fdeddd fdeddd fdeddd fgZdS)"TestOptionalsDoubleDashPrefixMatchrrrr)rrrrrrFN)rZbaz--ba Xrz--ba=XrTrrrr r r r r}s rc @seZdZedddededdddgZgd Zd ed d d d fdedd d d fded dd d fdeddd d fdedd dd fdedd dd fgZd S)TestOptionalsSingleDoubleDashrrrr-bazrrr)r-fbarz-fbazz-bazf-b BBrFNrbarbazTz--ba Brz -f --bar Bz-f -bz-ba -frr r r r rs  rc @seZdZedddZedddededd d d gZgd Zd eddddfdeddddfdeddddfdeddddfdeddd dfdeddd dfgZdS)!TestOptionalsAlternatePrefixChars+:/F prefix_charsadd_help+frr::bar/bazrrr) rrrrr--bar Br-h--helpz+hz::helpz/helprNrT::ba Br +f ::bar B+f /b/ba +f rrr r4rfrjrr:rr r r r rs   rc @seZdZedddZedddededd d d gZgd Zd eddddfdeddddfdeddddfdeddddfdeddd dfdeddd dfgZdS)*TestOptionalsAlternatePrefixCharsAddedHelprTrrrrrrrrr)rrrrrrrrFNrrrrrrrr r r r rs   rc @seZdZedddZedddedddedddgZgd Zd edddd fded ddd fd ed d dd fded d d d fgZdS)2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-Frrrrz+yz+z)-wz-xyzz+xrz+xyzrryrTz+y -xz+yz -xNrr r r r rs    rc@sheZdZeddddddgZgdZded d fded d fded d fded d fded d fgZd S) TestOptionalsShortLong-vz --verbosez-nz--noisyrr)z --x --verbosez-Nrz-v xrF)verboseTNrr r r r rs     rc@sbeZdZededddgZdgZdeddd fd edd d fd ed dd fdeddd fgZdS)TestOptionalsDestz --foo-bar--bazzabbazrrz --foo-bar frN)Zfoo_barrz--baz ggz--foo-bar h --baz ihrrz--baz j --foo-bar kkjrr r r r rsrc@sTeZdZededddgZdgZdedddfd ed ddfd edd dfgZdS) TestOptionalsDefaultrrrdefaultrrNrrz-xxrz-yyrrr r r r rs rc@s:eZdZedgZddgZdeddfdeddfgZdS)TestOptionalsNargsDefaultrrrNrrrr r r r r s    rc@s@eZdZedddgZddgZdeddfdedgdfgZdS) TestOptionalsNargs1rrOnargsrrNrrrr r r r rs  rc@sBeZdZedddgZgdZdeddfdegd dfgZdS) TestOptionalsNargs3rr)rrr-x a ba -xa -x brNrz-x a b crbcrr r r r r#s  rc@seZdZedddeddddedddd ed ded d d gZdgZdedddddfdedddddfdedddddfdedddddfdedddddfdedddddfdedddddfd edddddfdedddddfg ZdS)TestOptionalsNargsOptionalr?rrr)rrrspamrrr42Z84)rrCrr2rNTr-rrrz-w 2z-x 2z-y 2z-z 2 rrr r4intrjrr:rr r r r r .s    r c @seZdZedddeddddgZdgZded dd fdegdd fd edgdd fd edd gdd fded gd fded dgd fded dd gd fgZd S)TestOptionalsNargsZeroOrMorer*rrrrrrNrrrr -y a-y a brr r r r rEs  rc @seZdZedddeddddgZgdZded dd fd ed gdd fd ed dgdd fded d gd fded d dgd fgZd S)TestOptionalsNargsOneOrMorer+rrrr)rrrrza -y brNrrrrr rrrr r r r rXs  rc @seZdZedddedeeddgZgdZded d d fd ed d d fd edd d fded dd fded dd fdeddd fgZ d S)TestOptionalsChoicesrabcchoicesz-grCr )rz-f dz-fadz-gaz-g 6rN)rrrrz-f cr z-g 0rz-g 03rz-fb -g4r  rrr r4rrangerjrr:rr r r r ris rc@s@eZdZededdgZddgZdeddfd ed dfgZd S) TestOptionalsRequiredrTrCrequiredrr-x 1rOrz-x42rNrr r r r r&zs    r&c@s>eZdZedddgZddgZdeddfd ed dfgZdS) TestOptionalsActionStorerstorerrrrNrz-xfoormrr r r r r*s   r*c@s>eZdZeddedgZdgZdeddfdeedfgZdS)TestOptionalsActionStoreConstrrrrrNr) rrr r4rrjrr:rr r r r r,s   r,c@s>eZdZedddgZgdZdeddfdeddfgZd S) TestOptionalsActionStoreFalser store_falser)rrrrT)rFNrr r r r r.s   r.c@s>eZdZedddgZgdZdeddfdeddfgZd S) TestOptionalsActionStoreTruez--applerr)rz --apple=bz --apple brF)ZappleTNrr r r r r0s   r0c@sleZdZedejdgZddgZdeddfdeddfd ed dfd ed dfd eddfgZ d dZ dS)TestBooleanOptionalActionrrz --foo barz --foo=barrNrT--no-fooFz--foo --no-fooz--no-foo --foocCsZt}|t"}|jddtjdWdn1s:0Y|dt|jdS)NrTrrz*got an unexpected keyword argument 'const') argparseArgumentParserrrrhBooleanOptionalActionassertInr exceptionrricmr r r test_consts 0z$TestBooleanOptionalAction.test_const) rrr r4r4r6rjrr:rr;r r r r r1s     r1c@s@eZdZeddejdgZdgZdeddfdeddfgZ dS) !TestBooleanOptionalActionRequiredrT)r(rrrr2FN) rrr r4r4r6rjrr:rr r r r r<s   r<c@sPeZdZedddgZgdZdeddfded gdfd ed d gdfgZdS) TestOptionalsActionAppendrappendrrra --baz --baz a brNr--baz ar--baz a --baz br rr r r r r=s  r=c@sXeZdZedddgdgZgdZdedgdfdedd gdfd egd dfgZd S) $TestOptionalsActionAppendWithDefaultrr>rrrr?rrBrCrrD)rrr Nrr r r r rEs rEc@sbeZdZeddededdddgZgdZd ed d fdeegd fd eed edgd fgZd S)TestOptionalsActionAppendConst-b append_constr-cr>r rrrrJza -cz-bxz-b xrNr -b -cx -b -cyzryz rrr r4rJrjrr:rr r r r rGs   rGc @sleZdZeddedgdeddddgZgd Zd edgd fdedegd fd eded edgd fgZdS))TestOptionalsActionAppendConstWithDefaultrHrIr)rrrrJr>r rKrLrrMrNrrONrPr r r r rQs rQc@s>eZdZedddgZgdZdeddfdeddfgZdS) TestOptionalsActionCountrcountr)rrz-x bz -x a -x brNrrOrr r r r rR s   rRc @sreZdZedededddgZddgZded d d d fd ed d d d fded dd d fdedd dd fgZd S)"TestOptionalsAllowLongAbbreviationrz--foobazz--fooblerrz--foob 5z--foobrNF)rmZfoobazZfooblez--foo 77z --fooba arz--foobl --foo grTrr r r r rTs rTc@sleZdZeddZededddedgZgdZd ed dd d fd ed dd d fdedddd fgZd S)%TestOptionalsDisallowLongAbbreviationF allow_abbrevrz--foodlerrz--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rNrmZfoodleZfoonlyz--foo 33z--foonly 7 --foodle --foo 2rTrUrr r r r rV%s  rVc@sneZdZedddZededddedgZgd Zd ed dd d fd eddd d fdedddd fgZd S)0TestOptionalsDisallowLongAbbreviationPrefixCharsrFrrXz++fooz++foodlerrz++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNrYz++foo 3rZz++foonly 7 ++foodle ++foo 2rTrUrr r r r r[6s  r[c @seZdZeddZededddgZddgZded d d fd ed d d fd edd d fded dd fded dd fdeddd fgZd S)/TestDisallowLongAbbreviationAllowsShortGroupingFrWz-rrJrSrz-c -rrNrr z-rarz-rccccz-ccrz-cc -raz-ccrccrr r r r r]Gs  r]c @seZdZedddZededddgZddgZd ed d d fd ed d d fdedd d fded dd fded dd fdeddd fgZd S)5TestDisallowLongAbbreviationAllowsShortGroupingPrefixrFr\z+rz+crSrz+c +rrNr^z+rarz+rccr`z+ccrz+cc +raz+ccrccrr r r r raZs  rac@s.eZdZedgZgdZdeddfgZdS)TestPositionalsNargsNonermrra brrNrr r r r rbqs  rbc@s4eZdZedddgZgdZdedgdfgZdS)TestPositionalsNargs1rmrOrrcrrNrr r r r re{srec@s6eZdZedddgZgdZdeddgdfgZd S) TestPositionalsNargs2rmrr)rrra b crdrr rNrr r r r rfsrfc@sNeZdZedddgZdgZdegdfdedgdfdedd gdfgZd S) TestPositionalsNargsZeroOrMorermrrrrrrrdr Nrr r r r rhs  rhc@sPeZdZeddddgZdgZdeddfdedgdfd edd gdfgZd S) %TestPositionalsNargsZeroOrMoreDefaultrmrrrrrrrrdr Nrr r r r ris  ric@sDeZdZedddgZddgZdedgdfdedd gdfgZd S) TestPositionalsNargsOneOrMorermrrrrrrrdr Nrr r r r rjs rjc@s>eZdZedddgZddgZdeddfd ed dfgZdS) TestPositionalsNargsOptionalrmr rrrdrNrrrr r r r rks   rkc@s@eZdZeddddgZddgZdeddfd ed dfgZd S) #TestPositionalsNargsOptionalDefaultrmr rrrrdrrrNrr r r r rls   rlc@sBeZdZeddeddgZgdZdeddfd ed dfgZd S) ,TestPositionalsNargsOptionalConvertedDefaultrmr r)rrCr)rrd1 2rrr1rONrr r r r rms   rmc@s6eZdZededgZgdZdedddfgZdS) TestPositionalsNargsNoneNonermr)rrrrgrdrr rmrNrr r r r rpsrpc@s<eZdZededddgZgdZdeddgd fgZd S) TestPositionalsNargsNone1rmrrOr)rrrrgrdrr rqNrr r r r rrsrrc@s>eZdZedddedgZgdZdeddgd d fgZd S) TestPositionalsNargs2Nonermrrrrrrrda b c drgrr r rqNrr r r r rssrsc@s\eZdZededddgZddgZdedgdfd edd gdfd edd d gdfgZd S)"TestPositionalsNargsNoneZeroOrMorermrrrrrrrqrdr rgr Nrr r r r rvs rvc@sNeZdZededddgZgdZdeddgd fd eddd gd fgZd S) !TestPositionalsNargsNoneOneOrMorermrrrrrrrdrr rqrgr Nrr r r r rws rwc@sHeZdZededddgZgdZdedddfd edd dfgZdS) TestPositionalsNargsNoneOptionalrmrr rrrrgrNrqrdr rr r r r ry s ryc@s\eZdZedddedgZddgZdegddfd edgd dfd edd gd dfgZd S)"TestPositionalsNargsZeroOrMoreNonermrrrrrrrqrdr rgr Nrr r r r r{s r{c@sNeZdZedddedgZgdZdedgdd fd eddgd d fgZd S) !TestPositionalsNargsOneOrMoreNonermrrrrxrdrr rqrgr Nrr r r r r|#s r|c@sJeZdZeddddedgZgdZdedddfd edd dfgZd S) TestPositionalsNargsOptionalNonermr rrrrzrrqrdr Nrr r r r r}.s r}c@sVeZdZedddedddgZgdZdedd ggd fd edd gd gd fgZd S)TestPositionalsNargs2ZeroOrMorermrrrrrxrdrr rqrgr Nrr r r r r~9s r~c@sDeZdZedddedddgZgdZdedd gd gd fgZd S) TestPositionalsNargs2OneOrMorermrrrr)rrrrdrgrr r rqNrr r r r rDsrc@sTeZdZedddedddgZgdZdedd gd d fd edd gd d fgZd S)TestPositionalsNargs2Optionalrmrrrr )rrrrurdrr Nrqrgr rr r r r rNs rc@sfeZdZedddedddgZddgZdegdgd fd edgd gd fd edd gd gd fgZdS)TestPositionalsNargsZeroOrMore1rmrrrrOrrrrqrdr rgr Nrr r r r rYs rc@sVeZdZedddedddgZgdZdedgd gd fd edd gd gd fgZd S)TestPositionalsNargsOneOrMore1rmrrrrOrxrdrr rqrgr Nrr r r r res rc@sPeZdZedddedddgZgdZdeddgd fd edd gd fgZdS) TestPositionalsNargsOptional1rmr rrrOrzrNrqrdr rr r r r rps rc@s\eZdZededddedddgZgdZded gd gd fd ed d gd gd fgZdS)#TestPositionalsNargsNoneZeroOrMore1rmrrrrrOrxrdrr rmrrrgr Nrr r r r r{s  rc@s`eZdZededddedddgZgdZded d gd gd fd ed d d gdgd fgZdS)"TestPositionalsNargsNoneOneOrMore1rmrrrrrO)rrrr rgrr r rrudNrr r r r rs  rc@s\eZdZededdddedddgZgd Zd ed dd gd fded d dgd fgZdS)!TestPositionalsNargsNoneOptional1rmrr ?rrrOrrxrdrr rrgr Nrr r r r rs  rc@s\eZdZedddeddddgZddgZd ed dd fd ed dd fd ed dd fgZd S)$TestPositionalsNargsOptionalOptionalrmr rrrrrrgrNrqrrdr rr r r r rs  rc@sleZdZedddedddgZdgZdedgd fd ed gd fd ed d gd fd ed d dgd fgZdS)&TestPositionalsNargsOptionalZeroOrMorermr rrrrrNrqrrdr rgr rr r r r rsrc@sbeZdZedddedddgZddgZded dgd fd edd gd fd edd dgd fgZd S)%TestPositionalsNargsOptionalOneOrMorermr rrrrrrNrqrdr rgr rr r r r rs rc@sBeZdZededdgZgdZdeddfdeddfgZdS) TestPositionalsChoicesStringrZabcdefgrrrrrZefrrrN) rrr r4setrjrr:rr r r r rs   rc@sDeZdZedeeddgZgdZdeddfded dfgZ d S) TestPositionalsChoicesIntrr"r4r#r15Nr$r r r r rs   rc@sFeZdZedddeddddgZgdZdedd d ggd fgZd S) TestPositionalsActionAppendrr>rr)rrrtrgrr r rNrr r r r rs   rc@sjeZdZedddeddddgZdd gZd ed d d fdedd d fded dd fdeddd fgZd S)"TestOptionalsNumericAndPositionalsrr rz-4rrrrrz-315rNFrrTz-4 arr r r r rs  rc @sveZdZedddeddddgZdgZd ed d d fd ed d d fdedd d fded dd fdeddd fgZd S)(TestOptionalsAlmostNumericAndPositionalsrr rz-k4rrrz-k3rNFrrrTz-k4 arr r r r rs  rc @seZdZedddeddddgZdgZdgedd d fd ged d d fd ged d d fddged dd fdd ged d d fdd ged d d fd ged d d fdged d d fgZd S)$TestEmptyAndSpaceContainingArgumentsrr rrz--yyyrrrNrza badgerz -a badgerz--yyy=a badgerz--yyy=-a badgerrr r r r rs  rc @seZdZeddZedddddedd ed d ed d ddgZddgZdedd ddfdedd ddfdedd ddfdeddddfd edd ddfdedd ddfgZ dS) TestPrefixCharacterOnlyArgumentsz-+r-rr r)rrrrrr)rrCrz-+-rrrrz+ -rNFrz- Xrz+ -3Tz- ===z===) rrr r4rfrrjrr:rr r r r r*s  rc @seZdZedddedddgZgZdedgdfdeggdfded ggdfd ed gd gdfd edd gdfd egd gdfd ed gd gdfgZdS)TestNargsZeroOrMorerrrrrNrrrz -x a -- br rrrr r r r r=src @szeZdZededddedgZgdZdedgdd fd edgd d fd edgd dd fdedddgdd fgZdS)TestNargsRemainderrr...rr)rrz-z ZrNrz-z Z XZ X A B -z Z)Arrrz X Y --fooYrrr r r r rMsrc@seZdZededededdedddgZgd Zd ed d gd fd edd gd fdedd dgd fded dgd fded dgd fded dgd fded ddgd fded d dgd fdedd dgd fdedd dgd fded ddgd fg Zd S)TestOptionLikerrCz-3r)rCrrrr) rz-y2.5rz-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z -x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 arNrz-x 2.5@z-x 2.5 arz-3.5?z-3-.5gz-3 .5za -3.5za -x 1g?z-x 1 az-3 1 a) rrr r4floatrjrr:rr r r r rZs"   rc @seZdZeddejdeddejdeddejdgZd gZd efd ed d fd ed dgdfdeddfded ddfded dgddfgZ dS)TestDefaultSuppressrmr rrrrrrFrrrrrdr rqTrBr@rmrrArN) rrr r4r4SUPPRESSrjrr:rr r r r rus  rc @seZdZeejdZedddedddeddd gZd gZd e fd e d d fde d dgdfde ddfde d ddfde d dgddfgZ dS)TestParserDefaultSuppressargument_defaultrmr rrrrrrrrrrrdr rqTrBr@rrArN) rrr r4r4rrfrjrr:rr r r r rs      rc @seZdZeddZeddddeddd ed d d ed d dgZdgZdedddddfdedddddfdeddgdddfd edddddfdedddddfdeddgdddfgZdS)TestParserDefault42rr --versionversion1.0rrrmr rrrrrrrr)rmrrrrrdr Tr@rANrr r r r rs     rc seZdZfddZeddZedededdd gZgd Zd ed d dgdfdedd ddgdfded dd gdfded d dgdfdeddddgdfdedd ddgdfgdedd dgdfgZ Z S)TestArgumentsFromFilec s\tt|gd}|D]<\}}t|d}||Wdq1sL0YqdS)N)helloz hello world! ) recursivez -a A @hello)invalidz@no-such-path r-)r^rrr.r/rZ file_textsr"textr2r_r r rs   zTestArgumentsFromFile.setUp@fromfile_prefix_chars-arrrr)rrHrz@invalidz@missingzX YNrr)rrrz X -a A Y Zrr@hello Xz hello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br)rrrrr) rrr rr4rfrjrr:rrcr r r_r rs  rcs`eZdZfddZGdddeZeZeddZeddd gZ gZ d e gd d fgZ Z S) TestArgumentsFromFileConverterc sZtt|dg}|D]<\}}t|d}||Wdq1sJ0YqdS)Nrr-)r^rrr.r/rr_r r rs   z$TestArgumentsFromFileConverter.setUpc@seZdZddZdS)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs"|D]}|sq|VqdSr)rstrip)rarg_lineargr r r convert_arg_line_to_argss zWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrr rr r r r FromFileConverterArgumentParsersrrrrrrr)rzworld!rr-)rrr rr]rrgr4rfrjrr:rrcr r r_r rs   rc@s4eZdZddZddZddZddZd d Zd S) TestFileTypeReprcCstd}|dt|dS)Nr_z FileType('r')r4FileTyperreprrrCr r r test_rs zTestFileTypeRepr.test_rcCs tdd}|dt|dS)NwbrOzFileType('wb', 1)rrr r r test_wb_1s zTestFileTypeRepr.test_wb_1cCs"tjddd}|dt|dS)Nr_latin_1encodingz!FileType('r', encoding='latin_1')rrr r r test_r_latinszTestFileTypeRepr.test_r_latincCs$tjdddd}|dt|dS)Nr-big5ignore)rerrorsz/FileType('w', encoding='big5', errors='ignore')rrr r r test_w_big5_ignoresz#TestFileTypeRepr.test_w_big5_ignorecCs$tjdddd}|dt|dS)Nr_rOreplacerz"FileType('r', 1, errors='replace')rrr r r test_r_1_replacesz!TestFileTypeRepr.test_r_1_replaceN)rrr rrrrrr r r r rs rc@seZdZddZddZdS)StdStreamComparercCs ||_dSr)attr)rrr r r r8 szStdStreamComparer.__init__cCs|tt|jkSr)rTrRrrFr r r rHszStdStreamComparer.__eq__Nrrr r8rHr r r r r srstdinrLrMc@s eZdZiZddZddZdS)RFilecCs ||_dSrr+rr+r r r r8szRFile.__init__cCs`||jvr|j|}n|}|j|<|t|tsD|d}|j|jkoZ|kSS)Nascii)seenreadcloserQrdecoder+rrGrr r r rHs    z RFile.__eq__N)rrr rr8rHr r r r rsrc seZdZfddZededededdgZgdZde d e dd fd e e de d d fd e e de d d fde e e d fde d e dd fgZ Z S) TestFileTypeRc sftt|dD]D}ttj|j|d}||Wdq1sL0Yq| ddS)Nrqr-readonly) r^rrr.rr"r#rr/r3r file_namer2r_r r r+s *zTestFileTypeR.setUprrrr_)rrznon-existent-file.txtrmNrr -x foo barr bar -x foo-x - -rrrr rr4r4rrjrr:req_stdinrrcr r r_r r(s rcsLeZdZfddZededddgZdgZde e d d fgZ Z S) TestFileTypeDefaultscs:tt|ttj|jdd}|d| dS)Ngoodr-) r^rrr.rr"r#rr/r)rr2r_r r rAs zTestFileTypeDefaults.setUprJr_z no-file.txtrCrrz-c goodr)r ) rrr rr4r4rrjrr:rrrcr r r_r r?s  rcseZdZfddZededdededdgZddgZde d e dd fd e e de d d fd e e de d d fde e e d fgZ Z S)TestFileTypeRBc s\tt|dD]D}ttj|j|d}||Wdq1sL0YqdS)Nrqr-) r^rrr.rr"r#rr/rr_r r rSszTestFileTypeRB.setUprrbrrrrmNrrrrrrr r r_r rPs rc@s"eZdZeZddZddZdS)WFilecCs ||_dSrrrr r r r8iszWFile.__init__cCsL||jvr@d}d|jvr"|d}||||j||j|jkS)NzCheck that file is writable.r r)rmodeencoder/raddr+rr r r rHls     z WFile.__eq__N)rrr rrr8rHr r r r rfsrgeteuidznon-root user requiredcseZdZfddZededdededdgZgdZde d e dd fd e e de d d fd e e de d d fde e e d fgZ Z S) TestFileTypeWcstt||ddS)Nr)r^rrr3rr_r r r|szTestFileTypeW.setUprr-rr)rrrrmNrrrrr)rrr rr4r4rrjrr:r eq_stdoutrrcr r r_r rws rc@seZdZededdededdgZddgZdede ddfd ee de d dfd ee de d dfd ee e dfgZ dS) TestFileTypeWBrrrrrrmNrrrrr) rrr r4r4rrjrr:rrrr r r r rsrc@seZdZddZdS)TestFileTypeOpenArgsc Cstj}|ddf|dddf|ddddf|d d d d f|dd dddfg}td8}|D]"\}}|d|jdg|Rq\Wdn1s0YdS)Nr)rNNr-rO)r-rONNrr)r-rNrrrr)rrrNrl1strict)r-rrrz builtins.openrm)r4rrZpatchZassert_called_with)rZFTZcasesmrCr5r r r test_open_argss    z#TestFileTypeOpenArgs.test_open_argsN)rrr rr r r r rsrc@seZdZddZdS)!TestFileTypeMissingInitializationcCs`t}|t }|jdtjdWdn1s80Y|dtjft|jdS)Nrrz<%r is a FileType class object, instance of it must be passed) r4r5r ValueErrorrhrrrr8r9r r r tests .z&TestFileTypeMissingInitialization.testNrrr rr r r r rsrc@sZeZdZededededgZgdZdedddfd ed d dfd ed ddfgZ d S)TestTypeCallablez--eggsrr)rZ42jz--eggs az --eggs 2iz --eggs=42 42rgE@)eggsrz--eggs 2j -- -1.5y@z1024.675Ng3333@) rrr r4complexrrjrr:rr r r r r s  r c@sheZdZGdddeZededededgZgZdeededd fd eed ed d fgZ d S)TestTypeUserDefinedc@seZdZddZddZdS)zTestTypeUserDefined.MyTypecCs ||_dSrvaluerrr r r r8sz#TestTypeUserDefined.MyType.__init__cCst||jft||jfkSrrCrrFr r r rHsz!TestTypeUserDefined.MyType.__eq__Nrr r r r MyTypesrrrrrr rr-xf grrN) rrr r rr4rjrr:rr r r r r s  r c@sfeZdZGdddZededededgZgZdeededd fd eed ed d fgZd S)TestTypeClassicClassc@seZdZddZddZdS)zTestTypeClassicClass.CcCs ||_dSrrrr r r r8szTestTypeClassicClass.C.__init__cCst||jft||jfkSrrrFr r r rHszTestTypeClassicClass.C.__eq__Nrr r r r Csrrrrrr rrrrrN) rrr rr4rjrr:rr r r r rs  rc@seZdZddZdS)TestTypeRegistrationcCszdd}t}|dd||jddd|jddd||dtdd d ||d td d d dS) NcSsd|S)Nz my_type{%s}r stringr r r get_my_typesz.TestTypeRegistration.test..get_my_typerCZmy_typerrrroz my_type{1}rz-x 1 42z my_type{42})r4r5registerrhrrYrr:)rrrir r r rs  zTestTypeRegistration.testNrr r r r rsrc@seZdZGdddejZGdddejZeddeedded ee d d d gZ gZ d e dd dfde dddfde dddfde dddfgZ dS)TestActionUserDefinedc@seZdZdddZdS)z$TestActionUserDefined.OptionalActionNcCsvz:tdd}|dvrd|_n|dvr,d|_n td|Wn*tydtd}td |Yn0t|d |dS) N?r)?rr)@r value: %srOzopt_action failed: %sr)r:rAssertionErrorrRrVrIrUrri namespacer option_stringrer r r __call__s    z-TestActionUserDefined.OptionalAction.__call__)Nrrr r%r r r r OptionalActionsr'c@seZdZdddZdS)z&TestActionUserDefined.PositionalActionNcCszJtdd}|dvrd|_n,|dvr,d|_n|dvrr< subcommandsrCzadditional text)rBr9r<rorz'usage: PROG [-h] [--foo] bar {1,2} ... a usage: PROG [-h] [--foo] bar {1,2} ... main description positional arguments: bar bar help optional arguments: -h, --help show this help message and exit --foo foo help subcommands: command help {1,2} additional text ) r]rhrLrNrrlrmrnro)rrirPrQrRr r r test_subparser_title_helpqs   z+TestAddSubparsers.test_subparser_title_helpcCsN|t }|j|Wdn1s00Y|||jjdSr)rrIrirYrrr8rL)rrZ expected_helpr:r r r _test_subparser_helps .z&TestAddSubparsers._test_subparser_helpcCs|dtddS)Nz5.0 1 -ha usage: PROG bar 1 [-h] [-w W] {a,b,c} 1 description positional arguments: {a,b,c} x help optional arguments: -h, --help show this help message and exit -w W w help ryrnrorr r r test_subparser1_helpsz&TestAddSubparsers.test_subparser1_helpcCs|dtddS)Nz5.0 2 -ha usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...] 2 description positional arguments: z z help optional arguments: -h, --help show this help message and exit -y {1,2,3} y help rzrr r r test_subparser2_helpsz&TestAddSubparsers.test_subparser2_helpc Cs\|jdd}||dtdddddgf||dtdddddgfdS) NTrEz 0.5 1alias1 bFrr rWz 0.5 1alias2 b)rrr[rr:r.r r r test_alias_invocations   z'TestAddSubparsers.test_alias_invocationcCs"|jdd}||jddS)NTr}z 0.5 1alias3 b)rr5rYrr.r r r test_error_alias_invocations z-TestAddSubparsers.test_error_alias_invocationcCs.|jddd}d|_||tddS)NT)rErOa usage: PROG [-h] [--foo] bar COMMAND ... main description positional arguments: bar bar help optional arguments: -h, --help show this help message and exit --foo foo help commands: COMMAND 1 (1alias1, 1alias2) 1 help 2 2 help 3 3 help )rZmaxDiffrrmrnror.r r r test_alias_helpsz!TestAddSubparsers.test_alias_help)FNF)rrr r5rrrTrZr\r]rarcrerirjrprrrsrtrurxryr{r|r~rrrcr r r_r r3ts4 7   r3c@s$eZdZddZddZddZdS)TestPositionalsGroupscCsZt}|d|d}|d|dtdddd}|d }|||dS) NrmrrrrorrZr1 2 3)r]rhrnr:rYrrrriroexpectedrZr r r test_nongroup_firsts    z)TestPositionalsGroups.test_nongroup_firstcCsZt}|d}|d|d|dtdddd}|d }|||dS) NxxxrmrrrorrZrrr]rnrhr:rYrrrr r r test_group_firsts    z&TestPositionalsGroups.test_group_firstcCspt}|d}|d|d|d|d}|dtddd d d }|d }|||dS) NrrmrrrfrellrorrZr)rmrrrz1 2 3 4rrr r r test_interleaved_groupss      z-TestPositionalsGroups.test_interleaved_groupsN)rrr rrrr r r r rs  rcseZdZddZfddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZZS)TestParentParserscOs|jtg|Ri|dSrr4r7r r r r5 sz+TestParentParsers.assertArgumentParserErrorcsttdd|_|jd|jd}|d|jdtdd|_|jd|jd|jd }|d tdd|_|jdtdd|_|jdtdd|_ |j }|jd d d |jdd d t j tjd|_dS)NFrz--wrrrrrHr z--drrrr)r^rr] wxyz_parentrhrn abcd_parentw_parentz_parentab_mutex_parentadd_mutually_exclusive_grouprr"basenamerRru main_program)rZx_groupc_groupror_r r r s(                 zTestParentParsers.setUpcCs2t|jgd}||dtdddddS)Nparentsz -y 1 2 --w 3rZrorr-rr)r]rrrYrr:r.r r r test_single_parent$ s z$TestParentParsers.test_single_parentcCs,||jjt|jgd}||jdSNr)_test_mutex_abrrYr]r.r r r test_single_parent_mutex) sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d}t|gd}||jdS)NF)rrr)rr]rrYrrrir r r test_single_granparent_mutex. s  z.TestParentParsers.test_single_granparent_mutexcCs||gtddd||dgtddd||dgtddd||ddg||ddg||dg||ddg||ddgdS)NFrr rTrHrJ)rr:r5)rrYr r r r4 sz TestParentParsers._test_mutex_abc Cs@|j|jg}t|d}||dtddddddddS)Nrz--d 1 --w 2 3 4rZrorr)rr rr-rr)rrr]rrYrr:rr r r test_multiple_parents> s   z'TestParentParsers.test_multiple_parentsc Csb|j|jg}t|d}||dtdddddd||jd||jd dS) Nrz -a --w 2 3TFrrZ)rr r-rrz -a --w 2 3 -bz -a -b --w 2 3)rrr]rrYrr:r5rr r r test_multiple_parents_mutexD s    z-TestParentParsers.test_multiple_parents_mutexcCs |jtjtj|j|jgddSr)rr4 ArgumentErrorr5rrrr r r test_conflicting_parentsN s  z*TestParentParsers.test_conflicting_parentscCs |jtjtj|j|jgddSr)rr4rr5rrrr r r test_conflicting_parents_mutexT s  z0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d}||dtdddddS)Nrrnrr)rrr]rrYrr:rr r r test_same_argument_name_parentsZ s    z1TestParentParsers.test_same_argument_name_parentsc CsPt}|}|jd|jgd}|d||dtddddd dS) Nrrr$zbar -b 1 --d 2 3 4rZrorr)rr rr$) r]rLrNrrhrrYrr:)rrirPZ abcde_parserr r r test_subparser_parents` s z(TestParentParsers.test_subparser_parentsc Cst}|}|jg}|jd|d}|d}|d|j|jg}|jd|d}|d||d t dd d d ||d t d dd ddd d| |jd | |jd dS)Nrmrrr rr$zfoo -a 4TFrr zbar -b --w 2 3 4rrZ)rr r-rrr$z foo -a -b 4z bar -b -a 4) r]rLrrNrnrhrrrYrr:r5)rrirPrZ abc_parserrZwxyzabe_parserr r r test_subparser_parents_mutexh s*       z.TestParentParsers.test_subparser_parents_mutexc CsJ|j|jg}t|d}|}|j}||td||rrvrr rbaz help)rrr<r]rrhrr(riror r r r s   z&TestMutuallyExclusiveSimple.get_parser--bar X --baz Yz --bar X --baz--bar Xrrrz--bar X --bar Zr--baz Yrrrz; usage: PROG [-h] [--bar BAR | --baz [BAZ]] z; usage: PROG [-h] (--bar BAR | --baz [BAZ]) z optional arguments: -h, --help show this help message and exit --bar BAR bar help --baz [BAZ] baz help )N rrr rrr:rrrrr<r r r r r s rc @seZdZdddZdgZdedddddfded ddddfd edddddfd edd dddfgZd edddddfgZd ZdZ dZ dS)TestMutuallyExclusiveLongNcCsRtdd}|jddd|jddd|j|d}|jd d d|jd d d|S) Nr6rz--abcdez abcde helprvz--fghijz fghij helprz--klmnoz klmno helpz--pqrstz pqrst helpr]rhrrr r r r0 s  z$TestMutuallyExclusiveLong.get_parserz--klmno X --pqrst Yz --klmno Xr)ZabcdeZfghijZklmnoZpqrstz--abcde Y --klmno Xrz --pqrst Xz--pqrst X --fghij Yrzi usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] [--klmno KLMNO | --pqrst PQRST] zi usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ] (--klmno KLMNO | --pqrst PQRST) z optional arguments: -h, --help show this help message and exit --abcde ABCDE abcde help --fghij FGHIJ fghij help --klmno KLMNO klmno help --pqrst PQRST pqrst help )Nrr r r r r. s   rc@sfeZdZddZdgZdedddfded ddfd ed d dfgZd ed ddfgZdZdZ dZ d S)$TestMutuallyExclusiveFirstSuppressedcCs:tdd}|j|d}|jdtjd|jdddd |S) Nr6rrrrvrr/rHr;r]rrhr4rrr r r r[ s   z/TestMutuallyExclusiveFirstSuppressed.get_parserz-x X -yz-x XrTrz -x X -x YrrNFrz& usage: PROG [-h] [-y] z$ usage: PROG [-h] -y zx optional arguments: -h, --help show this help message and exit -y y help rr r r r rY src @seZdZddZgdZdeddddfded d ddfd ed dd dfd eddddfgZd ed dddfgZdZZ dZ dS)#TestMutuallyExclusiveManySuppressedcCsNtdd}|j|d}|j}|ddtjd|ddtjd|d tjd |S) Nr6rr--spamrr;rr/z --bladderrvr)rr(rirorr r r r| s  z.TestMutuallyExclusiveManySuppressed.get_parser)z--spam --badgerz--badger --bladder Bz--bladder B --spamrTN)rrZbladderrFz --bladder Brz --spam --spamrz! usage: PROG [-h] [ optional arguments: -h, --help show this help message and exit rrr rrr:rrrrr<r r r r rz s rc @seZdZddZgdZdeddddfd ed d ddfded ddgdfd ed dgd dfgZded dddfgZdZdZ dZ dS)*TestMutuallyExclusiveOptionalAndPositionalcCsJtdd}|j|d}|jdddd|jdd d |jd d d dd|S)Nr6rrrrFOOr;rSPAMrvrrrBADGERrrr<rrr r r r s   z5TestMutuallyExclusiveOptionalAndPositional.get_parser)z--foo --spam Sz --spam S XzX --foozX Y Z --spam Sz --foo X YrTNr)rmrrz--spam SFSzX Y Z)rrrrzD usage: PROG [-h] [--foo | --spam SPAM | badger ...] zD usage: PROG [-h] (--foo | --spam SPAM | badger ...) z positional arguments: badger BADGER optional arguments: -h, --help show this help message and exit --foo FOO --spam SPAM SPAM rr r r r r src @seZdZddZgdZdeddddddfdeddddddfd eddddddfd eddddddfd eddddddfd eddddddfgZd eddddddfdeddddddfdeddddddfgZdZZ dZ dS)#TestMutuallyExclusiveOptionalsMixedcCsjtdd}|jdddd|j|d}|jddd d|jd dd d|jd dd d|jdddd|S)Nr6rrrrFr;rra helprHb helprrHrJc helprrr r r r s  z.TestMutuallyExclusiveOptionalsMixed.get_parser)z-a -b-b -cz-a -cz-a -b -crTFrr r rrrHrJz-a -xz-y -bz-x -y -crrrz: usage: PROG [-h] [-x] [-a] [-b] [-y] [-c] z optional arguments: -h, --help show this help message and exit -x x help -a a help -b b help -y y help -c c help Nrr r r r r s  rc@s\eZdZdddZddgZdedddfd edd dfgZd edddfgZd Zd Z dZ dS)TestMutuallyExclusiveInGroupNcCsDtdd}|jddd}|j|d}|jddd |jd d d |S) Nr6rz Titled groupzGroup descriptionrrrr>rvrr)r]rnrrh)rr(riZ titled_group mutex_groupr r r r s  z'TestMutuallyExclusiveInGroup.get_parserrz--baz X --bar Yrrrrrrz9 usage: PROG [-h] [--bar BAR | --baz BAZ] z9 usage: PROG [-h] (--bar BAR | --baz BAZ) z optional arguments: -h, --help show this help message and exit Titled group: Group description --bar BAR bar help --baz BAZ baz help )Nrr r r r r s rc @seZdZddZgdZdeddddddfd ed d ddddfd ed dd dddfd eddddd dfded d ddd dfgZded dddddfded dddd dfgZdZZ dZ d S)1TestMutuallyExclusiveOptionalsAndPositionalsMixedcCshtdd}|jddd|jdddd |j|d }|jd d d d|jdddd |jdddd |S)Nr6rrrFrvrrrHr;rrr rrKrHrrJrrrr r r r s  ztdd}|jddt|gd}|tdd|gdS)NFrrmrrr)rrrir r r test_set_defaults_parents s   z)TestSetDefaults.test_set_defaults_parentscCsLt}|d}|jdd|jdd|tdd|dgdS)NrrOrr)r4r5rLrNrrr:rY)rriZxparserr r r )test_set_defaults_on_parent_and_subparser s   z9TestSetDefaults.test_set_defaults_on_parent_and_subparsercCst}|jddddd|d|jddd |jd d d |jd d dd|tddddd|g|jddddd|tddddd|gdS)NWrrrrrrXXrrr rrZZrWWYY)r]rrhrr:rYr.r r r &test_set_defaults_same_as_add_argument s z6TestSetDefaults.test_set_defaults_same_as_add_argumentcCst}|jddddd|d}|d|jdd d |jd d d |jdd dd|tdd ddd|g|jddddd|tddddd|gdS)Nrrrrrrmrrrrrr rrrrrr)r]rrnrhrr:rYrriror r r ,test_set_defaults_same_as_add_argument_group s  z.AddTestsc Ssj||_||_|j|j|jfD]H}d|j|f}|fdd}z ||_WntyVYn0t|||qdS)Nz%s_%scSs ||dSrr rxr r r test_wrapper? szUTestHelpFormattingMetaclass.__init__..AddTests.__init__..test_wrapper) func_suffixstd_name test_format test_printtest_print_filerrrU)rZ test_classrrryrrr r r r86 s   z?TestHelpFormattingMetaclass.__init__..AddTests.__init__c Sstj|jji|jj}t|dgD]}|j|ji|jq$t|dg}|D]:\}}|j|ji|j}|D]}|j|ji|jqnqNt|dg}|r|} |D]} | j | ji| jq|S)Nrjargument_group_signaturessubparsers_signatures) r4r5rfr5r6rTrhrnrLrN) rrriZ argument_sigZ group_sigsZ group_sigZ argument_sigsroZsubparsers_sigsrPZ subparser_sigr r r rG s4        zBTestHelpFormattingMetaclass.__init__..AddTests._get_parsercSs&t||j}t|}|||dSr)rTrrnror)rr parser_textZ expected_textr r r _test] s  z.AddTests._testcSs,||}t|d|j}|||dS)Nz format_%s)rrTrr)rrrirr r r rb s zBTestHelpFormattingMetaclass.__init__..AddTests.test_formatc Ss||}t|d|j}tt|j}tt|jtz(|tt|j}Wtt|j|ntt|j|0|||dSNzprint_%s) rrTrrRrrUrrXr)rrriprint_Z old_streamrr r r rg s   zATestHelpFormattingMetaclass.__init__..AddTests.test_printcSs@||}t|d|j}t}|||}|||dSr)rrTrrrXr)rrrir Zsfilerr r r rs s  zFTestHelpFormattingMetaclass.__init__..AddTests.test_print_fileN) rrr r8rrrrrr r r r r4 s  r))usagerL)r<rL)r)rr+rrrrrr r r r80 s H z$TestHelpFormattingMetaclass.__init__Nr9r r r r r. srrc@sjeZdZeddddZeddddd ed d d d edddedddedddgZgZdZedZdZ dS)TestHelpBiggerOptionalsr6 DESCRIPTIONEPILOGr8r9epilogrrr0.1rrrX HELPr;--yY HELPrvrmFOO HELPrBAR HELPz; usage: PROG [-h] [-v] [-x] [--y Y] foo bar ab DESCRIPTION positional arguments: foo FOO HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP --y Y Y HELP EPILOG  0.1 N rrr r4rfrjrr!r<rr r r r r" s    r"c@s8eZdZddZejZejZejZdZedZ ej Z dS)TestShortColumnscCs$t}|dd||jdS)Nr r)rrrrrrr r r r s zTestShortColumns.setUpz usage: PROG [-h] [-v] [-x] [--y Y] foo bar a DESCRIPTION positional arguments: foo FOO HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP --y Y Y HELP EPILOG N) rrr rr"rfrjrr!r<rr r r r r/ s r/c@seZdZeddddZeddddd ed d d d edddedddedddgZedddedddeddddgfgZdZedZd Z d!S)"TestHelpBiggerOptionalGroupsr6r#r$r%rrrr'rrrr(r;r)r*rvrmr+rr,z GROUP TITLEzGROUP DESCRIPTIONrDrzBAZ HELPrrzZ HELPrKzN usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz a DESCRIPTION positional arguments: foo FOO HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x X HELP --y Y Y HELP GROUP TITLE: GROUP DESCRIPTION baz BAZ HELP -z Z [Z ...] Z HELP EPILOG r-Nr.r r r r r0 s"       r0c@sZeZdZedddZeddddedd d ed d d ed dd gZgZdZedZdZ dS)TestHelpBiggerPositionalsUSAGEr#r!r9rrr(r;r)r*rvZekiekiekifekangzEKI HELPrr, usage: USAGE a  DESCRIPTION positional arguments: ekiekiekifekang EKI HELP bar BAR HELP optional arguments: -h, --help show this help message and exit -x X HELP --y Y Y HELP rNr.r r r r r1 s     r1c@sbeZdZedddZeddddedd d dgZed d d eddddgfgZdZedZdZ dS)TestHelpReformattingr6ze oddly formatted description that is so long that it should go onto multiple lines when wrappedr=rrzoddly formatted -x helpr@r<rrz normal y helprBz' oddly formatted group descriptionrDrrz` oddly formatted -a help again, so long that it should be wrapped over multiple linesr;2 usage: PROG [-h] [-x XX] [-a] yyy a oddly formatted description that is so long that it should go onto multiple lines when wrapped positional arguments: yyy normal y help optional arguments: -h, --help show this help message and exit -x XX oddly formatted -x help title: oddly formatted group description -a oddly formatted -a help again, so long that it should be wrapped over multiple lines rNr.r r r r r5- s     r5c@s^eZdZedddZeddddedd d dgZed ed d ddgfgZdZedZdZ dS)TestHelpWrappingShortNamesr6zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Dr=rrzxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXr6rrdYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHALPHASrrzPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAr;r7a D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD D positional arguments: yyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH optional arguments: -h, --help show this help message and exit -x XX XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX ALPHAS: -a AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHA rNr.r r r r r8a s    r8c@sxeZdZedddZeddddded d d d ed ddd gZededddd edddd gfgZdZedZdZ dS)TestHelpWrappingLongNamesr2zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Dr3rrrzZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VrrXXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHr6rZyyyyyyyyyyyyyyyyyyyyyyyyyr9r:rZAAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHrZzzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHr4ar D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD D positional arguments: yyyyyyyyyyyyyyyyyyyyyyyyy YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit -x XXXXXXXXXXXXXXXXXXXXXXXXX XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH ALPHAS: -a AAAAAAAAAAAAAAAAAAAAAAAAA AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH zzzzzzzzzzzzzzzzzzzzzzzzz ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH zs V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV V Nr.r r r r r; s     r;c @seZdZeddZeddddeddd ded d d ed d d deddddeddejdedddejdedddejdgZededdddedd d!ded"d"dded#d#ddgfgZd$Z e d%Z d&Z d'S)( TestHelpUsager6rrrr-rKrrrrrvr r)r<rr r rzWhether to foo)r<rrzWhether to barT)r<rrrz--foobarz--barfoorrorrrrrrr$a usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo] [--bar | --no-bar] [-f | --foobar | --no-foobar | --barfoo | --no-barfoo] [-y [Y]] [-z Z Z Z] a b b [c] [d ...] e [e ...] ao positional arguments: a a b b c c optional arguments: -h, --help show this help message and exit -w W [W ...] w -x [X ...] x --foo, --no-foo Whether to foo --bar, --no-bar Whether to bar (default: True) -f, --foobar, --no-foobar, --barfoo, --no-barfoo group: -y [Y] y -z Z Z Z z d d e e rN) rrr r4rfr4r6rjrr!r<rr r r r r= s,           r=c@sleZdZedddZgZededddedddgfed ed d ded d dgfgZd ZedZdZ dS)TestHelpOnlyUserGroupsr6Fr8rZxxxxrrrvrZyyyyr rrz. usage: PROG [-x X] [-y Y] a b zn xxxx: -x X x a a yyyy: b b -y Y y rNr.r r r r r> s       r>c@sNeZdZeddZedddedddeded gZgZd Zed Zd Z d S)TestHelpUsageLongProgrvz- usage: PROG [^^foo] [;b BAR] zq optional arguments: ^^foo foo help ;b BAR, ;;bar BAR bar help rNr.r r r r r`s  r`c@sDeZdZedddZedddedddgZgZd Zed Zd Z d S) TestHelpNoHelpOptionalr6Fr?rr:rvrrWz- usage: PROG [--foo FOO] spam z positional arguments: spam spam help optional arguments: --foo FOO foo help rNr.r r r r ras   rac@s:eZdZeddZededgZgZdZedZdZ dS) TestHelpNoner6rrrr[z positional arguments: spam optional arguments: -h, --help show this help message and exit --foo FOO rNr.r r r r rbs  rbc @sfeZdZeddZedddddedd d d ded d dddedddddgZgZdZedZdZ dS)TestHelpTupleMetavarr6rrr-r)ZW1ZW2)r<rr@rrr)ZX1ZX2rrr)ZY1ZY2ZY3rrr )ZZ1z] usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]] z optional arguments: -h, --help show this help message and exit -w W1 [W2 ...] w -x [X1 [X2 ...]] x -y Y1 Y2 Y3 y -z [Z1] z rNr.r r r r rcs  rcc@s`eZdZedejddZedddedddgZed d d ed d dgfgZdZ e dZ dZ dS)TestHelpRawTextr67Keep the formatting exactly as it is written here r8formatter_classr9rz- foo help should also appear as given herervrrWrB? This text should be indented exactly like it is here rDrr>> usage: PROG [-h] [--foo FOO] [--bar BAR] spam a Keep the formatting exactly as it is written here positional arguments: spam spam help optional arguments: -h, --help show this help message and exit --foo FOO foo help should also appear as given here title: This text should be indented exactly like it is here --bar BAR bar help rN) rrr r4r4RawTextHelpFormatterrfrjrr!r<rr r r r rd#s    rdc@s`eZdZedejddZedddedddgZed d d ed d dgfgZdZ e dZ dZ dS)TestHelpRawDescriptionr6rerfrz4 foo help should not retain this odd formattingrvrrWrBrhrDrr>ria Keep the formatting exactly as it is written here positional arguments: spam spam help optional arguments: -h, --help show this help message and exit --foo FOO foo help should not retain this odd formatting title: This text should be indented exactly like it is here --bar BAR bar help rN) rrr r4r4RawDescriptionHelpFormatterrfrjrr!r<rr r r r rkTs    rkc @s~eZdZedejddZedddeddd d ed d ded ddddgZedddededddgfgZ dZ e dZ dZ dS)TestHelpArgumentDefaultsr6r9rfrz)foo help - oh and by the way, %(default)srvrrr>r;rrWrr Zwoodenz badger helprrBrDrrr)rCrr<zO usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger] a description positional arguments: spam spam help badger badger help (default: wooden) optional arguments: -h, --help show this help message and exit --foo FOO foo help - oh and by the way, None --bar bar help (default: False) title: description --baz BAZ baz help (default: 42) rN) rrr r4r4ArgumentDefaultsHelpFormatterrfrjrrr!r<rr r r r rms     rmc@s>eZdZedddZedddddgZgZd Zed Zd Z d S) TestHelpVersionActionr6r9r=-Vrrz3.6rz& usage: PROG [-h] [-V] z description optional arguments: -h, --help show this help message and exit -V, --version show program's version number and exit rNr.r r r r ros  roc@sPeZdZeddZeddddejdedd d ed d d gZgZd Z e dZ dS)TestHelpVersionActionSuppressr6rrrrr)rrr<rr:rvrrWr[r\N) rrr r4rfr4rrjrr!r<r r r r rqs    rqc@sHeZdZedddZedddddgZd d d DZd Zed ZdZ dS)TestHelpSubparsersOrderingr6display some subcommandsr=rrrr'rcCsg|]}t|dqS)rr4)r=r+r r r r?sz%TestHelpSubparsersOrdering.)rr r rr$6 usage: PROG [-h] [-v] {a,b,c,d,e} ... z display some subcommands positional arguments: {a,b,c,d,e} optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit r-N) rrr r4rfrjrr!r<rr r r r rrs rrc@sLeZdZedddZedddddgZd Zd d eDZd Zed Z dZ dS)"TestHelpSubparsersWithHelpOrderingr6rsr=rrrr'r))rza subcommand help)r zb subcommand help)r zc subcommand help)rzd subcommand help)r$ze subcommand helpcCsg|]\}}t||dqS))r+r<rt)r=r+r<r r r r?sz-TestHelpSubparsersWithHelpOrdering.rua display some subcommands positional arguments: {a,b,c,d,e} a a subcommand help b b subcommand help c c subcommand help d d subcommand help e e subcommand help optional arguments: -h, --help show this help message and exit -v, --version show program's version number and exit r-N) rrr r4rfrjZsubcommand_datarr!r<rr r r r rvsrvc@s\eZdZddZeddejdZededededed e d d gZ gZ d Z e d Z dZdS)TestHelpMetavarTypeFormattercCs|Srr rr r r custom_type#sz(TestHelpMetavarTypeFormatter.custom_typer6r9)r8r9rgrrrHrJz SOME FLOAT)rCr@zF usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int z description positional arguments: int optional arguments: -h, --help show this help message and exit -b custom_type -c SOME FLOAT rN)rrr rxr4r4MetavarTypeHelpFormatterrfrrrjrr!r<rr r r r rw!s    rwc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) TestInvalidArgumentConstructorscOs(t}|jt|jg|Ri|dSr)r4r5rrrhrr5r6rir r r assertTypeErrorEs  z/TestInvalidArgumentConstructors.assertTypeErrorcOs(t}|jt|jg|Ri|dSr)r4r5rrrhr{r r r assertValueErrorJs  z0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd|jddd|jddd|jdiddS) Nr)rrrm)callbackr )Z callback_args)Zcallback_kwargsr|rr r r test_invalid_keyword_argumentsOsz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs"|dD]}|j|dq dS)N)r>r+rrrrr r r test_missing_destinationUsz8TestInvalidArgumentConstructors.test_missing_destinationcCs|d|ddS)NrYz---r}rr r r test_invalid_option_stringsZs z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd|jdttfddS)Nrrr)r}rrrr r r test_invalid_type^sz1TestInvalidArgumentConstructors.test_invalid_typecCs|jddd|jddd|jdddt}|t}|jdddWdn1s`0Y|dt|jdS) Nrrmrrrr+r>z store-truezunknown action) r}r4r5rrrhr7rr8r9r r r test_invalid_actionbs ,z3TestInvalidArgumentConstructors.test_invalid_actioncCsbt}|jdd|t}|jdddWdn1sB0Y|dt|jdS)Nrmrrrz+dest supplied twice for positional argument)r4r5rhrrr7rr8r9r r r test_multiple_destks  ,z2TestInvalidArgumentConstructors.test_multiple_destcCsDdD]:}ttdtddtddfD]}|jd d|i|q$qdS) N)rrr/rIrSrrrabrrr)r)rMrr|)rrattrsr r r test_no_argument_actionsss z8TestInvalidArgumentConstructors.test_no_argument_actionscCs.dD]$}|jdd|d|jdd|dqdS)N)rr/rSrrmr3rrrrrr r r !test_no_argument_no_const_actionszszATestInvalidArgumentConstructors.test_no_argument_no_const_actionscCs\dD]R}|jdd|d|jdd|ddD](}|jdd||d|jdd||dq,qdS) Nrrrrr)rOrrrm)rrrr)rrrr r r #test_more_than_one_argument_actionsszCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCsdD]}|jdd|dqdS)N)rrIrrrrrr r r test_required_const_actionssz;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd|jdddd|jddtjddS)Nr_parsersrr6)rr8)rrg)r|r4r5rr r r "test_parsers_action_missing_paramss zBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddddS)NrmTrrrr r r test_required_positionalsz8TestInvalidArgumentConstructors.test_required_positionalcs`GdddtGfdddt}t}|j|jd|d|j|jd|ddS)Nc@s eZdZdS)zITestInvalidArgumentConstructors.test_user_defined_action..SuccessNrr r r r Successsrcs"eZdZdfdd ZddZdS)zHTestInvalidArgumentConstructors.test_user_defined_action..ActionFcs"|dkr|ur|urdS)Nrr )roption_stringsrrrr(rr r r8szQTestInvalidArgumentConstructors.test_user_defined_action..Action.__init__c_sdSrr r7r r r r%szQTestInvalidArgumentConstructors.test_user_defined_action..Action.__call__N)F)rrr r8r%r rr r r*s r*r)rrrr)rJrr4r5rrh)rr*rir rr test_user_defined_actions  z8TestInvalidArgumentConstructors.test_user_defined_actionN)rrr r|r}rrrrrrrrrrrrrr r r r rzBs  rzc@seZdZddZddZdS)TestActionsReturnedcCsXt}|d}||jd|dd}||jd|dd}||jddS) NrrmrHrrrrr)r4r5rhrrrrirr r r r]s   zTestActionsReturned.test_destc Cst}|jddddtddgddd d }||jd||jd||jd||jt||j ddg||j d||j d||j d dS) Nrr rrrOrrZBARr)rrrrCr r<r@r) r4r5rhrrrrrrCr r<r@rrr r r test_miscs  zTestActionsReturned.test_miscN)rrr r]rr r r r rs rc@s$eZdZddZddZddZdS)TestConflictHandlingcCs|jttjdddS)Nrm)conflict_handler)rrr4r5rr r r test_bad_types z"TestConflictHandling.test_bad_typecCsDt}|d|tj|jd|d|tj|jddS)Nrr)r4r5rhrrr.r r r test_conflict_errors  z(TestConflictHandling.test_conflict_errorcCsztj}|ddd}|jddd|jddd||td|jd d d |jd d d ||td dS)Nr6resolve)r8rrzOLD XrvzNEW Xz usage: PROG [-h] [-x X] optional arguments: -h, --help show this help message and exit -x X NEW X rZOLD_SPAMrBZNEW_SPAMz usage: PROG [-h] [-x X] [--spam NEW_SPAM] optional arguments: -h, --help show this help message and exit -x X NEW X --spam NEW_SPAM )r4r5rhrrmrnro)rrrir r r test_resolve_errors z'TestConflictHandling.test_resolve_errorN)rrr rrrr r r r rs rc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)TestOptionalsHelpVersionActionscCsP|t}||Wdn1s.0Y|||jjdSr)rrIrYrrrmr8rL)rrirr:r r r assertPrintHelpExits ,z3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|t|j|dSr)rrIrYrrir5r r r r5sz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt}|jddddd||d||d|tt|ddS) Nrrrrrrrformat_versionr]rhrrAttributeErrorrTr.r r r test_versions   z,TestOptionalsHelpVersionActions.test_versioncCsftdd}|jddddd|t}|dgWdn1sH0Y|d|jjdS) NZPPPrrrrz %(prog)s 3.5rzPPP 3.5 r]rhrrIrYrr8rLr9r r r test_version_formats   *z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd}|jddddd||d||d |tt|d dS) NFrrrrrrrrr)r]rhr5rrrTr.r r r test_version_no_help$s    z4TestOptionalsHelpVersionActions.test_version_no_helpcCsdtdd}|jdddd|t}|dgWdn1sF0Y|d|jjdS)NrRrrprz %(prog)s 3.7rzXXX 3.7 rr9r r r test_version_action+s   *z3TestOptionalsHelpVersionActions.test_version_actioncCs>tdd}||d||d||d||ddS)NFrrrrr)r]r5r.r r r test_no_help2s     z,TestOptionalsHelpVersionActions.test_no_helpcCsZt}|jddd|jddd||d||d||d|tt|ddS) Nrr<rrrrrr)r]rhrr5rrrTr.r r r test_alternate_help_version9s   z;TestOptionalsHelpVersionActions.test_alternate_help_versioncCst}|jdddd|jddd|dgd }|d d g}|D]J}|D]}d ||f}qN|||d |||d|tt|dqFdS)Nrrrrrrrr)rrrmz-x barzbaz -xz --bad-optionz foo bar bazz %s %%s %srrrr)rriZvalid_prefixesZvalid_suffixesprefixsuffixrr r r !test_help_version_extra_argumentsBs  zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN) rrr rr5rrrrrrrr r r r r s rc@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) TestStringscCs"ttfD]}||||qdSr)rrr)robjZ result_stringfuncr r r assertStringEqualZs zTestStrings.assertStringEqualc Cs6tjgdddddgdddd }d }|||dS) N)rrrHr rrrrOrrZHELPZMETAVARrrrCrrr r<r@zAction(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], help='HELP', metavar='METAVAR'))r4r*r)roptionrr r r test_optional^s zTestStrings.test_optionalc Cs6tjgdtddgdddd}dt}|||dS) Nrr r)rg?rzH HH HzMV MV MVrzAction(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], help='H HH H', metavar='MV MV MV'))r4r*rr)rargumentrr r r test_argumentns zTestStrings.test_argumentcCs"tjddd}d}|||dS)NrrrqzNamespace(foo=42, bar='spam')r4r rrrrr r r test_namespace~szTestStrings.test_namespacecCs(tjfiddi}d}|||dS)N"quotezNamespace(**{'"': 'quote'})rrr r r 'test_namespace_starkwargs_notidentifiersz3TestStrings.test_namespace_starkwargs_notidentifiercCs,tjfddiddi}d}|||dS)NrrOrrz Namespace(a=1, **{'"': 'quote'})rrr r r 2test_namespace_kwargs_and_starkwargs_notidentifiersz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiercCs(tjfiddi}d}|||dS)NZvalidTzNamespace(valid=True)rrr r r $test_namespace_starkwargs_identifiersz0TestStrings.test_namespace_starkwargs_identifiercCs&tjdd}dtj}|||dS)Nr6rzvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r4r5 HelpFormatterr)rrirr r r test_parsers  zTestStrings.test_parserN) rrr rrrrrrrrr r r r rWsrc@s$eZdZddZddZddZdS) TestNamespacecCsFt}|tt|dtjddd}||jd||jddS)Nrrrr)r4r rrrTrrr rr r r test_constructors zTestNamespace.test_constructorcCstjddd}tjddd}tjdd}tjdd}||||||||||||||||||k|||k|||k|||kdS)NrOrr)r r)rrM)r4r rZassertNotEqual assertTrue)rZns1Zns2Zns3Zns4r r r test_equalitys       zTestNamespace.test_equalitycCs6tjddd}||dt||dtdS)NrOrr)r4r ZassertIsrHNotImplemented__ne__rr r r $test_equality_returns_notimplementedsz2TestNamespace.test_equality_returns_notimplementedN)rrr rrrr r r r rsrc@s$eZdZddZddZddZdS) TestEncodingcCsRtj|\}}|d7}t|ddd}|Wdn1sD0YdS)Nz.pyr_zutf-8r)rr"splitextr.r)rr"rwrr r r _test_module_encodingsz"TestEncoding._test_module_encodingcCs|tjdSr)rr4__file__rr r r test_argparse_module_encodingsz*TestEncoding.test_argparse_module_encodingcCs|tdSr)rrrr r r "test_test_argparse_module_encodingsz/TestEncoding.test_test_argparse_module_encodingN)rrr rrrr r r r rsrc@seZdZddZdS)TestArgumentErrorcCs$d}td|}|t||dS)Nz my error here)r4rrr)rrrbr r r test_argument_errors z%TestArgumentError.test_argument_errorN)rrr rr r r r rsrc@seZdZddZdS)TestArgumentTypeErrorcCsldd}tddd}|jd|d|t}|dgWdn1sN0Y|d |jjdS) NcSstddS)Nspam!)r4ArgumentTypeErrorrr r r rsz.spamr6Fr?rrrRz-usage: PROG x PROG: error: argument x: spam! )r]rhrrIrYrr8rM)rrrir:r r r test_argument_type_errors  *z.TestArgumentTypeError.test_argument_type_errorN)rrr rr r r r rsrc@s$eZdZddZddZddZdS)TestMessageContentErrorcCsltddd}|jdtd|jdtdd|jd td d |t}|gWdn1sd0Yt|j}||d||d ||d |t}|d gWdn1s0Yt|j}| |d||d ||d |t}|d dgWdn1s00Yt|j}| |d| |d ||d dS)Nr6rrTreq_posr-req_optTr'Zneed_oner)rCrreq_optZ myXargumentz -req_opt=1) r]rhrrrrIrYr8 assertRegexr rrir:rr r r %test_missing_argument_name_in_messages,  (     *     .   z=TestMessageContentError.test_missing_argument_name_in_messagecCstddd}|jdtd|jdtdd|jd td dd |t}|gWdn1sf0Yt|j}| |d| |d | |d |t}|dgWdn1s0Yt|j}| |d| |d | |d dS)Nr6rrTrrz --req_optTr'z --opt_optr )rCrrrZopt_optz --req_opt=1) r]rhrrboolrrIrYr8rr rr r r %test_optional_optional_not_in_message s$   (     *   z=TestMessageContentError.test_optional_optional_not_in_messagecCstddd}|d|jdddd|t}|gWdn1sP0Yt|j}||d||ddS) Nr6rrTrZoptional_positionalr r r) r]rhrrIrYrr8rr rr r r 'test_optional_positional_not_in_message s   (  z?TestMessageContentError.test_optional_positional_not_in_messageN)rrr rrrr r r r rsrc@seZdZddZdS)TestTypeFunctionCallOnlyOncecsHfdd}t}|jd|dd|d}tdd|dS) Ncs|ddS)Nr foo_convertedr)Zstring_to_convertrr r r2s zLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once..spamrrrz --foo spam!rr)r4r5rhrYrrr:rrrir5r rr !test_type_function_call_only_once1s  z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrr rr r r r r/src@s,eZdZddZddZddZddZd S) TestTypeFunctionCalledOnDefaultcsDfdd}t}|jd|dd|g}tdd|dS)Ncs|ddS)NrrrZint_to_convertrr r rBs z]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default..spamrrrrr4r5rhrYrr:rr rr /test_type_function_call_with_non_string_defaultAs   zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcCs@dd}t}|jd|dd|g}|tdd|dS)NcSsdS)Nrr rr r r rMszYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default..spamr0rrrrrr r r +test_type_function_call_with_string_defaultLs  zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCs@dd}t}|jd|dd|g}|tdd|dS)NcSs|dS)Nrr )Zstr_to_convertr r r r0WszYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default..extend--testrrz**)rr)rr0rir5r r r )test_no_double_type_conversion_of_defaultVs  zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8t}|jddtgdd|g}||jgdS)Nrrr>)rrCrr)r4r5rhrrYrrrr r r test_issue_15906bs   z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrr rrrrr r r r r?s   rc@s<eZdZddZddZddZddZd d Zd d Zd S)TestParseKnownArgscCst}|ddS)Nr r4r5rYr.r r r test_arguments_tuplersz'TestParseKnownArgs.test_arguments_tuplecCst}|gdSrrr.r r r test_arguments_listvsz&TestParseKnownArgs.test_arguments_listcCs t}|d|ddS)Nrrr4r5rhrYr.r r r test_arguments_tuple_positionalzs z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"t}|d|dgdS)Nrrr.r r r test_arguments_list_positionals z1TestParseKnownArgs.test_arguments_list_positionalcCsJt}|d|d\}}|tdd||ddg|dS)Nrz--foo F --bar --bazFrrr)r4r5rhr[rrr:)rrir5extrasr r r test_optionalss  z!TestParseKnownArgs.test_optionalscCsrt}|jdddtd|jddd|dgd }||\}}|td d d d ||gd|dS)Nrr rO)rrrCrr/rr)rrrrrZrrTr)vrr)rrr)r4r5rhrr[rr:)rrirur5rr r r test_mixeds zTestParseKnownArgs.test_mixedN) rrr rrrrrrr r r r rps rc@s,eZdZddZddZddZddZd S) TestIntermixedArgscCstjdd}|jddd|jdddd }|d |jd d td d}||}|tdd dgdd|||\}}|tdd dgd||gd|d}| |\}}|tdd ddgd||gd|| |j ||j ddS)Nr6rrrmrrrTrdcmdrestr)rrCzcmd --foo x 1 --bar y 2 3rrr)rrrmrrorrZz!cmd --foo x 1 --error 2 --bar y 3rO)z--errorrrZ) r4r5rhrrparse_intermixed_argsrr:r[parse_known_intermixed_argsrgr!r()rrirrur5rr r r test_basics"    zTestIntermixedArgs.test_basiccCs~tdd}|d|d|jdddd}|t}||Wdn1s^0Y|t|jd dS) Nr6rrrrrrrz\.\.\.) r]rhrrrrrrr8)rrirur:r r r test_remainders    (z!TestIntermixedArgs.test_remaindercCstdd}|jdd}|jdddd|jd d d |jd d ddd|d}|tddgddd||t|jd||j ddS)Nr6rTrrrrr;rrrvrrrrrz 1 --foo 2ror)rrmrrn) r]rrhrrrr:rrIr()rriror5r r r test_exclusives  z!TestIntermixedArgs.test_exclusivecCshtdd}|jdd}|jdddd|jd d d |jd d ddd|t|jg||jddS)Nr6rTrrrrr;rrrvrrrrr)r]rrhrrrrr(rr r r test_exclusive_incompatibles  z.TestIntermixedArgs.test_exclusive_incompatibleN)rrr rrrrr r r r rs  rc@seZdZddZdS)!TestIntermixedMessageContentErrorcCstddd}|jdtd|jdtdd|t}|gWdn1sT0Yt|j}||d||d |t}| gWdn1s0Yt|j}| |d||d dS) Nr6rrTrrrTr'r) r]rhrrrrIrYr8rrZassertNotRegexrr r r rs  (    (  zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageN)rrr rr r r r rsrc@seZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`S)aTestAddArgumentMetavarz,length of metavar tuple does not match nargscCst}|jd||ddS)Nrrr@)r4r5rh)rrr@rir r r do_test_no_exceptionsz+TestAddArgumentMetavar.do_test_no_exceptioncCs\t}|t }|jd||dWdn1s80Y||jjd|jdS)Nrrr) r4r5rrrhrr8r5EXPECTED_MESSAGE)rrr@rir:r r r do_test_exceptions .z(TestAddArgumentMetavar.do_test_exceptioncCs|jddddS)Nrorrrr r r test_nargs_None_metavar_stringsz5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdtddS)Nrr tuplerr r r test_nargs_None_metavar_length0sz6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCs|jddddS)Nrorr rr r r test_nargs_None_metavar_length1sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jddddS)Nrorrr rr r r test_nargs_None_metavar_length2 sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jddddS)Nrrrrr r r test_nargs_None_metavar_length3 sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jddddS)Nr rorr rr r r "test_nargs_optional_metavar_stringsz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcCs|jdtddS)Nr rr rr r r #test_nargs_optional_metavar_length0sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCs|jddddS)Nr rrr rr r r #test_nargs_optional_metavar_length1sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jddddS)Nr rrrrr r r #test_nargs_optional_metavar_length2sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jddddS)Nr rrrrr r r #test_nargs_optional_metavar_length3sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jddddS)Nrrorr rr r r $test_nargs_zeroormore_metavar_string#sz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCs|jdtddS)Nrrr rr r r %test_nargs_zeroormore_metavar_length0&szr r r r rs`rc@s4eZdZdZdZddZddZddZd d Zd S) TestInvalidNargszinvalid nargs valueznargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatecCsZt}|t}|jd|dWdn1s60Y||jjd|jdSNrrr) r4r5rrrhrr8r5EXPECTED_RANGE_MESSAGErrrir:r r r do_test_range_exceptions ,z(TestInvalidNargs.do_test_range_exceptioncCsZt}|t}|jd|dWdn1s60Y||jjd|jdSr@) r4r5rrrhrr8r5EXPECTED_INVALID_MESSAGErBr r r do_test_invalid_exceptions ,z*TestInvalidNargs.do_test_invalid_exceptioncCs|jdd|jdddS)NrrZabcd)rErr r r test_nargs_alphabetics z&TestInvalidNargs.test_nargs_alphabeticcCs|jdddS)Nrr)rCrr r r test_nargs_zerosz TestInvalidNargs.test_nargs_zeroN) rrr rDrArCrErFrGr r r r r?s r?c@seZdZddZddZdS)TestImportStarcCs tjD]}|tt|qdSr)r4__all__rrrr r r rs zTestImportStar.testcCs0ddttD}|t|ttjdS)NcSs0g|](\}}|ds|dkst|s|qS)rwngettext) startswithinspectZismodule)r=r+rr r r r?s zJTestImportStar.test_all_exports_everything_but_modules..)rEr4rBrrArI)rrBr r r 'test_all_exports_everything_but_moduless z6TestImportStar.test_all_exports_everything_but_modulesN)rrr rrMr r r r rHsrHcs$eZdZfddZddZZS)TestWrappingMetavarcs,ttd|_d}|jjd|ddS)NZ9this_is_spammy_prog_with_a_long_name_sorry_about_the_namezz--proxyrB)r^rr]rirh)rr@r_r r rs  zTestWrappingMetavar.setUpcCs |j}||tddS)Na( usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name [-h] [--proxy ] optional arguments: -h, --help show this help message and exit --proxy )rirmrrnro)r help_textr r r test_help_with_metavars z*TestWrappingMetavar.test_help_with_metavar)rrr rrPrcr r r_r rNs rNc@s$eZdZddZddZddZdS)TestExitOnErrorcCs$tjdd|_|jjddtddS)NF) exit_on_errorz --integersN)r@rC)r4r5rirhrrr r r rszTestExitOnError.setUpcCs(|jd}||tjdddS)Nz --integers 4r#)Zintegers)rirYrrr4r rr r r !test_exit_on_error_with_good_argssz1TestExitOnError.test_exit_on_error_with_good_argscCs@|tj |jdWdn1s20YdS)Nz --integers a)rr4rrirYrrr r r test_exit_on_error_with_bad_argssz0TestExitOnError.test_exit_on_error_with_bad_argsN)rrr rrTrUr r r r rQsrQcCsttit_tt_dSr)rZ run_unittestrrrrrr r r r test_mains rV__main__)rLrr&r$rRrnrZunittestr4iorrrrrr rrr4r:rJrIr\r5r]rCrdrrerrrrrrrrrrrrrrrrrrrr rrrr&r*r,r.r0r1r<r=rErGrQrRrTrVr[r]rarbrerfrhrirjrkrlrmrprrrsrvrwryr{r|r}r~rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrZ eq_stderrrrrrrZskipIfrrrrrrr r rrrr+r/r3rrrrrrrrrrrrrrrrrrrrrrrrr rrr"r/r0r1r5r8r;r=r>r@rCrGrLrMrNrOrPrQrSrUrVrXrZr]r_r`rarbrcrdrkrmrorqrrrvrwrzrrrrrrrrrrrrrrrr?rHrNrQrVrr r r r s     !q                                            ""C i'4&0#+!$-*(), ^R$7/4(66$&"$. 10(+!~-LG% =1*?)