python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_argparse.cpython-312.pyc

͑eddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZGddej"ZGddej&ZGdd	ej&Zej*Gd
deZGdd
eZGddeZGddeZdZGddej:ZGddeZ efZ!e de!iZ"Gdde"Z#Gdde"Z$Gdde"Z%Gdde"Z&Gd d!e"Z'Gd"d#e"Z(Gd$d%e"Z)Gd&d'e"Z*Gd(d)e"Z+Gd*d+e"Z,Gd,d-e"Z-Gd.d/e"Z.Gd0d1e"Z/Gd2d3e"Z0Gd4d5e"Z1Gd6d7e"Z2Gd8d9e"Z3Gd:d;e"Z4Gd<d=e"Z5Gd>d?e"Z6Gd@dAe"Z7GdBdCe"Z8GdDdEe"Z9GdFdGe"Z:GdHdIe"Z;GdJdKe"Z<GdLdMe"Z=GdNdOe"Z>GdPdQe"Z?GdRdSe"Z@GdTdUe"ZAGdVdWe"ZBGdXdYe"ZCGdZd[e"ZDGd\d]e"ZEGd^d_e"ZFGd`dae"ZGGdbdce"ZHGdddee"ZIGdfdge"ZJGdhdie"ZKGdjdke"ZLGdldme"ZMGdndoe"ZNGdpdqe"ZOGdrdse"ZPGdtdue"ZQGdvdwe"ZRGdxdye"ZSGdzd{e"ZTGd|d}e"ZUGd~de"ZVGdde"ZWGdde"ZXGdde"ZYGdde"ZZGdde"Z[Gdde"Z\Gdde"Z]Gdde"Z^Gdde"Z_Gdde"Z`Gdde"ZaGdde"ZbGdde"ZcGdde"ZdGdde"ZeGdde"ZfGdde"ZgGdde"ZhGdde"ZiGdde"ZjGdde"ZkGdde"ZlGdde"ZmGdde"ZnGdde"ZoGdde"ZpGdde"ZqGdde"ZrGdde"ZsGdde"ZtGdde"ZuGdde"ZvGddee"ZwGd„dee"ZxGdĄdeZyeZzeZ{GdƄdǫZ|e|dȫZ}e|dɫZ~e|dʫZe|d˫Ze|d̫Ze|dͫZGd΄deZGdЄdee"ZGd҄dee"ZGdԄdee"ZGdքdeZejGd؄dee"ZejGdڄdee"ZejGd܄dee"ZejGdބdeZGddeZGddeZGdde"ZGdde"ZGdde"ZGddeZGdde"ZGddeZGdde"ZGddeZGddeZGddeZGddeZGddeZGddeeZGddeeZGddeeZGddeeZGddeeZGddeeZGdd	eeZGd
deeZGdd
eeZGddeZGddeeZGddeeZGddeeZGddeeZGddeeZGddeeZGddeeZGddeeZGd d!eZGd"d#eZGd$d%eZGd&d'eZefZ!ed(e!iZGd)d*eZGd+d,eZGd-d.eZGd/d0eZGd1d2eZGd3d4eZGd5d6eZGd7d8eZGd9d:eZGd;d<eZGd=d>eZGd?d@eZGdAdBeZGdCdDeZGdEdFeZGdGdHeZGdIdJeZGdKdLeZGdMdNeZGdOdPeZGdQdReZGdSdTeZGdUdVeZGdWdXeZGdYdZeZGd[d\eZGd]d^eZGd_d`eZGdadbeZGdcddeZGdedfeZGdgdheZGdidjeZGdkdleZGdmdneZGdodpeZGdqdreZGdsdteZGdudveZGdwdxeZGdydzeZGd{d|eZGd}d~eZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZGddeZdZedk(rejyy(N)	os_helper)mockc*eZdZdZdfd	ZdZxZS)StdIOBufferzReplacement for writable io.StringIO that behaves more like real file

    Unlike StringIO, provides a buffer attribute that holds the underlying
    binary data, allowing it to replace sys.stdout/sys.stderr in more
    contexts.
    c|jd}t|	tjtj
|d|y)Nutf-8)newline)encodesuper__init__ioBufferedWriterBytesIO)self
initial_valuer		__class__s   F/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_argparse.pyrzStdIOBuffer.__init__s@%,,W5

**2::m+DE '		3c|j|jjjj	dS)Nr)flushbufferrawgetvaluedecoders rrzStdIOBuffer.getvalue#s-

{{'')0099r)
)__name__
__module____qualname____doc__rr
__classcell__rs@rrrs3
:rrceZdZdZdZy)
StdStreamTestctj}tjd5t	j
d5|j
ddddddddy#1swYxYw#1swYyxYw)Nargparse._sys.exitrfoo)statusmessage)argparseArgumentParser
contextlibredirect_stderrrpatchexitrparsers  rtest_skip_invalid_stderrz&StdStreamTest.test_skip_invalid_stderr*sg((*&&t,	1JJ+,	1
KKq%K0		1	1	1	1	1	1s#A1A%A1%A.	*A11A:c|tj}|j|jt	j
|jdgfD]}|j|5tjd5t5}tj|5tjd5||j|jddddddddddddddddy#1swY,xYw#1swY0xYw#1swY4xYw#1swY8xYw#1swYxYw)N-h)funcr'zusage:)r+r,print_usage
print_help	functoolspartial
parse_argssubTestr-redirect_stdoutrr.rr/assertRegexr)rr2r6
mocked_stderrs    rtest_skip_invalid_stdoutz&StdStreamTest.test_skip_invalid_stdout2s7((*f//$8
	FD$'	
F**40	
F
		
F"/**=9	
F

/0
	
F  !7!7!99E	
F	
F	
F	
F	
F	
F	F
	
F	
F	
F	
F	
F	
F	
F	
F	
F	
Fsl"D28D&D	D/(D
DD	'D&/D2DDDD	D#
D&&D/+D22D;	N)rrr r3r@rrr%r%(s
1Frr%ceZdZdZy)TestCasecT|jtj}d|d<y)N80COLUMNS)enterContextrEnvironmentVarGuardrenvs  rsetUpzTestCase.setUpGs&	 = = ?@IrN)rrr rKrArrrCrCEsrrCc$eZdZdZdZdZdZy)TempDirMixinctj|_tj|_tj|jyN)tempfilemkdtemptemp_dirosgetcwdold_dirchdirrs rrKzTempDirMixin.setUpRs/ ((*
yy{
rc|tj|jtj|jdD]Y\}}}|D]N}tj
tjj|j|tjP[tj|jdy)NF)topdownT)rSrVrUwalkrRchmodpathjoinstatS_IWRITEshutilrmtree)rrootdirsfilesnames     rtearDownzTempDirMixin.tearDownWs
!#!F	KD$
KdmmT:DMMJ
K	K	

dmmT*rctjj|j|}t	|dd5}|j|ddd|S#1swY|SxYw)Nwrencoding)rSr[r\rRopenwrite)rfilename	file_pathfiles    rcreate_writable_filez!TempDirMixin.create_writable_file^sPGGLL9	
)S7
3	!tJJx 	!	!sAAcjtj|j|tjyrO)rSrZror]S_IREAD)rrls  rcreate_readonly_filez!TempDirMixin.create_readonly_fileds
**84dllCrN)rrr rKrerorrrArrrMrMOs 
+DrrMceZdZdZy)Sigc ||_||_yrO)argskwargsrrvrws   rrzSig.__init__is	rNrrr rrArrrtrtgsrrtceZdZdZdZdZy)NSc:|jj|yrO)__dict__update)rrws  rrzNS.__init__ps

V$rct|jj}dj|Dcgc]}d|z	c}}t	|j
d|dScc}w)Nz, z%s=%r())sortedr}itemsr\typer)rsorted_itemstup	kwarg_strs    r__repr__zNS.__repr__ssQdmm1134IIEw}EF	:..	::FsA!c0t|t|k(SrO)varsrothers  r__eq__z	NS.__eq__xsDzT%[((rN)rrr rrrrArrr{r{ns%;
)rr{ceZdZddZy)ArgumentParserErrorNcltj||||||_||_||_||_yrO)	Exceptionrr*stdoutstderr
error_code)rr*rrrs     rrzArgumentParserError.__init__~s24&&9$r)NNNryrArrrr|s%rrc
ttjtsttjtr||i|Stj}tj}tt_tt_		||i|}tt
|D]}t||}|tjurt|||/|tjjurt||t|dth|tjurt||||tjjust||t|dt||t_|t_S#t$r\}|j}	tjj}
tjj}td|
||	dd}~wwxYw#|t_|t_wxYw)Nr
SystemExit)
isinstancesysrrrlistrgetattrsetattrrBIN_STDOUT_SENTINELBIN_STDERR_SENTINELrcoderr)r;rvrw
old_stdout
old_stderrresultkeyattrerrrs            rstderr_to_parser_errorrs#**k*j[.Q4*6**JJCJCJ 	>00FDL)	
]vs+3::%FC4SZZ...FCXGZ)[\SZZ'FC4SZZ...FCXGZ)[\	
] 

	>66DZZ((*FZZ((*F%ffd49=
>		> 

s,
CFF	G)
AG$$G))G,,Hc2eZdZfdZfdZfdZxZS)ErrorRaisingArgumentParserc>tt|
}t|g|i|SrO)rrr;r)rrvrwr;rs    rr;z%ErrorRaisingArgumentParser.parse_argss%5tG
%jB4B6BBrc>tt|
}t|g|i|SrO)rrr0r)rrvrwr0rs    rr0zErrorRaisingArgumentParser.exits%/;%d<T<V<<rc>tt|
}t|g|i|SrO)rrerrorr)rrvrwrrs    rrz ErrorRaisingArgumentParser.errors%0$=%e=d=f==r)rrr r;r0rr"r#s@rrrsC=>>rrceZdZdZdZy)ParserTesterMetaclassa}Adds parser tests using the class attributes.

    Classes of this type should specify the following attributes:

    argument_signatures -- a list of Sig objects which specify
        the signatures of Argument objects to be created
    failures -- a list of args lists that should cause the parser
        to fail
    successes -- a list of (initial_args, options, remaining_args) tuples
        where initial_args specifies the string args to be parsed,
        options is a dict that should match the vars() of the options
        parsed out of initial_args, and remaining_args should be any
        remaining unparsed arguments
    c|dk(ryt|dst|_t|dst|_d}d}d}d}d}Gd	d
t
}	|||fD]}
||fD]}|	||
|y)NParserTestCaseparser_signatureparser_classc^|D](}|j|ji|j*y)z(Add all arguments directly to the parserN)add_argumentrvrw)r2argument_signaturessigs   r	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groupss.*
=###SXX<<
=rc|jd}|D](}|j|ji|j*y)z4Add all arguments under a single group in the parserr(N)add_argument_grouprrvrw)r2rgrouprs    r	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_groups>--e4E*
<"""CHH;

;
<rct|D]?\}}|jd|z}|j|ji|jAy)z0Add each argument in its own group to the parserzfoo:%iN)	enumeraterrrvrw)r2rirrs     rmany_groupsz3ParserTesterMetaclass.__init__.<locals>.many_groupssL#$78
<311(Q,?"""CHH;

;
<rc$|j|S)z#Parse the args by passing in a list)r;)r2rvs  rlistargsz0ParserTesterMetaclass.__init__.<locals>.listargss$$T**rctj}|dg|zt_	|j|t_S#|t_wxYw)z(Parse the args by defaulting to sys.argvr)rargvr;)r2rvold_sys_argvs   rsysargsz/ParserTesterMetaclass.__init__.<locals>.sysargss>88L$Q(4/CH
(((*'<s	?
Ac$eZdZdZdZdZdZy)0ParserTesterMetaclass.__init__.<locals>.AddTestscH||_||_|jj}|jj}|j|jfD]>}|j}|||f}dj|}	|fd}
	|	|
_t||	|
@y#t$rYwxYw)N_c||yrOrAr	test_funcs  rwrapperzJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper	!$r)_add_arguments_parse_argsr
test_failurestest_successesr\	TypeErrorr)r
tester_cls
add_argumentsr;add_arguments_nameparse_args_namer	func_namenames	test_namers           rrz9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__s&3##- %)%8%8%A%A""&"2"2";";"&"4"4d6I6I!J<I ) 2 2I%'9?JE #I09(+4(J	7;<%s>B	B! B!c|jj}|jj}|j|i|}|j	||j
|SrO)rrvrwrrr)rtesterrvrwr2s     r_get_parserz<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parsersV..330077,,,d=f=##FF,F,FG
rc|j|}|jD]C}|j}|jt|5|j|dddEy#1swYPxYw)N)msg)rfailuressplitassertRaisesrr;)rrr2args_strrvs     rrz>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failuressm))&1 &0H#>>+D,,-@d,K0))$/00000sA%%A.	c|j|}|jD]I\}}t|tr|j	}|j||}|j
||KyrO)r	successesrstrrrassertEqual)rrr2rvexpected_ns	result_nss      rrz?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successessc))&1)/)9)9?%D+!$,#zz| $ 0 0 >I&&{I>	?rN)rrr rrrrrArrAddTestsrs
<&

0
?rr)hasattrrtrrrobject)clsrdbasesbodydictrrrrrrrr;s            rrzParserTesterMetaclass.__init__s##s./#&5C sN+9C
	=
	<	<	+	()	?v)	?Z(K@	9M'1
9
mZ8
9	9rN)rrr r!rrArrrrs

_9rrrceZdZdZedgZgdZdedfdedfd	edfd
edfdedfgZy)
TestOptionalsSingleDash1Test an Optional with a single-dash option string-x)ra--foo-x --fooz-x -yrNx-x ar-xaz-x -1-1z-x-1	rrr r!rtrrr{rrArrrr3sY;t9+8H	R$Z	c	S		"t*	dIrrcteZdZdZeddeddded	gZgd
Zdedd
d
fdedd
d
fdedd
dfdedd
dfdedd
dfdedd
dfdedd
dfdedd
dfdeddd
fdeddd
fdedddfdedddfgZy
)TestOptionalsSingleDashCombinedrr
store_trueactionz-yyystore_const*rconst-z)rrrrz-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=rFN)ryyyzT-zar-z az-xzaz-xz az-x -zaz-x -z a-yz-x -yyy -zaz-x -yyy -z arrArrrrAs	;	D&F=3D	
CH
R%TT
*+	
rDdd+,	U,-	e-.	d,-	"t-.	2$#./	B43/0	
rErT*+	et,-	TrS12	dc23
IrrceZdZdZedgZgdZdedfdedfd	ed
fdedfdedfgZy)
TestOptionalsSingleDashLongzATest an Optional with a multi-character single-dash option string-foo)r
rrz
-foo --fooz-foo -y-fooarNr(z-foo arz-foo -1rz-fo a-f arrArrrr[sYKv;-GH	RD\	2#;	B4L!	"+	IrrceZdZdZedededgZgdZdedddfd	ed
ddfded
ddfded
ddfdedddfdedd
dfdeddd
fgZy)&TestOptionalsSingleDashSubsetAmbiguousz=Test Optionals where option strings are subsets of each other-f-foobar-foorab)rr
-fo-foo bz-foobz-foobaz-foorarN)ffoobarfoorabrr-fa-foaoarooa	-foobar a	-foorab arrArrrrisGt9c)nc)nEKH	R$tD
12	c$t45	Sd34	d456	"uT$78	b4D9:	b4S9:IrrceZdZdZededgZgdZdeddfded	dfd
edd	fded	dfdedd	fd
ed	dfdedd	fgZy) TestOptionalsSingleDashAmbiguousz7Test Optionals that partially match but are not subsetsrr)rrrrr
rrrN)rrz-foob arz-foor az-fooba az-foora arr rrArrr"r"ysAy>3y>:EH	RtD
)*	Bc$/0	Bd3/0	Rs401	RtC01	bD12	bS12Irr"ceZdZdZeddgZgdZdedfd	ed
fded
fded
fgZy)TestOptionalsNumericz(Test an Optional with a short opt stringronedest)rrz-1 --fooz-1 -yz-1 -1z-1 -2rN)r%z-1 arz-1az-1-2-2rrArrr$r$sQ2t%01AH	RD\		s		Irr$ceZdZdZedgZgdZdedfdedfd	edfd
edfdedfgZy)
TestOptionalsDoubleDashz1Test an Optional with a double-dash option stringr)rrrrz--foo -xz--foo --barrNrz--foo arz--foo=az
--foo -2.5z-2.5z
--foo=-2.5rrArrr*r*sY;w<.FH	RD\	B3K 	B3K 	rf~&	rf~&Irr*c
eZdZdZeddedgZgdZdedd	
fdedd
fd
edd	
fdedd	
fdedd	
fdedd	
fgZy	)#TestOptionalsDoubleDashPartialMatchz7Tests partial matching with a double-dash option string--badgerrrz--bat)--bar--b--ba--b=2z--ba=4	--badge 5rFN)badgerbatz--bat XX--badT--badg--badgerrArrr,r,sA	J|,GHH	Ru$
'(	Be-.	"Dd+,	2Tt,-	Bd-.	Rt./
Irr,ceZdZdZeddedgZgdZdedd	
fdedd
fd
edd
fdedd	
fdedd	
fdedd	
fdedd	
fgZy	)"TestOptionalsDoubleDashPrefixMatchz?Tests when one double-dash option string is a prefix of anotherr-rrr0)r.r/r0r1r2rFN)r3baz--ba Xr5z--ba=Xr6Tr7r8rrArrr:r:sI	J|,F>H	Ru
&'	2Us+,	2Us+,	"DT*+	2Td+,	Bdt,-	Rt-.Irr:ceZdZdZeddededdd	gZgd
Zdedd
d
fdedd
d
fdeddd
fdeddd
fdedd
dfdedd
dfgZy
)TestOptionalsSingleDoubleDashz<Test an Optional with single- and double-dash option stringsrrrr.-bazrrr)r.-fbarz-fbazz-bazf-b BBrFNrbarbazTz--ba BrAz
-f --bar Bz-f -bz-ba -frrArrr=r=sF	D&GF=3
AH	R%Tt
,-	
rDd-.	23D12	rDct45	"t2./	2$B/0
Irr=ceZdZdZeddZeddeded	d
dgZgd
ZdedddfdedddfdedddfdedddfdedddfdedddfgZ	y)!TestOptionalsAlternatePrefixCharsz9Test an Optional with option strings with custom prefixes+:/Fprefix_charsadd_help+frr::bar/bazrrr)r.r?r@rAr--bar Br>r5--helpz+hz::helpz/helprNrBT::ba BrA
+f ::bar B+f /b/ba +f
rrr r!rtrrrr{rrArrrFrFsC>D&GF=3
qH	R%Tt
,-	
rDd-.	23D12	rDct45	"t2./	2$B/0
IrrFceZdZdZeddZeddeded	d
dgZgd
ZdedddfdedddfdedddfdedddfdedddfdedddfgZ	y)*TestOptionalsAlternatePrefixCharsAddedHelpzWhen ``-`` not in prefix_chars, default operators created for help
       should use the prefix_chars in use rather than - or --
       http://bugs.python.org/issue9444rGTrHrKrrrLrMrrr)r.r?r@rArrNr>rFNrBrPrArQrRrSrTrArrrVrVs+=D&GF=3
