HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/__pycache__/test_argparse.cpython-310.opt-2.pyc
o

�iW��@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl	m
Z
Gdd�dej�ZGdd�de	j�ZGdd	�d	e�ZGd
d�de�ZGdd
�d
e�ZGdd�de�Zdd�ZGdd�de
j�ZGdd�de�ZefZedei�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd �d e�Z"Gd!d"�d"e�Z#Gd#d$�d$e�Z$Gd%d&�d&e�Z%Gd'd(�d(e�Z&Gd)d*�d*e�Z'Gd+d,�d,e�Z(Gd-d.�d.e�Z)Gd/d0�d0e�Z*Gd1d2�d2e�Z+Gd3d4�d4e�Z,Gd5d6�d6e�Z-Gd7d8�d8e�Z.Gd9d:�d:e�Z/Gd;d<�d<e�Z0Gd=d>�d>e�Z1Gd?d@�d@e�Z2GdAdB�dBe�Z3GdCdD�dDe�Z4GdEdF�dFe�Z5GdGdH�dHe�Z6GdIdJ�dJe�Z7GdKdL�dLe�Z8GdMdN�dNe�Z9GdOdP�dPe�Z:GdQdR�dRe�Z;GdSdT�dTe�Z<GdUdV�dVe�Z=GdWdX�dXe�Z>GdYdZ�dZe�Z?Gd[d\�d\e�Z@Gd]d^�d^e�ZAGd_d`�d`e�ZBGdadb�dbe�ZCGdcdd�dde�ZDGdedf�dfe�ZEGdgdh�dhe�ZFGdidj�dje�ZGGdkdl�dle�ZHGdmdn�dne�ZIGdodp�dpe�ZJGdqdr�dre�ZKGdsdt�dte�ZLGdudv�dve�ZMGdwdx�dxe�ZNGdydz�dze�ZOGd{d|�d|e�ZPGd}d~�d~e�ZQGdd��d�e�ZRGd�d��d�e�ZSGd�d��d�e�ZTGd�d��d�e�ZUGd�d��d�e�ZVGd�d��d�e�ZWGd�d��d�e�ZXGd�d��d�e�ZYGd�d��d�e�ZZGd�d��d�e�Z[Gd�d��d�e�Z\Gd�d��d�e�Z]Gd�d��d�e�Z^Gd�d��d�e�Z_Gd�d��d�e�Z`Gd�d��d�e�ZaGd�d��d�e�ZbGd�d��d�e�ZcGd�d��d�e�ZdGd�d��d�e�ZeGd�d��d�e�ZfGd�d��d�e�ZgGd�d��d�e�ZhGd�d��d�e�ZiGd�d��d�e�ZjGd�d��d�e�ZkGd�d��d�e�ZlGd�d��d�e�ZmGd�d��d�e�ZnGd�d��d�e�ZoGd�d��d�e�ZpGd�d��d�ee�ZqGd�d��d�ee�ZrGd�d„d�e�Zse�Zte�ZuGd�dĄdăZvevdŃZwevdƃZxevdǃZyevdȃZzevdɃZ{evdʃZ|Gd�d̄d�e�Z}Gd�d΄d�ee�Z~Gd�dЄd�ee�ZGd�d҄d�ee�Z�Gd�dԄd�e�Z�e	��e�edՃ�o�e���dkd֡Gd�d؄d�ee��Z�e	��e�edՃ�o�e���dkd֡Gd�dڄd�ee��Z�e	��e�edՃ�o�e���dkd֡Gd�d܄d�ee��Z�e	��e�edՃ�o�e���dkd֡Gd�dބd�e���Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d�d�e�Z�Gd�d��d�e�Z�Gd�d��d�e�Z�Gd�d��d�e�Z�Gd�d��d�e�e�Z�Gd�d��d�e�e�Z�Gd��d��de�e�Z�G�d�d��de�e�Z�G�d�d��de�e�Z�G�d�d��de�e�Z�G�d�d��de�e�Z�G�d	�d
��d
e�e�Z�G�d�d��de�e�Z�G�d
�d��de�Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d ��d e�Z�G�d!�d"��d"e�Z�G�d#�d$��d$e�Z�G�d%�d&��d&e�Z�efZe��d'ei�Z�G�d(�d)��d)e��Z�G�d*�d+��d+e��Z�G�d,�d-��d-e��Z�G�d.�d/��d/e��Z�G�d0�d1��d1e��Z�G�d2�d3��d3e��Z�G�d4�d5��d5e��Z�G�d6�d7��d7e��Z�G�d8�d9��d9e��Z�G�d:�d;��d;e��Z�G�d<�d=��d=e��Z�G�d>�d?��d?e��Z�G�d@�dA��dAe��Z�G�dB�dC��dCe��Z�G�dD�dE��dEe��Z�G�dF�dG��dGe��Z�G�dH�dI��dIe��Z�G�dJ�dK��dKe��Z�G�dL�dM��dMe��Z�G�dN�dO��dOe��Z�G�dP�dQ��dQe��Z�G�dR�dS��dSe��Z�G�dT�dU��dUe��Z�G�dV�dW��dWe��Z�G�dX�dY��dYe��Z�G�dZ�d[��d[e��Z�G�d\�d]��d]e��Z�G�d^�d_��d_e��Z�G�d`�da��dae��Z�G�db�dc��dce��Z�G�dd�de��dee��Z�G�df�dg��dge��Z�G�dh�di��die��Z�G�dj�dk��dke��Z�G�dl�dm��dme��Z�G�dn�do��doe��Z�G�dp�dq��dqe��Z�G�dr�ds��dse��Z�G�dt�du��due�Z�G�dv�dw��dwe�Z�G�dx�dy��dye�Z�G�dz�d{��d{e�Z�G�d|�d}��d}e�Z�G�d~�d��de�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�G�d��d���d�e�Z�d��d��Z�e�d�k�r�e	��dSdS(��N)�	os_helper)�mockcs(eZdZ	d�fdd�	Zdd�Z�ZS)�StdIOBuffer��
cs,|�d�}t�jt�t�|��d|d�dS)N�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�selfZ
initial_valuer��	__class__��//usr/local/lib/python3.10/test/test_argparse.pyrs

�zStdIOBuffer.__init__cCs|��|jj���d�S)Nr)�flush�buffer�raw�getvalue�decode�rrrrr szStdIOBuffer.getvalue)rr)�__name__�
__module__�__qualname__rr�
__classcell__rrrrrsrc@�eZdZdd�ZdS)�TestCasecCs t��}d|d<|�|j�dS)NZ80�COLUMNS)r�EnvironmentVarGuard�
addCleanup�__exit__�r�envrrr�setUp'szTestCase.setUpN)rrrr&rrrrr%�rc@�,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TempDirMixincCs$t��|_t��|_t�|j�dS�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirrrrrr&2s

zTempDirMixin.setUpcCs^t�|j�tj|jdd�D]\}}}|D]}t�tj�|j|�tj	�qqt
�|jd�dS)NF)�topdownT)r.r1r0�walkr-�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�namerrr�tearDown7s�zTempDirMixin.tearDowncCsNtj�|j|�}t|ddd��}|�|�Wd�|S1s wY|S)N�wr��encoding)r.r5r6r-�open�write)r�filenameZ	file_path�filerrr�create_writable_file>s
��z!TempDirMixin.create_writable_filecCst�|�|�tj�dSr*)r.r4rGr7�S_IREAD)rrErrr�create_readonly_fileDsz!TempDirMixin.create_readonly_fileN)rrrr&r?rGrIrrrrr)0s
r)c@r)�SigcOs||_||_dSr*)�args�kwargs�rrKrLrrrrIs
zSig.__init__N�rrrrrrrrrJGr'rJc@�$eZdZdd�Zdd�Zdd�ZdS)�NScKs|j�|�dSr*)�__dict__�update)rrLrrrrP�zNS.__init__cCs4t|j���}d�dd�|D��}dt|�j|fS)Nz, cSsg|]}d|�qS)z%s=%rr)�.0�tuprrr�
<listcomp>UszNS.__repr__.<locals>.<listcomp>z%s(%s))�sortedrQ�itemsr6�typer)rZsorted_itemsZ	kwarg_strrrr�__repr__SszNS.__repr__cCst|�t|�kSr*)�vars�r�otherrrr�__eq__XrSz	NS.__eq__N)rrrrrZr^rrrrrPNsrPc@�eZdZddd�ZdS)�ArgumentParserErrorNcCs,t�||||�||_||_||_||_dSr*)�	Exceptionr�message�stdout�stderr�
error_code)rrbrcrdrerrrr^s

zArgumentParserError.__init__)NNNrNrrrrr`\�r`c
OsFttjt�sttjt�r||i|��Stj}tj}t�t_t�t_zzzX||i|��}tt|��D]@}t||�}|tjurCt|||�q0|tjj	urTt||t|dt
��q0|tjur`t|||�q0|tjj	urpt||t|dt��q0|WW|t_|t_Sty�}z|j
}	tj��}
tj��}td|
||	�d�d}~ww|t_|t_w)Nr�
SystemExit)�
isinstance�sysrdrrc�listr[�getattr�setattrr�BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELrg�coderr`)�
parse_argsrKrLZ
old_stdoutZ
old_stderr�result�key�attr�erorcrdrrr�stderr_to_parser_errorfsH


��

����rucs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�ErrorRaisingArgumentParserc�"tt|�j}t|g|�Ri|��Sr*)r
rvrpru)rrKrLrprrrrp��z%ErrorRaisingArgumentParser.parse_argscrwr*)r
rv�exitru)rrKrLryrrrry�rxzErrorRaisingArgumentParser.exitcrwr*)r
rv�errorru)rrKrLrzrrrrz�rxz ErrorRaisingArgumentParser.error)rrrrpryrzrrrrrrv�srvc@�eZdZ	dd�ZdS)�ParserTesterMetaclasscCs�|dkrdSt|d�st�|_t|d�st|_dd�}dd�}dd	�}d
d�}dd
�}Gdd�dt�}	|||fD]}
||fD]}|	||
|�q>q8dS)N�ParserTestCase�parser_signature�parser_classcSs$	|D]}|j|ji|j��qdSr*)�add_argumentrKrL)�parser�argument_signatures�sigrrr�	no_groups�s�z1ParserTesterMetaclass.__init__.<locals>.no_groupscSs.	|�d�}|D]}|j|ji|j��qdS)N�foo)�add_argument_groupr�rKrL)r�r��groupr�rrr�	one_group�s

�z1ParserTesterMetaclass.__init__.<locals>.one_groupcSs:	t|�D]\}}|�d|�}|j|ji|j��qdS)Nzfoo:%i)�	enumerater�r�rKrL)r�r��ir�r�rrr�many_groups�s
�z3ParserTesterMetaclass.__init__.<locals>.many_groupscSs	|�|�Sr*)rp)r�rKrrr�listargs�s
z0ParserTesterMetaclass.__init__.<locals>.listargscSs2	tj}|dg|t_z|��W|t_S|t_w)Nr)ri�argvrp)r�rKZold_sys_argvrrr�sysargs�sz/ParserTesterMetaclass.__init__.<locals>.sysargsc@r()
z0ParserTesterMetaclass.__init__.<locals>.AddTestsc	Ss�||_||_|jj}|jj}|j|jfD]*}|j}|||f}d�|�}	|fdd�}
z|	|
_Wn	ty7Ynwt||	|
�qdS)N�_cS�||�dSr*r�r�	test_funcrrr�wrapper��zJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper)�_add_arguments�_parse_argsr�
test_failures�test_successesr6�	TypeErrorrl)rZ
tester_cls�
add_argumentsrpZadd_arguments_nameZparse_args_namer��	func_name�names�	test_namer�rrrr�s 


��z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__cSs2|jj}|jj}|j|i|��}|�||j�|Sr*)r~rKrLrr�r�)r�testerrKrLr�rrr�_get_parser�s
z<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parserc	SsZ|�|�}|jD]"}|��}|jt|d��
|�|�Wd�n1s%wYqdS)N)�msg)r��failures�split�assertRaisesr`rp)rr�r��args_strrKrrrr��s

���z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failurescSsH|�|�}|jD]\}}t|t�r|��}|�||�}|�||�qdSr*)r��	successesrh�strr�r��assertEqual)rr�r�rK�expected_nsZ	result_nsrrrr��s

�z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successesN)rrrrr�r�r�rrrr�AddTests�s
r�)�hasattrrJr~rvr�object)�clsr>�bases�bodydictr�r�r�r�r�r�r�rprrrr�s"

	-��zParserTesterMetaclass.__init__NrNrrrrr|�sr|r}c@�`eZdZ	ed�gZgd�Zdedd�fdedd�fdedd�fd	ed
d�fded
d�fgZdS)�TestOptionalsSingleDash�-x)r��a�--foo�-x --fooz-x -yrN��x�-x ar��-xaz-x -1�-1z-x-1�rrrrJr�r�rPr�rrrrr��
�r�c@s�eZdZ	eddd�edddd�ed�gZgd	�Zd
edddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fgZdS)�TestOptionalsSingleDashCombinedr��
store_true��actionz-yyy�store_const�*�r��const�-z)r�r�r�r�z-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=rFN)r��yyy�zT�-zar��-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar�rrrrr�!s(
��r�c@s`eZdZ	ed�gZgd�Zdedd�fdedd�fded	d�fd
edd�fdedd�fgZdS)�TestOptionalsSingleDashLong�-foo)r�r�r�z
-foo --fooz-foo -y�-fooarN�r�z-foo ar�z-foo -1r�z-fo a�-f ar�rrrrr�;r�r�c@s�eZdZ	ed�ed�ed�gZgd�Zdedddd�fded	ddd�fd
ed	ddd�fdedddd�fd
edddd�fdedd	dd�fdeddd	d�fgZdS)�&TestOptionalsSingleDashSubsetAmbiguous�-f�-foobar�-foorab)r�r��-fo�-foo bz-foobz-foobaz-foorarN)�f�foobar�foorabr�r��-fa�-foaZoar�Zooa�	-foobar a�	-foorab ar�rrrrr�Is�r�c@s�eZdZ	ed�ed�gZgd�Zdeddd�fdeddd�fd	eddd�fd
eddd�fdeddd�fdeddd�fd
eddd�fgZdS)� TestOptionalsSingleDashAmbiguousr�r�)r�r�r�r�r�r�r�rN)r�r�z-foob ar�z-foor az-fooba az-foora ar�r�r�rrrrr�Ys�r�c@sXeZdZ	eddd�gZgd�Zdedd�fded	d�fd
ed	d�fdedd�fgZdS)
�TestOptionalsNumericr��one��dest)r�r�z-1 --fooz-1 -yz-1 -1z-1 -2rN)r�z-1 ar�z-1az-1-2�-2r�rrrrr�is�r�c@r�)�TestOptionalsDoubleDashr�)r�r�r�r�z--foo -xz--foo --barrNr�z--foo ar�z--foo=az
--foo -2.5z-2.5z
--foo=-2.5r�rrrrr�vr�r�c
@s�eZdZ	eddd�ed�gZgd�Zdeddd	�fd
eddd	�fded
dd	�fded
dd	�fded
dd	�fded
dd	�fgZdS)�#TestOptionalsDoubleDashPartialMatch�--badgerr�r�z--bat)�--bar�--b�--ba�--b=2z--ba=4�	--badge 5rFN)�badgerZbatz--bat X�X�--badT�--badg�--badger�rrrrr��s
��r�c@s�eZdZ	eddd�ed�gZgd�Zdeddd	�fd
eddd	�fdeddd	�fd
eddd	�fdeddd	�fdeddd	�fdeddd	�fgZdS)�"TestOptionalsDoubleDashPrefixMatchr�r�r�r�)r�r�r�r�r�rFN)r�Zbaz--ba Xr�z--ba=Xr�Tr�r�r�rrrrr��s
��r�c@s�eZdZ	eddd�ed�edddd�gZgd	�Zd
edddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fdedddd
�fgZdS)�TestOptionalsSingleDoubleDashr�r�r�r��-bazr�r�r�)r��-fbarz-fbazz-bazf�-b B�BrFN�r��bar�bazTz--ba Br�z
-f --bar Bz-f -bz-ba -fr�rrrrr��s
��r�c@s�eZdZ	eddd�Zeddd�ed�edd	d
d�gZgd�Zd
edddd�fdedddd�fdedddd�fdedddd�fdeddd
d�fdeddd
d�fgZdS)�!TestOptionalsAlternatePrefixChars�+:/F��prefix_chars�add_help�+fr�r��::bar�/bazr�r�r�)r�r�r�r�r��--bar Br��-h�--helpz+hz::helpz/helprNr�T�::ba Br��
+f ::bar B�+f /b�/ba +f�	rrrrJr~r�r�rPr�rrrrr��s
��r�c@s�eZdZ	eddd�Zeddd�ed�edd	d
d�gZgd�Zd
edddd�fdedddd�fdedddd�fdedddd�fdeddd
d�fdeddd
d�fgZdS)�*TestOptionalsAlternatePrefixCharsAddedHelpr�Tr�r�r�r�r�r�r�r�r�)r�r�r�r�r�rr�rFNr�rr�rrrrrrrrr�s
��rc	@s�eZdZ	eddd�Zeddd�eddd�eddd�gZgd	�Zd
edddd�fdedddd�fd
edddd�fdedddd�fgZdS)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-Fr�r�r�r�z+yz+z)�-wz-xyzz+xr�z+xyzr�r��yr�Tz+y -xz+yz -xNrrrrrr	�s


��r	c@sjeZdZ	edddddd�gZgd�Zded	d
�fdedd
�fdedd
�fdedd
�fdedd
�fgZdS)
�TestOptionalsShortLong�-vz	--verbosez-nz--noisyr�r�)z
--x --verbosez-Nr�z-v xrF)�verboseTNr�rrrrr
�s��r
c@sdeZdZ	ed�eddd�gZdgZdeddd	�fd
eddd	�fded
dd	�fdeddd	�fgZdS)�TestOptionalsDestz	--foo-bar�--baz�zabbazr�r�z--foo-bar fr�N)Zfoo_barrz--baz g�gz--foo-bar h --baz i�hr�z--baz j --foo-bar k�k�jr�rrrrr
s�rc@sVeZdZ	ed�eddd�gZdgZdeddd�fd	ed
dd�fdeddd�fgZdS)
�TestOptionalsDefaultr�r�r���defaultr�rN�r�rz-xxr�z-yyrr�rrrrrs�rc@s<eZdZ	ed�gZddgZdedd�fdedd�fgZdS)�TestOptionalsNargsDefaultr�r�rNr�r�r�rrrrr&s
�rc@sBeZdZ	eddd�gZddgZdedd�fdedgd�fgZdS)	�TestOptionalsNargs1r����nargsr�rNr�r�r�rrrrr1s�rc@sDeZdZ	eddd�gZgd�Zdedd�fdegd	�d�fgZdS)
�TestOptionalsNargs3r��r)r�r�r��-x a b�a -x�a -x brNr�z-x a b c�r��b�cr�rrrrr <s�r c@s�eZdZ	eddd�edddd�edddd	�ed
deddd
�gZdgZdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fd
eddddd�fdeddddd�fg	ZdS)�TestOptionalsNargsOptionalr
�?rr�r�)rr�r��spam�rrr��42Z84)rrYr�r�2rN�T�r@r�rr�z-w 2z-x 2z-y 2z-z 2��	rrrrJ�intr�r�rPr�rrrrr(Gs$
��r(c@s�eZdZ	eddd�edddd�gZdgZded	dd
�fdegdd
�fdedgdd
�fdedd
gdd
�fded	gd
�fded	dgd
�fded	dd
gd
�fgZd	S)�TestOptionalsNargsZeroOrMorer��*rr�r*r+r�rNrr�r"r&�-y a�-y a br�rrrrr3^s
��r3c	@s�eZdZ	eddd�edddd�gZgd�Zded	dd
�fdedgdd
�fd
eddgdd
�fded	dgd
�fded	ddgd
�fgZd	S)�TestOptionalsNargsOneOrMorer��+rr�r*r+)r�r�r�r#za -y brNrr�r�r"r&r5r6r�rrrrr7qs
��r7c
@s�eZdZ	eddd�edeed�d�gZgd�Zded	d	d
�fdedd	d
�fd
edd	d
�fded	dd
�fded	dd
�fdeddd
�fgZ	d	S)�TestOptionalsChoicesr��abc��choicesz-g��rYr<)r�z-f dz-fadz-gaz-g 6rN)r�rr�r�z-f cr'z-g 0rz-g 03r!z-fb -g4r&��
rrrrJr2�ranger�r�rPr�rrrrr9�s
��r9c@sBeZdZ	ededd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsRequiredr�T�rY�requiredr�r�-x 1rr�z-x42r�Nr1rrrrrB�s��rBc@s@eZdZ	eddd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsActionStorer��storer�r�r#rNr�z-xfoor�r�rrrrrF���rFc@s@eZdZ	edded�gZdgZdedd�fdeed�fgZdS)�TestOptionalsActionStoreConstr�r�r�r�rN�r)	rrrrJr�r�r�rPr�rrrrrI�s�rIc@�@eZdZ	eddd�gZgd�Zdedd�fdedd�fgZd	S)
�TestOptionalsActionStoreFalser��store_falser�)r�r�r�rT)r�FNr�rrrrrL�rHrLc@rK)
�TestOptionalsActionStoreTruez--appler�r�)r�z	--apple=bz	--apple brF)ZappleTNr�rrrrrN�rHrNc@sneZdZ	edejd�gZddgZdedd�fdedd�fd	ed
d�fded
d�fdedd�fgZ	d
d�Z
dS)�TestBooleanOptionalActionr�r�z	--foo barz	--foo=barrNr�T�--no-fooFz--foo --no-fooz--no-foo --foocCsZt��}|�t��}|jddtjd�Wd�n1swY|�dt|j��dS)Nr�T�r�r�z*got an unexpected keyword argument 'const')	�argparse�ArgumentParserr�r�r��BooleanOptionalAction�assertInr��	exception�rr��cmrrr�
test_const�s
�z$TestBooleanOptionalAction.test_const)rrrrJrRrTr�r�rPr�rYrrrrrO�s�rOc@sBeZdZ	eddejd�gZdgZdedd�fdedd�fgZ	dS)	�!TestBooleanOptionalActionRequiredr�T)rDr�rr�rPFN)
rrrrJrRrTr�r�rPr�rrrrrZ�s��rZc@sReZdZ	eddd�gZgd�Zdedd�fded	gd�fd
ed	dgd�fgZdS)�TestOptionalsActionAppendr�appendr��r�r�a --baz�	--baz a brN�r��--baz ar��--baz a --baz br&r�rrrrr[�s�r[c@sZeZdZ	edddgd�gZgd�Zdedgd�fdedd	gd�fd
egd�d�fgZdS)
�$TestOptionalsActionAppendWithDefaultrr\r��r�rr]rr`rar�rb)r�r�r&Nr�rrrrrc�s�rcc@sdeZdZ	edded�edddd�gZgd�Zd	ed
d�fdeegd�fdeed
edgd�fgZd
S)�TestOptionalsActionAppendConst�-b�append_constr��-cr\r&�r�r��r�rhza -cz-bxz-b xrN�r&�-b -cx -b -cyzr��yz�	rrrrJrar�r�rPr�rrrrres��rec	@sneZdZ	eddedgd�edddd�gZgd	�Zd
edgd�fdedegd�fdeded
edgd�fgZdS)�)TestOptionalsActionAppendConstWithDefaultrfrgr�)r�r�rrhr\r&rirjrrkrlr�rmNrnrrrrros��roc@s@eZdZ	eddd�gZgd�Zdedd�fdedd�fgZdS)	�TestOptionalsActionCountr��countr�)r�r�z-x bz	-x a -x brNr�rr�rrrrrp"rHrpc	@steZdZ	ed�ed�eddd�gZddgZded	d	d
d�fded
d	d
d�fded	dd
d�fdedd	dd�fgZd	S)�"TestOptionalsAllowLongAbbreviationr�z--foobazz--foobler�r�z--foob 5z--foobrNF)r�ZfoobazZfooblez--foo 7�7z	--fooba ar�z--foobl --foo grTr�rrrrrr-s
��rrc@sneZdZ	edd�Zed�eddd�ed�gZgd�Zd	ed
dd
d�fded
dd
d�fdedddd�fgZd
S)�%TestOptionalsDisallowLongAbbreviationF��allow_abbrevr�z--foodler�r�z--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rN�r�ZfoodleZfoonlyz--foo 3�3z--foonly 7 --foodle --foo 2r-Trsrrrrrrt>s

��rtc@speZdZ	eddd�Zed�eddd�ed�gZgd	�Zd
edddd�fd
edddd�fdedddd�fgZdS)�0TestOptionalsDisallowLongAbbreviationPrefixCharsr8F�r�rvz++fooz++foodler�r�z++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNrwz++foo 3rxz++foonly 7 ++foodle ++foo 2r-TrsrrrrrryOs
��ryc
@s�eZdZ	edd�Zed�eddd�gZddgZded	d	d
�fdedd	d
�fd
edd	d
�fded	dd
�fdeddd
�fdeddd
�fgZd	S)�/TestDisallowLongAbbreviationAllowsShortGroupingFruz-rrhrqr�z-c -rrN��rr'z-rar�z-rcc�ccz-ccr0z-cc -raz-ccrccrrrrrr{`s

��r{c
@s�eZdZ	eddd�Zed�eddd�gZddgZd	ed
d
d�fded
d
d�fdedd
d�fded
dd�fded
dd�fdeddd�fgZd
S)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr8Frzz+rz+crqr�z+c +rrNr|z+rar�z+rccr~z+ccr0z+cc +raz+ccrccrrrrrrss
��rc@s0eZdZ	ed�gZgd�Zdedd�fgZdS)�TestPositionalsNargsNoner��rr��a br�r�Nr�rrrrr��s
�r�c@s6eZdZ	eddd�gZgd�Zdedgd�fgZdS)�TestPositionalsNargs1r�rrr�r�r�Nr�rrrrr��s�r�c@s8eZdZ	eddd�gZgd�Zdeddgd�fgZd	S)
�TestPositionalsNargs2r�r0r)rr�r��a b cr�r�r&r�Nr�rrrrr��s�r�c@sPeZdZ	eddd�gZdgZdegd�fdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsZeroOrMorer�r4rr�rr�r�r�r&Nr�rrrrr��s�r�c@sReZdZ	edddd�gZdgZdedd�fdedgd�fd	edd
gd�fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultr�r4r�r+r�rr�r�r�r&Nr�rrrrr��s�r�c@sFeZdZ	eddd�gZddgZdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsOneOrMorer�r8rrr�r�r�r�r&Nr�rrrrr��s�r�c@s@eZdZ	eddd�gZddgZdedd�fd	ed	d�fgZdS)
�TestPositionalsNargsOptionalr�r)rr�r�rNr�r�r�rrrrr��rHr�c@sBeZdZ	edddd�gZddgZdedd�fd	ed	d�fgZd
S)�#TestPositionalsNargsOptionalDefaultr�r)r�r+r�r�rr�r�Nr�rrrrr��s�r�c@sDeZdZ	eddedd�gZgd�Zdedd�fd	ed
d�fgZdS)�,TestPositionalsNargsOptionalConvertedDefaultr�r)r,)rrYr)r�r��1 2rr�r��1rNr1rrrrr��s��r�c@s8eZdZ	ed�ed�gZgd�Zdeddd�fgZdS)	�TestPositionalsNargsNoneNoner�r�)rr�r�r�r�r�r&�r�r�Nr�rrrrr��s�r�c@s>eZdZ	ed�eddd�gZgd�Zdeddgd	�fgZd
S)�TestPositionalsNargsNone1r�r�rr)rr�r�r�r�r�r&r�Nr�rrrrr��s�r�c@s@eZdZ	eddd�ed�gZgd�Zdeddgd	d
�fgZdS)�TestPositionalsNargs2Noner�r0rr��rr�r�r��a b c dr�r�r&r'r�Nr�rrrrr�s�r�c@s^eZdZ	ed�eddd�gZddgZdedgd�fd	edd
gd�fdedd
dgd�fgZd
S)�"TestPositionalsNargsNoneZeroOrMorer�r�r4rrr�r�r�r�r&r�r'Nr�rrrrr���r�c@sPeZdZ	ed�eddd�gZgd�Zdeddgd	�fd
edddgd	�fgZdS)
�!TestPositionalsNargsNoneOneOrMorer�r�r8r�rr�r�r�r�r&r�r�r'Nr�rrrrr���r�c@sJeZdZ	ed�eddd�gZgd�Zdeddd�fd	edd
d�fgZdS)� TestPositionalsNargsNoneOptionalr�r�r)r�rr�r�r�Nr�r�r&r�rrrrr�%s�r�c@s^eZdZ	eddd�ed�gZddgZdegdd�fd	edgd
d�fdedd
gdd�fgZd
S)�"TestPositionalsNargsZeroOrMoreNoner�r4rr�rr�r�r�r�r&r�r'Nr�rrrrr�0r�r�c@sPeZdZ	eddd�ed�gZgd�Zdedgdd	�fd
eddgdd	�fgZdS)
�!TestPositionalsNargsOneOrMoreNoner�r8rr�r�r�r�r&r�r�r'Nr�rrrrr�<r�r�c@sLeZdZ	edddd�ed�gZgd�Zdeddd�fd	edd
d�fgZdS)� TestPositionalsNargsOptionalNoner�r)r�r+r�r�r�r�r�r&Nr�rrrrr�Gs�r�c@sXeZdZ	eddd�eddd�gZgd�Zdedd	ggd
�fdedd	gdgd
�fgZd
S)�TestPositionalsNargs2ZeroOrMorer�r0rr�r4r�r�r�r&r�r�r'Nr�rrrrr�R��r�c@sFeZdZ	eddd�eddd�gZgd�Zdedd	gd
gd�fgZdS)
�TestPositionalsNargs2OneOrMorer�r0rr�r8)rr�r�r�r�r�r&r'r�Nr�rrrrr�]s�r�c@sVeZdZ	eddd�eddd�gZgd�Zdedd	gd
d�fdedd	gd
d�fgZd
S)�TestPositionalsNargs2Optionalr�r0rr�r))rr�r�r�r�r�r&Nr�r�r'r�rrrrr�gs�r�c@sheZdZ	eddd�eddd�gZddgZdegdgd	�fd
edgdgd	�fdeddgd
gd	�fgZdS)�TestPositionalsNargsZeroOrMore1r�r4rr�rrr�r�r�r�r&r�r'Nr�rrrrr�rs�r�c@sXeZdZ	eddd�eddd�gZgd�Zdedgd	gd
�fdedd	gdgd
�fgZd
S)�TestPositionalsNargsOneOrMore1r�r8rr�rr�r�r�r&r�r�r'Nr�rrrrr�~r�r�c@sReZdZ	eddd�eddd�gZgd�Zdeddgd	�fd
eddgd	�fgZdS)�TestPositionalsNargsOptional1r�r)rr�rr�r�Nr�r�r&r�rrrrr��s�r�c@s^eZdZ	ed�eddd�eddd�gZgd�Zded	gd
gd�fded	d
gd
gd�fgZdS)�#TestPositionalsNargsNoneZeroOrMore1r�r�r4rr�rr�r�r�r&�r�r�r�r�r'Nr�rrrrr��s