HH	R%Tt
,-	
rDd-.	23D12	rDct45	"t2./	2$B/0
IrrVc	eZdZdZeddZeddedded	dgZgd
Zdedddfded
ddfded
d
dfded
d
d
fgZ	y)2TestOptionalsAlternatePrefixCharsMultipleShortArgsz@Verify that Optionals must be called with their defined prefixesz+-FrHrrrz+yz+z)-wz-xyzz+xr
z+xyzrryrTz+y -xz+yz -xNrTrArrrXrXsJu=D&D&D&
H
R%5E
*+	
rDEU+,	"ttu-.	2-.	IrrXceZdZdZedddddgZgdZd	ed
fdedfdedfdedfdedfgZy
)TestOptionalsShortLongz<Test a combination of single- and double-dash option strings-vz	--verbosez-nz--noisyrr)z
--x --verbosez-Nrz-v xrF)verboseTNrrArrr]r]snF	D+tY|D4H	R
	
r$ 	b&'	
r$ 	Bt$%Irr]ceZdZdZededdgZdgZdedd	
fded	d
fd
edd
fdedd
fgZy	)TestOptionalsDestz*Tests various means of setting destinationz	--foo-bar--bazzabbazr&rz--foo-bar frN)foo_barrcz--baz ggz--foo-bar h --baz ihrz--baz j --foo-bar kkjrrArrrara-sf4{+Sx-HIuH	3t45	BtC01	3s ;<	3s ;<	IrraceZdZdZededdgZdgZdedd	fd
edd	fdedd
	fgZy)TestOptionalsDefaultz*Tests specifying a default for an Optionalrr
rdefaultrrNrr[z-xxrz-yyr[rrArrrjrj:sU4t9c$&;<uH	R$"
	SB 	TS!"IrrjcVeZdZdZedgZddgZdedfdedfgZy)TestOptionalsNargsDefaultz7Tests not specifying the number of args for an OptionalrrrNrrrrArrroroFs9At9+T{H	R$Z	cIrroc\eZdZdZeddgZddgZdedfd	edgfgZy)
TestOptionalsNargs1z&Tests specifying 1 arg for an OptionalrnargsrrNrrrrArrrqrqQs?0t1-.T{H	R$Z	seIrrqc^eZdZdZeddgZgdZdedfd	egd
fgZy)TestOptionalsNargs3z'Tests specifying 3 args for an Optionalrrs)rrr-x a ba -xa -x brNrz-x a b crbcrrArrrvrv\s:1t1-.>H	R$Z	R/*+IrrvcZeZdZdZeddedddeddd	
eddedd
gZdgZdeddd	dfdeddd	dfdeddd	dfdeddd	dfdeddd	dfdeddddfdeddddfdeddd	dfdeddd	dfg	Z	y)TestOptionalsNargsOptionalz0Tests specifying an Optional arg for an OptionalrY?rsrr)rtrr
spamrtrlr4284)rtrrrl2rNTrgrr[rz-w 2z-x 2z-y 2z-z 2
rrr r!rtintrrr{rrArrrrgs:	DD2&DV,D#T4@	uH	R$$&B
/0	
rDDFb12	cTVr23	
rDB&B/0	dcVr23	
rDDDB/0	ddcR01	
rDDFb12	ddf23
IrrceZdZdZeddedddgZdgZd	ed
dfdegdfdedgdfd
eddgdfded
gfded
dgfded
ddgfgZy
)TestOptionalsNargsZeroOrMore?Tests specifying args for an Optional that accepts zero or morer*rsr
rrrrNrmrrxr|-y a-y a brrArrrr~sI	DDV,uH	R$&
!"	
rB&!"	sev&'	2c
f-.	
rDB 	dse$%	2c
+,Irrc
eZdZdZeddedddgZgdZd	ed
dfded
gdfded
dgdfded
d
gfded
d
dgfgZy
)TestOptionalsNargsOneOrMorez>Tests specifying args for an Optional that accepts one or morer+rsr
rr)rrr
ryza -y brNrmrrrxr|rrrrArrrrsH	DDV,3H	R$&
!"	sev&'	2c
f-.	dse$%	2c
+,Irrc
eZdZdZeddedeedgZgdZd	e	d
d
fde	d
d
fde	dd
fde	d
dfde	d
dfde	ddfgZ
y
)TestOptionalsChoicesz,Tests specifying the choices for an Optionalrabcchoicesz-grr)rz-f dz-fadz-gaz-g 6rN)rrerrz-f cr}z-g 0rz-g 03rwz-fb -g4r|rrr r!rtrrangerrr{rrArrrrs6	D% DsE!H-/4H	R$$
 	cT"#	cT"#	da!	"tq/"	BN#
Irrc\eZdZdZededgZddgZded	fd
ed	fgZ	y)
TestOptionalsRequiredz)Tests an optional action that is requiredrTrrequiredrr-x 1rrrz-x42rNrrArrrrsE3	DsT*RyH	a	bIrrcZeZdZdZeddgZddgZded	fd
ed	fgZy)TestOptionalsActionStorez&Tests the store action for an OptionalrstorerrryrNrz-xfoor(rrArrrrs=0tG45V}H	R$Z	"u+IrrcZeZdZdZeddegZdgZdedfdeefgZ	y)	TestOptionalsActionStoreConstz,Tests the store_const action for an Optionalr
rrrrNr[)
rrr r!rtrrrr{rrArrrrs=6tMHIuH	R$Z	
rF|IrrcZeZdZdZeddgZgdZdedfded	fgZy
)TestOptionalsActionStoreFalsez,Tests the store_false action for an Optionalrstore_falser)rrr	rT)rFNrrArrrrs96tM:;#H	R$Z	
rE{IrrcZeZdZdZeddgZgdZdedfded	fgZy
)TestOptionalsActionStoreTruez+Tests the store_true action for an Optionalz--applerr)rz	--apple=bz	--apple brF)appleTNrrArrrrs95y>?.H	Re_	BTN#IrrceZdZdZedejgZddgZde	dfde	d	fd
e	dfde	dfd
e	d	fgZ
dZdZy)TestBooleanOptionalActionzTests BooleanOptionalActionrr	--foo bar	--foo=barrNrT--no-fooFz--foo --no-fooz--no-foo --fooctj}|jt5}|j	ddtj
ddd|j
dtjy#1swY/xYw)NrTrrz*got an unexpected keyword argument 'const')	r+r,rrrBooleanOptionalActionassertInr	exceptionrr2cms   r
test_constz$TestBooleanOptionalAction.test_constsn((*


y
)	\RtH<Z<Z[	\	


BCDUV	\	\s#A;;Bctj}|jt5|j	dtj
dddd|jt5|j	dtj
tddd|jt5|j	dtj
dddd|jt5|j	dtj
dddd|jt5|j	dtj
d	ddd|jt5|j	d
tj
d	dddy#1swYOxYw#1swYxYw#1swYxYw#1swYxYw#1swY|xYw#1swYyxYw)N-a)rr-b-c)rmetavar-dd-e)rrrrA)r+r,assertWarnsDeprecationWarningrrboolr1s  rtest_deprecated_init_kwz1TestBooleanOptionalAction.test_deprecated_init_kws((*


0
1	55
 
	

0
1	55
 
	

0
1	55
 
	

0
1	55
 
	

0
1	55
 
	

0
1	55
 
		A												sG#F*'F'.#F4.#G.#G.#GF$'F14F=G	GG!)
rrr r!rtr+rrrr{rrrrArrrrss%wx/M/MNO[)H	RD\	",	RE]#	2%=)	2$<(IW)rrcneZdZdZeddejgZdgZde	dfde	dfgZ
y	)
!TestBooleanOptionalActionRequiredz$Tests BooleanOptionalAction requiredrT)rrrrrFN)rrr r!rtr+rrrr{rrArrrr+sI.	Gd8+I+IJtH	",	RE]#IrrcteZdZdZeddgZgdZdedfd	ed
gfded
dgfgZy)
TestOptionalsActionAppend'Tests the append action for an Optionalrbappendrrrba --baz	--baz a brNrD--baz ar--baz a --baz br|rrArrrr7sL1wx895H	RD\	BC5M"	BC:./Irrc|eZdZdZedddggZgdZdedgfd	edd
gfdegdfgZy
)$TestOptionalsActionAppendWithDefaultrrbrr5rrlrrrrrr)r5rr|NrrArrrrCsQ1wx#GH5H	RSE]	BC:&'	B?34IrrceZdZdZeddeddeddeddgZgd	Zd
eddddfdedgdddfdeddgddfdeddddfdeddddfgZy)
!TestConstActionsMissingConstKwargz=Tests that const gets default value of None when not providedrappend_constrrrrr.)z-f vrrrN)rr(r|rCrrArrrrOsG	D(GN+D'GM*	2H	R$DDd
34	
rTF$78	"t$4T:;	
rDdd56	"t489Irrc	eZdZdZeddeedddgZgd	Zd
edfdeegfd
eededgfgZ	y)TestOptionalsActionAppendConst-Tests the append_const action for an Optionalrrrrrr|rr'rrza -cz-bxz-b xrNr|-b -cx -b -cyzryz
rrr r!rtrrrr{rrArrrrbsf7	Dy9D,2H	R$Z	
rYK !	2CD ABCIrrc
eZdZdZeddedgeddd	gZgd
Zdedgfdedegfd
edededgfgZ	y))TestOptionalsActionAppendConstWithDefaultrrrr5)rrrlrrr|rrrrrrrNrrArrrrqsq7	Dy3%HD,2H	R3%[	
rS)$%&	2ii FGHIrrcZeZdZdZeddgZgdZdedfded	fgZy)
TestOptionalsActionCountz&Tests the count action for an Optionalrcountr)rrz-x bz	-x a -x brNrrrrrArrrrs80tG451H	R$Z	
rAwIrrc	eZdZdZedededdgZddgZd	ed
d
dfd
edd
dfded
ddfdedd
dfgZy
)"TestOptionalsAllowLongAbbreviationz2Allow long options to be abbreviated unambiguouslyrz--foobazz--fooblerrz--foob 5z--foobrNF)r(foobazfooblez--foo 77z	--fooba arz--foobl --foo greTrrArrrrs~<	GJJ|,
H%H	RDe
45	B3tE:;	bT#e<=	B3tDAB	IrrceZdZdZedZededdedgZgd	Zd
edddfd
edddfdedddfgZ	y)%TestOptionalsDisallowLongAbbreviation1Do not allow abbreviations of long options at allFallow_abbrevrz--foodlerrz--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rNr(foodlefoonlyz--foo 33z--foonly 7 --foodle --foo 2rTrrTrArrrrsr;.GJ|,J
CH	RDt
45	B3uT:;	&s4(LMIrrceZdZdZeddZededded	gZgd
Zdeddd
fdeddd
fdeddd
fgZ	y)0TestOptionalsDisallowLongAbbreviationPrefixCharszBDisallowing abbreviations works with alternative prefix charactersrFrIrz++fooz++foodlerrz++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNrz++foo 3rz++foonly 7 ++foodle ++foo 2rTrrTrArrrrstL%@GJ|,J
CH	RDt
45	B3uT:;	&s4(LMIrrc
eZdZdZedZededdgZddgZd	ed
d
fded
d
fdedd
fded
dfded
dfdeddfgZ	y
)/TestDisallowLongAbbreviationAllowsShortGroupingrFrz-rrrrz-c -rrNrr}z-rarz-rccccz-ccrz-cc -raz-ccrccrTrArrrrs;.D	D!gH	R$$
 	SD!"	dd#$	TQ 	BN#	2?#
Irrc
eZdZdZeddZededdgZdd	gZd
eddfd
eddfdeddfdeddfdeddfdeddfgZ	y)5TestDisallowLongAbbreviationAllowsShortGroupingPrefixzEShort option grouping works with custom prefix and allow_abbrev=FalserFrz+rz+crrz+c +rrNrz+rarz+rccrz+ccrz+cc +raz+ccrccrTrArrrrsO%@D	D!gH	R$$
 	SD!"	dd#$	TQ 	BN#	2?#
IrrcBeZdZdZedgZgdZdedfgZy)TestPositionalsNargsNonez,Test a Positional that doesn't specify nargsr(rra brrNrrArrrrs)6u:, H	bSkIrrcHeZdZdZeddgZgdZdedgfgZy)	TestPositionalsNargs1z.Test a Positional that specifies an nargs of 1r(rrrsrrrNrrArrrrs/8uA./ H	bcUmIrrcJeZdZdZeddgZgdZdeddg	fgZy
)TestPositionalsNargs2z.Test a Positional that specifies an nargs of 2r(rrs)rrra b crrr|rNrrArrrrs28uA./'H	Sz"#IrrcreZdZdZeddgZdgZdegfdedgfd	edd
gfgZy)TestPositionalsNargsZeroOrMorez0Test a Positional that specifies unlimited nargsr(rrsrrrrrr|NrrArrr
r
sN:uC01vH	RBZ	bcUm	Sz"#Irr
cteZdZdZedddgZdgZdedfd	ed	gfd
ed	dgfgZy)
%TestPositionalsNargsZeroOrMoreDefaultz>Test a Positional that specifies unlimited nargs and a defaultr(rrCrrrrrrr|NrrArrrrsPHuC?@vH	RE]	bcUm	Sz"#Irrc`eZdZdZeddgZddgZdedgfd	edd
gfgZy)TestPositionalsNargsOneOrMorez2Test a Positional that specifies one or more nargsr(rrsrrrrrr|NrrArrrrsD<uC01DzH	bcUm	Sz"#IrrcZeZdZdZeddgZddgZded	fd
ed
	fgZy)TestPositionalsNargsOptionalzTests an Optional Positionalr(rrsrrrNrrrrArrrr)s=&uC01e}H	RD\	bSkIrrc\eZdZdZedddgZddgZded	fd
ed
	fgZy)#TestPositionalsNargsOptionalDefaultz1Tests an Optional Positional with a default valuer(rrrrrrrrNrrArrrr4s?;uC<=e}H	RBZ	bSkIrrc^eZdZdZeddedgZgdZded	fd
ed	fgZ	y)
,TestPositionalsNargsOptionalConvertedDefaultznTests an Optional Positional with a default value
    that needs to be converted to the appropriate type.
    r(rr)rtrrl)rr1 2rrr1rrNrrArrrr?sE
	E35$H	RBZ	bQiIrrcReZdZdZededgZgdZdeddfgZy	)
TestPositionalsNargsNoneNonez-Test two Positionals that don't specify nargsr(rC)rrrrrrr|r(rCNrrArrrrNs37u:s5z2'H	s$%IrrcXeZdZdZededdgZgdZdedd	g
fgZy)TestPositionalsNargsNone1z6Test a Positional with no nargs followed by one with 1r(rCrrrs)rrrrrrr|rNrrArrrrXs8@u:s5':;*H	s&'IrrcZeZdZdZeddedgZgdZdedd	gd
fgZy)
TestPositionalsNargs2Nonez8Test a Positional with 2 nargs followed by one with noner(rrsrCrrrra b c drrr|r}rNrrArrrrbs:BuA.E
;3H	"#s-.IrrceZdZdZededdgZddgZdedg	fd
eddg	fdeddd
g	fgZy)"TestPositionalsNargsNoneZeroOrMorez>Test a Positional with no nargs followed by one with unlimitedr(rCrrsrrrrrr|rr}NrrArrr!r!ls^Hu:s5'<=G}H	bSb!"	s&'	"3*-.Irr!creZdZdZededdgZgdZdedd	g
fdedd	dg
fgZy
)!TestPositionalsNargsNoneOneOrMorez@Test a Positional with no nargs followed by one with one or morer(rCrrsrrrrrr|rrr}NrrArrr#r#xsKJu:s5'<=!H	s&'	"3*-.Irr#cleZdZdZededdgZgdZdedd	fd
edd	fgZy) TestPositionalsNargsNoneOptionalz@Test a Positional with no nargs followed by one with an Optionalr(rCrrsrrrrNrrr|rrArrr&r&sEJu:s5'<=%H	bSd#$	s$%Irr&ceZdZdZeddedgZddgZdegd	fd
edgd	fdeddgd
	fgZy)"TestPositionalsNargsZeroOrMoreNonez@Test a Positional with unlimited nargs followed by one with noner(rrsrCrrrrrr|rr}NrrArrr)r)s^JuC0#e*=G}H	bRS!"	u#&'	"#s-.Irr)creZdZdZeddedgZgdZdedgd	