��r�c@sbeZdZ	ed�eddd�eddd�gZgd�Zded	d
gdgd�fd
ed	d
dgdgd�fgZdS)�"TestPositionalsNargsNoneOneOrMore1r�r�r8rr�r)rr�r�r&r�r�r&r'r�r��dNr�rrrrr��s

��r�c@s^eZdZ	ed�edddd�eddd�gZgd	�Zd
edddgd
�fdedddgd
�fgZdS)�!TestPositionalsNargsNoneOptional1r�r�r)��?r+r�rrr�r�r�r&r�r�r'Nr�rrrrr��s
��r�c@s^eZdZ	eddd�edddd�gZddgZd	ed
dd�fdeddd�fd
eddd�fgZd
S)�$TestPositionalsNargsOptionalOptionalr�r)rr�r�r+r�r�rNr�r�r�r&r�rrrrr��s
��r�c@sneZdZ	eddd�eddd�gZdgZdedgd	�fd
ed
gd	�fded
dgd	�fd
ed
ddgd	�fgZdS)�&TestPositionalsNargsOptionalZeroOrMorer�r)rr�r4r�rNr�r�r�r&r�r'r�rrrrr��s�r�c@sdeZdZ	eddd�eddd�gZddgZded	dgd
�fdeddgd
�fd
edddgd
�fgZd	S)�%TestPositionalsNargsOptionalOneOrMorer�r)rr�r8rr�r�Nr�r�r&r�r'r�rrrrr��s�r�c@sDeZdZ	eded�d�gZgd�Zdedd�fdedd�fgZdS)	�TestPositionalsChoicesStringr*Zabcdefgr;�rr�rr,Zefr��r*rN)	rrrrJ�setr�r�rPr�rrrrr��s�r�c@sFeZdZ	edeed�d�gZgd�Zdedd�fded	d�fgZ	d
S)�TestPositionalsChoicesIntr*�r>r��4r?r��15�Nr@rrrrr��s�r�c@sHeZdZ	eddd�edddd�gZgd�Zdedd	d
ggd�fgZdS)
�TestPositionalsActionAppendr*r\r�r0)r�rr�r�r�r&r'r�Nr�rrrrr��s
��r�c@sleZdZ	eddd�edddd�gZdd	gZd
eddd
�fdeddd
�fdeddd
�fdeddd
�fgZdS)�"TestOptionalsNumericAndPositionalsr�r)rz-4rr��r�r�r�z-315rNFrr�Tz-4 ar�rrrrr�s
��r�c	@sxeZdZ	eddd�edddd�gZdgZd	ed
dd�fd
ed
dd�fdeddd�fded
dd�fdeddd�fgZd
S)�(TestOptionalsAlmostNumericAndPositionalsr�r)rz-k4rr�r�z-k3rNFrr�r�Tz-k4 ar�rrrrr�s
��r�c@s�eZdZeddd�edddd�gZdgZdgedd	d
�fdgedd	d
�fdgedd	d
�fddged	dd
�fddged	dd
�fddged	dd
�fd
ged	dd
�fdged	dd
�fgZd	S)�$TestEmptyAndSpaceContainingArgumentsr�r)rr�z--yyyrr�rNrza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�rrrrr�0s
��r�c@s�eZdZedd�Zeddddd�edd	ed
d�edd
dd�gZddgZdedd
dd�fdedd
dd�fdedd
dd�fdedddd�fdedd
dd�fdedd
dd�fgZ	dS)� TestPrefixCharacterOnlyArgumentsz-+�r��-r�r)r�)r�rr�r8rr�)r�rYrz-+-r�r�r�r�z+ -rNFrz- Xr�z+ -3���Tz- ===z===)
rrrrJr~r2r�r�rPr�rrrrr�Cs
��r�c@s�eZdZ	eddd�eddd�gZgZdedgd�fdeggd�fded	ggd�fd
ed	gdgd�fd	edd	gd�fdegd	gd�fd
edgd	gd�fgZdS)�TestNargsZeroOrMorer�r4rrrNrr�r�z	-x a -- br&r#r$r�rrrrr�Vs�r�c	@s|eZdZ	ed�eddd�ed�gZgd�Zdedgdd	�fd
edgdd	�fdedgd
�dd	�fdedddgdd	�fgZdS)�TestNargsRemainderr�r�...rr�)rr�z-z Zr�Nrz-z Z X�Z�
X A B -z Z)�Ar�r�r�z	X Y --foo�Yr�r�rrrrr�fs�r�c@s�eZdZ	eded�ededd�eddd�gZgd	�Zd
eddgd�fd
eddgd�fdedddgd�fdeddgd�fdeddgd�fdeddgd�fdedddgd�fdedddgd�fdedddgd�fdedddgd�fdedddgd�fgZdS)�TestOptionLiker��rYz-3r)rYr�r�r4r)
r�z-y2.5r�z-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z	-x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 arNrz-x 2.5�@z-x 2.5 ar�z-3.5��?z-3-.5g�z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 a)	rrrrJ�floatr�r�rPr�rrrrr�ss&

��r�c@s�eZdZ	eddejd�eddejd�eddejd�gZd	gZd
e�fdedd�fd
eddgd�fdedd�fdeddd�fdeddgdd�fgZ	dS)�TestDefaultSuppressr�r)r+r�r4rr�rdr�rr�r�r�r&r�Tr`r^�r�r�r_r�N)
rrrrJrR�SUPPRESSr�r�rPr�rrrrr��s��r�c@s�eZdZ	eejd�Zeddd�eddd�eddd	�gZd
gZde	�fde	dd
�fde	ddgd�fde	dd�fde	ddd�fde	ddgdd�fgZ
dS)�TestParserDefaultSuppress��argument_defaultr�r)rr�r4rr�r�r�rr�r�r�r&r�Tr`r^r�r_r�N)rrrrJrRr�r~r�r�rPr�rrrrr��s


��r�c@s�eZdZ	edd�Zedddd�eddd	�ed
dd	�edd
d�gZdgZdeddddd�fdeddddd�fdeddgddd�fdeddddd�fdeddddd�fdeddgddd�fgZdS)�TestParserDefault42r�r��	--version�version�1.0�r�r�r�r)rr�r4rr�r�r�r)r�r�r�r�r�r�r&Tr^r_Nrrrrrr��s 



��r�cs�eZdZ	�fdd�Zedd�Zed�ed�eddd	�gZgd
�Zdedd
dgd�fdedd
ddgd�fdeddd
gd�fdedd
dgd�fdeddddgd�fdedd
ddgd�fgd�edd
dgd�fgZ	�Z
S)�TestArgumentsFromFilec	s`tt|���gd�}|D] \}}t|ddd��
}|�|�Wd�n1s(wYq
dS)N)��helloz
hello world!
)�	recursivez-a
A
@hello)�invalidz@no-such-path
r@rrA)r
r�r&rCrD�rZ
file_textsr5�textrFrrrr&�s���zTestArgumentsFromFile.setUp�@��fromfile_prefix_chars�-ar�rr8r)rrfr�z@invalidz@missingzX YNr�r�)r�r�rz
X -a A Y Zr�r��@hello Xzhello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br�)r�rr�r�r)rrrr&rJr~r�r�rPr�rrrrrr��s"


��r�csbeZdZ	�fdd�ZGdd�de�ZeZedd�Zeddd	�gZ	gZ
d
egd�d�fgZ�Z
S)
�TestArgumentsFromFileConverterc	s^tt|���dg}|D] \}}t|ddd��
}|�|�Wd�n1s'wYqdS)Nr�r@rrA)r
r�r&rCrDr�rrrr&�s����z$TestArgumentsFromFileConverter.setUpc@r)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs$�|��D]
}|��sq|VqdSr*)r��strip)r�arg_line�argrrr�convert_arg_line_to_args�s��zWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrrr�rrrr�FromFileConverterArgumentParser�r'r�r�r�rr8rr�)r�zworld!r�rJ)rrrr&rvr�rrJr~r�r�rPr�rrrrrr��s	

��r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestFileTypeReprcCst�d�}|�dt|��dS)Nr}z
FileType('r')�rR�FileTyper��repr�rrYrrr�test_rs
zTestFileTypeRepr.test_rcCs t�dd�}|�dt|��dS)N�wbrzFileType('wb', 1)r�r�rrr�	test_wb_1szTestFileTypeRepr.test_wb_1cCs"tjddd�}|�dt|��dS)Nr}�latin_1rAz!FileType('r', encoding='latin_1')r�r�rrr�test_r_latinszTestFileTypeRepr.test_r_latincC�$tjdddd�}|�dt|��dS)Nr@�big5�ignore)rB�errorsz/FileType('w', encoding='big5', errors='ignore')r�r�rrr�test_w_big5_ignores�z#TestFileTypeRepr.test_w_big5_ignorecCr�)Nr}r�replace�r�z"FileType('r', 1, errors='replace')r�r�rrr�test_r_1_replace!sz!TestFileTypeRepr.test_r_1_replaceN)rrrr�r�r�r�r�rrrrr�sr�c@�eZdZdd�Zdd�ZdS)�StdStreamComparercCs<t�|�|_|dkrt|_dS|dkrt|_dSt�|_dS)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterrkrm�
backupattrrnr�)rrsrrrr+s

zStdStreamComparer.__init__cCs.z||�t�kWSty||jkYSwr*)rkri�AttributeErrorrr\rrrr^9s
�zStdStreamComparer.__eq__N�rrrrr^rrrrr�*sr��stdinrcrdzstdin.bufferr�r�c@s eZdZiZdd�Zdd�ZdS)�RFilecC�
||_dSr*�r>�rr>rrrrK�
zRFile.__init__cCs`||jvr|j|}n
|��}|j|<|��t|t�s"|�d�}|j|jko-|kSS)N�ascii)�seen�read�closerhr�rr>�rr]r�rrrr^Ns


zRFile.__eq__N)rrrrrr^rrrrrHsrc	s�eZdZ	�fdd�Zede��d�ede�d�d�gZgd�Zde	d	e
d�d
�fde	e
d�e
d�d
�fd
e	e
d�e
d�d
�fde	eed
�fde	d	e
d�d
�fgZ�Z
S)�
TestFileTypeRc	sjtt|���dD]$}ttj�|j|�ddd��
}|�|�Wd�n1s(wYq	|�	d�dS)Nr�r@rrA�readonly)
r
rr&rCr.r5r6r-rDrI�r�	file_namerFrrrr&\s���zTestFileTypeR.setUpr�r�r*r})r�rznon-existent-file.txtr�N�r�r*�
-x foo barr��
bar -x foo�-x - -r)rrrr&rJrRr�r�r�rPr�eq_stdinr�rrrrrrYs	��rcsNeZdZ	�fdd�Zede�d�dd�gZdgZde	e
d	�d
�fgZ�ZS)�TestFileTypeDefaultscs>tt|���ttj�|jd�ddd�}|�d�|�	�dS)N�goodr@rrA)
r
rr&rCr.r5r6r-rDr
)rrFrrrr&ss
zTestFileTypeDefaults.setUprhr}zno-file.txt�rYrrz-c goodr)r')
rrrr&rJrRr�r�r�rPrr�rrrrrrqs�rcs�eZdZ	�fdd�Zede�d�d�ede�d�d�gZddgZde	d	e
d�d
�fde	e
d�e
d�d
�fd
e	e
d�e
d�d
�fde	eed
�fgZ�Z
S)�TestFileTypeRBc	s`tt|���dD]$}ttj�|j|�ddd��
}|�|�Wd�n1s(wYq	dS)Nr�r@rrA)	r
rr&rCr.r5r6r-rDrrrrr&�s����zTestFileTypeRB.setUpr��rbr�r*rr�Nrrr�rr)rrrr&rJrRr�r�r�rPr�	eq_bstdinr�rrrrrr�s��rc@s"eZdZe�Zdd�Zdd�ZdS)�WFilecCrr*rrrrrr�r	zWFile.__init__cCsL||jvr d}d|jvr|�d�}|�|�|��|j�|�|j|jkS)NzCheck that file is writable.r&r
)r�moder	rDr
�addr>rrrrr^�s



zWFile.__eq__N)rrrr�rrr^rrrrr�sr�geteuidznon-root user requiredc	s�eZdZ	�fdd�Zede�d�d�ede�d�d�gZgd�Zde	d	e
d�d
�fde	d	e
d�d
�fde	e
d�e
d
�d
�fde	e
d�e
d
�d
�fde	eed
�fgZ�Z
S)�
TestFileTypeWc�"t���|�d�|�d�dS�Nr�writable�r
r&rIrGrrrrr&��

zTestFileTypeW.setUpr�r@r�r*)r�rrr�Nrr%rr�rr�rrrr&rJrRr�r�r�rPr�	eq_stdoutr�rrrrrr"�s��r"csreZdZ	�fdd�Zede�d�d�ede�d�d�gZgd�Zde	e
d	�e
d
�d�fde	eed�fgZ�Z
S)
�
TestFileTypeXcr#r$r&rrrrr&�r'zTestFileTypeX.setUpr�r�r�r*)r�rrr%rr�r�rrr(rrrrr*�s��r*c@s�eZdZ	ede�d�d�ede�d�d�gZddgZdede	d�d�fd	ee	d�e	d
�d�fdee	d�e	d
�d�fdee
e
d�fgZdS)
�TestFileTypeWBr�r�r�r*rr�Nrrr�rr)rrrrJrRr�r�r�rPr�
eq_bstdoutr�rrrrr+�s��r+c@sZeZdZ	ede�d�d�ede�d�d�gZdeed�ed�d�fd	ee	e	d�fgZ
d
S)�TestFileTypeXBr��xbr�r*rr�r�rrN)rrrrJrRr�r�rPrr,r�rrrrr-�s��r-c@r{)�TestFileTypeOpenArgsc	Cs�tj}|d�df|dd�df|ddd�df|d	d
d�df|dd
dd�dfg}t�d��}|D]\}}|d�|jdg|�R�q.Wd�dS1sKwYdS)Nr)r���NNr@r)r@rNNr�r�)r@r0Nr�r�r�rA)r�r0r�Nr�l1�strict)r@rr1r2z
builtins.openr�)rRr�rZpatchZassert_called_with)rZFT�cases�mrYrKrrr�test_open_args�s
��"�z#TestFileTypeOpenArgs.test_open_argsN)rrrr5rrrrr/��r/c@r{)�!TestFileTypeMissingInitializationcCs`t��}|�t��}|jdtjd�Wd�n1swY|�dtjft|j��dS)Nr�r�z<%r is a FileType class object, instance of it must be passed)	rRrSr��
ValueErrorr�r�r�r�rVrWrrr�tests���z&TestFileTypeMissingInitialization.testN�rrrr9rrrrr7	sr7c@s\eZdZ	eded�eded�gZgd�Zdeddd�fd	ed
dd�fded
dd�fgZ	d
S)�TestTypeCallablez--eggsr�r*)r�Z42jz--eggs az	--eggs 2iz--eggs=42 42r�gE@)�eggsr*z--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
rrrrJ�complexr�r�r�rPr�rrrrr;s

��r;c@sjeZdZ	Gdd�de�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZ	d
S)�TestTypeUserDefinedc@r�)zTestTypeUserDefined.MyTypecCrr*��value�rrArrrr/r	z#TestTypeUserDefined.MyType.__init__cC�t|�|jft|�|jfkSr*�rYrAr\rrrr^2�z!TestTypeUserDefined.MyType.__eq__Nrrrrr�MyType-�rFr�r�r*r$r&r�r�-xf gr�rN)
rrrrrFrJr�r�rPr�rrrrr?*s
	
��r?c@sheZdZ	Gdd�d�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZd
S)�TestTypeClassicClassc@r�)zTestTypeClassicClass.CcCrr*r@rBrrrrEr	zTestTypeClassicClass.C.__init__cCrCr*rDr\rrrr^HrEzTestTypeClassicClass.C.__eq__Nrrrrr�CCrGrJr�r�r*r$r&r�rrHr�rN)	rrrrJrJr�r�rPr�rrrrrI@s
	
��rIc@r{)�TestTypeRegistrationcCszdd�}t��}|�dd|�|jddd�|jddd�|�|�d���tdd	d
��|�|�d���td	dd
��dS)
NcSsd|S)Nzmy_type{%s}r��stringrrr�get_my_type[�z.TestTypeRegistration.test.<locals>.get_my_typerYZmy_typer�r�rr�z
my_type{1}rz-x 1 42zmy_type{42})rRrS�registerr�r�rpr�rP)rrNr�rrrr9Ys
�
�zTestTypeRegistration.testNr:rrrrrKVr6rKc@s�eZdZ	Gdd�dej�ZGdd�dej�Zeddeedd�ed	ee	d
dd�gZ
gZd
eddd�fdeddd�fdeddd�fdeddd�fgZ
dS)�TestActionUserDefinedc@r_)z$TestActionUserDefined.OptionalActionNc
Cspztdd�}|dvrd|_n|dvrd|_ntd|��Wnty/}ztd|��d}~wwt|d	|�dS)
N��?r�)��?r�r0)�@r.�	value: %szopt_action failed: %sr*)rPr��AssertionErrorr`rl�rr��	namespacerA�
option_stringr�rtrrr�__call__rs
���z-TestActionUserDefined.OptionalAction.__call__r*�rrrrZrrrr�OptionalActionprfr\c@r_)z&TestActionUserDefined.PositionalActionNc
Cs�z%tdd�}|dvrd|_n|dvrd|_n|dvrd|_ntd	|��Wnty7}ztd
|��d}~wwt|d|�dS)Nr0�r�)r�r.rR)rr�)r0rSrUzarg_action failed: %sr�)rPr*rVr`rlrWrrrrZ�s
���z/TestActionUserDefined.PositionalAction.__call__r*r[rrrr�PositionalAction�rfr^z-sr*rR)r�r�rYrr�r)r0)r�rYrrz-s0.125rS)r*r�r,r�z
-s 0.625 1r�rz84 -s2rTr.N)rrrrR�Actionr\r^rJr�r2r�r�rPr�rrrrrQms"����rQc@s(eZdZ	Gdd�dej�Zdd�ZdS)�TestActionRegistrationc@r_)zTestActionRegistration.MyActionNcCst||jd|�dS)Nzfoo[%s])rlr�)rr�rX�valuesrYrrrrZ��z(TestActionRegistration.MyAction.__call__r*r[rrrr�MyAction�rfrccCs^t��}|�dd|j�|jddd�|�|�dg�tdd��|�|�dg�td	d��dS)
Nr�Z	my_actionr�r�r�zfoo[1]r]r,zfoo[42])rRrSrPrcr�r�rprP�rr�rrrr9�s
zTestActionRegistration.testN)rrrrRr_rcr9rrrrr`�sr`c@s6eZdZeddded�gZdZdegd�d�fgZd	S)
�TestActionExtendr��extendr8)r�rrYrz--foo f1 --foo f2 f3 f4)�f1�f2Zf3Zf4r�N)	rrrrJr�r�r�rPr�rrrrre�s��recs�eZdZ	dd�Z		d9dd�Z�fdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z�ZS):�TestAddSubparserscO�|jtg|�Ri|��dSr*�r�r`rMrrr�assertArgumentParserError�rEz+TestAddSubparsers.assertArgumentParserErrorFNc
Cs�|rtdd|d�}|j|dddddd	�ntddd
�}|jdddd	�|jdtd
d�ddi}|r=d|d<d|d<nd|d<|jd7i|��}|�|j�tdd�}|rZd|d<|rbddg|d<|jd8i|��}|jdtdd�|jd d!d"d#�td$d�}	|r�d%|	d<|jd9i|	��}
|
jd'd(d)d#�|
jd*td+d,d-�td.d�}|r�d/|d<|jd:i|��}|jd1td2d�|jd3d4d5d6�|S);N�PROG�main description)�prog�descriptionr�rr0r�r��foo help�r��help�rorpr�r��bar help�rYrsrDFZCOMMAND�metavar�commands�title�command helprsz
1 description�rpz1 helpZ1alias1Z1alias2�aliasesr�r
zw helpr�r:�x help�r<rsz
2 descriptionz2 helpr-r�Z123�y helpr�r4zz help)rYrrsz
3 descriptionz3 helprx�tzt help�ur�zu help�rrsr�r�)r-)rx)	rvr�r��add_subparsersrl�dict�
add_parserr2r>)
r�subparser_helpr�r|r�Zsubparsers_kwargs�
subparsersZparser1_kwargs�parser1Zparser2_kwargs�parser2Zparser3_kwargsZparser3rrrr��sX�����



zTestAddSubparsers._get_parsercs&t���|��|_|jdd�|_dS)NT)r�)r
r&r�r��command_help_parserrrrrr&
s

zTestAddSubparsers.setUpcCs&dD]}|��}|�|jj|�qdS)N)rr�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�rlr�rp)rr�rKrrr�test_parse_args_failuress�z*TestAddSubparsers.test_parse_args_failuresc	Cs�|�|j�d���tddddd��|�|j�d���tdd	d
ddgd
��|�|j�d���tddddd��|�|j�d���tdddgd�d��dS)N�0.5 1 b -w 7Fr��r&�r�r�r@r�z0.25 --foo 2 -y 2 3j -- -1jTrRr-y@y��)r�r�rr�z--foo 0.125 1 crSr'z-1.5 3 11 -- a --foo 7 -- br=�)r�r�rs�--r&)r�r�r�r�)r�r�rpr�rPrrrr�test_parse_argss ����z!TestAddSubparsers.test_parse_argsc	Cs�|�|j�d���tddddd�gf�|�|j�d���tddddd�dgf�|�|j�d	���tddddd�dgf�|�|j�d
���tddddd�ddgf�|�|j�d
���tddddd�gd�f�dS)Nr�Fr�r�r&r�z0.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-Xr�r�)r�r��parse_known_argsr�rPrrrr�test_parse_known_args)s(�����z'TestAddSubparsers.test_parse_known_argscCsXt�}|jddd�|jdd�}|�d�}|�d�|�tddd	d
�|�d����dS)Nr�r�r�r�r�r�r�Fr-r�r�)rvr�r�r�r�rPrpr�)rr�r�r�rrr�	test_dest?s

�zTestAddSubparsers.test_destcCs,|�dg�}|�|jd�|�|jd�dS)N�runr)rpr��commandrl)rr��retrrr�_test_required_subparsersHsz+TestAddSubparsers._test_required_subparserscCs0t�}|jdd�}d|_|�d�|�|�dS)Nr�r�Tr�)rvr�rDr�r��rr�r�rrr�&test_required_subparsers_via_attributePs

z8TestAddSubparsers.test_required_subparsers_via_attributecCs,t�}|jddd�}|�d�|�|�dS)Nr�T�r�rDr�)rvr�r�r�r�rrr�"test_required_subparsers_via_kwargWs
z4TestAddSubparsers.test_required_subparsers_via_kwargcCs6t�}|jdd�}|�d�|�d�}|�|j�dS)Nr�r�r�r�rvr�r�rp�assertIsNoner��rr�r�r�rrr� test_required_subparsers_default]s


z2TestAddSubparsers.test_required_subparsers_defaultcC�nt�}|jdd�}|�d�|�d�|�t��
}|�d�Wd�n1s(wY|�|jjd�dS)NT�rDr�r�rz8error: the following arguments are required: {foo,bar}
$�	rvr�r�r�r`rp�assertRegexrVrd�rr�r��excinforrr�-test_required_subparsers_no_destination_errore�

��z?TestAddSubparsers.test_required_subparsers_no_destination_errorcCr�)NTr�r�r�r`zPerror: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$r�r�rrr�3test_wrong_argument_subparsers_no_destination_errorqr�zETestAddSubparsers.test_wrong_argument_subparsers_no_destination_errorcCs8t�}|jddd�}|�d�|�d�}|�|j�dS)Nr�Fr�r�rr�r�rrr�test_optional_subparsers}s


z*TestAddSubparsers.test_optional_subparserscC�.|�|j��d�|�|j��t�d��dS)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
            )r�r��format_usage�format_help�textwrap�dedentrrrr�	test_help�s�zTestAddSubparsers.test_helpcC�6|jdd�}|�|��d�|�|��t�d��dS)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
            �r�r�r�r�r�r�rdrrr�test_help_extra_prefix_chars�s

�z.TestAddSubparsers.test_help_extra_prefix_charscCs6tddd�}|jdddd�|�|��t�d��dS)	Nrmrnrtz--non-breakingrMuRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesrru7            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
        �rvr�r�r�r�r�rdrrr�test_help_non_breaking_spaces�s��z/TestAddSubparsers.test_help_non_breaking_spacescCsftddd�}|jddd�|�|��t�d��tddd�}|jdgdd	�|�|��t�d
��dS)Nrmrnrtr�z    �rsz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r�rdrrr�test_help_blank�s ����z!TestAddSubparsers.test_help_blankcCr�)Nr�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
            r�rdrrr� test_help_alternate_prefix_chars�s

�z2TestAddSubparsers.test_help_alternate_prefix_charscCr�)Nr�a�            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
            )r�r�r�r�r�r�rrrr�test_parser_command_help�s��z*TestAddSubparsers.test_parser_command_helpcCsxtddd�}|jdddd�|jdd	d
�|jddd
d�}|�d�}|�d�}|�|��d�|�|��t�d��dS)Nrmrnrtr�r�rqrrr�rur��subcommandsrzzadditional text)ryrprsr�r-z'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
            )	rvr�r�r�r�r�r�r�r�)rr�r�r�r�rrr�test_subparser_title_help	s��


�z+TestAddSubparsers.test_subparser_title_helpcCsN|�t��}|j�|���Wd�n1swY|�||jj�dSr*)r�r`r�rpr�r�rVrc)rr�Z
expected_helprXrrr�_test_subparser_help$	s�z&TestAddSubparsers._test_subparser_helpcC�|�dt�d��dS)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
            �r�r�r�rrrr�test_subparser1_help)	rbz&TestAddSubparsers.test_subparser1_helpcCr�)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
            r�rrrr�test_subparser2_help7	rbz&TestAddSubparsers.test_subparser2_helpc	Cs\|jdd�}|�|�d���tddddd�gf�|�|�d���tddddd�gf�dS)	NT�r|z
0.5 1alias1 bFr�r&r�z
0.5 1alias2 b)r�r�r�r�rPrdrrr�test_alias_invocationE	s��z'TestAddSubparsers.test_alias_invocationcCs"|jdd�}|�|jd���dS)NTr�z
0.5 1alias3 b)r�rlrpr�rdrrr�test_error_alias_invocationP	s�z-TestAddSubparsers.test_error_alias_invocationcCs.|jddd�}d|_|�|��t�d��dS)NT)r|r�a	            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
            )r�ZmaxDiffr�r�r�r�rdrrr�test_alias_helpU	sz!TestAddSubparsers.test_alias_help)FNF)rrrrlr�r&r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrri�s>
�7	$ric@s&eZdZ	dd�Zdd�Zdd�ZdS)�TestPositionalsGroupscCsZt�}|�d�|�d�}|�d�|�d�tdddd�}|�d	���}|�||�dS)
Nr�rr�r�r�r-rxr��1 2 3)rvr�r�rPrpr�r��rr�r��expectedrqrrr�test_nongroup_firsts	�



z)TestPositionalsGroups.test_nongroup_firstcCsZt�}|�d�}|�d�|�d�|�d�tdddd�}|�d	���}|�||�dS)
N�xxxr�r�r�r�r-rxr�r��rvr�r�rPrpr�r�r�rrr�test_group_first}	r�z&TestPositionalsGroups.test_group_firstcCspt�}|�d�}|�d�|�d�|�d�|�d�}|�d�tddd	d
d�}|�d���}|�||�dS)
Nr�r�r�r�r��frellr�r-rxr�)r�r�r�r�z1 2 3 4r�r�rrr�test_interleaved_groups�	s





z-TestPositionalsGroups.test_interleaved_groupsN)rrrr�r�r�rrrrr�p	s


r�cs�eZdZ	dd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�ZS)�TestParentParserscOrjr*rkrMrrrrl�	rEz+TestParentParsers.assertArgumentParserErrorcs�t���tdd�|_|j�d�|j�d�}|�d�|j�d�tdd�|_|j�d�|j�d�|j�d	�}|�d
�tdd�|_|j�d�tdd�|_|j�d�tdd�|_	|j	�
�}|jddd
�|jddd
�tj�
tjd�|_dS)NF�r�z--wr�r�r�r�rfr'z--dr�r�r�r)r
r&rv�wxyz_parentr�r��abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_groupr.r5�basenamerir��main_program)rZx_group�c_groupr�rrrr&�	s(



zTestParentParsers.setUpcCs2t|jgd�}|�|�d���tdddd��dS)N��parentsz-y 1 2 --w 3rxr�r-�r@rr�)rvr�r�rpr�rPrdrrr�test_single_parent�	s�z$TestParentParsers.test_single_parentcCs,|�|jj�t|jgd�}|�|j�dS�Nr�)�_test_mutex_abr�rprvrdrrr�test_single_parent_mutex�	sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d�}t|gd�}|�|j�dS)NF)r�r�r�)r�rvr�rp�rr�r�rrr�test_single_granparent_mutex�	sz.TestParentParsers.test_single_granparent_mutexcCs�|�|g�tddd��|�|dg�tddd��|�|dg�tddd��|�|ddg�|�|ddg�|�|dg�|�|ddg�|�|ddg�dS)NF�r�r&r�Trfrh)r�rPrl)rrprrrr��	sz TestParentParsers._test_mutex_abcCs@|j|jg}t|d�}|�|�d���tddddddd��dS)Nr�z--d 1 --w 2 3 4rxr�r-r�)r�r&r�r@rr�)r�r�rvr�rpr�rPr�rrr�test_multiple_parents�	s