fdedd	gd
fgZy
)!TestPositionalsNargsOneOrMoreNonezBTest a Positional with one or more nargs followed by one with noner(rrsrCr$rrr|rrr}NrrArrr+r+sKLuC0#e*=!H	u#&'	"#s-.Irr+cneZdZdZedddedgZgdZdedd	fd
edd	fgZy)
 TestPositionalsNargsOptionalNonezBTest a Positional with an Optional nargs followed by one with noner(rrrrCr'rrrr|NrrArrr-r-sGLuC<c%jI%H	bRS!"	s$%Irr-czeZdZdZeddeddgZgdZded	d
ggfded	d
gd
gfgZy)TestPositionalsNargs2ZeroOrMorez=Test a Positional with 2 nargs followed by one with unlimitedr(rrsrCrr$rrr|rrr}NrrArrr/r/sRGuA.E0EF!H	Szr*+	"#s#/0Irr/c`eZdZdZeddeddgZgdZded	d
gdgfgZy
)TestPositionalsNargs2OneOrMorez?Test a Positional with 2 nargs followed by one with one or morer(rrsrCr)rrrrrrr|r}rNrrArrr1r1s?IuA.E0EF(H	"#s#/0Irr1cxeZdZdZeddeddgZgdZded	d
gdfd
ed	d
gdfgZy)TestPositionalsNargs2Optionalz7Test a Positional with 2 nargs followed by one optionalr(rrsrCr)rrrrrrr|Nrrr}rrArrr3r3sPAuA.E0EF,H	Szt,-	"#s-.Irr3ceZdZdZeddeddgZddgZd	egd	g
fded	gdg
fd
ed	dgdg
fgZy)TestPositionalsNargsZeroOrMore1z=Test a Positional with unlimited nargs followed by one with 1r(rrsrCrrrrrrrr|rr}NrrArrr5r5sgGuC0#e12EFGH	bRcU#$	u3%()	"#s#/0Irr5czeZdZdZeddeddgZgdZded	gd
gfded	d
gd
gfgZy)TestPositionalsNargsOneOrMore1z?Test a Positional with one or more nargs followed by one with 1r(rrsrCrrr$rrr|rrr}NrrArrr7r7sRIuC0#e12EF!H	u3%()	"#s#/0Irr7cteZdZdZeddeddgZgdZded	dg
fdeddg
fgZy	)
TestPositionalsNargsOptional1z?Test a Positional with an Optional nargs followed by one with 1r(rrsrCrrr'rNrrr|rrArrr9r9sLIuC0#e12EF%H	bTu%&	s&'Irr9ceZdZdZededdeddgZgdZd	ed
gdgfd
ed
dgdgfgZy)#TestPositionalsNargsNoneZeroOrMore1z=Test three Positionals: no nargs, unlimited nargs and 1 nargsr(rCrrsrDrrr$rrr|r(rCrDrr}NrrArrr;r;s`G	E
EE
"H	s./	"3%cU34Irr;ceZdZdZededdeddgZgdZd	ed
dgdg
fded
ddgdg
fgZy)"TestPositionalsNargsNoneOneOrMore1z?Test three Positionals: no nargs, one or more nargs and 1 nargsr(rCrrsrDrr)rrrr|rrr|r}r<rrNrrArrr>r>sdI	E
EE
'H	"3%cU34	B3S#JSE:;Irr>ceZdZdZededddedd	gZgd
Zdeddd
gfdedd
dgfgZy)!TestPositionalsNargsNoneOptional1z;Test three Positionals: no nargs, optional narg and 1 nargsr(rCr?rrDrrrsr$rrr|r<rr}NrrArrr@r@s`E	E
Ee,E
"H	sC512	"#C512Irr@ceZdZdZeddedddgZdd	gZd
eddfd
ed
dfded
dfgZy)$TestPositionalsNargsOptionalOptionalzTest two optional nargsr(rrsrCrrrrrNrrrr|rrArrrCrCse!	EEb)!H	RDb
!"	bSb!"	s$%IrrCc	eZdZdZeddeddgZdgZded	g
fdedg
fdedd
g
fdedd
dg
fgZy	)&TestPositionalsNargsOptionalZeroOrMorez1Test an Optional narg followed by unlimited nargsr(rrsrCrrrNrrrr|rr}rrArrrErE.sn;uC0#e32GHyH	RDb
!"	bSb!"	s&'	"3*-.	IrrEceZdZdZeddeddgZddgZd	ed
d	gfded	d
gfded	d
dgfgZy
)%TestPositionalsNargsOptionalOneOrMorez3Test an Optional narg followed by one or more nargsr(rrsrCrrrrNrrr|rr}rrArrrGrG;sc=uC0#e32GHG}H	bTu%&	s&'	"3*-.IrrGcfeZdZdZededgZgdZdedfdedfgZ	y	)
TestPositionalsChoicesStringz&Test a set of single-character choicesrabcdefgrrrrfrefrrreN)
rrr r!rtsetrrr{rrArrrIrIGs=0vs9~>?-H	bcl	bclIrrIcheZdZdZedeedgZgdZde	dfd	e	d
fgZ
y)TestPositionalsChoicesIntzTest a set of integer choicesrrrK4rrM15NrrArrrPrPRs?'vCrCD-H	baj	
rr{IrrPcbeZdZdZeddedddgZgdZded	d
dggfgZy
)TestPositionalsActionAppendzTest the 'append' actionrrrr)rrtrrrr|r}rMNrrArrrVrV]sI"	F8$F81-4H	"3c
+,-IrrVceZdZdZeddedddgZd	d
gZdedd
fdedd
fdeddfdeddfgZy)"TestOptionalsNumericAndPositionalsz;Tests negative number args when numeric options are presentrrrsz-4r[rr'rr(z-315rNFrmrTz-4 arrArrrXrXmssE	CsDs<0f~H	R$%
 !	b3% !	
rDD!"	cT"#	IrrXc	eZdZdZeddedddgZd	gZd
edd
fdedd
fdedd
fdedd
fdedd
fgZy)(TestOptionalsAlmostNumericAndPositionalszBTests negative number args when almost numeric options are presentrrrsz-k4r[rrYz-k3rNFrmr(rTz-k4 arrArrr[r[}sL	CsEL1wH	R$%
 !	
rDE"#	b3% !	TT"#	"sd#$Irr[ceZdZeddedddgZdgZdgedd	
fdgedd	
fdgedd	
fddged	d
fddged	d
fddged	d
fd
ged	d
fdged	d
fgZy	)$TestEmptyAndSpaceContainingArgumentsrrrsr
z--yyyr[r&rNrmza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badger)rrr rtrrr{rrArrr]r]s	CsD'$vH
rB$ 
rJ$/0
[D12
R$"%&

	R$*56
	b4;78
	R$*56
	b4;78	Irr]ceZdZedZeddddedd	ed
edd
dgZddgZdedd
dfdedd
dfdedd
dfdedddfdedd
dfdedd
dfgZ	y) TestPrefixCharacterOnlyArgumentsz-+rI-rrr3)r'rtrrr[r)r'rrlz-+-rrrYr
z+ -rNFrZz- Xr5z+ -3Tz- ===z===)
rrr rtrrrrr{rrArrr_r_s-CcH5CcR0EL1
e}H	R$"
&'	b8rU+,	SB%()	dbE*+	TR4()	"ue,-
Irr_ceZdZdZeddeddgZgZdedgfdeggfd	ed
ggfded
gdgfd
edd
gfd
egd
gfdedgd
gfgZy)TestNargsZeroOrMorerrrrsr[rNrmrrz	-x a -- br|ryrzrrArrrdrdsIt3/S1DEH	R$"
	
rB"~	ser"#	bC5SE*+	b4C5!"	bSE"#	2#'(Irrdc	eZdZdZededdedgZgdZdedgd	
fdedgd
fd
edgdd	
fdedddgd	
fgZy	)TestNargsRemainderz2Tests specifying a positional with nargs=REMAINDERrr[...rsr)rrz-z Zr5NrZz-z Z XZ
X A B -z Z)ArArrhz	X Y --fooYrrrArrrfrfsv<s8SE%:CIF!H	b3"%&	2rS)*	rC#8DAB	b33.D9:	IrrfcleZdZdZedeedededd	gZgd
Zdeddg
fdeddg
fdedddg
fdeddg
fdeddg
fdeddg
fdedddg
fdedddg
fdedddg
fdedddg
fdedddg
fgZ	y)TestOptionLikez.Tests options that may or may not be argumentsrrz-3r[)rr'rrrs)
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 arNrZz-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 r!rtfloatrrr{rrArrrmrms8	DuDu3'Cs
0H

R$$"
%&	2tr*+	R##/0	dcR()	"ttr*+	"tsb)*	2u-.	b44C5)*	2tu-.	2tu-.	2u-.IrrmceZdZdZeddejeddejeddej	gZd
gZde	fde	d
fde	ddgfde	dfde	ddfde	ddgdfgZ
y)TestDefaultSuppressz%Test actions with suppressed defaultsr(rrrCrrbrrrrrrrr|rTrrr(rDrr<N)rrr r!rtr+SUPPRESSrrr{rrArrrsrss/	Eh&7&78Eh&7&78GL(2C2CD
vH	RT
	bSk	s&'	",	B3D)*	bSse67
IrrsceZdZdZeejZeddeddedd	
gZdgZ	de
fd
e
d
fde
d
dgfde
dfde
d
dfde
d
dgdfgZy)TestParserDefaultSuppressz4Test actions with a parser-level default of SUPPRESSargument_defaultr(rrsrCrrbrrrrrrrr|rTrrrtrr<N)rrr r!rtr+rurrrr{rrArrrwrws>H,=,=>EEGL)
vH	RT
	bSk	s&'	",	B3D)*	bSse67
IrrwceZdZdZedZedddedd	
edd
ed
dgZdgZdeddddfdeddddfdeddgddfd
eddddfdeddddfdeddgddfgZ	y)TestParserDefault42z.Test actions with a parser-level default of 42rrx	--versionversion1.0rr}r(rrsrCrrbrrrr)r(rCrDr}rrr|TrrNrTrArrr{r{s8B/K	59EEGL)	vH	RBBB
34	bSbb"56	s2r:;	"r:;	B3BD"=>	bSserBC
Irr{ceZdZdZfdZedZedededd	gZgd
Zde	jzZded
ddgfdeddddgfded
edgfded
degfdededdgfdeddedgfgdedddgfgZ
e	jrPe	jjdZej$eZe
ded
edgfded
degfgz
Z
xZSdZxZS)TestArgumentsFromFile"Test reading arguments from a filectt|dtj|j
dzfddd|jdzfg}|D]+\}}t|d5}|j|ddd-y#1swY8xYw)Nhello
)	recursives-a
A
@hello)invalids@no-such-path
undecodablewb)	rrrKrSfsencoderrrjrkr
file_textsr[textrnrs     rrKzTestArgumentsFromFile.setUp+s
#T02
bkk$**-56
%
,
D,,u45


%	!JD$dD!
!T

4 
!
!	!
!
!sA<<B	@fromfile_prefix_charsrrr[rrs)rrr5z@invalidz@missingzhello world!zX YNr5rk)rrr[z
X -a A Y Zrjrh@hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a BrA)rrr5rkr@z@undecodable XzX @undecodabler)rrr r!rKrtrrrrFS_NONASCIIrr{rTESTFN_UNDECODABLElstriprrSfsdecodedecoded_undecodabler"r#s@rrr(sR,!5D	CCs
7HY222E	TSSE*+	rC33*56	R$%C512	R$#%12	SEc3Z @A	SCE3< @A	rB##78I##2299$?)bkk+6
rD,?C5IJ
rDC4G3HIJ
	
	
rrceZdZdZfdZGddeZeZedZ	edd	gZ
gZd
egdfgZ
xZS)
TestArgumentsFromFileConverterrctt|dg}|D]+\}}t|d5}|j	|ddd-y#1swY8xYw)N)rs
hello world!
r)rrrKrjrkrs     rrKz$TestArgumentsFromFileConverter.setUpXsb
,d9;(

%	!JD$dD!
!T

4 
!
!	!
!
!sAA	ceZdZdZy)>TestArgumentsFromFileConverter.FromFileConverterArgumentParserc#`K|jD]}|js|ywrO)rstrip)rarg_lineargs   rconvert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argscs-~~'
yy{	
s,.N)rrr rrArrFromFileConverterArgumentParserras	rrrrr[rrsr)rzworld!r5r)rrr r!rKrrrrtrrrr{rr"r#s@rrrUsX,!*D3L5CsH	R234Irrc*eZdZdZdZdZdZdZy)TestFileTypeReprcdtjd}|jdt|y)Nrz
FileType('r')r+FileTyperreprrrs  rtest_rzTestFileTypeRepr.test_rys&  %$t*5rcftjdd}|jdt|y)NrrrzFileType('wb', 1)rrs  r	test_wb_1zTestFileTypeRepr.test_wb_1}s)  q),d4j9rchtjdd}|jdt|y)Nrlatin_1rhz!FileType('r', encoding='latin_1')rrs  rtest_r_latinzTestFileTypeRepr.test_r_latins)  y9<d4jIrcjtjddd}|jdt|y)Nrgbig5ignore)rierrorsz/FileType('w', encoding='big5', errors='ignore')rrs  rtest_w_big5_ignorez#TestFileTypeRepr.test_w_big5_ignores.  vhGJd	%rcjtjddd}|jdt|y)Nrrrreplacerz"FileType('r', 1, errors='replace')rrs  rtest_r_1_replacez!TestFileTypeRepr.test_r_1_replaces+  a	:=tDzJrN)rrr rrrrrrArrrrws6:J%
KrrceZdZdZdZy)StdStreamComparerctj||_|dk(rt|_y|dk(rt
|_yt
|_y)N
stdout.buffer
stderr.buffer)operator
attrgetterrr
backupattrrr)rrs  rrzStdStreamComparer.__init__s= **40?"1DO
_
$1DO$hDOrcp	||jtk(S#t$r||jk(cYSwxYwrO)rrAttributeErrorrrs  rrzStdStreamComparer.__eq__s9	,DLL---	,DOO++	,s55Nrrr rrrArrrrs',rrstdinrrzstdin.bufferrrceZdZiZdZdZy)RFilec||_yrOrdrrds  rrzRFile.__init__		rc&||jvr|j|}n/|jx}|j|<|jt|ts|jd}|j|jcxk(xr|k(ScS)Nascii)seenreadcloserrrrdrrrs   rrzRFile.__eq__stDII99U#D&+jjl2D499U#KKM$$;;w'DyyEJJ.$....rN)rrr rrrrArrrrs
D/rrcJeZdZdZfdZedejedejdgZgdZ	de
d	ed
fde
eded
fd
e
eded
fde
ee
fde
d	ed
fgZ
xZS)
TestFileTypeR8Test the FileType option/argument type for reading filesctt|dD]R}ttj
j
|j|dd5}|j|dddT|jdy#1swYpxYw)Nrrgrrhreadonly)
rrrKrjrSr[r\rRrkrrr	file_namernrs   rrKzTestFileTypeR.setUpsz
mT(*'	&Ibggll4==)<G-
&04

9%
&
&	&	
!!*-
&
&sA==B	rrnrr)rrznon-existent-file.txtr(Nrr
-x foo barrC
bar -x foo-x - -r)rrr r!rKrtr+rrrr{req_stdinrr"r#s@rrrsB.	D(x((*+F***3/03H	Te-.	rE%LuU|<=	rE%LuU|<=	2x01	R$U:%678IrrceZdZdZfdZedejddgZdgZ	de
ed	
fgZxZ
S)TestFileTypeDefaultsz<Test that a file is not created unless the default is neededctt|ttj
j
|jddd}|jd|jy)Ngoodrgrrh)
rrrKrjrSr[r\rRrkr)rrnrs  rrKzTestFileTypeDefaults.setUpsG
"D/1BGGLL7wO

6

rrrzno-file.txtrrlrz-c goodr)r})rrr r!rKrtr+rrrr{rrr"r#s@rrrsNF	D(x((-}EtHR%-012Irrc	*eZdZdZfdZedejdedejdgZddgZ	de
d	ed
fde
eded
fd
e
eded
fde
ee
fgZ
xZS)TestFileTypeRBrctt|dD]R}ttj
j
|j|dd5}|j|dddTy#1swY_xYw)Nrrgrrh)	rrrKrjrSr[r\rRrkrs   rrKzTestFileTypeRB.setUpsj
nd)+'	&Ibggll4==)<G-
&04

9%
&
&	&
&
&sA,,A5	rrbrnrrr(NrrrCrr)rrr r!rKrtr+rrrr{r	eq_bstdinrr"r#s@rrrsB&	D(x((./F***401bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2		23	Irrc&eZdZeZdZdZy)WFilec||_yrOrrs  rrzWFile.__init__rrc
||jvr]d}d|jvr|jd}|j||j	|jj||j|jk(S)NzCheck that file is writable.r|r)rmoder
rkraddrdrs   rrzWFile.__eq__se		!1Dejj {{7+KKKKMIIMM% yyEJJ&&rN)rrr rNrrrrArrrrs5D'rrc
LeZdZdZfdZedejdedejdgZgdZ	de
d	ed
fde
d	ed
fde
eded

fde
eded

fde
ee
fgZ
xZS)
TestFileTypeWz8Test the FileType option/argument type for writing filescft||jd|jdyNrwritablerrKrrrorrs rrKzTestFileTypeW.setUp(

!!*-!!*-rrrgrnr)rrrr(NrrrrCrrrrr r!rKrtr+rrrr{r	eq_stdoutrr"r#s@rrrsB.	D(x((-.F***3/0&H	Te-.	R$U:%678	rE%LuU|<=	rE%LuU|<=	2		23IrrceZdZdZfdZedejdedejdgZgdZ	de
ed	ed
fde
eefgZ
xZS)

TestFileTypeXzATest the FileType option/argument type for writing new files onlycft||jd|jdyrrrs rrKzTestFileTypeX.setUp.rrrrrnr)rrrrrr(rCrrrr#s@rrr*syK.	D(x((-.F***3/02H	rE%LuU|<=	2		23Irrc	eZdZdZedejdedejdgZddgZde	de
d	fd
e	e
de
d	fde	e
de
d	fd
e	ee	fgZy)TestFileTypeWBz?Test the FileType option/argument type for writing binary filesrrrnrrr(NrrrCrr)
rrr r!rtr+rrrr{r
eq_bstdoutrrArrrr>sI	D(x((./F***401bzH	Te-.	rE%LuU|<=	rE%LuU|<=	2
45	IrrceZdZdZedejdedejdgZdee	de	d	fd
ee
e
	fgZy)TestFileTypeXBzHTest the FileType option/argument type for writing new binary files onlyrxbrnrrr(rCrrN)rrr r!rtr+rrr{rrrrArrrrOsnN	D(x((./F***401

rE%LuU|<=	2
45IrrceZdZdZdZy)TestFileTypeOpenArgsz0Test that open (the builtin) is correctly calledc
2tj}|ddf|dddf|dddf|d	d
df|dd
dddfg}tjd5}|D] \}}|d|jdg|"	dddy#1swYyxYw)Nr)rNNrgrr)rgrrNNrr)rgrNrrrrh)rrrNrl1strict)rgrrrz
builtins.openr()r+rrr/assert_called_with)rFTcasesmrrvs      rtest_open_argsz#TestFileTypeOpenArgs.test_open_args`s



X-.
QZ-.
I
&(BC
v
&(@A
Qh
')AB
ZZ
(	3A#
3
dU$$$U2T2
3	3	3	3s&B

BN)rrr r!r
rArrrr]s
:3rrceZdZdZdZy)!TestFileTypeMissingInitializationzx
    Test that add_argument throws an error if FileType class
    object was passed instead of instance of FileType
    c.tj}|jt5}|j	dtj
ddd|j
tj
dtjy#1swY@xYw)Nrrnz: is a FileType class object, instance of it must be passed)	r+r,r
ValueErrorrrrrrrs   rtestz&TestFileTypeMissingInitialization.testusx((*


z
*	>b8+<+<=	>	
  
#	
	>	>s"BBNrrr r!rrArrrros
	
rrceZdZdZedeedegZgdZde	dd	fd
e	dd	fd
e	dd	fgZ
y)TestTypeCallablez,Test some callables as option/argument typesz--eggsrnr)r42jz--eggs az	--eggs 2iz--eggs=42 42rgE@)eggsrz--eggs 2j -- -1.5y@z1024.675Ng3333@)rrr r!rtcomplexrqrrr{rrArrrrs^6	H7#F5H	$/0	bbt45	RT12IrrceZdZdZGddeZedeedegZgZde	eded	
fde	eded

fgZ
y)TestTypeUserDefinedz(Test a user-defined option/argument typeceZdZdZdZy)TestTypeUserDefined.MyTypec||_yrOvaluerrs  rrz#TestTypeUserDefined.MyType.__init__	DJrc`t||jft||jfk(SrOrrrs  rrz!TestTypeUserDefined.MyType.__eq__'J

+UU[[/IIIrNrrArrMyTyper
		Jrr#rrnrrzr|rr-xf grreN)rrr r!rCr#rtrrr{rrArrrrsm2JJ	DvF H	2s&+67	"vc{56IrrceZdZdZGddZedeedegZgZdeeded	
fdeeded

fgZ	y)TestTypeClassicClasszTest a classic class typeceZdZdZdZy)TestTypeClassicClass.Cc||_yrOrrs  rrzTestTypeClassicClass.C.__init__rrc`t||jft||jfk(SrOr!rs  rrzTestTypeClassicClass.C.__eq__r"rNrrArrCr)r$rr,rrnrrzr|rrr%rreN)
rrr r!r,rtrrr{rrArrr'r'sk#JJ	DqFH	2#QsV,-	"qvAcF+,Irr'ceZdZdZdZy)TestTypeRegistrationz*Test a user-defined type by registering itcd}tj}|jdd||jdd|jdd|j	|jdj
tdd	|j	|jd
j
tdd	y)Ncd|zS)Nzmy_type{%s}rAstrings rget_my_typez.TestTypeRegistration.test.<locals>.get_my_types
 6))rrmy_typerrnr[rz
my_type{1}rmz-x 1 42zmy_type{42})r+r,registerrrr;rr{)rr3r2s   rrzTestTypeRegistration.tests	*((*	;7Dy1Ci0**399;7dl3	5**9??+<=lm<	>rNrrArrr.r.s
4
>rr.ceZdZdZGddej
ZGddej
Zeddee	d	ed
ee
dd
gZgZde
ddfde
ddfde
ddfde
ddfgZy)TestActionUserDefinedz*Test a user-defined option/argument actionceZdZddZy)$TestActionUserDefined.OptionalActionNcL	|jdk(sJd|jz|dk(s
Jd|ztd}|dvrd|_n|d	vrd
|_ntd|z||k(s
Jd|d
|	t|d|y#t$r}t	d|zd}~wwxYw)Nrdest: %s-szflag: %s?rM)?rAr)@r	value: %s	expected , got zopt_action failed: %s)r'r{r3AssertionErrorrrrr2	namespacer
option_stringrrs       r__call__z-TestActionUserDefined.OptionalAction.__call__s
GyyF*BJ,BB$,Hj=.HH!dmN*)*K&e^)+K&(u)<=="i/L3>	3KL/
Ivu-"
G)*AA*EFF
GsA6B	B#BB#rOrrr rGrArrOptionalActionr9s	.rrIceZdZddZy)&TestActionUserDefined.PositionalActionNc^	|
Jd|z|jdk(sJd|jztd}|dvrd|_n&|dvrd	|_n|d
vrd|_ntd|z||k(s
Jd
|d|	t|d|y#t$r}t	d|zd}~wwxYw)Nzoption_string: %sr3r;rr3)rrr=)rrrA)rr>r@rArBzarg_action failed: %s)r'r{rrCrrrDs       rrGz/TestActionUserDefined.PositionalAction.__call__s
G$,>/B/<0=>yyH,Dj499.DD!lH$'+K$c\',K$c\',K$(u)<=="i/L3>	3KL/
Ix/"
G)*AA*EFF
GsA?B	B,B''B,rOrHrArrPositionalActionrKs	0rrNr<rr=)r'rrrlr3rr)rrrtrlz-s0.125r>)rr3rrz
-s 0.625 1rArrz84 -s2r?rN)rrr r!r+ActionrIrNrtrqrrrr{rrArrr7r7s4..,08??04	Dvn	&H-C	,H	BE!,-	
rtB'(	ruQ/0	23r*+	Irr7c@eZdZdZGddej
ZdZy)TestActionRegistrationz5Test a user-defined action supplied by registering itceZdZddZy)TestActionRegistration.MyActionNc8t||jd|zy)Nzfoo[%s])rr')rr2rEvaluesrFs     rrGz(TestActionRegistration.MyAction.__call__sItyy)f*<=rrOrHrArrMyActionrSs	>rrVc<tj}|jdd|j|j	dd|j|j
dgtd|j|j
dgtd	y)
Nr	my_actionr3rrzfoo[1]rMrzfoo[42])r+r,r5rVrrr;r{r1s  rrzTestActionRegistration.tests{((*+t}}=H[9**C512X3FG**D62Bi4HIrN)rrr r!r+rOrVrrArrrQrQs?>8??>
JrrQcFeZdZedddegZdZdegdfgZy	)
TestActionExtendrextendr)rrtrrAz--foo f1 --foo f2 f3 f4)f1f2f3f4rN)	rrr rtrrrr{rrArrrZrZ&s4GHCc:H	"B+C$DEIrrZceZdZdZdZ		ddZfdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZxZS)TestAddSubparserszTest the add_subparsers methodc8|jtg|i|yrOrrrxs   rassertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError6-???rcT|r,tdd|}|j|ddzdzdd	n!tdd
}|jddd	|jdtd
ddi}|rd|d<d|d<nd|d<|jd4i|}|j	|jtd}|rd|d<|rddg|d<|jd5i|}|jdtd|jdd d!"td#}	|rd$|	d<|jd6i|	}
|
jd%d&d'"|
jd(td)d*+td,}|rd-|d<|jd7i|}|jd.td/|jd0d1d23|S)8NPROGmain description)progdescriptionrIrrr(rfoo helprhelprirjrrCbar helprrmrFCOMMANDrcommandstitlecommand helprmz
1 descriptionrjz1 help1alias11alias2aliasesrYzw helprrx helprrmz
2 descriptionz2 helpr
123y helprrzz help)rrtrmz
3 descriptionz3 helptzt helpurgzu helprtrmrAr)r)r)	rrrqadd_subparsersrddict
add_parserrr)
rsubparser_helprIrxr2subparsers_kwargs
subparsersparser1_kwargsparser1parser2_kwargsparser2parser3_kwargsparser3s
             rrzTestAddSubparsers._get_parser9s/);,XFQ!#e+Lz
 
S0);=F:
 
?J		0(/+4i()3g&(6f%*V**?->?
&&v'<'<=/:%-N6")2I(>N9%'*''>~>T(;S%h?/:%-N6"'*''>~>T5x@SwcI/:%-N6"'*''>~>Ss:SH=
rczt||j|_|jd|_y)NT)r)rrKrr2command_help_parserrs rrKzTestAddSubparsers.setUpps2

&&(#'#3#34#3#H rc~dD]8}|j}|j|jj|:y)N)rrza az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)rrdr2r;)rrrvs   rtest_parse_args_failuresz*TestAddSubparsers.test_parse_args_failuresus;1	IH>>#D**4;;+A+A4H	Irc
<|j|jjdjt	dddd|j|jjdjt	dd	d
ddg
|j|jjdjt	dddd|j|jjdjt	dddgdy)N0.5 1 b -w 7Frpr|r(rCrgrz0.25 --foo 2 -y 2 3j -- -1jTr=ry@y)r(rCr[rz--foo 0.125 1 cr>r}z-1.5 3 11 -- a --foo 7 -- br)rrr--r|)r(rCr}r~)rr2r;rr{rs rtest_parse_argsz!TestAddSubparsers.test_parse_args|sKK"">#7#7#9:5cQ#.	
	
KK""#@#F#F#HI4TSRI6	
	
KK""#4#:#:#<=4Udc2	
	
KK""#@#F#F#HI5db,JK	
rc	|j|jjdjt	ddddgf|j|jjdjt	dddddgf|j|jjd	jt	dddddgf|j|jjd
jt	ddddddgf|j|jjd
jt	ddddgdfy)NrFrprr|rz0.5 -p 1 b -w 7-pz0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7z-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wz-Xrkrh)rr2parse_known_argsrr{rs rtest_parse_known_argsz'TestAddSubparsers.test_parse_known_argssCKK(()=)=)?@
Esa3
/4	
	
KK(():)@)@)BC
Esa3
/$8	
	
KK(():)@)@)BC
Esa3
/$8	
	
KK(()>)D)D)FG
Esa3
/$?	
	
KK(()A)G)G)IJ
Esa3
/1GH	
rct}|jdd|jd}|jd}|jd|j	tddd	
|j
djy)NrrrrCr&rrDFrr<r)rrrrrr{r;r)rr2rrs    r	test_destzTestAddSubparsers.test_dests{+-GL9***6
'',U#3C8**5;;=9	;rc|jdg}|j|jd|j|jdy)NrunrA)r;rcommandrd)rr2rets   r_test_required_subparsersz+TestAddSubparsers._test_required_subparserss@(e,	
&&v'8'8"=rct}|jd}d|_|jd|j	|y)Nrr&Tr)rrrrrrr2rs   r&test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attributesA+-**	*:
"
e$&&v.rct}|jdd}|jd|j|y)NrTr'rr)rrrrrs   r"test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwargs;+-**	D*I
e$&&v.rct}|jd}|jd|jd}|j	|j
y)Nrr&rrArrrr;assertIsNonerrr2rrs    r test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_defaultsM+-**	*:
e$##++&rcBt}|jd}|jd|jd|jt5}|jdddd|j
jjdy#1swY0xYw)NTrr(rCrAz8error: the following arguments are required: {foo,bar}
$	rrrrrr;r>rrrr2rexcinfos    r-test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_errors+-**D*9
e$e$


2
3	"wb!	"$$G	
	"	"BBcBt}|jd}|jd|jd|jt5}|jdddd|j
jjdy#1swY0xYw)NTrr(rCrzPerror: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$rrs    r3test_wrong_argument_subparsers_no_destination_errorzETestAddSubparsers.test_wrong_argument_subparsers_no_destination_errors+-**D*9
e$e$


2
3	(wh'	($$_	
	(	(rct}|jdd}|jd|jd}|j	|j
y)NrFrrrArrs    rtest_optional_subparsersz*TestAddSubparsers.test_optional_subparserssO+-**	E*J
e$##++&rc|j|jjd|j|jjt	j
dy)N)usage: PROG [-h] [--foo] bar {1,2,3} ...
a?            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )rr2format_usageformat_helptextwrapdedentrs r	test_helpzTestAddSubparsers.test_helpsQ113E	G002HOOE5	rc|jd}|j|jd|j|jt	j
dy)Nz+:-r`z)usage: PROG [-h] [++foo] bar {1,2,3} ...
a?            usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            rrrrrrr1s  rtest_help_extra_prefix_charsz.TestAddSubparsers.test_help_extra_prefix_charss\!!u!5,,.E	G++-x@0	rctdd}|jddd|j|jt	j
dy)	Nrgrhrnz--non-breakingruRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesrlu7            usage: PROG [-h] [--non-breaking]

            main description

            options:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        rrrrrrr1s  rtest_help_non_breaking_spacesz/TestAddSubparsers.test_help_non_breaking_spaces	s[+%79];		<	
++-x	@	0
		rcRtdd}|jdd|j|jt	j
dtdd}|jdgd	|j|jt	j
d
y)Nrgrhrnr(z    rmz            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

            options:
              -h, --help  show this help message and exit
        z%(choices)srzz            usage: PROG [-h] {}

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        rr1s  rtest_help_blankz!TestAddSubparsers.test_help_blank!	s+%79			
++-x	@	0
		,%792		 	
++-x	@	0
		rc|jd}|j|jd|j|jt	j