�z'TestParentParsers.test_multiple_parentsc
Csb|j|jg}t|d�}|�|�d���tdddddd��|�|jd���|�|jd	���dS)
Nr�z
-a --w 2 3TFr-rx)r�r&r@rr�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�rvr�rpr�rPrlr�rrr�test_multiple_parents_mutex�	s
�
�
�z-TestParentParsers.test_multiple_parents_mutexcC� |jtjtj|j|jgd�dSr�)r�rR�
ArgumentErrorrSr�r�rrrr�test_conflicting_parents�	�


�z*TestParentParsers.test_conflicting_parentscCr�r�)r�rRr�rSr�r�rrrr�test_conflicting_parents_mutex�	r�z0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d�}|�|�d���tdddd��dS)Nr�r�r-r�)r�r�rvr�rpr�rPr�rrr�test_same_argument_name_parents�	s

�z1TestParentParsers.test_same_argument_name_parentsc	CsPt�}|��}|jd|jgd�}|�d�|�|�d���tddddd	��dS)
Nr�r�rtzbar -b 1 --d 2 3 4rxr�r-r�)r�r&r�rt)	rvr�r�r�r�r�rpr�rP)rr�r�Zabcde_parserrrr�test_subparser_parents�	s
�z(TestParentParsers.test_subparser_parentscCs�t�}|��}|jg}|jd|d�}|�d�}|�d�|j|jg}|jd|d�}|�d�|�|�d�	��t
dd	d
d��|�|�d�	��t
d	dd
ddd
d��|�|jd�	��|�|jd�	��dS)Nr�r�r�r'r�rtzfoo -a 4TFr�r%zbar -b  --w 2 3 4r-rx)r�r&r@rr�rtzfoo -a -b 4zbar -b -a 4)rvr�r�r�r�r�r�r�rpr�rPrl)rr�r�r�Z
abc_parserr�Zwxyzabe_parserrrr�test_subparser_parents_mutex�	s*


��
�
�z.TestParentParsers.test_subparser_parents_mutexc	CsJ|j|jg}t|d�}|��}|j}|�|t�d�||rdnd���dS)Nr�aG            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)	r�r�rvr�r�r�r�r��format)rr�r��parser_help�prognamerrr�test_parent_help
s

�z"TestParentParsers.test_parent_helpc	Cs�tdd�}|jddd�}|�d�|�d�|��}|�d�|�d	�t|gd
�}|�t|jgd��|��}|j}|�	|t
�d�||rGd
nd���dS)NFr�r�gd�ryrpr
r�r�r�r�)r�r�r�r�z�            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
        r�r)
rvr�r�r�r�r`rpr�r�r�r�r�r�)r�parentrr4r�r�r�rrr�test_groups_parents(
s 





�
�z%TestParentParsers.test_groups_parents)rrrrlr&r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr��	s"

r�c@r()
� TestMutuallyExclusiveGroupErrorscCs t�}|j}|t|jdd�dS)Nr�)ry)rvr�r�r�)rr��raisesrrr�test_invalid_add_argument_groupL
sz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_groupcCslt�}|��}|j}|j}|t|ddd�|t|d�|t|ddd�|t|ddd�|t|dtjd�dS)Nr�Tr�r�r8rr)rvr�r�r�r8rR�PARSER)rr�r�r�r�rrr�test_invalid_add_argumentQ
sz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argumentcCsptdd�}|��}|jddd�|jddd�|��}|jddd�|jd	dd�d
}|�|��t�|��dS)Nrm�ror�r�r�r�rMz--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            options:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )rvr�r�r�r�r�r�)rr�Zgroup1�group2r�rrrr�\
s

z*TestMutuallyExclusiveGroupErrors.test_helpcCsLt��}|��}|�t��|�dg�Wd�dS1swYdS)Nr)rRrSr�r�r8rp�rr�r�rrr�test_empty_groupp
s
"�z1TestMutuallyExclusiveGroupErrors.test_empty_groupN)rrrr�r�r�rrrrrr�J
s
r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�MEMixincCs4|jdd�j}t}|jD]}|�|||���qdS�NFr���
get_parserrpr`r�r�r��rrprz�args_stringrrr�test_failures_when_not_requiredy
s

�z'MEMixin.test_failures_when_not_requiredcCs:|jdd�j}t}|jdgD]}|�|||���qdS)NTr�rrrrrr�test_failures_when_required
s
�z#MEMixin.test_failures_when_requiredcCsD|jdd�j}|j|j}|D]\}}||���}|�||�qdSr)rrpr��successes_when_not_requiredr�r�)rrpr�r	r��	actual_nsrrr� test_successes_when_not_required�
s�z(MEMixin.test_successes_when_not_requiredcCs:|jdd�j}|jD]\}}||���}|�||�q
dS�NTr�)rrpr�r�r�)rrpr	r�r
rrr�test_successes_when_required�
s
�z$MEMixin.test_successes_when_requiredcC�,|jdd�j}|j}|�|�t�|��dSr)rr��usage_when_not_requiredr�r�r��rr�Zexpected_usagerrr�test_usage_when_not_required�
�z$MEMixin.test_usage_when_not_requiredcCrr)rr��usage_when_requiredr�r�r�rrrr�test_usage_when_required�
rz MEMixin.test_usage_when_requiredcC�2|jdd�j}|j|j}|�|�t�|��dSr)rr�rrsr�r�r��rr�rsrrr�test_help_when_not_required�
�z#MEMixin.test_help_when_not_requiredcCrr)rr�rrsr�r�r�rrrr�test_help_when_required�
rzMEMixin.test_help_when_requiredN)rrrr
rrrrrrrrrrrrw
src@sxeZdZddd�ZddgZdeddd�fd	ed
dd�fdeddd�fd
edd
d�fgZdeddd�fgZdZdZ	dZ
dS)�TestMutuallyExclusiveSimpleNcCs:tdd�}|j|d�}|jddd�|jddd	d
d�|S)Nrmrr�r�rur�rr)r��baz help)rr�rs�rvr�r��rrDr�r�rrrr�
s

z&TestMutuallyExclusiveSimple.get_parser�--bar X --baz Yz
--bar X --baz�--bar Xr��r�r�z--bar X --bar Zr��--baz Yr�rrz;        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
        r*�rrrrr�rPr�rrrrsrrrrr�
s
��rc
@s�eZdZddd�ZdgZdeddddd�fded	dddd�fd
eddddd�fdedd	ddd�fgZdeddddd�fgZd
ZdZ	dZ
dS)�TestMutuallyExclusiveLongNcCsRtdd�}|jddd�|jddd�|j|d�}|jd	d
d�|jddd�|S)
Nrmrz--abcdez
abcde helpr�z--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�rvr�r�r rrrr�
s
z$TestMutuallyExclusiveLong.get_parserz--klmno X --pqrst Yz	--klmno Xr�)ZabcdeZfghijZklmnoZpqrstz--abcde Y --klmno Xr�z	--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
    r*r%rrrrr&�
s"
	���	�r&c@sfeZdZdd�ZdgZdeddd�fded	dd�fd
eddd�fgZd
eddd�fgZdZdZ	dZ
dS)�$TestMutuallyExclusiveFirstSuppressedcCs:tdd�}|j|d�}|jdtjd�|jdddd	�|S)
Nrmrr�r�r�r�rMrrr�rvr�r�rRr�r rrrr�
s

z/TestMutuallyExclusiveFirstSuppressed.get_parserz-x X -yz-x Xr�Trz	-x X -x Yr�r�NFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r%rrrrr(�
s��r(c	@s�eZdZdd�Zgd�Zdedddd�fded	d	dd�fd
ed	ddd�fdedddd�fgZd
ed	ddd�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedcCsNtdd�}|j|d�}|j}|ddtjd�|ddtjd�|d	tjd
�|S)Nrmrr��--spamr�rrr�rMz	--bladderr�r))rrDr�r�r rrrrs
z.TestMutuallyExclusiveManySuppressed.get_parser)z--spam --badgerz--badger --bladder Bz--bladder B --spamr+TN)r*r�Zbladderr�Fz--bladder Br�z
--spam --spamrz!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        �rrrrr�rPr�rrrrsrrrrr*s	��r*c	@s�eZdZdd�Zgd�Zdedddd�fd	ed
ddd�fded
ddgd�fded
dgd
�d�fgZded
ddd�fgZdZdZ	dZ
dS)�*TestMutuallyExclusiveOptionalAndPositionalcCsJtdd�}|j|d�}|jdddd�|jdd	d
�|jddd
dd�|S)Nrmrr�r�r��FOOrrr+�SPAMr�r�r4r��BADGER�rrrsrr rrrr<s
z5TestMutuallyExclusiveOptionalAndPositional.get_parser)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr�)r�r*r�z--spam SF�SzX Y Z)r�r�r�rzD        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
        r%rrrrr.:s��r.c
@s�eZdZdd�Zgd�Zdedddddd�fdedddddd�fd	edddddd�fd
edddddd�fdedddddd�fdedddddd�fgZd
edddddd�fdedddddd�fdedddddd�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedcCsjtdd�}|jdddd�|j|d�}|jddd	d�|jd
ddd�|jddd
d�|jdddd�|S)Nrmrr�r�r}rrr�r��a helprf�b helpr�rrh�c helpr'r rrrris
z.TestMutuallyExclusiveOptionalsMixed.get_parser)z-a -b�-b -cz-a -cz-a -b -cr�TF�r�r&r'r�rrfrhz-a -xz-y -bz-x -y -crr�r�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
        Nr-rrrrr4gs 
�	�r4c@s\eZdZddd�ZddgZdeddd�fd	edd
d�fgZdeddd�fgZdZd
Z	dZ
dS)�TestMutuallyExclusiveInGroupNcCsDtdd�}|jddd�}|j|d�}|jddd	�|jd
dd	�|S)NrmrzTitled groupzGroup descriptionr�r�r�rur�rr)rvr�r�r�)rrDr�Ztitled_group�mutex_grouprrrr�s
�
�z'TestMutuallyExclusiveInGroup.get_parserr!z--baz X --bar Yr"r�r#r$r�rz9        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
        r*r%rrrrr:�s

��r:c@s�eZdZdd�Zgd�Zdedddddd�fd	ed
ddddd�fded
ddddd�fd
edddddd�fded
ddddd�fgZded
ddddd�fded
ddddd�fgZdZZ	dZ
d
S)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedcCshtdd�}|jddd�|jdddd	�|j|d
�}|jddd
d�|jdddd	�|jdddd	�|S)Nrmrr�r}r�r�r�rrrr�r�r)r5r�rfr6rhr7r'r rrrr�s
z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parser)zX A -br8z-c X AzX Ar�Fr�r9zX -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
        r-rrrrr<�s
��r<c@s0eZdZdd�ZdZdZdZdZdZdZ	dZ
dS)�TestMutuallyExclusiveNestedcCsntdd�}|j|d�}|�d�|�d�|j|d�}|�d�|�d�|j|d�}|�d�|�d	�|S)
Nrmrr�r�rfrhz-dz-er�r)rrDr�r�rZgroup3rrrr�s






z&TestMutuallyExclusiveNested.get_parserzO        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)rrrrrrrsr
rrrrrrrr=�s

r=cseZdZd�fdd�	Z�ZS)�MEPBaseNcs(tt|�j|d�}t|jd|gd�}|S)Nr�F)ror�r�)r
r>rrvro)rrDr�r�rrrrs

�zMEPBase.get_parserr*)rrrrrrrrrr>sr>c@�eZdZdS)�&TestMutuallyExclusiveGroupErrorsParentN�rrrrrrrr@�r@c@r?)�!TestMutuallyExclusiveSimpleParentNrArrrrrCrBrCc@r?)�TestMutuallyExclusiveLongParentNrArrrrrD!rBrDc@r?)�*TestMutuallyExclusiveFirstSuppressedParentNrArrrrrE&rBrEc@r?)�)TestMutuallyExclusiveManySuppressedParentNrArrrrrF+rBrFc@r?)�0TestMutuallyExclusiveOptionalAndPositionalParentNrArrrrrG0rBrGc@r?)�)TestMutuallyExclusiveOptionalsMixedParentNrArrrrrH5rBrHc@r?)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNrArrrrrI:rBrIc@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestSetDefaultsc
Cs�t�}|jdd�|jddd�|�tdddd�|�g��|�tdddd�|�gt���|�tdddd�|�gtdd���|�tdddd�|�gtddd	���dS)
Nr�r�r�r)rr�rr�r0)r�r��rv�set_defaultsr�rPrprdrrr�test_set_defaults_no_argsDs����z)TestSetDefaults.test_set_defaults_no_argsc	Cs�t�}|jddd�|jddd�|�tddd�|�g��|�tddd�|�gt���|�tddd�|�gtdd���|�td	dd�|�d
����|�td	dd�|�d
��t���|�td	dd�|�d
��tdd���dS)Nr�r�rr�Zxfooxrr�r�r�rE)rvrLr�r�rPrpr�rdrrr�test_set_defaults_with_argsQs*������z+TestSetDefaults.test_set_defaults_with_argscCsRt�}|jdd�|��}|�d�}|jdd�|�tddd�|�d����dS)Nr�r�r�r�rJr)rvrLr�r�r�rPrpr�)rr�r�Zparser_arrr�test_set_defaults_subparsersbs
�z,TestSetDefaults.test_set_defaults_subparserscCs>tdd�}|jdd�t|gd�}|�tdd�|�g��dS)NFr�r�r�r�rK)rr�r�rrr�test_set_defaults_parentsks
z)TestSetDefaults.test_set_defaults_parentscCsLt��}|���d�}|jdd�|jdd�|�tdd�|�dg��dS)Nr�rr�r0)rRrSr�r�rLr�rPrp)rr�Zxparserrrr�)test_set_defaults_on_parent_and_subparserqs
z9TestSetDefaults.test_set_defaults_on_parent_and_subparsercCs�t�}|jddddd�|�d�|jddd	�|jd
dd�|jd
ddd�|�tddddd�|�g��|jddddd�|�tddddd�|�g��dS)N�Wr�r�r�r/r
r��XXrrr)rr��ZZr+�WW�YY)rvrLr�r�rPrprdrrr�&test_set_defaults_same_as_add_argumentxs
��z6TestSetDefaults.test_set_defaults_same_as_add_argumentcCs�t�}|jddddd�|�d�}|�d�|jdd	d
�|jddd
�|jdddd�|�tdd	ddd�|�g��|jddddd�|�tddddd�|�g��dS)NrRr�r�r�r/r�r
r�rSrrr)rr�rTr+rUrV)rvrLr�r�r�rPrprrrr�,test_set_defaults_same_as_add_argument_group�s

��z<TestSetDefaults.test_set_defaults_same_as_add_argument_groupN)
rrrrMrNrOrPrQrWrXrrrrrJBs
	rJc@r)�TestGetDefaultcCs�t�}|�|�d��|�|�d��|�d�|�|�d��|�|�d��|jdtdd�|�|�d��|�d|�d��|jdd�|�d|�d��|�d|�d��dS)	Nr�r�r�r�r�rr�r�)rvr��get_defaultr�r2r�rLrdrrr�test_get_default�s
zTestGetDefault.test_get_defaultN)rrrr[rrrrrY�r'rYc@r�)�TestNamespaceContainsSimplecCs$t��}|�d|�|�d|�dS)Nrr�)rR�	Namespace�assertNotIn�r�nsrrr�
test_empty��z&TestNamespaceContainsSimple.test_emptycCsNtjddd�}|�d|�|�d|�|�d|�|�d|�|�d|�dS)	Nrr0rrr�r�xxr�)rRr]r^rUr_rrr�test_non_empty�sz*TestNamespaceContainsSimple.test_non_emptyN)rrrrardrrrrr\�sr\c@r)�TestHelpFormattingMetaclasscCs:|dkrdSGdd�dt�}dD]
\}}||||�qdS)N�HelpTestCasec@�<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc	Ssj||_||_|j|j|jfD]$}d|j|f}|fdd�}z||_Wn	ty+Ynwt|||�qdS)Nz%s_%scSr�r*rr�rrr�test_wrapper�r�zUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper)�func_suffix�std_name�test_format�
test_print�test_print_filerr�rl)rZ
test_classrirjr�r�rhrrrr�s�
��z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__cSs�tj|jji|jj��}t|dg�D]}|j|ji|j��qt|dg�}|D]\}}|j|ji|j��}|D]}|j|ji|j��q7q't|dg�}|r`|��}	|D]}
|	j	|
ji|
j��qS|S)Nr��argument_group_signatures�subparsers_signatures)
rRrSr~rKrLrkr�r�r�r�)rr�r�Zargument_sigZ
group_sigsZ	group_sigZ
argument_sigsr�Zsubparsers_sigsr�Z
subparser_sigrrrr��s6��
�
�
��
�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parsercSs&t||j�}t�|�}|�||�dSr*)rkrir�r�r�)rr��parser_textZ
expected_textrrr�_test�s
z<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testcSs,|�|�}t|d|j�}|�||��dS)Nz	format_%s)r�rkrirq)rr�r�r�rrrrk�s
zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatc
Ss�|�|�}t|d|j�}tt|j�}tt|jt��z|�tt|j���}Wtt|j|�ntt|j|�w|�||�dS�Nzprint_%s)	r�rkririrjrlrrrq)rr�r��print_Z
old_streamrprrrrl
s
 zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printcSs@|�|�}t|d|j�}t�}||�|��}|�||�dSrr)r�rkrirrrq)rr�r�rsZsfilerprrrrm
s
zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_fileN)	rrrrr�rqrkrlrmrrrrr��sr�))�usagerc)rsrc)r�)r�r>r�r�r�rirjrrrr�sH�z$TestHelpFormattingMetaclass.__init__NrNrrrrre�r'rerfc@sleZdZ	edddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerOptionalsrm�DESCRIPTION�EPILOG�rorp�epilogrr�r��0.1r�r�r��X HELPrr�--y�Y HELPr�r��FOO HELPr��BAR 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
        N�
rrrrJr~r�rnrtrsr�rrrrru 
s�


�ruc@s:eZdZ	dd�ZejZejZejZdZedZ	ej
Z
dS)�TestShortColumnscCs$t��}|�dd�|�|j�dS)Nr r�)rr!r�r"r#r$rrrr&J
rbzTestShortColumns.setUpz�        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)rrrr&rur~r�rnrtrsr�rrrrr�D
s	
r�c@s�eZdZ	edddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZeddd�eddd�edddd�gfgZdZedZd Z	d!S)"�TestHelpBiggerOptionalGroupsrmrvrwrxrr�r�rzr�r�r�r{rrr|r}r�r�r~r�rzGROUP TITLEzGROUP DESCRIPTIONr{r�zBAZ HELPr�r8zZ HELPr�zN        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
    r�Nr�rrrrr�{
s&�


�

��r�c@s\eZdZ	eddd�Zedddd�edd	d
�eddd
�ed
dd
�gZgZdZedZdZ	dS)�TestHelpBiggerPositionals�USAGErv�rtrpr�r�r{rrr|r}r�ZekiekiekifekangzEKI HELPr�r�        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
        rNr�rrrrr��
s


�r�c@sdeZdZ	eddd�Zedddd�edd	d
d�gZeddd
�edddd�gfgZdZedZdZ	dS)�TestHelpReformattingrmze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrtr�rSzoddly
    formatted -x help�rwrsrr�z
normal y helpryz'
    oddly formatted group

descriptionr{r�r�z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesrr�2        usage: PROG [-h] [-x XX] [-a] yyy
        a�
        oddly formatted description that is so long that it should go onto multiple
        lines when wrapped

        positional arguments:
          yyy         normal y help

        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
        rNr�rrrrr��
s$��
���r�c@s`eZdZ	eddd�Zedddd�edd	d
d�gZed�edd
dd�gfgZdZedZdZ	dS)�TestHelpWrappingShortNamesrmzZD
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
Drtr�rSzxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXr�rr��dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�r�zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHArrr�a�
        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
        rNr�rrrrr��
s���r�c@szeZdZ	eddd�Zeddddd�ed	d
dd�ed
ddd�gZed�edddd�edddd�gfgZdZedZdZ	dS)�TestHelpWrappingLongNamesr�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 Dr�rr�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 Vr�r��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHr�rZyyyyyyyyyyyyyyyyyyyyyyyyyr�r�r�ZAAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr�ZzzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHr�ag
        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
        Nr�rrrrr�%s���r�c@s�eZdZ	edd�Zedddd�eddd	d�ed
d
d�eddd
d�edddd�eddejd�edddejd�edddejd�edejejdd�g	Zed�ed dd!d�ed"d#d$d�ed%d%dd�ed&d&dd�gfgZ	d'Z
e
d(Zd)Zd*S)+�
TestHelpUsagermrr
r8r@r�r�r4r�r�r�r&r0)rsrr'r)r�zWhether to foo)rsr�r�zWhether to barT)rsrr�r�z--foobarz--barfoor�z--bazzzBazz!)r�rrsr�r�rr�r!r�r�rta/        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 ...]
        a�
        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 (default: True)
          -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)
rrrrJr~rRrTr�r�rnrtrsr�rrrrr�[s6

�����r�c@s@eZdZedd�Zeddd�edddd�gZd	Zed
ZdZdS)
�TestHelpUsageWithParenthesesrmrZ
positionalz(example) positional�rwr�z
--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)	rrrrJr~r�rtrsr�rrrrr��s

�	r�c@sneZdZ	eddd�ZgZed�eddd�eddd�gfed	�ed
d
d�eddd�gfgZd
ZedZdZ	dS)�TestHelpOnlyUserGroupsrmF�ror�Zxxxxr�r�r�r�Zyyyyr&r�rz.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        rNr�rrrrr��s 

�

��

r�c@sPeZdZ	edd�Zeddd�eddd�ed�ed	�gZgZd
ZedZdZ	d
S)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPrr
rRr�r�r�r�r&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
        rNr�rrrrr��s


�r�c@sdeZdZ	edd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�gZgZdZedZdZ	dS)� TestHelpUsageLongProgOptionsWrapr�rr
�WWWWWWWWWWWWWWWWWWWWWWWWWr�r�r�r��YYYYYYYYYYYYYYYYYYYYYYYYYr��ZZZZZZZZZZZZZZZZZZZZZZZZZr�r&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
        rNr�rrrrr��s




�
r�c@�DeZdZ	eddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)�$TestHelpUsageLongProgPositionalsWrapr�Fr��aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNr�rrrrr�
s�r�c@sjeZdZ	edd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�ed�gZgZdZedZdZ	dS)�TestHelpUsageOptionalsWraprmrr
r�r�r�r�r�r�r�r�r�r&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
        rNr�rrrrr�#s




�	r�c@sTeZdZ	edd�Zed�ed�ed�ed�ed�ed�gZgZd	Zed
ZdZ	dS)
�TestHelpUsagePositionalsWraprmrr�r�r�r�r�r�z�        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
        rNr�rrrrr�Is
�
r�c@s`eZdZ	edd�Zeddd�eddd�edd	d�ed
�ed�ed�gZgZd
ZedZdZ	dS)�%TestHelpUsageOptionalsPositionalsWraprmrr�r�r�r�r�r�r�r�r�r�a        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
        rNr�rrrrr�ks



�
r�c@sNeZdZ	edd�Zeddd�eddd�edd	d�gZgZd
ZedZdZ	d
S)�TestHelpUsageOptionalsOnlyWraprmrr�r�r�r�r�r�r�z�        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
        rNr�rrrrr��s



�r�c@r�)� TestHelpUsagePositionalsOnlyWraprmFr�r�r�r�z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r�rNr�rrrrr��s�r�c
@s�eZdZ	edd�Zededd�edddd	d
d�edd
dd�eddddgddd�eddd�edddd�gZed�edd d�ed!d"d#d�gfgZd$Zed%Z	d&Z
d'S)(�TestHelpVariableExpansionrmrr�z"x %(prog)s %(default)s %(type)s %%rvr�r�r��XXXz y %(prog)s %(default)s %(const)s)r�rr�rsr�r:z$foo %(prog)s %(default)s %(choices)sr~r�r�rr0ZBBBz!bar %(prog)s %(default)s %(dest)s)rr<rwrsr*zspam %(prog)s %(default)sr�r�r�zbadger %(prog)s %(default)s)rrsr�r�za %(prog)s %(default)srfr0zb %(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)rrrrJr~r2r�rnrtrsr�rrrrr��s4
�
���
�
��r�c@s2eZdZ	eddd�ZgZgZdZedZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedrmz%(prog)s FOO�rortz         usage: PROG FOO
        r,rNr�rrrrr��sr�c@s.eZdZ	eddd�ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsrmFr�z        usage: PROG
        rNr�rrrrr�sr�c@sDeZdZ	edejd�Zeddd�eddd�gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsagermr�r�rqr�r*�	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrrrJrRr�r~r�rnrsrtr�rrrrr�
s

�r�c@sHeZdZ	eddd�Zedejd�eddd�gZgZdZ	e	d	Z
d
ZdS)�TestHelpSuppressOptionalrmFr�r�r�r*r�z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN�rrrrJr~rRr�r�rnrtrsr�rrrrr�"s
�r�c@sZeZdZ	edd�Zeddd�eddd�gZed�ed	ejd�gfgZd
Z	e	dZ
dZd
S)�TestHelpSuppressOptionalGrouprmrr�rqr�r*r�r�r��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)rrrrJr~r�rRr�rnrtrsr�rrrrr�6s


��	r�c@sFeZdZ	edd�Zeddd�edejd�gZgZdZ	e	dZ
d	Zd
S)�TestHelpSuppressPositionalrmrr�rqr�r*z-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNr�rrrrr�Ps

�r�c@s<eZdZ	edd�Zedddd�gZgZdZedZd	Z	d
S)�TestHelpRequiredOptionalrmrr�Trq)rDrsz+        usage: PROG [-h] --foo FOO
        r�rNr�rrrrr�es
�r�c@sLeZdZ	edddd�Zedddd�ed	d
dd�gZgZd
ZedZdZ	dS)�TestHelpAlternatePrefixCharsrmz^;F)ror�r�z^^foor�rqrrz;bz;;barrur�z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNr�rrrrr�ys�r�c@sFeZdZ	eddd�Zeddd�eddd�gZgZd	Zed
ZdZ	dS)
�TestHelpNoHelpOptionalrmFr�r�rqr�r*r�z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        rNr�rrrrr��s

�r�c@s<eZdZ	edd�Zed�ed�gZgZdZedZdZ	dS)	�TestHelpNonermrr�r*r�z�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rNr�rrrrr��s
�	r�c	@sheZdZ	edd�Zeddddd�edd	d
dd�edd
ddd�eddddd�gZgZdZedZdZ	dS)�TestHelpTupleMetavarrmrr
r@r8)ZW1ZW2)rsrrwr�r�r4)ZX1ZX2r�rr!)ZY1ZY2ZY3r�r�r))ZZ1z]        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
        rNr�rrrrr��s
�	r�c@�beZdZ	edejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawTextrm�7Keep the formatting
    exactly as it is written

here
�ro�formatter_classrpr�z-    foo help should also
appear as given herer�r*r�ry�?    This text
  should be indented
    exactly like it is here
r{r�ru�>        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)rrrrJrR�RawTextHelpFormatterr~r�rnrtrsr�rrrrr��s �

�
��r�c@r�)�TestHelpRawDescriptionrmr�r�r�z4  foo help should not
    retain this odd formattingr�r*r�ryr�r{r�rur�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 not retain this odd formatting

        title:
              This text
            should be indented
              exactly like it is here

          --bar BAR   bar help
        rN)rrrrJrR�RawDescriptionHelpFormatterr~r�rnrtrsr�rrrrr�	s �

�
��r�c@s�eZdZ	edejdd�Zeddd�eddd	d
�edejdd
d�edddd�eddd�eddddd�gZeddd�ede	ddd�gfgZ
dZed Zd!Z
d"S)#�TestHelpArgumentDefaultsrmrpr�r�z)foo help - oh and by the way, %(default)sr�r�r�rurrz--tazzWhether to taz itT)r�rsrz--quuxzSet the quuxr�)rsrr*r�r�r)Zwoodenzbadger helpr2ryr{rr)rYrrsz�        usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--quux QUUX]
                    [--baz BAZ]
                    spam [badger]
        a&
        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)
          --quux QUUX      Set the quux (default: 42)

        title:
          description

          --baz BAZ        baz help (default: 42)
        rN)rrrrJrR�ArgumentDefaultsHelpFormatterr~rTr�r2rnrtrsr�rrrrr�9s,�
�
�

��r�c@s@eZdZ	eddd�Zeddddd�gZgZd	Zed
ZdZ	dS)
�TestHelpVersionActionrmrprt�-Vr�r�z3.6r�z&        usage: PROG [-h] [-V]
        z�
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        rNr�rrrrr�hsr�c@sReZdZ	edd�Zeddddejd�edd	d
�eddd
�gZgZd
Z	e	dZ
dS)�TestHelpVersionActionSuppressrmrrr�r�r�)r�r�rsr�rqr�r*r�r�r�N)rrrrJr~rRr�r�rnrtrsrrrrr�|s

�

�r�c@sJeZdZ	eddd�Zeddddd�gZd	d
�dD�ZdZed
ZdZ	dS)�TestHelpSubparsersOrderingrm�display some subcommandsrtrr�r�rzr�cCsg|]}t|d��qS)r�rJ)rTr>rrrrV�s�z%TestHelpSubparsersOrdering.<listcomp>)r�r&r'r�rt�6        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
        r�N)