dy)NrGr`z)usage: PROG [+h] [++foo] bar {1,2,3} ...
a?            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            rr1s  r test_help_alternate_prefix_charsz2TestAddSubparsers.test_help_alternate_prefix_charsC	s\!!u!5,,.E	G++-x@0	rc|j|jjd|j|jjt	j
dy)Nra            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

            positional arguments:
              bar         bar help
              {1,2,3}     command help
                1         1 help
                2         2 help
                3         3 help

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )rrrrrrrs rtest_parser_command_helpz*TestAddSubparsers.test_parser_command_helpU	sU11>>@E	G11==?!*	rc~tdd}|jddd|jdd	
|jddd
}|jd}|jd}|j	|jd|j	|j
tjdy)NrgrhrnrrrkrlrCrorsubcommandsrtzadditional text)rsrjrmrrz'usage: PROG [-h] [--foo] bar {1,2} ...
av            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

            options:
              -h, --help  show this help message and exit
              --foo       foo help

            subcommands:
              command help

              {1,2}       additional text
            )	rrrrrrrrr)rr2rrrs     rtest_subparser_title_helpz+TestAddSubparsers.test_subparser_title_helpj	s+8JLGLzJE
3**7E0A+C
'','',,,.C	E++-x@0	rc|jt5}|jj|j	ddd|j|jjy#1swY0xYwrO)rrr2r;rrrr)rr
expected_helprs    r_test_subparser_helpz&TestAddSubparsers._test_subparser_help	s[


2
3	5rKK""8>>#34	5(;(;<	5	5s*A//A8cN|jdtjdy)Nz5.0 1 -ha            usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

            positional arguments:
              {a,b,c}     x help

            options:
              -h, --help  show this help message and exit
              -w W        w help
            rrrrs rtest_subparser1_helpz&TestAddSubparsers.test_subparser1_help	"!!*hoo?/	rcN|jdtjdy)Nz5.0 2 -ha            usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...]

            2 description

            positional arguments:
              z           z help

            options:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            rrs rtest_subparser2_helpz&TestAddSubparsers.test_subparser2_help	rrc	 |jd}|j|jdjt	ddddgf|j|jdjt	ddddgfy)	NTrxz
0.5 1alias1 bFrpr|rz
0.5 1alias2 b)rrrrr{r1s  rtest_alias_invocationz'TestAddSubparsers.test_alias_invocation	s!!$!/##O$9$9$;<
Esdc
2B7	
	
##O$9$9$;<
Esdc
2B7	
rc||jd}|j|jdjy)NTrz
0.5 1alias3 b)rrdr;rr1s  rtest_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocation	s8!!$!/&&v'8'8'6'<'<'>	@rc|jdd}d|_|j|jt	j
dy)NT)rxra	            usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

            options:
              -h, --help            show this help message and exit
              --foo                 foo help

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )rmaxDiffrrrrr1s  rtest_alias_helpz!TestAddSubparsers.test_alias_help	sH!!$t!D++-x@0	r)FNF) rrr r!rdrrKrrrrrrrrrrrrrrrrrrrrrrrrr"r#s@rrara3s(@>B!5nI
I
&
,;>//'



'"&$ D$*<=
	
@
rrac"eZdZdZdZdZdZy)TestPositionalsGroupsz@Tests that order of group positionals matches construction orderct}|jd|jd}|jd|jdtddd}|j	d	j}|j
||y)
Nr(rerCrDrrrr<1 2 3)rrrr{r;rrrr2rexpectedrs     rtest_nongroup_firstz)TestPositionalsGroups.test_nongroup_first	sx+-E"))#.
5!E"#3C0""7==?36*rct}|jd}|jd|jd|jdtddd}|j	d	j}|j
||y)
Nxxxr(rCrDrrrr<rrrrr{r;rrrs     rtest_group_firstz&TestPositionalsGroups.test_group_first	sx+-))%0
5!E"E"#3C0""7==?36*rcdt}|jd}|jd|jd|jd|jd}|jdtddd	d
}|j	dj}|j
||y)
Nrr(rCrDrfrellrrrrR)r(rCrDrz1 2 3 4rrs     rtest_interleaved_groupsz-TestPositionalsGroups.test_interleaved_groups	s+-))%0E"
5!E"))%0
7##3Cs;""9??#456*rN)rrr r!rrrrArrrr	sJ++
+rrcveZdZdZdZfdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZxZS)TestParentParsersz5Tests that parsers can be created with parent parsersc8|jtg|i|yrOrcrxs   rrdz+TestParentParsers.assertArgumentParserError	rerct|td|_|jj	d|jjd}|j	d|jj	dtd|_|jj	d|jj	d|jjd	}|j	d
td|_|jj	dtd|_|jj	dtd|_	|jj}|j	dd
|j	dd
tjjtjd|_y)NFrJz--wrr
rrrr}z--drrrr)rrKrwxyz_parentrrabcd_parentw_parentz_parentab_mutex_parentadd_mutually_exclusive_grouprSr[basenamerrmain_program)rx_groupc_grouprrs    rrKzTestParentParsers.setUp
sb

5uE%%e,""55c:T"%%c*5uE%%c*%%d+""55c:U#2EB


""5)2EB


""3' :5I$$AAC
45
45GG,,SXXa[9rct|jg}|j|jdj	tdddy)Nparentsz-y 1 2 --w 3rrrrgr[r)rrrr;rr{r1s  rtest_single_parentz$TestParentParsers.test_single_parent
sE+T5E5E4FG**>+?+?+ABcSC0	2rc|j|jjt|jg}|j|jyNr)_test_mutex_abrr;rr1s  rtest_single_parent_mutexz*TestParentParsers.test_single_parent_mutex"
sCD00;;<+T5I5I4JKF--.rc|jg}td|}t|g}|j|jy)NF)rJrr)rrrr;rrr2s   rtest_single_granparent_mutexz.TestParentParsers.test_single_granparent_mutex'
s<''(+UGL+VH=F--.rc|j|gtdd|j|dgtdd|j|dgtdd|j|ddg|j|ddg|j|dg|j|ddg|j|ddgy)NFrr|rTrr)rr{rd)rr;s  rrz TestParentParsers._test_mutex_ab-
sBeu)=>TF+R$%-@ATF+R%4-@A&&zD$<@&&zD$<@&&zD6:&&zD$<@&&zD$<@rc|j|jg}t|}|j|j	djt
ddddddy)Nrz--d 1 --w 2 3 4rrrrR)rr|rrgr[r)rrrrr;rr{rs   rtest_multiple_parentsz'TestParentParsers.test_multiple_parents7
sZ##T%5%56+G<**+<+B+B+DEcTSC43G	Irc
n|j|jg}t|}|j|j	djt
ddddd|j|jdj|j|jd	jy)
Nrz
-a --w 2 3TFrr)rr|rgr[rz
-a --w 2 3 -bz
-a -b --w 2 3)rrrrr;rr{rdrs   rtest_multiple_parents_mutexz-TestParentParsers.test_multiple_parents_mutex=
s'')9)9:+G<**<+=+=+?@desdcB	D&&446	8&&446	8rc|jtjtj|j|j
gyr)rr+
ArgumentErrorr,rrrs rtest_conflicting_parentsz*TestParentParsers.test_conflicting_parentsG
s9""##]]D$4$45		7rc|jtjtj|j|j
gyr)rr+rr,rrrs rtest_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutexM
s;""##%%t';';<		>rc|j|jg}t|}|j|j	djt
dddy)Nrrrr)rrrrr;rr{rs   rtest_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parentsS
sM##T]]3+G<**5;;=9ddc2	4rc	t}|j}|jd|jg}|j	d|j|j
djtdddd	y)
NrCrrzbar -b 1 --d 2 3 4rrrrR)rr|rr)	rrrrrrr;rr{)rr2rabcde_parsers    rtest_subparser_parentsz(TestParentParsers.test_subparser_parentsY
sw+-**,
!,,UT=M=M<N,O!!#&**+?+E+E+GHcSC37	9rct}|j}|jg}|jd|}|j	d}|jd|j|jg}|jd|}|jd|j|jdjtdd	d
|j|jdjtd	dd
ddd
|j|jdj|j|jdjy)Nr(rrr}rCrzfoo -a 4TFrRr{zbar -b  --w 2 3 4rr)rr|rgr[rrzfoo -a -b 4zbar -b -a 4)rrrrrrrrr;rr{rd)rr2rr
abc_parserrwxyzabe_parsers       rtest_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutexa
s>+-**,
''(**5'*B
//	:S!##T%9%9:#..ug.F##C(**:+;+;+=>des3	5**+>+D+D+FGetsdcSI	K&&}224	6&&}224	6rc	|j|jg}t|}|j}|j}|j|t
jdj||rdndy)NraG            usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

            options:
              -h, --help  show this help message and exit
              -b B
              --w W

            c:
              --d D

            x:
              -y Y
         r)	rrrrrrrrformat)rrr2parser_helpprognames     rtest_parent_helpz"TestParentParsers.test_parent_helpt
sm##T%5%56+G<((*$$hoo7"
F8HS"6#'8	9rc	td}|jdd}|jd|jd|j}|jd|jd	t|g
}|j	t
|jgd|j}|j}|j|tjdj||rd
ndy)NFrregdrsrjrYrr
rr)r
rkrrhz            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

            options:
              -h, --help  show this help message and exit
              -y Y
              -z Z

            g:
              gd

              -w W
              -x X
        rr)
rrrrrrr;rrrrrr )rparentrer	r2r!r"s       rtest_groups_parentsz%TestParentParsers.test_groups_parents
s+U;%%CT%B	t	t//1	t	t+VH=-v/@/@"	$((*$$hoo
7
F8HS"6
'8
	9r)rrr r!rdrKrrr	rr
rrrrrrr#r(r"r#s@rrr	sT?@:82
/
/AI87>496&909rrc$eZdZdZdZdZdZy) TestMutuallyExclusiveGroupErrorscbt}|j}|t|jdy)Nr()rs)rrrr)rr2raisess   rtest_invalid_add_argument_groupz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group
s'+-""y&==UKrc t}|j}|j}|j}|t|dd|t|d|t|dd|t|dd|t|dt
jy)NrTrrCrrsrr)rrrrrr+PARSER)rr2rrr,s     rtest_invalid_add_argumentz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument
sv+-335))""z<4@z</z<c:z<a8z<hooFrc^td}|j}|jdd|jdd|j}|jdd|jd	dd
}|j|j	tj|y)Nrgrirrrr.rz--soupz--nutsz            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            options:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )rrrrrrr)rr2group1group2rs     rrz*TestMutuallyExclusiveGroupErrors.test_help
s+8446GL9GM:446H\:H];		
++-xx/HIrctj}|j}|jt5|jdgdddy#1swYyxYw)Nr5)r+r,rrrr;rr2rs   rtest_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group
sQ((*335


z
*	&tf%	&	&	&sAAN)rrr r-r0rr7rArrr*r*
sL
	GJ(&rr*c<eZdZdZdZdZdZdZdZdZ	dZ
y	)
MEMixinc|jdj}t}|jD]#}|j	|||j%yNFr
get_parserr;rrrrrr;rargs_strings    rtest_failures_when_not_requiredz'MEMixin.test_failures_when_not_required
sM__e_4??
#==	FKeZ1B1B1DE	Frc|jdj}t}|jdgzD]#}|j	|||j%y)NTrrr<r>s    rtest_failures_when_requiredz#MEMixin.test_failures_when_required
sT__d_3>>
#==B4/	FKeZ1B1B1DE	Frc|jdj}|j|jz}|D]-\}}||j	}|j||/yr;)r=r;rsuccesses_when_not_requiredrr)rr;rr?r	actual_nss      r test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required
sc__e_4??
NNT%E%EE	(1	5$K";#4#4#67IY4	5rc|jdj}|jD]-\}}||j}|j	||/yNTr)r=r;rrr)rr;r?rrEs     rtest_successes_when_requiredz$MEMixin.test_successes_when_required
sS__d_3>>
(,	5$K";#4#4#67IY4	5rc|jdj}|j}|j|t	j
|yr;)r=rusage_when_not_requiredrrrrrexpected_usages   rtest_usage_when_not_requiredz$MEMixin.test_usage_when_not_required
s>6CC55)HIrc|jdj}|j}|j|t	j
|yrH)r=rusage_when_requiredrrrrLs   rtest_usage_when_requiredz MEMixin.test_usage_when_required
s>5BB11)HIrc|jdj}|j|jz}|j	|tj|yr;)r=rrKrmrrrrrrms   rtest_help_when_not_requiredz#MEMixin.test_help_when_not_requiredsGoouo5AA++dii7(=>rc|jdj}|j|jz}|j	|tj|yrH)r=rrPrmrrrrSs   rtest_help_when_requiredzMEMixin.test_help_when_requiredsGooto4@@''$))3(=>rN)rrr r@rBrFrIrNrQrTrVrArrr9r9
s.FF55J
J
?
?rr9ceZdZddZddgZdeddfded	dfd
eddfdedd	fgZd
eddfgZdZdZ	dZ
y)TestMutuallyExclusiveSimpleNctd}|j|}|jdd|jddd	d
|S)Nrgr2rr.rorrbrrhbaz help)rtrrmrrrrrr2rs    rr=z&TestMutuallyExclusiveSimple.get_parser
sN+833X3F
74
7#SzJ
r--bar X --baz Yz
--bar X --baz--bar Xr5rCrDz--bar X --bar Zrh--baz Yrkrbrz;        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
        z;        usage: PROG [-h] (--bar BAR | --baz [BAZ])
        z
        options:
          -h, --help   show this help message and exit
          --bar BAR    bar help
          --baz [BAZ]  baz help
        rOrrr r=rr{rrDrKrPrmrArrrXrXs"?3H	B3D)*	B3D12	B4S)*	"3'(	I
RDd
#$#DrrXc
eZdZddZdgZdeddddfdeddddfd	eddddfd
eddddfgZdeddddfgZdZd
Z	dZ
y)TestMutuallyExclusiveLongNctd}|jdd|jdd|j|}|jd	d
|jdd|S)
Nrgr2z--abcdez
abcde helprz--fghijz
fghij helprz--klmnoz
klmno helpz--pqrstz
pqrst helprrrr\s    rr=z$TestMutuallyExclusiveLong.get_parser0sp+8IL9IL933X3F
9<8
9<8
rz--klmno X --pqrst Yz	--klmno Xr5)abcdefghijklmnopqrstz--abcde Y --klmno Xrkz	--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
    options:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    rOrarArrrcrc.s&&H	bt4s$GH	SCt<	>	bt4t3GH	TD<	>I
Rd$d$
?@#DrrcceZdZdZdgZdeddfdeddfd	ed
dfgZded
dfgZd
ZdZ	dZ
y
)$TestMutuallyExclusiveFirstSuppressedctd}|j|}|jdtj|jddd	|S)
Nrgr2rrrr
rr|rlrrrr+rur\s    rr=z/TestMutuallyExclusiveFirstSuppressed.get_parser[sR+833X3F
4h&7&78
4
HE
rz-x X -yz-x Xr5Trmz	-x X -x Yrkr
NFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        rarArrrkrkYst{H	cT"#	b3$'(	
rDE"#I
R$$
 #Drrkc	eZdZdZgdZdedddfdedddfd	eddd
fdedddfgZdedddfgZd
xZZ	dZ
y)#TestMutuallyExclusiveManySuppressedctd}|j|}|j}|ddtj|ddtj|d	tj
|S)Nrgr2r--spamrrlr-rz	--bladderrrm)rrr2rrs     rr=z.TestMutuallyExclusiveManySuppressed.get_parser|sc+833X3F  H\0A0ABJ}83D3DEKh//0
r)z--spam --badgerz--badger --bladder Bz--bladder B --spamrqTN)rr3bladderr-Fz--bladder BrAz
--spam --spamrz!        usage: PROG [-h]
        P
        options:
          -h, --help  show this help message and exit
        rrr r=rr{rrDrPrKrmrArrrorozsH
24d;<	RU5$?@	dC@A	"$tTBC	I
RU4
67#51Drroc
eZdZdZgdZdedddfded	d
dfded	ddgfded	dgdfgZd
ed	ddfgZdZdZ	dZ
y)*TestMutuallyExclusiveOptionalAndPositionalctd}|j|}|jddd|jdd	
|jddd
d|S)Nrgr2rrrFOOrlrqSPAMrr3rr5BADGERrtrlrmr[r\s    rr=z5TestMutuallyExclusiveOptionalAndPositional.get_parsersc+833X3F
7<eD
8&1
83(K
r)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X YrTNr5)r(rr3z--spam SFSzX Y Z)r5rkrhrzD        usage: PROG [-h] [--foo | --spam SPAM | badger ...]
        zD        usage: PROG [-h] (--foo | --spam SPAM | badger ...)
        z
        positional arguments:
          badger       BADGER

        options:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        rarArrrvrvsH
"D56	REC89	bUse45	"T/BC	I
RES
12#	Drrvc
*eZdZdZgdZdedddddfdedddddfdedddddfd	edddddfd
edddddfdedddddfgZdedddddfd
edddddfdedddddfgZdxZZ	dZ
y)#TestMutuallyExclusiveOptionalsMixedc
td}|jddd|j|}|jddd	|jd
dd|jddd
|jddd|S)Nrgr2rrryrlrra helprb helpr
r|rc helprer\s    rr=z.TestMutuallyExclusiveOptionalsMixed.get_parsers+8DHE33X3F
48D
48DDHE
48D
r)z-a -b-b -cz-a -cz-a -b -crTFrr|r}rr[rrz-a -xz-y -bz-x -y -crrr
z:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z
        options:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        NrtrArrr~r~s7H	
rDEUeu=>	
rETUeu=>	
rEUdeu=>	"tu?@	"u$?@	R%5DDDAB
I
R%5EUe
<=	
rEUetu=>	
rEUeu=>#51	Drr~creZdZddZddgZdeddfdedd	fgZd
eddfgZdZdZ	d
Z
y)TestMutuallyExclusiveInGroupNctd}|jdd}|j|}|jdd	|jd
d	|S)Nrgr2zTitled groupzGroup descriptionr&rr.rorrbrZ)rrrr)rrr2titled_groupmutex_groups     rr=z'TestMutuallyExclusiveInGroup.get_parsersk+800 .A1C
55x5H	  z :  z :
rr]z--baz X --bar Yr^r5r_r`rkrz9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z
        options:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        rOrarArrrrsi"#45H	B3D)*	B4S)*I

RDd
#$#
DrrceZdZdZgdZdedddddfded	d
dddfded	dd
ddfdeddddd
fd
ed	d
ddd
fgZded	ddddfded	dddd
fgZdxZZ	dZ
y	)1TestMutuallyExclusiveOptionalsAndPositionalsMixedctd}|jdd|jddd	|j|
}|jddd
|jddd	|jddd	|S)Nrgr2rryrr
rr|rlrrrrrrrrrrer\s    rr=z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parsers+8Ch/DHE33X3F
3c9
48D
48D
r)zX A -brz-c X AzX ArjFr5rzX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a
        positional arguments:
          x           x help
          a           a help

        options:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        rtrArrrrs-H	SEUcU;<	ddese<=	detse<=	2u=>	B#>?I

b45ESE:;	deut<=#
51Drrc.eZdZdZdZdZdZdZdZdZ	dZ
y)TestMutuallyExclusiveNestedcbtd}|j|}|jd|jdtj5tj
dt|j|}dddjd|jdtj5tj
dt|j|}dddjd	|jd
|S#1swYxYw#1swY9xYw)Nrgr2rrrrrrrr)rrrwarningscatch_warningssimplefilterr)rrr2rr4group3s      rr=z&TestMutuallyExclusiveNested.get_parserMs+833X3F
4 
4 

$
$
&	K!!(,>?777JF	K	D!D!

$
$
&	L!!(,>?88(8KF	L	D!D!
	K	K
	L	Ls-D-D%D"%D.zO        usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
        zO        usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
        z
        options:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)rrr r=rKrPrmr@rBrFrIrArrrrFs8"
D'+#"&'+$#' rrc eZdZdfd	ZxZS)MEPBasecbtt||}t|jd|g}|S)NrF)rirJr)rrr=rri)rrr'r2rs    rr=zMEPBase.get_parser}s4w0(0C+uvh@
rrO)rrr r=r"r#s@rrr{s
rrceZdZy)&TestMutuallyExclusiveGroupErrorsParentNrrr rArrrrrrceZdZy)!TestMutuallyExclusiveSimpleParentNrrArrrrrrrceZdZy)TestMutuallyExclusiveLongParentNrrArrrrrrrceZdZy)*TestMutuallyExclusiveFirstSuppressedParentNrrArrrrrrrceZdZy))TestMutuallyExclusiveManySuppressedParentNrrArrrrrrrceZdZy)0TestMutuallyExclusiveOptionalAndPositionalParentNrrArrrrrrrceZdZy))TestMutuallyExclusiveOptionalsMixedParentNrrArrrrrrrceZdZy)7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNrrArrrrrrrc6eZdZdZdZdZdZdZdZdZ	y)	TestSetDefaultsc

t}|jd|jdd|jtddd|j	g|jtddd|j	gt|jtddd|j	gtd|jtddd|j	gtdd	y)
Nr(rrCrr)r[rrZrDr)rrrset_defaultsrr{r;r1s  rtest_set_defaults_no_argsz)TestSetDefaults.test_set_defaults_no_argss+-e$eq)eu2**2.	0eu2**2rt4	6eu2**2rE{;	=eu2**2rEQ/?@	Brc	t}|jdd|jdd|jt	dd|jg|jt	dd|jgt	|jt	dd|jgt	d|jt	d	d|jd
j
|jt	d	d|jd
j
t	|jt	d	d|jd
j
t	dy)Nr(rCrmrxfooxrkrDrrr)rrrrr{r;rr1s  rtest_set_defaults_with_argsz+TestSetDefaults.test_set_defaults_with_argss6+-eu-D'2g/**2.	0g/**2rt4	6eu-**2rE{;	=cU+**6<<>:	<cU+**6<<>24@	BcU+**6<<>2;G	Irct}|jd|j}|jd}|jd|j	tdd|j
djy)Nr(rrrCrrm)rrrrrr{r;r)rr2rparser_as    rtest_set_defaults_subparsersz,TestSetDefaults.test_set_defaults_subparserssu+-e$**,
((-&eu-**399;7	9rctd}|jdt|g}|jtd|j	gy)NFrr(rrr)rr'r2s   rtest_set_defaults_parentsz)TestSetDefaults.test_set_defaults_parentssH+U;e$+VH=ef&7&7&;<rc
tj}|jjd}|j	d|j	d|jt
d|jdgy)Nr5rrrr)r+r,rrrrr{r;)rr2xparsers   r)test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparsersl((*'')44S9"#F$5$5se$<=rct}|jdddd|jd|jdd	|jd
d|jd
dd|jt	dddd|jg|jdddd|jt	dddd|jgy)NWr5rkrhrrYrXXrkr[rrsrZZrWWYY)rrrrr{r;r1s  r&test_set_defaults_same_as_add_argumentz6TestSetDefaults.test_set_defaults_same_as_add_arguments+-cSC37D!D$/Cs+CsD9	
cTSD9**2.	0	dcTS9dcTS9**2.	0rct}|jdddd|jd}|jd|jdd	
|jdd
|jddd|j	tdd	dd|j
g|jdddd|j	tdddd|j
gy)Nrr5rkrhrr(rYrrrkr[rrsrrrrr)rrrrrr{r;r6s   r,test_set_defaults_same_as_add_argument_groupz<TestSetDefaults.test_set_defaults_same_as_add_argument_groups+-cSC37))%0
4 
4.
3c*
3c48	
cTSD9**2.	0	dcTS9dcTS9**2.	0rN)
rrr rrrrrrrrArrrrs'BI"9=>0"0rrceZdZdZy)TestGetDefaultct}|j|jd|j|jd|jd|j|jd|j|jd|jdtd|j|jd|jd|jd|j
d|jd|jd|jd|jdy)	Nr(rCrr.rrr3r)rrget_defaultrrrrr1s  rtest_get_defaultzTestGetDefault.test_get_default
s+-&,,U34&,,U34G$&,,U34&,,U34G#r:&,,U34V//67)6#5#5e#<=V//67rN)rrr rrArrrr

s8rrceZdZdZdZy)TestNamespaceContainsSimplecttj}|jd||jd|y)Nrr)r+	NamespaceassertNotInrnss  r
test_emptyz&TestNamespaceContainsSimple.test_empty&
s0



!R b!rctjdd}|jd||jd||jd||jd||jd|y)	Nrrrrmrrr[xxr)r+rrrrs  rtest_non_emptyz*TestNamespaceContainsSimple.test_non_empty+
s`


!q
)R 

c2

c2r"b!rN)rrr rrrArrrr$
s"
"rrceZdZdZy)TestHelpFormattingMetaclasscV|dk(ryGddt}dD]\}}||||y)NHelpTestCasec0eZdZdZdZdZdZdZdZy)6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc||_||_|j|j|jfD]-}|j
d|}|fd}	||_t|||/y#t$rYwxYw)Nrc||yrOrArs  rtest_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapperH
rr)func_suffixstd_nametest_format
test_printtest_print_filerrr)r
test_classrrrrrs       rrz?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__?
s#.  (
"&"2"2"&//"&"6"6"8AI,5+=+={ KI5>(09-J	<@A%sA##	A/.A/c\tj|jji|jj}t|dgD](}|j|ji|j*t|dg}|D]X\}}|j|ji|j}|D](}|j|ji|j*Zt|dg}|r=|j}	|D](}
|	j|
ji|
j*|S)Nrargument_group_signaturessubparsers_signatures)
r+r,rrvrwrrrrr)rrr2argument_sig
group_sigs	group_sig
argument_sigsrsubparsers_sigsr
subparser_sigs           rrzBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parserP
s`!00,,116--446%,F4I2$N?L'F''):):?*6*=*=??%V-H"M
0:B,I}5F55y~~J8A8H8HJE(5B***L,=,=B-9-@-@BBB#*&2I2"N"!'!6!6!8J)8G
-
--}/A/AG1>1E1EGG
rct||j}tj|}d|_|j||yrO)rrrrrr)rrparser_text
expected_texts    r_testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testf
s9 '0@0@ A
 (
 >
!%""=+>rc|j|}t|d|jz}|j||y)Nz	format_%s)rrrr)rrr2r s    rrzBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatl
s9))&1 t7G7G)GH

668,rc|j|}t|d|jz}tt|j}tt|jt
	|tt|jj}tt|j||j||y#tt|j|wxYwNzprint_%s)	rrrrrrrrr)rrr2print_
old_streamrs      rrzATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printq
s))&1 d6F6F)FG$S$--8
T]]KM:<H")#t}}"="F"F"HKC
;

6;/C
;s)/CC#c|j|}t|d|jz}t}|||j	}|j||yr)rrrrrr)rrr2rsfilers      rrzFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file}
sQ))&1 d6F6F)FG#
u
#nn.

6;/rN)	rrr rrrrrrrArrrr=
s!
A"
,
?
-


0
0rr))usager)rmr)r)rrdrrrrrs       rrz$TestHelpFormattingMetaclass.__init__9
s>>!F	0vF	0R&:	1!KS+x0	1rNryrArrrr7
sO1rrrceZdZdZedddZedddd	
eddd
eddeddeddgZgZdZedzZ	dZ
y)TestHelpBiggerOptionals;Make sure that argument help aligns when options are longerrgDESCRIPTIONEPILOGrirjepilogr^r|r}0.1rrrX HELPrl--yY HELPrr(FOO HELPrCBAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        aW
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        options:
          -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
        Nrrr r!rtrrrrrmr}rArrrr
sEM"*,	D+i?DH5E!E
#E
#!#
ED GrrceZdZdZdZejZejZejZdZ	e	dzZ
ejZy)TestShortColumnszTest extremely small number of columns.

    TestCase prevents "COLUMNS" from being too small in the tests themselves,
    but we don't want any exceptions thrown in such cases. Only ugly representation.
    cn|jtj}|jddy)NrFrS)rGrrHrNrIs  rrKzTestShortColumns.setUp
s)	 = = ?@	4 rz        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

        options:
          -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 r!rKrrrrrrmr}rArrrr
sW
!#:"J"J"9"M"M"9"S"S
ED:#:"A"AGrrceZdZdZedddZedddd	
eddd
eddeddeddgZeddeddedddgfgZdZed zZ	d!Z
y")#TestHelpBiggerOptionalGroupsrrgrrrr^r|r}rrrrrrlrrrr(rrCrzGROUP TITLEzGROUP DESCRIPTIONrurDzBAZ HELPrrzZ HELPrzN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        options:
          -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
    rNrrArrr
r

sEM"*,	D+i?DH5E!E
#E
#

](;	<J'Ch/?1	2!

ED,Grr
ceZdZdZeddZeddded	d
edd
eddgZgZdZedzZ	dZ
y)TestHelpBiggerPositionalsz4Make sure that help aligns when arguments are longerUSAGErrrjrrrrlrrrekiekiekifekangzEKI HELPrCr        usage: USAGE
        a
        DESCRIPTION

        positional arguments:
          ekiekiekifekang  EKI HELP
          bar              BAR HELP

        options:
          -h, --help       show this help message and exit
          -x               X HELP
          --y Y            Y HELP
        rNrrArrrrsl>mDDH5E!J/E