rrrrJr~r�rortrsr�rrrrr��s��r�c@sNeZdZ	eddd�Zeddddd�gZd	Zd
d�eD�ZdZed
Z	dZ
dS)�"TestHelpSubparsersWithHelpOrderingrmr�rtrr�r�rzr�))r�za subcommand help)r&zb subcommand help)r'zc subcommand help)r�zd subcommand help)rtze subcommand helpcCsg|]
\}}t||d��qS))r>rsr�)rTr>rsrrrrV�s�z-TestHelpSubparsersWithHelpOrdering.<listcomp>r�a�
        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
        r�N)rrrrJr~r�Zsubcommand_datarortrsr�rrrrr��s��r�c@s\eZdZdd�Zeddejd�Zeded�eded�ed	e	d
d�gZ
gZdZed
Z
dZdS)�TestHelpMetavarTypeFormattercCs|Sr*rrLrrr�custom_type��z(TestHelpMetavarTypeFormatter.custom_typermrp)rorpr�r�r�rfrhz
SOME FLOAT)rYrwzF        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)rrrr�rJrR�MetavarTypeHelpFormatterr~r2r�r�rnrtrsr�rrrrr��s�

�r�c@s�eZdZ	dd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS) �TestInvalidArgumentConstructorscO�(t��}|jt|jg|�Ri|��dSr*)rRrSr�r�r��rrKrLr�rrr�assertTypeError��
�z/TestInvalidArgumentConstructors.assertTypeErrorcOr�r*)rRrSr�r8r�r�rrr�assertValueErrorr�z0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd�|jddd�|jddd�|jdid�dS)	Nr�)r�r�r�)�callbackr)Z
callback_args)Zcallback_kwargs�r�rrrr�test_invalid_keyword_argumentssz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs"|��dD]}|j|d�qdS)N)r\rGr�r��rr�rrr�test_missing_destinations�z8TestInvalidArgumentConstructors.test_missing_destinationcCs|�d�|�d�dS)Nr�z---�r�rrrr�test_invalid_option_stringss
z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd�|jdttfd�dS)Nr�r2r�)r�r2r�rrrr�test_invalid_type�z1TestInvalidArgumentConstructors.test_invalid_typecCs�|jddd�|jddd�|jddd�t��}|�t��}|jddd�Wd�n1s0wY|�dt|j��dS)	Nr�r�r�r�r��rGr\z
store-truezunknown action)	r�rRrSr�r8r�rUr�rVrWrrr�test_invalid_actions�z3TestInvalidArgumentConstructors.test_invalid_actioncCsbt��}|jdd�|�t��}|jddd�Wd�n1s!wY|�dt|j��dS)Nr�r�r�r�z+dest supplied twice for positional argument)rRrSr�r�r8rUr�rVrWrrr�test_multiple_dest's��z2TestInvalidArgumentConstructors.test_multiple_destcCsDdD]}ttd�tdd�tdd�fD]}|jd	d|i|��qqdS)
N)r�r�rMrgrqr�r8r�abr;r�r�)r�)r�r2r�)rr�Zattrsrrr�test_no_argument_actions/s���z8TestInvalidArgumentConstructors.test_no_argument_actionscCs.dD]}|jdd|d�|jdd|d�qdS)N)r�rMrqr�r�rQr4�rr�r�r�rrr�!test_no_argument_no_const_actions6s�zATestInvalidArgumentConstructors.test_no_argument_no_const_actionscCs\dD])}|jdd|d�|jdd|d�dD]}|jdd||d�|jdd||d�qqdS)	Nr�r�rr�r*)rr4r8r�)r�rr�r�)rr�rrrr�#test_more_than_one_argument_actions@s����zCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCsdD]
}|jdd|d�qdS)N)r�rgr�r8r�r�r�rrr�test_required_const_actionsNs�z;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd�|jdddd�|jddtjd�dS)Nr��parsersr�rm)r�ro)r�r)r�rRrSrrrr�"test_parsers_action_missing_paramsTs

�zBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscC�|jddd�dS)Nr�Tr�r�rrrr�test_required_positionalZ�z8TestInvalidArgumentConstructors.test_required_positionalcs`Gdd�dt��G�fdd�dt�}t��}|j�|jd|��d�|j�|jd|��d�dS)Nc@r?)zITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNrArrrr�Success_sr�cs$eZdZ	d�fdd�	Zdd�ZdS)zHTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFcs*|dkr|�ur|�ur���dSdSdS)Nr*r)r�option_stringsr�r�rrD�r�rrrds�zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__c_sdSr*rrMrrrrZor�zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__N)F)rrrrrZrr�rrr_bs�r_r+)r�rr�r*)rar�rRrSr�r�)rr_r�rr�r�test_user_defined_action]s�
�z8TestInvalidArgumentConstructors.test_user_defined_actionN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s"	
r�c@r�)�TestActionsReturnedcCsXt��}|�d�}|�|jd�|�dd�}|�|jd�|�dd�}|�|jd�dS)	Nr�r�rfr�r�r�r�r�)rRrSr�r�r��rr�r�rrrr�~s
zTestActionsReturned.test_destcCs�t��}|jddddtddgddd	d
�	}|�|jd�|�|jd�|�|jd�|�|jt�|�|j	ddg�|�|j
d�|�|jd�|�|jd	�dS)Nr�r)r�r.rr0r/ZBARr�)rr�rrYr<rsrwr�)
rRrSr�r2r�rr�rrYr<rsrwr�r�rrr�	test_misc�s

�zTestActionsReturned.test_miscN)rrrr�r�rrrrr�|s	r�c@rO)�TestConflictHandlingcCs|jttjdd�dS)Nr�)�conflict_handler)r�r8rRrSrrrr�
test_bad_type�s

�z"TestConflictHandling.test_bad_typecCsDt��}|�d�|�tj|jd�|�d�|�tj|jd�dS)Nr�r+)rRrSr�r�r�rdrrr�test_conflict_error�s
�
�z(TestConflictHandling.test_conflict_errorcCsztj}|ddd�}|jddd�|jddd�|�|��t�d��|jd	d
d�|jd	dd�|�|��t�d
��dS)Nrm�resolve)ror�r�zOLD Xr�zNEW Xz�            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            r+ZOLD_SPAMr�ZNEW_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
            )rRrSr�r�r�r�r�)rrr�rrr�test_resolve_error�sz'TestConflictHandling.test_resolve_errorN)rrrr�r�r�rrrrr��s	r�c@sVeZdZ	dd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestOptionalsHelpVersionActionscCsP|�t��}|�|���Wd�n1swY|�|��|jj�dSr*)r�r`rpr�r�r�rVrc)rr�r�rXrrr�assertPrintHelpExit�s�z3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|�t|j|�dSr*)r�r`rp�rr�rKrrrrl��z9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt�}|jddddd�|�|d�|�|d�|�tt|d�dS)	Nrr�r�r�r�rr�format_version�rvr�r�r�rrkrdrrr�test_version�s
z,TestOptionalsHelpVersionActions.test_versioncCsftdd�}|jddddd�|�t��}|�dg�Wd�n1s$wY|�d|jj�dS)	NZPPPrrr�r�z%(prog)s 3.5r�zPPP 3.5
�rvr�r�r`rpr�rVrcrWrrr�test_version_format�s
�z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd�}|jddddd�|�|d�|�|d	�|�tt|d
�dS)NFr�rr�r�r�r�rrr�)rvr�rlr�rrkrdrrr�test_version_no_help�s

z4TestOptionalsHelpVersionActions.test_version_no_helpcCsdtdd�}|jdddd�|�t��}|�dg�Wd�n1s#wY|�d|jj�dS)Nr�rr�r�z%(prog)s 3.7r�zXXX 3.7
rrWrrr�test_version_action�s
�z3TestOptionalsHelpVersionActions.test_version_actioncCs>tdd�}|�|d�|�|d�|�|d�|�|d�dS)NFr�rrrr�)rvrlrdrrr�test_no_help�s

z,TestOptionalsHelpVersionActions.test_no_helpcCsZt�}|jddd�|jddd�|�|d�|�|d�|�|d�|�tt|d�dS)	Nr�rsr�r�r�rr�r�)rvr�r�rlr�rrkrdrrr�test_alternate_help_version�sz;TestOptionalsHelpVersionActions.test_alternate_help_versioncCs�t�}|jdddd�|jddd�|�d�gd	�}|d
dg}|D]%}|D]}d||f}q'|�||d
�|�||d�|�tt|d�q#dS)Nr�r�r�r�r�r�r�r)rr�r�z-x barzbaz -xz--bad-optionzfoo bar bazz	%s %%s %srrr�r)rr�Zvalid_prefixesZvalid_suffixes�prefix�suffixr�rrr�!test_help_version_extra_arguments�s
�zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN)rrrr�rlrrrrrrr
rrrrr��s	r�c@sNeZdZ	dd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestStringscCs"ttfD]
}|�||�|�qdSr*)r�r�r�)r�objZ
result_string�funcrrr�assertStringEquals�zTestStrings.assertStringEqualcCs8tjgd�ddddgd�ddd	d
�	}d}|�||�dS)N)r�r�rfr&r2r8r��rr0r!FZHELPZMETAVAR�	r�r�rYrrr<rDrsrwz�Action(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], required=False, help='HELP', metavar='METAVAR'))rRr_r)r�optionrMrrr�
test_optionals��zTestStrings.test_optionalcCs8tjgdtddgd�dddd�	}d	t}|�||�dS)
Nr�r)r�)r�g�?r�TzH HH HzMV MV MVrz�Action(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'))rRr_r�r)r�argumentrMrrr�
test_argument+s ���zTestStrings.test_argumentcCs"tjddd�}d}|�||�dS)Nr�r*r�zNamespace(foo=42, bar='spam')�rRr]r�rr`rMrrr�test_namespace<szTestStrings.test_namespacecC�(tjdiddi��}d}|�||�dS)N�"�quotezNamespace(**{'"': 'quote'})rrrrrr�'test_namespace_starkwargs_notidentifierA�z3TestStrings.test_namespace_starkwargs_notidentifiercCs,tjdddiddi��}d}|�||�dS)Nr�rrrz Namespace(a=1, **{'"': 'quote'})rrrrrr�2test_namespace_kwargs_and_starkwargs_notidentifierFsz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiercCr)NZvalidTzNamespace(valid=True)rrrrrr�$test_namespace_starkwargs_identifierKrz0TestStrings.test_namespace_starkwargs_identifiercCs&tjdd�}dtj}|�||�dS)NrmrzvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))rRrS�
HelpFormatterr)rr�rMrrr�test_parserPs��zTestStrings.test_parserN)rrrrrrrrrrr rrrrrsrc@rO)�
TestNamespacecCsFt��}|�tt|d�tjddd�}|�|jd�|�|jd�dS)Nr�r�r*r�)rRr]r�rrkr�r�r&r_rrr�test_constructor^s
zTestNamespace.test_constructorcCs�tjddd�}tjddd�}tjdd�}tjdd�}|�||�|�||�|�||�|�||�|�||�|�||k�|�||k�|�||k�|�||k�dS)Nrr0r�)r&r�)r�rk)rRr]r�ZassertNotEqual�
assertTrue)rZns1Zns2Zns3Zns4rrr�
test_equalityfszTestNamespace.test_equalitycCs6tjddd�}|�|�d�t�|�|�d�t�dS)Nrr0r�)rRr]ZassertIsr^�NotImplemented�__ne__r_rrr�$test_equality_returns_notimplementedvsz2TestNamespace.test_equality_returns_notimplementedN)rrrr"r$r'rrrrr!\sr!c@rO)�TestEncodingcCsTtj�|�\}}|d7}t|ddd��
}|��Wd�dS1s#wYdS)Nz.pyr}rrA)r.r5�splitextrCr)rr5r�r�rrr�_test_module_encoding�s

"�z"TestEncoding._test_module_encodingcCs|�tj�dSr*)r*rR�__file__rrrr�test_argparse_module_encoding�rSz*TestEncoding.test_argparse_module_encodingcCs|�t�dSr*)r*r+rrrr�"test_test_argparse_module_encoding�sz/TestEncoding.test_test_argparse_module_encodingN)rrrr*r,r-rrrrr(�sr(c@r)�TestArgumentErrorcCs$d}t�d|�}|�t|�|�dS)Nz
my error here)rRr�r�r�)rr�rzrrr�test_argument_error�sz%TestArgumentError.test_argument_errorN)rrrr/rrrrr.�r'r.c@r)�TestArgumentTypeErrorcCsldd�}tddd�}|jd|d�|�t��}|�dg�Wd�n1s'wY|�d	|jj�dS)
NcSs
t�d��)N�spam!)rR�ArgumentTypeErrorrLrrrr*�r	z<TestArgumentTypeError.test_argument_type_error.<locals>.spamrmFr�r�r�r�z-usage: PROG x
PROG: error: argument x: spam!
)rvr�r�r`rpr�rVrd)rr*r�rXrrr�test_argument_type_error�s��z.TestArgumentTypeError.test_argument_type_errorN)rrrr3rrrrr0�r'r0c@rO)�TestMessageContentErrorcCsjtddd�}|jdtd�|jdtdd�|jd	td
d�|�t��
}|�g�Wd�n1s2wYt|j�}|�|d�|�|d�|�|d	�|�t��}|�d
g�Wd�n1sdwYt|j�}|�	|d�|�|d�|�|d	�|�t��}|�d
dg�Wd�n1s�wYt|j�}|�	|d�|�	|d�|�|d	�dS)Nrmrr��req_posr��-req_optTrCZneed_oner8)rYr�req_optZmyXargumentz
-req_opt=1)
rvr�r�r2r�r`rprVr�r^�rr�rXr�rrr�%test_missing_argument_name_in_message�s2�
�
�
z=TestMessageContentError.test_missing_argument_name_in_messagecCstddd�}|jdtd�|jdtdd�|jd	td
dd�|�t��
}|�g�Wd�n1s3wYt|j�}|�	|d�|�	|d�|�
|d
�|�t��}|�dg�Wd�n1sewYt|j�}|�	|d�|�
|d�|�
|d
�dS)Nrmrr�r5r�z	--req_optTrCz	--opt_optr))rYrrr7Zopt_optz--req_opt=1)rvr�r�r2�boolr�r`rprVr�r^r8rrr�%test_optional_optional_not_in_message�s(
��
�
z=TestMessageContentError.test_optional_optional_not_in_messagecCs�tddd�}|�d�|jdddd�|�t��
}|�g�Wd�n1s(wYt|j�}|�|d�|�|d�dS)	Nrmrr�r5Zoptional_positionalr)r<r+)	rvr�r�r`rpr�rVr�r^r8rrr�'test_optional_positional_not_in_message�s
�
z?TestMessageContentError.test_optional_positional_not_in_messageN)rrrr9r;r<rrrrr4�sr4c@r)�TestTypeFunctionCallOnlyOncecsH�fdd�}t��}|jd|dd�|�d���}��tdd�|�dS)	Nc���|d�dS)Nr1�
foo_converted�r�)Zstring_to_convertrrrr*��zLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamr�r�rz--foo spam!r?r�)rRrSr�rpr�r�rP�rr*r�rKrrr�!test_type_function_call_only_once�s
z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrrrCrrrrr=�r'r=c@r()
�TestTypeFunctionCalledOnDefaultcsD�fdd�}t��}|jd|dd�|�g�}��tdd�|�dS)Ncr>)Nrr?r@�Zint_to_convertrrrr*rAz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spamr�rrr��rRrSr�rpr�rPrBrrr�/test_type_function_call_with_non_string_default�s

zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcC�@dd�}t��}|jd|dd�|�g�}|�tdd�|�dS)NcSsdS)Nr?rrErrrr*r�zYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spamr��0rr?r�rFrBrrr�+test_type_function_call_with_string_default
s

zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCrH)NcSs|dS)Nr4r)Zstr_to_convertrrrrfrOzYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�--testr4rz**)r9rF)rrfr�rKrrr�)test_no_double_type_conversion_of_defaults

zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8t��}|jddtgdd�|�g�}|�|jg�dS)NrKr9r\)r�rYrr�)rRrSr�r�rpr�r9r�rrr�test_issue_15906 s
�
z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrrrGrJrLrMrrrrrD�s

rDc@rg)�TestParseKnownArgscCst��}|�d�dS)Nr�rRrSrprdrrr�test_arguments_tuple0�z'TestParseKnownArgs.test_arguments_tuplecCst��}|�g�dSr*rOrdrrr�test_arguments_list4rQz&TestParseKnownArgs.test_arguments_listcCs t��}|�d�|�d�dS)Nr�r��rRrSr�rprdrrr�test_arguments_tuple_positional8s
z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"t��}|�d�|�dg�dS)Nr�rSrdrrr�test_arguments_list_positional=s
z1TestParseKnownArgs.test_arguments_list_positionalcCsJt��}|�d�|�d���\}}|�tdd�|�|�ddg|�dS)Nr�z--foo F --bar --baz�Fr�r�r)rRrSr�r�r�r�rP)rr�rK�extrasrrr�test_optionalsBs

z!TestParseKnownArgs.test_optionalscCsrt��}|jdddtd�|jddd�|�d�gd	�}|�|�\}}|�td
ddd
�|�|�gd�|�dS)Nrr)r)rr�rYr+rMr�r�)r�rJr�rrxr�r!Tr�)�vr*r�)rJr�r�)rRrSr�r2r�r�rP)rr�r�rKrWrrr�
test_mixedIs
zTestParseKnownArgs.test_mixedN)	rrrrPrRrTrUrXrZrrrrrN.srNc@r()
�TestIntermixedArgscCstjdd�}|jddd�|jdddd	�}|�d
�|jddtd
�d��}|�|�}|�tdd
dgd�d�|�|�|�\}}|�tdd
dgd�|�|�gd�|�d��}|�	|�\}}|�tdd
ddgd�|�|�gd�|�|�
|j�|�|jd�dS)Nrmrr�r�r�r�r�Tr��cmd�restr4)rrYzcmd --foo x 1 --bar y 2 3rr�r)r�r\r�r]�r�r-rxz!cmd --foo x 1 --error 2 --bar y 3r)z--errorr-rx)
rRrSr�r2r��parse_intermixed_argsr�rPr��parse_known_intermixed_argsr�rtrD)rr�r�r�rKrWrrr�
test_basicYs"

zTestIntermixedArgs.test_basiccCs~tdd�}|�d�|�d�|jddd�d��}|�t��
}|�|�Wd�n1s/wY|�t|j�d	�dS)
Nrmrr�r�rr�rr�z\.\.\.)	rvr�r�r�r�r_r�r�rV)rr�r�rXrrr�test_remainderts


�z!TestIntermixedArgs.test_remaindercCs�tdd�}|jdd�}|jdddd�|jd	d
d�|jdd
ddd�|�d���}|�tddgddd�|�|�t|jd���|�|j	d�dS)NrmrTr�r�r�r/rrr+r0r�r�r4r�r1r2z	1 --foo 2r�r-)r�r�r*r�)
rvr�r�r_r�r�rPr�r`rD)rr�r�rKrrr�test_exclusive�s
z!TestIntermixedArgs.test_exclusivecCshtdd�}|jdd�}|jdddd�|jd	d
d�|jdd
ddd�|�t|jg�|�|jd�dS)NrmrTr�r�r�r/rrr+r0r�r�r4r�r1r2)rvr�r�r�r�r_r�rDrrrr�test_exclusive_incompatible�s
z.TestIntermixedArgs.test_exclusive_incompatibleN)rrrrarbrcrdrrrrr[Xs

r[c@r)�!TestIntermixedMessageContentErrorcCs�tddd�}|jdtd�|jdtdd�|�t��
}|�g�Wd�n1s*wYt|j�}|�|d�|�|d	�|�t��
}|�	g�Wd�n1sUwYt|j�}|�
|d�|�|d	�dS)
Nrmrr�r5r�r6TrCr7)rvr�r�r2r�r`rprVr�r_ZassertNotRegexr8rrrr9�s�
�
zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageN)rrrr9rrrrre�srec@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`S)a�TestAddArgumentMetavarz,length of metavar tuple does not match nargscCst��}|jd||d�dS)Nr��rrw)rRrSr�)rrrwr�rrr�do_test_no_exception�sz+TestAddArgumentMetavar.do_test_no_exceptioncCs\t��}|�t��}|jd||d�Wd�n1swY|�|jjd|j�dS)Nr�rgr)	rRrSr�r8r�r�rVrK�EXPECTED_MESSAGE)rrrwr�rXrrr�do_test_exception�s
�z(TestAddArgumentMetavar.do_test_exceptioncC�|jddd�dS)Nr�rg�rhrrrr�test_nargs_None_metavar_string�r�z5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdt�d�dS)Nrg�rj�tuplerrrr�test_nargs_None_metavar_length0�r�z6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCrk)Nr�rgrlrrrr�test_nargs_None_metavar_length1�r�z6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCrk)N�r�r-rg�rjrrrr�test_nargs_None_metavar_length2�r�z6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCrk)Nr^rgrsrrrr�test_nargs_None_metavar_length3�r�z6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCr�)Nr)r�rgrlrrrr�"test_nargs_optional_metavar_string�r�z9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcC�|jdt�d�dS)Nr)rgrnrrrr�#test_nargs_optional_metavar_length0�r�z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCr�)Nr)r�rgrlrrrr�#test_nargs_optional_metavar_length1�r�z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCr�)Nr)rrrgrsrrrr�#test_nargs_optional_metavar_length2�r�z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCr�)Nr)r^rgrsrrrr�#test_nargs_optional_metavar_length3�r�z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCr�)Nr4r�rgrlrrrr�$test_nargs_zeroormore_metavar_string�r�z;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCrw)Nr4rgrnrrrr�%test_nargs_zeroormore_metavar_length0�r�z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0cCr�)Nr4r�rgrlrrrr�%test_nargs_zeroormore_metavar_length1�r�z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1cCr�)Nr4rrrgrlrrrr�%test_nargs_zeroormore_metavar_length2�r�z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2cCr�)Nr4r^rgrsrrrr�%test_nargs_zeroormore_metavar_length3�r�z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3cCr�)Nr8r�rgrlrrrr�#test_nargs_oneormore_metavar_string�r�z:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringcCrw)Nr8rgrnrrrr�$test_nargs_oneormore_metavar_length0�r�z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0cCr�)Nr8r�rgrsrrrr�$test_nargs_oneormore_metavar_length1�r�z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1cCr�)Nr8rrrgrlrrrr�$test_nargs_oneormore_metavar_length2�r�z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2cCr�)Nr8r^rgrsrrrr�$test_nargs_oneormore_metavar_length3�r�z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3cCr�)Nr�r�rgrlrrrr�#test_nargs_remainder_metavar_stringr�z:TestAddArgumentMetavar.test_nargs_remainder_metavar_stringcCrw)Nr�rg)rhrorrrr�$test_nargs_remainder_metavar_length0r�z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0cCr�)Nr�r�rgrlrrrr�$test_nargs_remainder_metavar_length1	r�z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1cCr�)Nr�rrrgrlrrrr�$test_nargs_remainder_metavar_length2r�z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2cCr�)Nr�r^rgrlrrrr�$test_nargs_remainder_metavar_length3r�z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3cCr�)N�A...r�rgrlrrrr� test_nargs_parser_metavar_stringr�z7TestAddArgumentMetavar.test_nargs_parser_metavar_stringcCrw)Nr�rgrnrrrr�!test_nargs_parser_metavar_length0r�z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0cCr�)Nr�r�rgrlrrrr�!test_nargs_parser_metavar_length1r�z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1cCr�)Nr�rrrgrsrrrr�!test_nargs_parser_metavar_length2r�z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2cCr�)Nr�r^rgrsrrrr�!test_nargs_parser_metavar_length3 r�z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3cCr�)Nrr�rgrlrrrr�test_nargs_1_metavar_string%r�z2TestAddArgumentMetavar.test_nargs_1_metavar_stringcCrw)Nrrgrnrrrr�test_nargs_1_metavar_length0(r�z3TestAddArgumentMetavar.test_nargs_1_metavar_length0cCr�)Nrr�rgrlrrrr�test_nargs_1_metavar_length1+r�z3TestAddArgumentMetavar.test_nargs_1_metavar_length1cCr�)Nrrrrgrsrrrr�test_nargs_1_metavar_length2.r�z3TestAddArgumentMetavar.test_nargs_1_metavar_length2cCr�)Nrr^rgrsrrrr�test_nargs_1_metavar_length31r�z3TestAddArgumentMetavar.test_nargs_1_metavar_length3cCr�)Nr0r�rgrlrrrr�test_nargs_2_metavar_string6r�z2TestAddArgumentMetavar.test_nargs_2_metavar_stringcCrw)Nr0rgrnrrrr�test_nargs_2_metavar_length09r�z3TestAddArgumentMetavar.test_nargs_2_metavar_length0cCr�)Nr0r�rgrsrrrr�test_nargs_2_metavar_length1<r�z3TestAddArgumentMetavar.test_nargs_2_metavar_length1cCr�)Nr0rrrgrlrrrr�test_nargs_2_metavar_length2?r�z3TestAddArgumentMetavar.test_nargs_2_metavar_length2cCr�)Nr0r^rgrsrrrr�test_nargs_2_metavar_length3Br�z3TestAddArgumentMetavar.test_nargs_2_metavar_length3cCr�)Nr!r�rgrlrrrr�test_nargs_3_metavar_stringGr�z2TestAddArgumentMetavar.test_nargs_3_metavar_stringcCrw)Nr!rgrnrrrr�test_nargs_3_metavar_length0Jr�z3TestAddArgumentMetavar.test_nargs_3_metavar_length0cCr�)Nr!r�rgrsrrrr�test_nargs_3_metavar_length1Mr�z3TestAddArgumentMetavar.test_nargs_3_metavar_length1cCr�)Nr!rrrgrsrrrr�test_nargs_3_metavar_length2Pr�z3TestAddArgumentMetavar.test_nargs_3_metavar_length2cCr�)Nr!r^rgrlrrrr�test_nargs_3_metavar_length3Sr�z3TestAddArgumentMetavar.test_nargs_3_metavar_length3N)3rrrrirhrjrmrprqrtrurvrxryrzr{r|r}r~rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrf�sbrfc@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�TestInvalidNargszinvalid nargs valuez�nargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatecC�Zt��}|�t��}|jd|d�Wd�n1swY|�|jjd|j�dS�Nr�rr)	rRrSr�r8r�r�rVrK�EXPECTED_RANGE_MESSAGE�rrr�rXrrr�do_test_range_exception^�
�z(TestInvalidNargs.do_test_range_exceptioncCr�r�)	rRrSr�r8r�r�rVrK�EXPECTED_INVALID_MESSAGEr�rrr�do_test_invalid_exceptiondr�z*TestInvalidNargs.do_test_invalid_exceptioncCs|jdd�|jdd�dS)Nr�rZabcd)r�rrrr�test_nargs_alphabeticlsz&TestInvalidNargs.test_nargs_alphabeticcCs|jdd�dS)Nrr)r�rrrr�test_nargs_zeroprSz TestInvalidNargs.test_nargs_zeroN)	rrrr�r�r�r�r�r�rrrrr�Wsr�c@r�)�TestImportStarcCs tjD]
}|�tt|��qdSr*)rR�__all__r#r�rrrrr9ys
�zTestImportStar.testcCs0dd�tt���D�}|�t|�ttj��dS)NcSs0g|]\}}|�d�s|dkst�|�s|�qS)r��ngettext)�
startswith�inspectZismodule)rTr>rArrrrV~s���zJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>)r[rRrXr�rWr�)rrXrrr�'test_all_exports_everything_but_modules}s
�z6TestImportStar.test_all_exports_everything_but_modulesN)rrrr9r�rrrrr�wsr�cs$eZdZ�fdd�Zdd�Z�ZS)�TestWrappingMetavarcs,t���td�|_d}|jjd|d�dS)NZ9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyr�)r
r&rvr�r�)rrwrrrr&�s
�zTestWrappingMetavar.setUpcCs |j��}|�|t�d��dS)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>
            )r�r�r�r�r�)r�	help_textrrr�test_help_with_metavar�s
z*TestWrappingMetavar.test_help_with_metavar)rrrr&r�rrrrrr��s
r�c@rO)�TestExitOnErrorcCs$tjdd�|_|jjddtd�dS)NF)�
exit_on_errorz
--integers�N)rwrY)rRrSr�r�r2rrrrr&�r�zTestExitOnError.setUpcCs(|j�d���}|�|tjdd��dS)Nz--integers 4r?)Zintegers)r�rpr�r�rRr]r_rrr�!test_exit_on_error_with_good_args�sz1TestExitOnError.test_exit_on_error_with_good_argscCsB|�tj��|j�d���Wd�dS1swYdS)Nz--integers a)r�rRr�r�rpr�rrrr� test_exit_on_error_with_bad_args�s"�z0TestExitOnError.test_exit_on_error_with_bad_argsN)rrrr&r�r�rrrrr��sr�cCsit_t�t_dSr*)rrr�rrrrr�tearDownModule�sr��__main__)�r�rr�r.r9r7rir�r+ZunittestrRZtest.supportrr�
TextIOWrapperrrr�r)rJrPrar`rurSrvrYr|r�r}r�r�r�r�r�r�r�r�r�r�r�rr	r
rrrrr r(r3r7r9rBrFrIrLrNrOrZr[rcrerorprrrtryr{rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rmrnr�rr)Z	eq_stderrrr,Z
eq_bstderrrrrrrZskipIfr�r!r"r*r+r-r/r7r;r?rIrKrQr`rerir�r�r�rrr&r(r*r.r4r:r<r=r>r@rCrDrErFrGrHrIrJrYr\rerfrur�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr!r(r.r0r4r=rDrNr[rerfr�r�r�r�r�r�mainrrrr�<module>s

&q












""����
A
&'4-0#+!$-*(),	��������^R$7/4(69$&"$.
10/+!~-LI%=1*?) �