#	!#
EDGrrceZdZdZeddZeddded	d
dgZedd
edddgfgZdZedzZ	dZ
y)TestHelpReformatting>Make sure that text after short names starts on the first linergze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrnrrzoddly
    formatted -x helprrmr[rz
normal y helprsz'
    oddly formatted group

descriptionrurrz` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesrl2        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

        options:
          -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
        rNrrArrrr6sH
)*	D$&=	>C_5

W#0
1d<$%
&		'
!
ED(GrrceZdZdZeddZeddded	d
dgZeded
ddgfgZdZedzZ	dZ
y)TestHelpWrappingShortNamesrrgzZD
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
DrnrrzxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrr[rdYH 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 HHArlra
        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

        options:
          -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
        rNrrArrrrjszH[AD$]3C\2


X\@B	C!
ED,GrrceZdZdZeddZedddd	ed
dd
eddd
gZededdd
eddd
gfgZdZedzZ	dZ
y)TestHelpWrappingLongNamesz<Make sure that text after long names starts on the next liner
zZD 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 Drr^r|r}zZV 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 XHrr[yyyyyyyyyyyyyyyyyyyyyyyyyrrrAAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHrzzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHrag
        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

        options:
          -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
        NrrArrrrsFzBD+iDD(6C5

Xh\:XL9;	<!

ED<GrrceZdZdZedZedddedd	d
edded
d
dedddeddejedddejedddejedejejdg	Z	ed ed!dd"ed#d$d%ed&d&d	ed'd'dgfgZ
d(Zed)zZd*Z
y+),
TestHelpUsageTest basic usage messagesrgr2rYrrgrrrrrrr|r)rmrtr}rrzWhether to foo)rmrr.zWhether to barT)rmrlrrz--foobarz--barfoorz--bazzzBazz!)rrlrmrr
r[rrwrrra/        usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo]
                    [--bar | --no-bar]
                    [-f | --foobar | --no-foobar | --barfoo | --no-barfoo]
                    [--bazz | --no-bazz] [-y [Y]] [-z Z Z Z]
                    a b b [c] [d ...] e [e ...]
        az
        positional arguments:
          a                     a
          b                     b
          c                     c

        options:
          -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
          -f, --foobar, --no-foobar, --barfoo, --no-barfoo
          --bazz, --no-bazz     Bazz!

        group:
          -y [Y]                y
          -z Z Z Z              z
          d                     d
          e                     e
        rN)rrr r!rtrr+rrurrrrmr}rArrr!r!s#'D#&D#&CcCc#Cc%G*83Q3QRG*D$::	<D*j1O1OPHX;;&//g	?

WCc*AC(#S)#S)	
	!
ED,Grr!cZeZdZedZeddedddgZd	Zed
zZdZy)
TestHelpUsageWithParenthesesrgr2
positionalz(example) positionalrrz
--optionalz{1 (option A), 2 (option B)}zX        usage: PROG [-h] [-p {1 (option A), 2 (option B)}] (example) positional
        z
        positional arguments:
          (example) positional

        options:
          -h, --help            show this help message and exit
          -p {1 (option A), 2 (option B)}, --optional {1 (option A), 2 (option B)}
        rN)	rrr rtrrrrmr}rArrr$r$sL'L"89D,(FG

EDGrr$ceZdZdZeddZgZededded	d	gfed
eddedd
gfgZdZedzZ	dZ
y)TestHelpOnlyUserGroupsr"rgFrirJxxxxrrrryyyyr|r
r[z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        rNrrArrr(r(s#7	V3#
	

V#3
		!
E		DGrr(c|eZdZdZedZeddedded	ed
gZgZdZedzZ	d
Z
y)TestHelpUsageLongProgz*Test usage messages where the prog is long<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr2rYrr&rr5rr|zz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w W] [-x X] a b
        z
        positional arguments:
          a
          b

        options:
          -h, --help  show this help message and exit
          -w W
          -x X
        rNrrArrr-r-6sa4)D#D#CC	!#
E

DGrr-ceZdZdZedZeddedded	d
edded
edgZgZdZedzZ	dZ
y) TestHelpUsageLongProgOptionsWrapzATest usage messages where the prog is long and the optionals wrapr.r2rYWWWWWWWWWWWWWWWWWWWWWWWWWr&rrr
YYYYYYYYYYYYYYYYYYYYYYYYYrZZZZZZZZZZZZZZZZZZZZZZZZZrr|a        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a-
        positional arguments:
          a
          b

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNrrArrr0r0SsuK)D(#D(#D(#D(#CC
!#
EDGrr0cheZdZdZeddZedededgZgZdZed	zZ	d
Z
y)$TestHelpUsageLongProgPositionalsWrapzCTest usage messages where the prog is long and the positionals wrapr.Fr)aaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNrrArrr5r5wsVM59H
H
H

!#
E
DGrr5c	eZdZdZedZeddedded	d
edded
ededgZgZdZedzZ	dZ
y)TestHelpUsageOptionalsWrapz,Test usage messages where the optionals wraprgr2rYr1r&rrr
r2rr3rr|r}z        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        a9
        positional arguments:
          a
          b
          c

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNrrArrr;r;s|6'D(#D(#D(#D(#CCC!#
E

DGrr;ceZdZdZedZedededededed	gZgZd
ZedzZ	dZ
y
)TestHelpUsagePositionalsWrapz.Test usage messages where the positionals wraprgr2rr
rr6r7r8z        usage: PROG [-h] [-x X] [-y Y] [-z Z]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        a
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x X
          -y Y
          -z Z
        rNrrArrr=r=si8'D	D	D	H
H
H

!#
E
DGrr=ceZdZdZedZeddedded	d
ededed
gZgZdZedzZ	dZ
y)%TestHelpUsageOptionalsPositionalsWrapz<Test usage messages where the optionals and positionals wraprgr2rrr&r
r2rr3r6r7r8a        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        aZ
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNrrArrr?r?srF'D(#D(#D(#H
H
H

!#
EDGrr?creZdZdZedZeddedded	d
gZgZdZedzZ	d
Z
y)TestHelpUsageOptionalsOnlyWrapz@Test usage messages where there are only optionals and they wraprgr2rrr&r
r2rr3z        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
        z
        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNrrArrrArAs]J'D(#D(#D(#
!#
E
DGrrAcheZdZdZeddZedededgZgZdZed	zZ	d
Z
y) TestHelpUsagePositionalsOnlyWrapzBTest usage messages where there are only positionals and they wraprgFr)r6r7r8z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r9rNrrArrrCrCsVL7H
H
H

!#
EDGrrCc
eZdZdZedZedededdd	d
ded
ddeddddgddeddedddgZeded d!ed"d#d$gfgZd%Z	e	d&zZ
d'Zy())TestHelpVariableExpansionz:Test that variables are expanded properly in help messagesrgr2rz"x %(prog)s %(default)s %(type)s %%rpr
rrXXXz y %(prog)s %(default)s %(const)s)rrlrrmrrz$foo %(prog)s %(default)s %(choices)srzr.rDrrrBBBz!bar %(prog)s %(default)s %(dest)s)rlrrrmrzspam %(prog)s %(default)srr3rpzbadger %(prog)s %(default)s)rlrmrrza %(prog)s %(default)srrzb %(prog)s %(default)szw        usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
                    spam badger
        a
        positional arguments:
          spam           spam PROG None
          badger         badger PROG 0.5

        options:
          -h, --help     show this help message and exit
          -x X           x PROG None int %
          -y             y PROG 42 XXX
          --foo {a,b,c}  foo PROG None a, b, c
          --bar BBB      bar PROG baz bar

        group:
          -a A           a PROG None
          -b B           b PROG -1
        rN)rrr r!rtrrrrrrmr}rArrrErE.sD'Ds5	7D%3	5GU7	9GUQFE4	6F45Hc(EF

W34b'?@
	!ED"GrrEc>eZdZdZeddZgZgZdZedzZ	dZ
y)	&TestHelpVariableExpansionUsageSuppliedz@Test that variables are expanded properly when usage= is presentrgz%(prog)s FOOrirz         usage: PROG FOO
        rsrNrrArrrIrI\s=Jn= "ED
GrrIc8eZdZdZeddZgZgZdZeZ	dZ
y)$TestHelpVariableExpansionNoArgumentsz;Test that variables are expanded properly with no argumentsrgFr)z        usage: PROG
        rNrrArrrLrLms1E7 "EDGrrLcpeZdZdZedejZeddeddgZgZ	d	Z
d
Zd
Zy)TestHelpSuppressUsagez3Test that items can be suppressed in usage messagesrgrJrrkrr	spam helpz        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)
rrr r!rtr+rurrrrmrr}rArrrNrNzsO=h.?.?@G*%F%!#D
EGrrNcveZdZdZeddZedejeddgZgZ	d	Z
e
d
zZdZy)
TestHelpSuppressOptionalz?Test that optional arguments can be suppressed in help messagesrgFr)rrrrOz!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN
rrr r!rtrr+rurrrrmr}rArrrQrQs[I7G(++,F%!#
ED
GrrQceZdZdZedZeddeddgZed	ed
ejgfgZ	dZ
e
dzZd
Zy)TestHelpSuppressOptionalGroupz<Test that optional groups can be suppressed in help messagesrgr2rrkrrrOrr.2        usage: PROG [-h] [--foo FOO] spam
        
        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)
rrr r!rtrrr+rurrrmr}rArrrTrTsqF'G*%F%


WG(*;*;<=>!
EDGrrTcteZdZdZedZeddedejgZgZ	dZ
e
d	zZd
Zy)TestHelpSuppressPositionalzATest that positional arguments can be suppressed in help messagesrgr2rrkrrz-        usage: PROG [-h] [--foo FOO]
        o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNrRrArrrXrXsYK'G*%F**+!#
EDGrrXcPeZdZdZedZedddgZgZdZed	zZ	d
Z
y)TestHelpRequiredOptionalz.Test that required options don't look optionalrgr2rTrk)rrmz+        usage: PROG [-h] --foo FOO
        rYrNrrArrr[r[sK8'Gd4!#
EDGrr[cheZdZdZedddZeddd	ed
dd
gZgZdZedzZ	dZ
y)TestHelpAlternatePrefixCharsz:Test that options display with different prefix charactersrgz^;F)rirIrJz^^foorrkrlz;bz;;barrorz-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNrrArrr]r]s[DTEJGLz:D'
+!#
EDGrr]cbeZdZdZeddZeddedd	gZgZd
ZedzZ	dZ
y
)TestHelpNoHelpOptionalz=Test that the --help argument can be suppressed help messagesrgFr)rrkrrrOz-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        rNrrArrr_r_sUG7G*%F%!#
EDGrr_cXeZdZdZedZededgZgZdZedzZ	dZ
y	)
TestHelpNonez1Test that no errors occur if no help is specifiedrgr2rrrUz
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rNrrArrrarasM;'GF!#
EDGrrac	eZdZdZedZedddded	d
dded
dddeddddgZgZdZedzZ	dZ
y)TestHelpTupleMetavarz"Test specifying metavar as a tuplergr2rYrgr)W1W2)rmrtrrrr)X1X2r
r[rw)Y1Y2Y3rrr)Z1z]        usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]
        z
        options:
          -h, --help        show this help message and exit
          -w W1 [W2 ...]    w
          -x [X1 [X2 ...]]  x
          -y Y1 Y2 Y3       y
          -z [Z1]           z
        rNrrArrrcrc*sx,'Ds#|<Ds#|<Ds!-?@Ds#x8	!#
EDGrrcceZdZdZedejdZeddedd	gZed
ded
dgfgZ	dZ
e
dzZdZy)TestHelpRawTextTest the RawTextHelpFormatterrg7Keep the formatting
    exactly as it is written

here
riformatter_classrjrz-    foo help should also
appear as given hererrrOrs?    This text
  should be indented
    exactly like it is here
rur.ro>        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
        a
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -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 r!rtr+RawTextHelpFormatterrrrrrmr}rArrrmrmEs'
X%B%B	G1	2F%

W#B
CgJ
'	(	*!
ED,GrrmceZdZdZedejdZeddedd	gZed
ded
dgfgZ	dZ
e
dzZdZy)TestHelpRawDescriptionrnrgrorprz4  foo help should not
    retain this odd formattingrrrOrsrrrur.rorsa
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -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 r!rtr+RawDescriptionHelpFormatterrrrrrmr}rArrrvrvvs'
X%I%I	G;	<F%

W#B
CgJ
'	(	*!
ED*GrrvcJeZdZdZedejdZeddedd	d
edejd
dedejdejedddeddeddddgZ
eddededd !gfgZd"Z
e
d#zZd$Zy%)&TestHelpArgumentDefaultsz&Test the ArgumentDefaultsHelpFormatterrgrjrprz)foo help - oh and by the way, %(default)srr.rrorlz--tazzWhether to taz itT)rrmrlz--corgezWhether to corge itz--quuxzSet the quuxr)rmrlrrOr3rwoodenzbadger helpr{rsrurbrZ)rrlrmz        usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--corge | --no-corge]
                    [--quux QUUX] [--baz BAZ]
                    spam [badger]
        ay
        description

        positional arguments:
          spam                 spam help
          badger               badger help (default: wooden)

        options:
          -h, --help           show this help message and exit
          --foo FOO            foo help - oh and by the way, None
          --bar                bar help (default: False)
          --taz, --no-taz      Whether to taz it (default: True)
          --corge, --no-corge  Whether to corge it
          --quux QUUX          Set the quux (default: 42)

        title:
          description

          --baz BAZ            baz help (default: 42)
        rN)rrr r!rtr+ArgumentDefaultsHelpFormatterrrrurrrrrmr}rArrryrys0
X%K%K!#
	GEFGLz:GH::$d	4Ih<<&0A0A	CH>26F%HC
F


W-	0

gC*
=	>	@!
E
D*GrrycTeZdZdZeddZedddd	gZgZd
ZedzZ	dZ
y
)TestHelpVersionActionz,Test the default help for the version actionrgrjrn-Vr|r}z3.6rz&        usage: PROG [-h] [-V]
        z
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        rNrrArrr}r}sK6MBt[ERS "
EDGrr}ceZdZdZedZeddddejed	d
edd
gZgZ	dZ
e
dzZy)TestHelpVersionActionSuppresszCTest that the --version argument can be suppressed in help messagesrgr2r^r|r}r~)rr}rmrrkrrrOrUrVN)rrr r!rtrr+rurrrrmrArrrrseM'D+i""	$G*%F%	!#
EDrrceZdZdZeddZedddd	gZd
Dcgc]}t	|c}}}ZdZed
zZ	dZ
ycc}}}w)TestHelpSubparsersOrdering5Test ordering of subcommands in help matches the codergdisplay some subcommandsrnr^r|r}rr)rr|r}rrr6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z
        display some subcommands

        positional arguments:
          {a,b,c,d,e}

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rN)rrr r!rtrrrrrmr}).0rdrts000rrrsw?'ACt[ERS*CDD!%!d^D
E

DG'DsArc
eZdZdZeddZedddd	gZd
ZeDcgc]\}}t	||c}}}}ZdZ	e	d
zZ
dZycc}}}}w)"TestHelpSubparsersWithHelpOrderingrrgrrnr^r|r}rr))rza subcommand help)r|zb subcommand help)r}zc subcommand help)rzd subcommand help)rze subcommand help)rdrmra
        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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rN)rrr r!rtrrsubcommand_datarrrmr})rrdrmrts0000rrr"s?'ACt[ERSO0?@@!+t!d6@
ED"G1@sA
rceZdZdZeddejZedeedeede	d	
gZ
gZdZedzZ
d
Zy)TestHelpMetavarTypeFormatterc|SrOrAr1s rcustom_typez(TestHelpMetavarTypeFormatter.custom_typeOs
rrgrj)rirjrqrrnrrz
SOME FLOAT)rrzF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z
        description

        positional arguments:
          int

        options:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        rN)rrr rrtr+MetavarTypeHelpFormatterrrrqrrrrmr}rArrrrMsrM+3+L+LNs-t+6t%FH!#
EDGrrcjeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZy)TestInvalidArgumentConstructorsz-Test a bunch of invalid Argument constructorscvtj}|jt|jg|i|yrO)r+r,rrrrrvrwr2s    rassertTypeErrorz/TestInvalidArgumentConstructors.assertTypeErrorqs:((*)V%8%8	+	+#)	+rcvtj}|jt|jg|i|yrO)r+r,rrrrs    rassertValueErrorz0TestInvalidArgumentConstructors.assertValueErrorvs:((**f&9&9	+	+#)	+rc|jdd|jdd|jdd|jdiy)	Nr)rCr
r()callbackrA)
callback_args)callback_kwargsrrs rtest_invalid_keyword_argumentsz>TestInvalidArgumentConstructors.test_invalid_keyword_arguments{sNTt,TE2T4T26rcV|jdD]}|j|y)N)rrrrrrs  rtest_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destinations.)	0F   /	0rcH|jd|jdy)Nrz---rrs rtest_invalid_option_stringsz;TestInvalidArgumentConstructors.test_invalid_option_stringssd#e$rcd|jdd|jdttfy)Nrrrn)rrrqrs rtest_invalid_typez1TestInvalidArgumentConstructors.test_invalid_types,gE2gS%L9rcb|jdd|jdd|jddtj}|jt5}|jddddd|j
dtjy#1swY/xYw)	Nrr(rrDrrrz
store-truezunknown action)	rr+r,rrrrrrrs   rtest_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_actionsd51eE2g.AB((*


z
*	>b=	>

&BLL(9:	>	>s#B%%B.ctj}|jd|jt5}|jddddd|jdt
jy#1swY/xYw)Nr(r&rCrDz+dest supplied twice for positional argument)r+r,rrrrrrrs   rtest_multiple_destz2TestInvalidArgumentConstructors.test_multiple_destst((*'


z
*	3bE2	3

C",,'	)	3	3sA>>BcdD]B}tttdtdfD]}|jdd|i|Dy)	N)rrrrrrnrrsabrr)r)rrr)rrattrss   rtest_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actionssU0	CFC.$S/t,.
C$$$B&BEB
C	CrcbdD]*}|jdd||jdd|,y)N)rrrrr(rrrtrrrs  r!test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actionssA<	AF
  U6 B
  S @
	ArcdD][}|jdd||jdd|dD],}|jdd|||jdd||.]y)	Nrrrrr)rrrrr()rrtrr)rrrts   r#test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actionss)	BF
!!$a!?!!&&!A'
B%%d%,1&&B%%fE,1&&B
B	Brc:dD]}|jdd|y)N)rrrrrrrs  rtest_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actionss*5	AF
  S @	Arc|jdd|jddd|jddtjy)Nrparsersrrg)rri)rr)rr+r,rs r"test_parsers_action_missing_paramszBTestInvalidArgumentConstructors.test_parsers_action_missing_paramssKYy9YyvFYy*2*A*A		Crc*|jddy)Nr(Trrrs rtest_required_positionalz8TestInvalidArgumentConstructors.test_required_positionalsUT2rcGddtGfddt}tj}|j	|j
d||j	|j
d|y)NceZdZy)ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNrrArrSuccessrsrrc"eZdZ	dfd	ZdZy)HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Actionc2|dk(r|ur|uryyy)NrrA)roption_stringsr'rrlrrs      rrzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__s26>'"g-"))O.("rcyrOrArxs   rrGzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__srN)F)rrr rrG)rsrrOrs#(	
,
rrOrq)rrlrr)rrr+r,rr)rrOr2rs   @rtest_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_actionsy	i		V	 ((*'6#6#6!'		I'6#6#6!'		IrN)rrr r!rrrrrrrrrrrrrrrrArrrrnsV7+
+
70
%:;)CABAC3IrrceZdZdZdZy)TestActionsReturnedc>tj}|jd}|j|jd|jdd}|j|jd|jdd}|j|jdy)	Nrr(rr.rCrr
r)r+r,rrr'rr2rs   rrzTestActionsReturned.test_dests((*$$W-e,$$T73e,$$T40c*rc8tj}|jddddtddgddd	
	}|j	|j
d|j	|jd|j	|jd|j	|jt|j	|jddg|j	|jd|j	|jd|j	|jd	y)NrrrrrrrrxBARrD)rtrrlrrrmrr')
r+r,rrrrtrrlrrrmrr'rs   r	test_misczTestActionsReturned.test_miscs((*$$WCr-/cAq6*/U%L	
s+r*,c*!Q0e,/e,rN)rrr rrrArrrrs+-rrc$eZdZdZdZdZdZy)TestConflictHandlingcP|jttjdy)Nr()conflict_handler)rrr+r,rs r
test_bad_typez"TestConflictHandling.test_bad_types"*h&=&=+0		2rctj}|jd|jtj|jd|jd|jtj|jdy)Nrrq)r+r,rrrr1s  rtest_conflict_errorz(TestConflictHandling.test_conflict_errorsn((*D!(00 --t	5H%(00 --x	9rctj}|dd}|jdd|jdd|j|j	tjd|jd	d
|jd	d|j|j	tjd
y)Nrgresolve)rirrzOLD XrzNEW Xz            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            rqOLD_SPAMr&NEW_SPAMz            usage: PROG [-h] [-x X] [--spam NEW_SPAM]

            options:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )r+r,rrrrr)rr=r2s   rtest_resolve_errorz'TestConflictHandling.test_resolve_errors,,
)DDw/Dw/++-x@0		Hj9Hj9++-x@0	rctj}|j}|jddg|j	tj
|jd|j	tj
|jd|j	tj
|jddg|j	tj
|jddgy)Nfullnamealiasrr)r+r,rrrr)rr2sps   rtest_subparser_conflictz,TestConflictHandling.test_subparser_conflict2s((*

"
"
$


j7)
4(00--	5(00--	2(00--:,		H(00--7)		ErN)rrr rrrrrArrrr
s292ErrcFeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Zy)TestOptionalsHelpVersionActionsz!Test the help and version actionsc|jt5}|j|jddd|j	|jjjy#1swY>xYwrO)rrr;rrrrr)rr2rrs    rassertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExitGs`


2
3	0rhnn./	0++-r||/B/BC	0	0s A33A<cF|jt|j|yrO)rrr;rr2rvs   rrdz9TestOptionalsHelpVersionActions.assertArgumentParserErrorLs-v/@/@$Grct}|jdddd|j|d|j|d|jtt
|dy)	Nr^r|r}r~rr5rOformat_versionrrrrrrr1s  rtest_versionz,TestOptionalsHelpVersionActions.test_versionOsV+-D+iO  .  2.'6;KLrc
td}|jdddd|jt5}|j	dgddd|jdjjy#1swY0xYw)	NPPPr2r^r|r}z%(prog)s 3.5rzPPP 3.5
rrrrr;rrrrs   rtest_version_formatz3TestOptionalsHelpVersionActions.test_version_formatVss+7D+iX


2
3	&rtf%	&bll&9&9:	&	&sA99Bctd}|jdddd|j|d|j|d	|jtt
|d
y)NFrr^r|r}r~rr5rOr)rrrdrrrr1s  rtest_version_no_helpz4TestOptionalsHelpVersionActions.test_version_no_help]sX+U;D+iO&&vt4&&vx8.'6;KLrctd}|jddd|jt5}|j	dgddd|jdjjy#1swY0xYw)NrFr2r~r}z%(prog)s 3.7rzXXX 3.7
rrs   rtest_version_actionz3TestOptionalsHelpVersionActions.test_version_actiondsq+7DNK


2
3	&rtf%	&bll&9&9:	&	&sA88Bctd}|j|d|j|d|j|d|j|dy)NFrr5rOr^r|)rrdr1s  rtest_no_helpz,TestOptionalsHelpVersionActions.test_no_helpksL+U;&&vt4&&vx8&&vt4&&v{;rct}|jdd|jdd|j|d|j|d|j|d|j	t
t|dy)	Nrrmrr
r}r^r|r)rrrrdrrrr1s  rtest_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_versionrsu+-D0D3  .&&vt4&&v{;.'6;KLrcTt}|jddd|jdd|jdgd	}|d
dgz}|D]V}|D]	}|d|}|j|d
z|j||dz|jtt
|dXy)Nr|r}r~rrrrr[)rrr(z-x barzbaz -xz--bad-optionzfoo bar bazz %s r5rOrr)rr2valid_prefixesvalid_suffixesprefixsuffixr s       r!test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_arguments{s+-K	5ID6C ?'>=*II$	QF(
8(.7
8$$VVd];$$VVh->?ngv?OP	QrN)
rrr r!rrdrrrrrrrrArrrrDs8+D
HM;M;<MQrrc@eZdZdZdZdZdZdZdZdZ	dZ
d	Zy
)TestStringsz3Test str()  and repr() on Optionals and PositionalscVttfD]}|j|||yrO)rrr)robj
result_stringr6s    rassertStringEqualzTestStrings.assertStringEquals)$K	7DT#Y
6	7rcptjgdddddgdddd	
	}d}|j||y)N)rrrr|rrrrrrrwFHELPMETAVAR	rr'rrtrlrrrmrzAction(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], required=False, help='HELP', metavar='METAVAR'))r+rOr)roptionr2s   r
test_optionalzTestStrings.test_optionalsH0	
Q		
vv.rctjgdtddgdddd	}d	tz}|j||y)
Nrrro)rpg?roTzH HH HzMV MV MVrzAction(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV'))r+rOrqr)rargumentr2s   r
test_argumentzTestStrings.test_argumentsQ??#	 
@BG
H		
x0rcZtjdd}d}|j||y)NrrrzNamespace(foo=42, bar='spam')r+rrrrr2s   rtest_namespacezTestStrings.test_namespaces)


BF
30r6*rcZtjdiddi}d}|j||y)N"quotezNamespace(**{'"': 'quote'})rArr	s   r'test_namespace_starkwargs_notidentifierz3TestStrings.test_namespace_starkwargs_notidentifiers.



13.
12r6*rc^tjdddiddi}d}|j||y)Nrrrrr
z Namespace(a=1, **{'"': 'quote'})rArr	s   r2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiers3



6!
6W~
67r6*rcZtjdiddi}d}|j||y)NvalidTzNamespace(valid=True)rArr	s   r$test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifiers.



27D/
2(r6*rcztjd}dtjz}|j||y)Nrgr2zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r+r,
HelpFormatterr)rr2r2s   rtest_parserzTestStrings.test_parsers<((f5
'55
6		
vv.rN)rrr r!rrrr
rrrrrArrrrs-=7/"1"+
+
+
+
/rrceZdZdZdZdZy)
TestNamespacectj}|jtt|dtjdd}|j|jd|j|jdy)Nrrrr)r+rrrrrrr|rs  rtest_constructorzTestNamespace.test_constructors^



!.'2s;


"
/r"v&rctjdd}tjdd}tjd}tjd}|j|||j|||j|||j|||j|||j	||k7|j	||k7|j	||k7|j	||k7y)Nrrrr)r|r)rr)r+rrassertNotEqual
assertTrue)rns1ns2ns3ns4s     r
test_equalityzTestNamespace.test_equalitys  1*  1*  1%  1%c"C%C%C%C%s
#s
#s
#s
#rctjdd}|j|jdt|j|jdty)Nrrrr)r+rassertIsrNotImplemented__ne__rs  r$test_equality_returns_notimplementedz2TestNamespace.test_equality_returns_notimplementeds@


!q
)

biio~6

biio~6rN)rrr rr"r'rArrrrs'$ 7rrceZdZdZdZdZy)TestEncodingctjj|\}}|dz
}t|dd5}|j	dddy#1swYyxYw)Nz.pyrrrh)rSr[splitextrjr)rr[rrs    r_test_module_encodingz"TestEncoding._test_module_encodingsO''""4(a

$g
.	!
FFH			sAAcB|jtjyrO)r,r+__file__rs rtest_argparse_module_encodingz*TestEncoding.test_argparse_module_encodings""8#4#45rc.|jtyrO)r,r.rs r"test_test_argparse_module_encodingz/TestEncoding.test_test_argparse_module_encoding	s""8,rN)rrr r,r/r1rArrr)r)s6-rr)ceZdZdZy)TestArgumentErrorcjd}tjd|}|jt||y)Nz
my error here)r+rrr)rrrs   rtest_argument_errorz%TestArgumentError.test_argument_errors-&&tS1US)rN)rrr r5rArrr3r3s*rr3ceZdZdZy)TestArgumentTypeErrorcd}tdd}|jd||jt5}|j	dgddd|jdjjy#1swY0xYw)	Nc,tjd)Nspam!)r+ArgumentTypeErrorr1s rrz<TestArgumentTypeError.test_argument_type_error.<locals>.spams,,W55rrgFr)rrnrFz-usage: PROG x
PROG: error: argument x: spam!
)rrrrr;rrr)rrr2rs    rtest_argument_type_errorz.TestArgumentTypeError.test_argument_type_errors|	6,%HCd+


2
3	'rug&	'J,,	.	'	'sA;;BN)rrr r<rArrr7r7s
.rr7ceZdZdZdZdZy)TestMessageContentErrorctdd}|jdt|jdtd|jd	td
|j	t
5}|j
gdddtj}|j|d|j|d|j|d	|j	t
5}|j
d
gdddt|j}|j|d|j|d|j|d	|j	t
5}|j
d
dgdddt|j}|j|d|j|d|j|d	y#1swYMxYw#1swYxYw#1swYnxYw)NrgrrJreq_posrn-req_optTrneed_oner)rrtreq_optmyXargumentz
-req_opt=1)
rrrrrrr;rr>rrr2rrs    r%test_missing_argument_name_in_messagez=TestMessageContentError.test_missing_argument_name_in_message/s+rBIC0JS4@JS<


2
3	"rb!	"",,i(i(j)


2
3	/r}o.	/",,i(i(j)


2
3	=r}l;<	=",,i(i(j)#	"	"	/	/	=	=s$*G$GG GG G)ctdd}|jdt|jdtd|jd	td
d|jt5}|jgdddtj}|j|d|j|d|j|d
|jt5}|jdgdddt|j}|j|d|j|d|j|d
y#1swYxYw#1swYaxYw)NrgrrJr@rnz	--req_optTrz	--opt_optr)rrtrlrCopt_optz--req_opt=1)rrrrrrrr;rr>rrEs    r%test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_messageHs8+rBIC0KcDAKd#$(		*


2
3	"rb!	"",,i(i(i(


2
3	/r}o.	/",,i(i(i(	"	"	/	/s+E%EEE!cPtdd}|jd|jddd|jt5}|j	gdddtj}|j|d|j|dy#1swYCxYw)	NrgrrJr@optional_positionalrrr)	rrrrr;rrr>rrEs    r'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_message[s+rBI&1fM


2
3	"rb!	"",,i(34		"	"sBB%N)rrr rFrIrLrArrr>r>-s*2)&5rr>ceZdZdZy)TestTypeFunctionCallOnlyOncecfd}tj}|jd|d|jdj	}jt
d|y)Nc*j|dy)Nr:
foo_convertedr)string_to_convertrs rrzLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamms.8"rrrCrz--foo spam!rQr)r+r,rr;rrr{rrr2rvs`   r!test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_oncels[	#((*G$>  !4!4!670$7rN)rrr rUrArrrNrNjs8rrNc$eZdZdZdZdZdZy)TestTypeFunctionCalledOnDefaultcfd}tj}|jd|d|jg}j	td|y)Nc*j|dy)NrrQrR)int_to_convertrs rrz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam}s^Q/"rrrrrr+r,rr;rr{rTs`   r/test_type_function_call_with_non_string_defaultzOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default|sQ	#((*G$:  $D)rcd}tj}|jd|d|jg}|j	td|y)Ncy)NrQrA)rZs rrzYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spams"rr0rrQrr[rTs    r+test_type_function_call_with_string_defaultzKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultsQ	#((*G$<  $0$7rcd}tj}|jd|d|jg}|j	td|y)Nc|dzS)NrrA)str_to_converts rr[zYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extends
!C''r--testrrz**)rr[)rr[r2rvs    r)test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultsR	(((*H63?  $	
-rctj}|jddtgd|j	g}|j|jgy)Nrdrr)r'rrlr)r+r,rrr;rrrs   rtest_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906sT((*H6$&x		9  $B'rN)rrr r\r`rergrArrrWrWzs	*8
.(rrWc6eZdZdZdZdZdZdZdZdZ	y)	TestParseKnownArgscNtj}|jdy)NrAr+r,r;r1s  rtest_arguments_tuplez'TestParseKnownArgs.test_arguments_tuple((*"rcNtj}|jgyrOrkr1s  rtest_arguments_listz&TestParseKnownArgs.test_arguments_listrmrcptj}|jd|jdy)Nrrr+r,rr;r1s  rtest_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positionals,((*C &!rcrtj}|jd|jdgy)Nrrqr1s  rtest_arguments_list_positionalz1TestParseKnownArgs.test_arguments_list_positionals.((*C 3% rctj}|jd|jdj	\}}|jt
d||jddg|y)Nrz--foo F --bar --bazFrr.rb)r+r,rrrrr{)rr2rvextrass    rtest_optionalsz!TestParseKnownArgs.test_optionalsse((*G$../D/J/J/LMfd+'7+V4rc:tj}|jdddt|jdd|jdgd	}|j	|\}}|jt
d
dd
||jgd|y)Nr^rrr)rtrrrqrrr3)rAr,rr^rrRrwTrA)vrr3)r,rrR)r+r,rrrrr{)rr2rrvrws     r
test_mixedzTestParseKnownArgs.test_mixeds((*D13?H];H%2..t4fad37>,f5rctj}|jddd|jg}|j	tg|y)Nrrrm)rtrrr[rs   rtest_zero_or_more_optionalz-TestParseKnownArgs.test_zero_or_more_optionalsI((*CsJ?  $b4(rN)
rrr rlrorrrtrxr{r}rArrriris%"
!
5	6)rric$eZdZdZdZdZdZy)TestIntermixedArgsc	tjd}|jdd|jddd	}|jd
|jddt
dj	}|j|}|j
tdd
dgd||j|\}}|j
tdd
dg||j
gd|dj	}|j|\}}|j
tdd
ddg||j
gd||j|j|j
|jdy)Nrgr2rr(r&r.rCTrcmdrestr)rtrzcmd --foo x 1 --bar y 2 3r[rr)rCrr(rrrrz!cmd --foo x 1 --error 2 --bar y 3rr)z--errorrr)
r+r,rrrparse_intermixed_argsrr{rparse_known_intermixed_argsrrr)rr2rCrrvrws      r
test_basiczTestIntermixedArgs.test_basicsO((f5G%0!!'!EE"F#C8*002++D1CiH$O..t4fCbA4H&1288:99$?fCqcBDI.7	
&,,'t,rcftd}|jd|jd|jdddj}|jt5}|j|ddd|j
tjd	y#1swY/xYw)
Nrgr2rrr[rgrsriz\.\.\.)	rrrrrrr>rr)rr2rrs    rtest_remainderz!TestIntermixedArgs.test_remainders+8D!C Cu-!!#

y
)	/R((.	/R\\*I6	/	/s'B''B0ctd}|jd}|jddd|jd	d
|jdd
dd|jdj	}|jt
ddgdd||jt|jdj	|j|jdy)Nrgr2Trrrrxrlrqryrr3rr5rzr{z	1 --foo 2rr)r3r(rr)
rrrrrrr{rrr)rr2rrvs    rtest_exclusivez!TestIntermixedArgs.test_exclusives+833T3B
7<eD
8&1HC8L++K,=,=,?@C:4dCTJ-v/K/KU[[][.rc2td}|jd}|jddd|jd	d
|jdd
dd|jt|j
g|j
|jdy)Nrgr2Trrrrxrlrqryrr3rr5rzr{)rrrrrrrrr6s   rtest_exclusive_incompatiblez.TestIntermixedArgs.test_exclusive_incompatibles+833T3B
7<eD
8&1
83(K)V%A%A2F.rN)rrr rrrrrArrrrs-67
//rrceZdZdZy)!TestIntermixedMessageContentErrorcLtdd}|jdt|jdtd|j	t
5}|j
gdddtj}|j|d|j|d	|j	t
5}|jgdddt|j}|j|d|j|d	y#1swYxYw#1swYOxYw)
NrgrrJr@rnrATrrC)rrrrrrr;rr>rassertNotRegexrEs    rrFzGTestIntermixedMessageContentError.test_missing_argument_name_in_messages+rBIC0JS4@


2
3	"rb!	"",,i(i(


2
3	-r((,	-",,C+i(	"	"	-	-sD:DDD#N)rrr rFrArrrrs)rrc*eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2y1)2TestAddArgumentMetavarz,length of metavar tuple does not match nargscTtj}|jd||y)Nrrtr)r+r,r)rrtrr2s    rdo_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exception7s%((*G5'Brctj}|jt5}|j	d||ddd|jjjd|jy#1swY=xYw)Nrrr)	r+r,rrrrrrvEXPECTED_MESSAGE)rrtrr2rs     rdo_test_exceptionz(TestAddArgumentMetavar.do_test_exception;ss((*


z
*	GbugF	G**1-t/D/DE	G	GsA;;Bc*|jddy)Nrrrrs rtest_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_stringCs!!c!:rc:|jdty)Nrrtuplers rtest_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0FsT57;rc*|jddy)Nrrrrs rtest_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1Is!!f!=rc*|jddy)Nrrrrrs rtest_nargs_None_metavar_length2z6TestAddArgumentMetavar.test_nargs_None_metavar_length2LsT:>rc*|jddy)Nrrrrs rtest_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3OsT?Crc*|jddy)Nrrrrrs r"test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringT!!S!9rc:|jdty)Nrrrrs r#test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0WS%':rc*|jddy)Nrrrrrs r#test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1Z!!V!<rc*|jddy)Nrrrrrs r#test_nargs_optional_metavar_length2z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2]sS*=rc*|jddy)Nrrrrrs r#test_nargs_optional_metavar_length3z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3`S/Brc*|jddy)Nrrrrrs r$test_nargs_zeroormore_metavar_stringz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringerrc:|jdty)Nrrrrs r%test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0hrrc*|jddy)Nrrrrrs r%test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1krrc*|jddy)Nrrrrrs r%test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2n!!Z!@rc*|jddy)Nrrrrrs r%test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3qrrc*|jddy)Nrrrrrs r#test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringvrrc:|jdty)Nrrrrs r$test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0yrrc*|jddy)Nrrrrrs r$test_nargs_oneormore_metavar_length1z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1|sS&9rc*|jddy)Nrrrrrs r$test_nargs_oneormore_metavar_length2z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2rrc*|jddy)Nrrrrrs r$test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3rrc*|jddy)Nrgrrrrs r#test_nargs_remainder_metavar_stringz:TestAddArgumentMetavar.test_nargs_remainder_metavar_strings!!s!;rc:|jdty)Nrgr)rrrs r$test_nargs_remainder_metavar_length0z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0s!!uw!?rc*|jddy)Nrgrrrrs r$test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1s!!v!>rc*|jddy)Nrgrrrrs r$test_nargs_remainder_metavar_length2z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2s!!z!Brc*|jddy)Nrgrrrrs r$test_nargs_remainder_metavar_length3z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3s!!!Grc*|jddy)NA...rrrrs r test_nargs_parser_metavar_stringz7TestAddArgumentMetavar.test_nargs_parser_metavar_strings!!!<rc:|jdty)Nrrrrs r!test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0sVUW=rc*|jddy)Nrrrrrs r!test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1s!!!?rc*|jddy)Nrrrrrs r!test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2sVZ@rc*|jddy)Nrrrrrs r!test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3sV_Erc*|jddy)Nrrrrrrs rtest_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_string!!3!7rc:|jdty)Nrrrrrs rtest_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0Q8rc*|jddy)Nrrrrrrs rtest_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1s!!6!:rc*|jddy)Nrrrrrrs rtest_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2Q
;rc*|jddy)Nrrrrrrs rtest_nargs_1_metavar_length3z3TestAddArgumentMetavar.test_nargs_1_metavar_length3Q@rc*|jddy)Nrrrrrs rtest_nargs_2_metavar_stringz2TestAddArgumentMetavar.test_nargs_2_metavar_stringrrc:|jdty)Nrrrrs rtest_nargs_2_metavar_length0z3TestAddArgumentMetavar.test_nargs_2_metavar_length0rrc*|jddy)Nrrrrrs rtest_nargs_2_metavar_length1z3TestAddArgumentMetavar.test_nargs_2_metavar_length1Q7rc*|jddy)Nrrrrrs rtest_nargs_2_metavar_length2z3TestAddArgumentMetavar.test_nargs_2_metavar_length2s!!:!>rc*|jddy)Nrrrrrs rtest_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3rrc*|jddy)Nrwrrrrs rtest_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_stringrrc:|jdty)Nrwrrrs rtest_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0rrc*|jddy)Nrwrrrrs rtest_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1rrc*|jddy)Nrwrrrrs rtest_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2rrc*|jddy)Nrwrrrrs rtest_nargs_3_metavar_length3z3TestAddArgumentMetavar.test_nargs_3_metavar_length3s!!?!CrN)3rrr rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrArrrr3sECF;<>?D
:;=>C
:;=AC
:;:AC
<@?CH
=>@AF
89;<A
898?A
898<Drrc,eZdZdZdZdZdZdZdZy)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 appropriatectj}|jt5}|j	d|ddd|jjjd|jy#1swY=xYwNrrsr)	r+r,rrrrrrvEXPECTED_RANGE_MESSAGErrtr2rs    rdo_test_range_exceptionz(TestInvalidNargs.do_test_range_exceptionsm((*


z
*	6bu5	6**1-t/J/JK	6	6A::Bctj}|jt5}|j	d|ddd|jjjd|jy#1swY=xYwr)	r+r,rrrrrrvEXPECTED_INVALID_MESSAGErs    rdo_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exceptionsm((*


z
*	6bu5	6**1-t/L/LM	6	6r
cL|jd|jdy)Nrrsabcd)r
rs rtest_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetics$&&S&1&&V&4rc(|jdy)Nrrs)r	rs rtest_nargs_zeroz TestInvalidNargs.test_nargs_zeros$$1$-rN)	rrr rrr	r
rrrArrrrs'4LLN5.rrceZdZdZdZy)TestImportStarcltjD]!}|jtt|#yrO)r+__all__rrrs  rrzTestImportStar.tests*$$	5DOOGHd34	5rc(ttjDcgc]2\}}|jds|dk(st	j
|s|4}}}|j
t|ttjycc}}w)Nrngettext)	rr+r
startswithinspectismodulerrr)rrdrrs    r'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modulessy $H~335
eOOC(DJ,>##E*


	
x/?/?(@A

s7BN)rrr rrrArrrrs
5Brrc$eZdZfdZdZxZS)TestWrappingMetavarct|td|_d}|jj	d|y)N9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyr&)rrKrr2r)rrrs  rrKzTestWrappingMetavar.setUp
s9

0G

-  G <rc|jj}|j|tjdy)Na            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            options:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r2rrrr)r	help_texts  rtest_help_with_metavarz*TestWrappingMetavar.test_help_with_metavars4KK++-	HOO5%	r)rrr rKr#r"r#s@rrrs
=	rrceZdZdZdZdZy)TestExitOnErrorc~tjd|_|jjddty)NF)
exit_on_errorz
--integersN)rr)r+r,r2rrrs rrKzTestExitOnError.setUp%s---EB  s Erc|jjdj}|j|t	j
dy)Nz--integers 4r)integers)r2r;rrr+rrs  r!test_exit_on_error_with_good_argsz1TestExitOnError.test_exit_on_error_with_good_args)s:
[[
#
#N$8$8$:
;X//;<rc|jtj5|jj	djdddy#1swYyxYw)Nz--integers a)rr+rr2r;rrs r test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_args-sF


x55
6	;KK"">#7#7#9:	;	;	;s*AAN)rrr rKr+r-rArrr%r%#sF=;rr%c@it_tt_yrO)rrrNrrArrtearDownModuler/2sEJEJr__main__)r-r9rr
rrSr_r]rrrPunittestr+rtest.supportrr
TextIOWrapperrrCr%skip_unless_working_chmodrrMrtr{rrrr,rrrrrrrrrr"r$r*r,r:r=rFrVrXr]rarjrorqrvrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrrrrr!r#r&r)r+r-r/r1r3r5r7r9r;r>r@rCrErGrIrPrVrXr[r]r_rdrfrmrsrwr{rrrrrrrr	eq_stderrrr
eq_bstderrrrrrrskip_if_dac_overriderrrrrrrrr'r.r7rQrZrarrr*r9rXrcrkrorvr~rrrrrrrrrrrrrrrrrrrr
rrrrr!r$r(r-r0r5r;r=r?rArCrErIrLrNrQrTrXr[r]r_rarcrmrvryr}rrrrrrrrrrr)r3r7r>rNrWrirrrrrrr%r/rmainrArr<module>r9sT		

":""":$FH%%F:x  $$D6D%D.&))%)%# L>!8!8>o9Do9b		&'7Cnn4.
^
 
~
 
>
n.$&N&(,.
^
 

	>	...>&.">"
N
~NN>>>@

			>	&^~"N"~"n&N.~NN	^		N	N>.>>		~		~n^N	n	^N.>
^
	N	>
.
 

 ~">&~&
.
 

^6.&(.**L.*Z\>DKxK0hh,,,W%h'	h'	n-	

/


/
/F/"L.03<3"\>.'F'"L. ,L. &
\>
 
 
]
 
383$

$~.,>,>8>.>N>BJXJ$~[[B
!+H!+Nm9m9f+&x+&Z-?f-?` '8 F((V7HB!'8!H*(*Z''8'T%7H%P''R/('8/(jf	
-	
	
(	
	
&	
	
1	
	
0	
	
7	
	
0	
	
>	X0hX0|8X8.
"(
"&Q1$Q1f		*>5"E"l"H3B|3Bl,<,^>1<1h%%P33l6L6r<,\>L:!|!H<2##L<D!L!H\4|0++\\"
<
L*|(L4*|(<*\.<0<6.l.b-\-`0|0dL(L2:''V<BxIhxI|-(-<3E83EtEQhEQXC/(C/R7H7J-8-$**.H.$65h65z
88
8 +(h+(b*)*)b=/=/~))0eDXeDP.x.@
BX
B (0;h;zHMMOr