Your IP : 216.73.216.85


Current Path : /opt/alt/python38/lib64/python3.8/test/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/__pycache__/test_argparse.cpython-38.opt-2.pyc

U

i�f���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZddlm
Z
Gdd�de
�ZGdd�dej�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�Zdd�ZGdd�dej�ZGdd�de�ZefZedei�ZGdd�de�ZGdd�de�ZGdd�de�ZGdd�de�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(Gd0d1�d1e�Z)Gd2d3�d3e�Z*Gd4d5�d5e�Z+Gd6d7�d7e�Z,Gd8d9�d9e�Z-Gd:d;�d;e�Z.Gd<d=�d=e�Z/Gd>d?�d?e�Z0Gd@dA�dAe�Z1GdBdC�dCe�Z2GdDdE�dEe�Z3GdFdG�dGe�Z4GdHdI�dIe�Z5GdJdK�dKe�Z6GdLdM�dMe�Z7GdNdO�dOe�Z8GdPdQ�dQe�Z9GdRdS�dSe�Z:GdTdU�dUe�Z;GdVdW�dWe�Z<GdXdY�dYe�Z=GdZd[�d[e�Z>Gd\d]�d]e�Z?Gd^d_�d_e�Z@Gd`da�dae�ZAGdbdc�dce�ZBGddde�dee�ZCGdfdg�dge�ZDGdhdi�die�ZEGdjdk�dke�ZFGdldm�dme�ZGGdndo�doe�ZHGdpdq�dqe�ZIGdrds�dse�ZJGdtdu�due�ZKGdvdw�dwe�ZLGdxdy�dye�ZMGdzd{�d{e�ZNGd|d}�d}e�ZOGd~d�de�ZPGd�d��d�e�ZQGd�d��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�ee�ZnGd�d��d�ee�ZoGd�d��d�e�ZpGd�d��d��ZqeqdƒZreqdÃZseqdăZtGd�dƄd�e�ZuGd�dȄd�ee�ZvGd�dʄd�ee�ZwGd�d̄d�ee�ZxGd�d΄d�e�Zye�ze{edσ�o�e�|�dkdСGd�d҄d�ee��Z}Gd�dԄd�ee�Z~Gd�dքd�e�ZGd�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��d�e�e�Z�Gd�d��d�e�e�Z�Gd�d��d�e�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�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�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�Z�G�d�d��de�Z�G�d�d��de�Z�G�d�d��de�Z�efZe��dei�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�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ېd��d��Z�eݐd�k�r�e܃dS(��N)�StringIO)�support)�mockc@seZdZdS)�StdIOBufferN��__name__�
__module__�__qualname__�r
r
�7/opt/alt/python38/lib64/python3.8/test/test_argparse.pyrsrc@seZdZdd�ZdS)�TestCasecCs t��}d|d<|�|j�dS)NZ80�COLUMNS)r�EnvironmentVarGuard�
addCleanup�__exit__��self�envr
r
r�setUpszTestCase.setUpN)rrr	rr
r
r
rrsrc@s$eZdZdd�Zdd�Zdd�ZdS)�TempDirMixincCs$t��|_t��|_t�|j�dS�N)�tempfileZmkdtemp�temp_dir�os�getcwd�old_dir�chdir�rr
r
rr!s

zTempDirMixin.setUpcCs^t�|j�tj|jdd�D].\}}}|D]}t�tj�|j|�tj	�q*qt
�|jd�dS)NF)�topdownT)rrr�walkr�chmod�path�join�stat�S_IWRITE�shutilZrmtree)r�root�dirs�files�namer
r
r�tearDown&s
zTempDirMixin.tearDownc	CsBtj�|j|�}t|d��}|�|�W5QRXt�|tj�dS)N�w)	rr!r"r�open�writer r#�S_IREAD)r�filenameZ	file_path�filer
r
r�create_readonly_file-sz!TempDirMixin.create_readonly_fileN)rrr	rr*r1r
r
r
rrsrc@seZdZdd�ZdS)�SigcOs||_||_dSr)�args�kwargs�rr3r4r
r
r�__init__5szSig.__init__N�rrr	r6r
r
r
rr23sr2c@s$eZdZdd�Zdd�Zdd�ZdS)�NScKs|j�|�dSr)�__dict__�update)rr4r
r
rr6<szNS.__init__cCs4t|j���}d�dd�|D��}dt|�j|fS)Nz, cSsg|]}d|�qS)z%s=%rr
)�.0�tupr
r
r�
<listcomp>AszNS.__repr__.<locals>.<listcomp>z%s(%s))�sortedr9�itemsr"�typer)rZsorted_itemsZ	kwarg_strr
r
r�__repr__?szNS.__repr__cCst|�t|�kSr)�vars�r�otherr
r
r�__eq__Dsz	NS.__eq__N)rrr	r6rArEr
r
r
rr8:sr8c@seZdZddd�ZdS)�ArgumentParserErrorNcCs,t�||||�||_||_||_||_dSr)�	Exceptionr6�message�stdout�stderr�
error_code)rrHrIrJrKr
r
rr6Js
zArgumentParserError.__init__)NNNr7r
r
r
rrFHsrFc
Os�ttjt�sttjt�r"|||�Stj}tj}t�t_t�t_z�z^|||�}tt|��D]<}t||�tjkrxt|||�t||�tjkrXt|||�qX|WW�JSt	k
r�t�
�dj}tj��}tj��}	t
d||	|��YnXW5|t_|t_XdS)N��
SystemExit)�
isinstance�sysrJrrI�listrB�getattr�setattrrM�exc_info�code�getvaluerF)
�
parse_argsr3r4Z
old_stdoutZ
old_stderr�result�keyrTrIrJr
r
r�stderr_to_parser_errorRs,




rYcs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�ErrorRaisingArgumentParsercstt|�j}t|f|�|�Sr)�superrZrVrY)rr3r4rV��	__class__r
rrVtsz%ErrorRaisingArgumentParser.parse_argscstt|�j}t|f|�|�Sr)r[rZ�exitrY)rr3r4r^r\r
rr^xszErrorRaisingArgumentParser.exitcstt|�j}t|f|�|�Sr)r[rZ�errorrY)rr3r4r_r\r
rr_|sz ErrorRaisingArgumentParser.error)rrr	rVr^r_�
__classcell__r
r
r\rrZrsrZc@seZdZdd�ZdS)�ParserTesterMetaclasscCs�|dkrdSt|d�st�|_t|d�s.t|_dd�}dd�}dd	�}d
d�}dd
�}Gdd�dt�}	|||fD]}
||fD]}|	||
|�q|qpdS)N�ParserTestCase�parser_signature�parser_classcSs|D]}|j|j|j�qdSr)�add_argumentr3r4)�parser�argument_signatures�sigr
r
r�	no_groups�sz1ParserTesterMetaclass.__init__.<locals>.no_groupscSs(|�d�}|D]}|j|j|j�qdS)N�foo)�add_argument_grouprer3r4)rfrg�grouprhr
r
r�	one_group�s
z1ParserTesterMetaclass.__init__.<locals>.one_groupcSs4t|�D]&\}}|�d|�}|j|j|j�qdS)Nzfoo:%i)�	enumeraterkrer3r4)rfrg�irhrlr
r
r�many_groups�sz3ParserTesterMetaclass.__init__.<locals>.many_groupscSs
|�|�Sr)rV)rfr3r
r
r�listargs�sz0ParserTesterMetaclass.__init__.<locals>.listargscSs0tj}|dg|t_z|��W�S|t_XdS)Nr)rO�argvrV)rfr3Zold_sys_argvr
r
r�sysargs�s
z/ParserTesterMetaclass.__init__.<locals>.sysargsc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
z0ParserTesterMetaclass.__init__.<locals>.AddTestsc	Ss�||_||_|jj}|jj}|j|jfD]V}|j}|||f}d�|�}	|fdd�}
z
|	|
_Wntk
rpYnXt||	|
�q(dS)N�_cSs||�dSrr
�r�	test_funcr
r
r�wrapper�szJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper)�_add_arguments�_parse_argsr�
test_failures�test_successesr"�	TypeErrorrR)rZ
tester_cls�
add_argumentsrVZadd_arguments_nameZparse_args_namervZ	func_name�names�	test_namerwr
r
rr6�s


z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__cSs.|jj}|jj}|j||�}|�||j�|Sr)rcr3r4rdrxrg)r�testerr3r4rfr
r
r�_get_parser�s
z<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parserc
SsF|�|�}|jD]0}|��}|jt|d��|�|�W5QRXqdS)N)�msg)r��failures�split�assertRaisesrFrV)rr�rf�args_strr3r
r
rrz�s


z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failurescSsH|�|�}|jD]2\}}t|t�r*|��}|�||�}|�||�qdSr)r��	successesrN�strr�ry�assertEqual)rr�rfr3�expected_nsZ	result_nsr
r
rr{�s

z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successesN)rrr	r6r�rzr{r
r
r
r�AddTests�sr�)�hasattrr2rcrZrd�object)�clsr)�bases�bodydictrirmrprqrsr�r}rVr
r
rr6�s

	-zParserTesterMetaclass.__init__Nr7r
r
r
rra�srarbc@sdeZdZed�gZdddddgZdedd�fd	edd�fd
edd�fdedd�fd
edd�fgZdS)�TestOptionalsSingleDash�-x�a�--foo�-x --fooz-x -y�N��x�-x a�-xaz-x -1�-1z-x-1�rrr	r2rgr�r8r�r
r
r
rr��s
�r�c@s
eZdZeddd�edddd�ed�gZd	d
ddd
ddddddgZdedddd�fdedddd�fdeddd	d�fdeddd	d�fdeddd	d�fdeddd	d�fdeddd	d�fdeddd	d�fdedddd�fdedddd�fd eddd	d�fd!eddd	d�fgZdS)"�TestOptionalsSingleDashCombinedr��
store_true��actionz-yyy�store_const�*�r��const�-zr�r�r�r�z-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzar�FN)r��yyy�zT�-za�-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar�r
r
r
rr�s0
���r�c@sfeZdZed�gZddddddgZdedd	�fd
edd	�fdedd	�fd
edd	�fdedd	�fgZdS)�TestOptionalsSingleDashLong�-foor�r�z
-foo --fooz-foo -y�-fooar�N�rjz-foo az-foo -1r�z-fo a�-f ar�r
r
r
rr�!s
�r�c@s�eZdZed�ed�ed�gZddddddd	gZd
edddd�fd
edddd�fdedddd�fdedddd�fdedddd�fdedddd�fdedddd�fgZdS)�&TestOptionalsSingleDashSubsetAmbiguous�-f�-foobar�-foorabr��-fo�-foo bz-foobz-foobaz-foorar�N)�f�foobar�foorabr�r��-fa�-foaZoar�Zooa�	-foobar a�	-foorab ar�r
r
r
rr�/s�r�c@s�eZdZed�ed�gZddddddd	gZd
eddd�fd
eddd�fdeddd�fdeddd�fdeddd�fdeddd�fdeddd�fgZdS)� TestOptionalsSingleDashAmbiguousr�r�r�r�r�r�r�r�r�r�N)r�r�z-foob ar�z-foor az-fooba az-foora ar�r�r�r
r
r
rr�?s�r�c@s^eZdZeddd�gZddddddgZd	ed
d�fdedd�fd
edd�fdedd�fgZd
S)�TestOptionalsNumericr��one��destr�z-1 --fooz-1 -yz-1 -1z-1 -2r�N)r�z-1 az-1az-1-2�-2r�r
r
r
rr�Os�r�c@sfeZdZed�gZddddddgZdedd	�fd
edd	�fdedd	�fded
d	�fded
d	�fgZdS)�TestOptionalsDoubleDashr�r�r�r�z--foo -xz--foo --barr�Nr�z--foo az--foo=az
--foo -2.5z-2.5z
--foo=-2.5r�r
r
r
rr�\s
�r�c
@s�eZdZeddd�ed�gZddddd	d
gZdedd
d�fdeddd�fdedd
d�fdedd
d�fdedd
d�fdedd
d�fgZd
S)�#TestOptionalsDoubleDashPartialMatch�--badgerr�r�z--bat�--bar�--b�--ba�--b=2z--ba=4�	--badge 5r�FN)�badgerZbatz--bat X�X�--badT�--badg�--badger�r
r
r
rr�js
��r�c@s�eZdZeddd�ed�gZdddddgZd	ed
dd�fd
ed
dd�fded
dd�fdeddd�fdeddd�fdeddd�fdeddd�fgZdS)�"TestOptionalsDoubleDashPrefixMatchr�r�r�r�r�r�r�r�r�FN)r�Zbaz--ba Xr�z--ba=Xr�Tr�r�r�r
r
r
rr�|s
��r�c@s�eZdZeddd�ed�edddd�gZdd	d
ddd
gZdedddd�fdedddd�fdedd
dd�fdedd
dd�fdedddd�fdedddd�fgZdS)�TestOptionalsSingleDoubleDashr�r�r�r��-bazr�r�r��-fbarz-fbazz-bazf�-b B�Br�FN�r��bar�bazTz--ba Bz
-f --bar Bz-f -bz-ba -fr�r
r
r
rr��s
��r�c@s�eZdZeddd�Zeddd�ed�edd	d
d�gZdd
ddddddddddgZdedddd�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/helpr�Nr�T�::ba B�
+f ::bar B�+f /b�/ba +f�	rrr	r2rcrgr�r8r�r
r
r
rr��s
��r�c@s�eZdZeddd�Zeddd�ed�edd	d
d�gZdd
dddddgZdedddd�fdedddd�fdedddd�fdedddd�fdeddd
d�fdeddd
d�fgZdS)�*TestOptionalsAlternatePrefixCharsAddedHelpr�Tr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�FNr�r�r�r�r�r�r
r
r
rr��s
��r�c	@s�eZdZeddd�Zeddd�eddd�eddd�gZd	d
ddd
gZdedddd�fdedddd�fdedddd�fdedddd�fgZdS)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-Fr�r�r�r�z+yz+z�-wz-xyzz+xr�z+xyzr��r��yr�Tz+y -xz+yz -xNr�r
r
r
rr��s 


���r�c@sleZdZedddddd�gZddd	d
gZdedd
�fdedd
�fdedd
�fdedd
�fdedd
�fgZdS)�TestOptionalsShortLong�-vz	--verbosez-nz--noisyr�r�z
--x --verbosez-Nr�z-v xr�F)�verboseTNr�r
r
r
rr��s��r�c@sbeZdZed�eddd�gZdgZdeddd	�fd
eddd	�fded
dd	�fdeddd	�fgZdS)�TestOptionalsDestz	--foo-bar�--baz�zabbazr�r�z--foo-bar fr�N)Zfoo_barr�z--baz g�gz--foo-bar h --baz i�hroz--baz j --foo-bar k�k�jr�r
r
r
rr��s�r�c@sTeZdZed�eddd�gZdgZdeddd�fd	ed
dd�fdeddd�fgZdS)
�TestOptionalsDefaultr�r�r���defaultr�r�N�r�r�z-xxr�z-yyr�r�r
r
r
rr�s�r�c@s:eZdZed�gZddgZdedd�fdedd�fgZdS)�TestOptionalsNargsDefaultr�r�r�Nr�r�r�r
r
r
rr�s

�r�c@s@eZdZeddd�gZddgZdedd�fdedgd�fgZdS)	�TestOptionalsNargs1r�rL��nargsr�r�Nr�r�r�r
r
r
rr�s
�r�c@sLeZdZeddd�gZddddddgZd	ed
d�fdedd
dgd�fgZd
S)�TestOptionalsNargs3r��r�r�r��-x a b�a -x�a -x br�Nr�z-x a b c�b�cr�r
r
r
rr"s
�rc@s�eZdZeddd�edddd�edddd	�ed
deddd
�gZdgZdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fd
eddddd�fdeddddd�fg	ZdS)�TestOptionalsNargsOptionalr��?r�r�r�)r�r�r��spam�r�r�r��42Z84)r�r@r�r��2r�N�T�r+r�r�r�z-w 2z-x 2z-y 2z-z 2��	rrr	r2�intrgr�r8r�r
r
r
rr-s 
��rc@s�eZdZeddd�edddd�gZdgZded	dd
�fdegdd
�fdedgdd
�fdedd
gdd
�fded	gd
�fded	dgd
�fded	dd
gd
�fgZd	S)�TestOptionalsNargsZeroOrMorer��*r�r�r	r
r�r�Nr�r�rr�-y a�-y a br�r
r
r
rrDs
��rc	@s�eZdZeddd�edddd�gZddddd	gZd
eddd�fd
edgdd�fdeddgdd�fdeddgd�fdedddgd�fgZdS)�TestOptionalsNargsOneOrMorer��+r�r�r	r
r�rza -y br�Nr�r�rrrrr�r
r
r
rrWs
��rc
@s�eZdZeddd�edeed�d�gZddd	d
dgZded
d
d�fdedd
d�fdedd
d�fded
dd�fded
dd�fdeddd�fgZ	d
S)�TestOptionalsChoicesr��abc��choicesz-g��r@rr�z-f dz-fadz-gaz-g 6r�N)r�r�r�z-f crz-g 0rz-g 03rz-fb -g4r��
rrr	r2r�rangergr�r8r�r
r
r
rrhs
��rc@s@eZdZededd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsRequiredr�T�r@�requiredr�r��-x 1rLr�z-x42r�Nrr
r
r
rr!ys��r!c@s>eZdZeddd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsActionStorer��storer�r�rr�Nr�z-xfoorjr�r
r
r
rr%�s
�r%c@s>eZdZedded�gZdgZdedd�fdeed�fgZdS)�TestOptionalsActionStoreConstr�r�r�r�r�N�r�)	rrr	r2r�rgr�r8r�r
r
r
rr'�s
�r'c@s@eZdZeddd�gZdddgZdedd	�fded
d	�fgZdS)�TestOptionalsActionStoreFalser��store_falser�r�r�r�r�T)r�FNr�r
r
r
rr)�s

�r)c@s@eZdZeddd�gZdddgZdedd	�fded
d	�fgZdS)�TestOptionalsActionStoreTruez--appler�r�r�z	--apple=bz	--apple br�F)ZappleTNr�r
r
r
rr+�s

�r+c@sTeZdZeddd�gZddddgZdedd	�fd
edgd	�fdeddgd	�fgZdS)
�TestOptionalsActionAppendr��appendr�r��a --baz�	--baz a br�N�r��--baz a�--baz a --baz brr�r
r
r
rr,�s�r,c@s^eZdZedddgd�gZddddgZdedgd	�fd
eddgd	�fdedddgd	�fgZd
S)�$TestOptionalsActionAppendWithDefaultr�r-r��r�r�r�r.r/r�r0r1r2rNr�r
r
r
rr3�s�r3c@sheZdZedded�edddd�gZddd	d
dgZded
d�fdeegd�fdeededgd�fgZd
S)�TestOptionalsActionAppendConst�-b�append_constr��-cr-r�r�r�r��a -c�-bx�-b xr�N�r�-b -cx -b -cyzr��yz�	rrr	r2rGrgr�r8r�r
r
r
rr5�s��r5c	@sreZdZeddedgd�edddd�gZd	dd
ddgZd
edgd�fdedegd�fdedededgd�fgZdS)�)TestOptionalsActionAppendConstWithDefaultr6r7r�)r�r�r�r8r-rr9r�r:r;r<r�r=r>r�r?Nr@r
r
r
rrA�s��rAc@sBeZdZeddd�gZddddgZded	d
�fdedd
�fgZd	S)�TestOptionalsActionCountr��countr�r�r�z-x bz	-x a -x br�Nr�rLr�r
r
r
rrB�s
�rBc	@sreZdZed�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--foobr�NF)rjZfoobazZfooblez--foo 7�7z	--fooba ar�z--foobl --foo gr�Tr�r
r
r
rrD�s
��rDc@speZdZedd�Zed�eddd�ed�gZdd	d
dgZded
dd
d�fdeddd
d�fdedddd�fgZd
S)�%TestOptionalsDisallowLongAbbreviationF��allow_abbrevr�z--foodler�r�z--foonlyz-foon 3z--foon 3z--foodz--food --foo 2r�N�rjZfoodleZfoonlyz--foo 3�3z--foonly 7 --foodle --foo 2rTrEr�r
r
r
rrFs

��rFc@sreZdZeddd�Zed�eddd�ed�gZd	d
ddgZd
edddd�fdedddd�fdedddd�fgZdS)�0TestOptionalsDisallowLongAbbreviationPrefixCharsrF�r�rHz++fooz++foodler�r�z++foonlyz+foon 3z++foon 3z++foodz++food ++foo 2r�NrIz++foo 3rJz++foonly 7 ++foodle ++foo 2rTrEr�r
r
r
rrKs
��rKc
@s�eZdZedd�Zed�eddd�gZddgZded	d	d
�fdedd	d
�fd
edd	d
�fded	dd
�fdeddd
�fdeddd
�fgZd	S)�/TestDisallowLongAbbreviationAllowsShortGroupingFrGz-rr8rCr�z-c -rr�N��rrz-rar�z-rcc�ccz-ccrz-cc -raz-ccrccr�r
r
r
rrM&s

��rMc
@s�eZdZeddd�Zed�eddd�gZddgZd	ed
d
d�fded
d
d�fdedd
d�fded
dd�fded
dd�fdeddd�fgZd
S)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixrFrLz+rz+crCr�z+c +rr�NrNz+rar�z+rccrPz+ccrz+cc +raz+ccrccr�r
r
r
rrQ9s
��rQc@s0eZdZed�gZdddgZdedd�fgZdS)�TestPositionalsNargsNonerjr�r��a br�r�Nr�r
r
r
rrRPs

�rRc@s6eZdZeddd�gZdddgZdedgd�fgZd	S)
�TestPositionalsNargs1rjrLr�r�r�rSr�r�Nr�r
r
r
rrTZs
�rTc@s:eZdZeddd�gZddddgZdedd	gd
�fgZdS)�TestPositionalsNargs2rjrr�r�r�r��a b crSrr�Nr�r
r
r
rrUds�rUc@sNeZdZeddd�gZdgZdegd�fdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsZeroOrMorerjrr�r�r�r�r�rSrNr�r
r
r
rrWns�rWc@sPeZdZedddd�gZdgZdedd�fdedgd�fd	edd
gd�fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultrjrr�r
r�r�r�r�rSrNr�r
r
r
rrXzs�rXc@sDeZdZeddd�gZddgZdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsOneOrMorerjrr�r�r�r�r�rSrNr�r
r
r
rrY�s
�rYc@s>eZdZeddd�gZddgZdedd�fd	ed	d�fgZdS)
�TestPositionalsNargsOptionalrjrr�r�rSr�Nr�r�r�r
r
r
rrZ�s
�rZc@s@eZdZedddd�gZddgZdedd�fd	ed	d�fgZd
S)�#TestPositionalsNargsOptionalDefaultrjrr�r
r�rSr�r�r�Nr�r
r
r
rr[�s
�r[c@sDeZdZeddedd�gZdddgZded	d
�fdedd
�fgZd
S)�,TestPositionalsNargsOptionalConvertedDefaultrjrr)r�r@r�r�rS�1 2r�r�r��1rLNrr
r
r
rr\�s�
�r\c@s:eZdZed�ed�gZddddgZdeddd	�fgZd
S)�TestPositionalsNargsNoneNonerjr�r�r�r�rVrSr�rjr�Nr�r
r
r
rr_�s�r_c@s@eZdZed�eddd�gZddddgZd	edd
gd�fgZdS)
�TestPositionalsNargsNone1rjr�rLr�r�r�r�rVrSrr`Nr�r
r
r
rra�s�rac@sDeZdZeddd�ed�gZddddd	gZd
eddgdd
�fgZdS)�TestPositionalsNargs2Nonerjrr�r�r�r�r�rS�a b c drVrrr`Nr�r
r
r
rrb�s�rbc@s\eZdZed�eddd�gZddgZdedgd�fd	edd
gd�fdedd
dgd�fgZd
S)�"TestPositionalsNargsNoneZeroOrMorerjr�rr�r�r�r�r`rSrrVrNr�r
r
r
rrd�s�rdc@sPeZdZed�eddd�gZdddgZdedd	gd
�fdedd	dgd
�fgZd
S)�!TestPositionalsNargsNoneOneOrMorerjr�rr�r�r�r�rSrr`rVrNr�r
r
r
rre�s

�rec@sJeZdZed�eddd�gZdddgZdedd	d
�fdeddd
�fgZd	S)
� TestPositionalsNargsNoneOptionalrjr�rr�r�r�rVr�Nr`rSrr�r
r
r
rrf�s

�rfc@s\eZdZeddd�ed�gZddgZdegdd�fd	edgd
d�fdedd
gdd�fgZd
S)�"TestPositionalsNargsZeroOrMoreNonerjrr�r�r�r�r�r`rSrrVrNr�r
r
r
rrg�s�rgc@sPeZdZeddd�ed�gZdddgZdedgd	d
�fdedd	gdd
�fgZd
S)�!TestPositionalsNargsOneOrMoreNonerjrr�r�r�r�r�rSrr`rVrNr�r
r
r
rrhs

�rhc@sLeZdZedddd�ed�gZdddgZd	edd	d
�fded	dd
�fgZd
S)� TestPositionalsNargsOptionalNonerjrr�r
r�r�r�rVr�r`rSrNr�r
r
r
rri
s

�ric@sXeZdZeddd�eddd�gZdddgZd	edd
ggd�fdedd
gd
gd�fgZdS)�TestPositionalsNargs2ZeroOrMorerjrr�r�rr�r�r�rSrr`rVrNr�r
r
r
rrjs

�rjc@sHeZdZeddd�eddd�gZdddd	gZd
eddgdgd
�fgZdS)�TestPositionalsNargs2OneOrMorerjrr�r�rr�r�r�rSrVrrr`Nr�r
r
r
rrk#s�rkc@sXeZdZeddd�eddd�gZdddd	gZd
eddgdd
�fdeddgdd
�fgZdS)�TestPositionalsNargs2Optionalrjrr�r�rr�r�r�rcrSrNr`rVrr�r
r
r
rrl-s
�rlc@sfeZdZeddd�eddd�gZddgZdegdgd	�fd
edgdgd	�fdeddgd
gd	�fgZdS)�TestPositionalsNargsZeroOrMore1rjrr�r�rLr�r�r�r`rSrrVrNr�r
r
r
rrm8s�rmc@sXeZdZeddd�eddd�gZdddgZd	edgd
gd�fdedd
gd
gd�fgZdS)�TestPositionalsNargsOneOrMore1rjrr�r�rLr�r�r�rSrr`rVrNr�r
r
r
rrnDs

�rnc@sReZdZeddd�eddd�gZdddgZd	ed
d	gd�fded	d
gd�fgZd
S)�TestPositionalsNargsOptional1rjrr�r�rLr�r�rVr�Nr`rSrr�r
r
r
rroOs

�roc@s^eZdZed�eddd�eddd�gZddd	gZd
ed	gdgd�fd
ed	dgdgd�fgZdS)�#TestPositionalsNargsNoneZeroOrMore1rjr�rr�r�rLr�r�r�rSr�rjr�r�rVrNr�r
r
r
rrpZs

�
�rpc@sdeZdZed�eddd�eddd�gZddd	d
gZded	d
gdgd
�fded	d
dgdgd
�fgZdS)�"TestPositionalsNargsNoneOneOrMore1rjr�rr�r�rLr�r�r�rrVrrqrc�dNr�r
r
r
rrris

��rrc@s^eZdZed�edddd�eddd�gZd	d
dgZdeddd
gd�fdedd
dgd�fgZdS)�!TestPositionalsNargsNoneOptional1rjr�r��?r
r�rLr�r�r�r�rSrrqrVrNr�r
r
r
rrtxs
�
�rtc@s\eZdZeddd�edddd�gZddgZd	ed
dd�fdeddd�fd
eddd�fgZd
S)�$TestPositionalsNargsOptionalOptionalrjrr�r�r�r
r�rVr�Nr`r�rSrr�r
r
r
rrv�s
��rvc@sleZdZeddd�eddd�gZdgZdedgd	�fd
ed
gd	�fded
dgd	�fd
ed
ddgd	�fgZdS)�&TestPositionalsNargsOptionalZeroOrMorerjrr�r�rr�r�Nr`r�rSrrVrr�r
r
r
rrw�s�rwc@sbeZdZeddd�eddd�gZddgZded	dgd
�fdeddgd
�fd
edddgd
�fgZd	S)�%TestPositionalsNargsOptionalOneOrMorerjrr�r�rr�r�r�Nr`rSrrVrr�r
r
r
rrx�s�rxc@sHeZdZeded�d�gZdddddgZd	ed	d
�fdedd
�fgZdS)
�TestPositionalsChoicesStringr	Zabcdefgrr�r�r�r�efr��r	r�N)	rrr	r2�setrgr�r8r�r
r
r
rry�s
�ryc@sJeZdZedeed�d�gZdddddgZd	ed
d�fded
d�fgZ	dS)�TestPositionalsChoicesIntr	�rr�r�r�rrz�4rr{�15�Nrr
r
r
rr}�s
�r}c@sLeZdZeddd�edddd�gZdddd	d
gZdeddd
ggd�fgZdS)�TestPositionalsActionAppendr	r-r�r)r�r�r�r�r�rSrcrVrrr{Nr�r
r
r
rr��s
��r�c@sjeZdZeddd�edddd�gZdd	gZd
eddd
�fdeddd
�fdeddd
�fdeddd
�fgZdS)�"TestOptionalsNumericAndPositionalsr�rr�z-4r�r��r�r�r�z-315r�NFr�r�Tz-4 ar�r
r
r
rr��s
��r�c	@sveZdZeddd�edddd�gZdgZd	ed
dd�fd
ed
dd�fdeddd�fded
dd�fdeddd�fgZd
S)�(TestOptionalsAlmostNumericAndPositionalsr�rr�z-k4r�r�r�z-k3r�NFr�r�r�Tz-k4 ar�r
r
r
rr��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�rr�r�z--yyyr�r�r�Nr�za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�r
r
r
rr��s
��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�rr�)r�r�r�rr�r�)r�r@r�z-+-r�r�r�r�z+ -r�NFr�z- Xr�z+ -3���Tz- ===z===)
rrr	r2rcrrgr�r8r�r
r
r
rr�	s
��r�c@s�eZdZeddd�eddd�gZgZdedgd�fdeggd�fded	ggd�fd
ed	gdgd�fd	edd	gd�fdegd	gd�fd
edgd	gd�fgZdS)�TestNargsZeroOrMorer�rr�r�r�Nr�r�r�z	-x a -- brrrr�r
r
r
rr�s�r�c	@s�eZdZed�eddd�ed�gZdddgZdedgd	d
�fdedgdd
�fd
edddddgd	d
�fdedddgd	d
�fgZd	S)�TestNargsRemainderr�r��...r�r�r�z-z Zr�Nr�z-z Z X�Z�
X A B -z Z�Ar�z	X Y --foo�Yr�r�r
r
r
rr�,s
�r�c@seZdZeded�ededd�eddd�gZdd	d
ddd
dddddddg
Zdeddgd�fdeddgd�fdedddgd�fdeddgd�fdeddgd�fd eddgd�fd!edddgd�fdedddgd�fd"ed#ddgd�fd$ed#ddgd�fd%edd#dgd�fgZdS)&�TestOptionLiker��r@z-3r�)r@r�r�rr�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 ar�Nr�z-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)	rrr	r2�floatrgr�r8r�r
r
r
rr�9s6

���r�c@s�eZdZeddejd�eddejd�eddejd�gZd	gZd
e�fdedd�fd
eddgd�fdedd�fdeddd�fdeddgdd�fgZ	dS)�TestDefaultSuppressrjrr
r�rr�r�r4r�r�r�r�rSrr`Tr0r.�rjr�r/rqN)
rrr	r2�argparse�SUPPRESSrgr�r8r�r
r
r
rr�Ts��r�c@s�eZdZeejd�Zeddd�eddd�eddd	�gZd
gZde	�fde	dd
�fde	ddgd�fde	dd�fde	ddd�fde	ddgdd�fgZ
dS)�TestParserDefaultSuppress�Zargument_defaultrjrr�r�rr�r�r�r�r�r�r�rSrr`Tr0r.r�r/rqN)rrr	r2r�r�rcrgr�r8r�r
r
r
rr�gs


��r�c@s�eZdZedd�Zedddd�eddd	�ed
dd	�edd
d�gZdgZdeddddd�fdeddddd�fdeddgddd�fdeddddd�fdeddddd�fdeddgddd�fgZdS)�TestParserDefault42r�r��	--version�version�1.0�r�r�rjrr�r�rr�r�r�r�r�)rjr�r�r�r�rSrTr.r/Nr�r
r
r
rr�{s



��r�cs�eZdZ�fdd�Zedd�Zed�ed�eddd	�gZd
ddd
dgZdedddgd�fdeddddgd�fdedddgd�fdedddgd�fdeddddgd�fdeddddgd�fdd
ddged
ddgd�fgZ	�Z
S)�TestArgumentsFromFilec
sJtt|���dddg}|D](\}}t|d��}|�|�W5QRXqdS)N��helloz
hello world!
)�	recursivez-a
A
@hello)Zinvalidz@no-such-path
r+)r[r�rr,r-�rZ
file_textsr!�textr0r\r
rr�s�zTestArgumentsFromFile.setUp�@�Zfromfile_prefix_chars�-ar�r�rr�r�r6r�z@invalidz@missingzX YNr�)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�)rrr	rr2rcrgr�r8r�r`r
r
r\rr��s

��r�csbeZdZ�fdd�ZGdd�de�ZeZedd�Zeddd	�gZ	gZ
d
eddd
gd�fgZ�Z
S)�TestArgumentsFromFileConverterc
sFtt|���dg}|D](\}}t|d��}|�|�W5QRXqdS)Nr�r+)r[r�rr,r-r�r\r
rr�s�z$TestArgumentsFromFileConverter.setUpc@seZdZdd�ZdS)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs"|��D]}|��sq|VqdSr)r��strip)rZarg_line�argr
r
r�convert_arg_line_to_args�szWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrr	r�r
r
r
r�FromFileConverterArgumentParser�sr�r�r�r�rr�r�r�zworld!r�r()rrr	rrZr�rdr2rcrgr�r8r�r`r
r
r\rr��s	

��r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestFileTypeReprcCst�d�}|�dt|��dS)NrOz
FileType('r')�r��FileTyper��repr�rr@r
r
r�test_r�s
zTestFileTypeRepr.test_rcCs t�dd�}|�dt|��dS)N�wbrLzFileType('wb', 1)r�r�r
r
r�	test_wb_1�szTestFileTypeRepr.test_wb_1cCs"tjddd�}|�dt|��dS)NrO�latin_1��encodingz!FileType('r', encoding='latin_1')r�r�r
r
r�test_r_latin�szTestFileTypeRepr.test_r_latincCs$tjdddd�}|�dt|��dS)Nr+�big5�ignore)r��errorsz/FileType('w', encoding='big5', errors='ignore')r�r�r
r
r�test_w_big5_ignore�s�z#TestFileTypeRepr.test_w_big5_ignorecCs$tjdddd�}|�dt|��dS)NrOrL�replace�r�z"FileType('r', 1, errors='replace')r�r�r
r
r�test_r_1_replace�sz!TestFileTypeRepr.test_r_1_replaceN)rrr	r�r�r�r�r�r
r
r
rr��s
r�c@seZdZdd�Zdd�ZdS)�StdStreamComparercCs
||_dSr)�attr)rr�r
r
rr6�szStdStreamComparer.__init__cCs|tt|j�kSr)rQrOr�rCr
r
rrE�szStdStreamComparer.__eq__N�rrr	r6rEr
r
r
rr��sr��stdinrIrJc@s eZdZiZdd�Zdd�ZdS)�RFilecCs
||_dSr�r)�rr)r
r
rr6�szRFile.__init__cCs`||jkr|j|}n|��}|j|<|��t|t�sD|�d�}|j|jkoZ|kSS)N�ascii)�seen�read�closerNr��decoder)�rrDr�r
r
rrE�s


zRFile.__eq__N)rrr	r�r6rEr
r
r
rr��sr�c	s�eZdZ�fdd�Zede��d�ede�d�d�gZdddgZd	e	d
e
d	�d�fde	e
d	�e
d
�d�fde	e
d	�e
d
�d�fde	eed�fde	d
e
d�d�fgZ�Z
S)�
TestFileTypeRc
sRtt|���dD]0}ttj�|j|�d��}|�|�W5QRXq|�	d�dS)Nr`r+�readonly)
r[r�rr,rr!r"rr-r1�r�	file_namer0r\r
rr
s
zTestFileTypeR.setUpr�r�r	rOr�znon-existent-file.txtrjN�r�r	�
-x foo barr��
bar -x foo�-x - -r��rrr	rr2r�r�rgr�r8r��eq_stdinr�r`r
r
r\rr�s�
�r�csLeZdZ�fdd�Zede�d�dd�gZdgZde	e
d	�d
�fgZ�ZS)�TestFileTypeDefaultscs:tt|���ttj�|jd�d�}|�d�|�	�dS)N�goodr+)
r[r�rr,rr!r"rr-r�)rr0r\r
rr s
zTestFileTypeDefaults.setUpr8rOzno-file.txt�r@r�r�z-c goodr�)r)
rrr	rr2r�r�rgr�r8r�r�r`r
r
r\rr�s
�r�cs�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
sHtt|���dD]0}ttj�|j|�d��}|�|�W5QRXqdS)Nr`r+)	r[r�rr,rr!r"rr-r�r\r
rr2szTestFileTypeRB.setUpr��rbr�r	r�rjNr�r�r�r�r�r�r
r
r\rr�/s��r�c@s"eZdZe�Zdd�Zdd�ZdS)�WFilecCs
||_dSrr�r�r
r
rr6HszWFile.__init__cCsL||jkr@d}d|jkr"|�d�}|�|�|��|j�|�|j|jkS)NzCheck that file is writable.rr�)r��mode�encoder-r��addr)r�r
r
rrEKs



zWFile.__eq__N)rrr	r|r�r6rEr
r
r
rr�Esr��geteuidznon-root user requiredcs�eZdZ�fdd�Zede�d�d�ede�d�d�gZdddgZd	e	d
e
d	�d�fde	e
d	�e
d
�d�fde	e
d	�e
d
�d�fde	eed�fgZ�Z
S)�
TestFileTypeWcstt|���|�d�dS)Nr�)r[r�rr1rr\r
rr[szTestFileTypeW.setUpr�r+r�r	r�r�rjNr�r�r�r�r�)rrr	rr2r�r�rgr�r8r��	eq_stdoutr�r`r
r
r\rr�Vs�
�r�c@s�eZdZede�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	r�rjNr�r�r�r�r�)rrr	r2r�r�rgr�r8r�r�r�r
r
r
rr�ls��r�c@seZdZdd�ZdS)�TestFileTypeOpenArgsc	Cs�tj}|d�df|dd�df|ddd�df|d	d
d�df|dd
dd�dfg}t�d��*}|D]\}}|d�|jd|��q\W5QRXdS)Nr�)r����NNr+rL)r+rLNNr�r�)r+r�Nr�r�r�r�)r�r�r�Nr�l1�strict)r+rr�r�z
builtins.openrj)rj)r�r�rZpatchZassert_called_with)rZFTZcases�mr@r3r
r
r�test_open_args~s
�z#TestFileTypeOpenArgs.test_open_argsN)rrr	r�r
r
r
rr�{sr�c@seZdZdd�ZdS)�!TestFileTypeMissingInitializationc	CsLt��}|�t��}|jdtjd�W5QRX|�dtjft|j��dS)Nr�r�z<%r is a FileType class object, instance of it must be passed)	r��ArgumentParserr��
ValueErrorrer�r�r��	exception�rrf�cmr
r
r�test�s��z&TestFileTypeMissingInitialization.testN�rrr	r�r
r
r
rr��sr�c@s^eZdZeded�eded�gZddddgZded	d
d�fded
dd�fdeddd�fgZ	dS)�TestTypeCallablez--eggsr�r	r�Z42jz--eggs az	--eggs 2iz--eggs=42 42r�gE@)�eggsr	z--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
rrr	r2�complexr�rgr�r8r�r
r
r
rr��s

��r�c@sheZdZGdd�de�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZ	d
S)�TestTypeUserDefinedc@seZdZdd�Zdd�ZdS)zTestTypeUserDefined.MyTypecCs
||_dSr��value�rr�r
r
rr6�sz#TestTypeUserDefined.MyType.__init__cCst|�|jft|�|jfkSr�r@r�rCr
r
rrE�sz!TestTypeUserDefined.MyType.__eq__Nr�r
r
r
r�MyType�sr�r�r�r	rrr�r��-xf gr�r�N)
rrr	rr�r2rgr�r8r�r
r
r
rr��s	

��r�c@sfeZdZGdd�d�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZd
S)�TestTypeClassicClassc@seZdZdd�Zdd�ZdS)zTestTypeClassicClass.CcCs
||_dSrr�r�r
r
rr6�szTestTypeClassicClass.C.__init__cCst|�|jft|�|jfkSrr�rCr
r
rrE�szTestTypeClassicClass.C.__eq__Nr�r
r
r
r�C�srr�r�r	rrr�r�rr�r�N)	rrr	rr2rgr�r8r�r
r
r
rr�s	

��rc@seZdZdd�ZdS)�TestTypeRegistrationcCszdd�}t��}|�dd|�|jddd�|jddd�|�|�d���tdd	d
��|�|�d���td	dd
��dS)
NcSsd|S)Nzmy_type{%s}r
��stringr
r
r�get_my_type�sz.TestTypeRegistration.test.<locals>.get_my_typer@Zmy_typer�r�r�r^z
my_type{1}r�z-x 1 42zmy_type{42})r�r��registerrer�rVr�r8)rrrfr
r
rr��s
�
�zTestTypeRegistration.testNr�r
r
r
rr�src@s�eZdZGdd�dej�ZGdd�dej�Zeddeedd�ed	ee	d
dd�gZ
gZd
eddd�fdeddd�fdeddd�fdeddd�fgZ
dS)�TestActionUserDefinedc@seZdZddd�ZdS)z$TestActionUserDefined.OptionalActionNcCsxz:tdd�}|dkrd|_n|dkr,d|_ntd|��Wn,tk
rft��d}td	|��YnXt|d
|�dS)N��?r{)��?rur)�@r
�	value: %srLzopt_action failed: %sr	)r8r��AssertionErrorrOrSrFrR�rrf�	namespacer��
option_stringr��er
r
r�__call__�s
z-TestActionUserDefined.OptionalAction.__call__)N�rrr	rr
r
r
r�OptionalAction�src@seZdZddd�ZdS)z&TestActionUserDefined.PositionalActionNcCs�zJtdd�}|dkrd|_n,|dkr,d|_n|dkr<d|_ntd	|��Wn,tk
rvt��d
}td|��YnXt|d|�dS)
Nr�r�)r�r
r	)rLru)rr
rrLzarg_action failed: %sr�)r8r	r
rOrSrFrRrr
r
rr
s
z/TestActionUserDefined.PositionalAction.__call__)Nrr
r
r
r�PositionalActionsrz-sr	r	)r�r�r@r�r�rr)r�r@r�r�z-s0.125r
)r	r�rr�z
-s 0.625 1rurLz84 -s2rr
N)rrr	r��Actionrrr2r�rrgr�r8r�r
r
r
rr�s$����rc@s&eZdZGdd�dej�Zdd�ZdS)�TestActionRegistrationc@seZdZddd�ZdS)zTestActionRegistration.MyActionNcCst||jd|�dS)Nzfoo[%s])rRr�)rrfr�valuesrr
r
rr9sz(TestActionRegistration.MyAction.__call__)Nrr
r
r
r�MyAction7srcCs^t��}|�dd|j�|jddd�|�|�dg�tdd��|�|�dg�td	d��dS)
Nr�Z	my_actionr�r�r^zfoo[1]rrzfoo[42])r�r�rrrer�rVr8�rrfr
r
rr�<s
zTestActionRegistration.testN)rrr	r�rrr�r
r
r
rr4src@s:eZdZeddded�gZdZdeddd	d
gd�fgZdS)
�TestActionExtendr��extendr)r�r�r@r
z--foo f1 --foo f2 f3 f4�f1�f2Zf3Zf4r�N)	rrr	r2r�rgr�r8r�r
r
r
rrFs
��rcs�eZdZdd�Zd3dd�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�Z�ZS)4�TestAddSubparserscOs|jtf|�|�dSr�r�rFr5r
r
r�assertArgumentParserErrorVsz+TestAddSubparsers.assertArgumentParserErrorFNc
Csz|r0tdd|d�}|j|dddddd	�ntddd
�}|jdddd	�|jdtd
d�ddi}|rzd|d<d|d<nd|d<|jf|�}|�|j�tdd�}|r�d|d<|r�ddg|d<|jd7|�}|jdtdd�|jd d!d"d#�td$d�}	|�rd%|	d<|jd8|	�}
|
jd'd(d)d#�|
jd*td+d,d-�td.d�}|�rJd/|d<|jd9|�}|jd1td2d�|jd3d4d5d6�|S):N�PROG�main description)�prog�descriptionr�rrrjr��foo help�r��help�r%r&r�r��bar help�r@r)r#FZCOMMAND�metavarZcommands�title�command helpr)z
1 description�r&z1 helpZ1alias1Z1alias2�aliasesr^r�zw helpr�r�x help�rr)z
2 descriptionz2 helprr�Z123�y helpr�rzz help)r@r�r)z
3 descriptionz3 helprJ�tzt help�ur�zu help�r�r))r^)r)rJ)	rZrer��add_subparsersr"�dict�
add_parserrr�)
r�subparser_helpr�r1rfZsubparsers_kwargs�
subparsersZparser1_kwargs�parser1Zparser2_kwargs�parser2Zparser3_kwargsZparser3r
r
rr�Ysj�����



zTestAddSubparsers._get_parsercs&t���|��|_|jdd�|_dS)NT)r;)r[rr�rf�command_help_parserrr\r
rr�s

zTestAddSubparsers.setUpcCs&dD]}|��}|�|jj|�qdS)N)r�r�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�r"rfrV)rr�r3r
r
r�test_parse_args_failures�sz*TestAddSubparsers.test_parse_args_failurescCs�|�|j�d���tddddd��|�|j�d���tdd	d
ddgd
��|�|j�d���tddddd��|�|j�d���tddddddddgd��dS)N�0.5 1 b -w 7Fr��r�rjr�r+r�z0.25 --foo 2 -y 2 3j -- -1jTr	ry@y��)rjr�r�r�z--foo 0.125 1 cr
rz-1.5 3 11 -- a --foo 7 -- br��r�r�rE�--)rjr�r5r6)r�rfrVr�r8rr
r
r�test_parse_args�s ����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�ddddgf�dS)NrAFr�rBrrCz0.5 -p 1 b -w 7z-pz0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7z-qz-rsz0.5 -W 1 b -X Y -w 7 Zz-Wz-Xr�r�)r�rf�parse_known_argsr�r8rr
r
r�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rqr])rZrer8r:r�r8rVr�)rrfr<r=r
r
r�	test_dest�s

�zTestAddSubparsers.test_destcCs,|�dg�}|�|jd�|�|jd�dS)N�runr
)rVr��commandr")rrf�retr
r
r�_test_required_subparsers�sz+TestAddSubparsers._test_required_subparserscCs0t�}|jdd�}d|_|�d�|�|�dS)NrKr�TrJ)rZr8r#r:rM�rrfr<r
r
r�&test_required_subparsers_via_attribute�s

z8TestAddSubparsers.test_required_subparsers_via_attributecCs,t�}|jddd�}|�d�|�|�dS)NrKT�r�r#rJ)rZr8r:rMrNr
r
r�"test_required_subparsers_via_kwarg�s
z4TestAddSubparsers.test_required_subparsers_via_kwargcCs6t�}|jdd�}|�d�|�d�}|�|j�dS)NrKr�rJr
�rZr8r:rV�assertIsNonerK�rrfr<rLr
r
r� test_required_subparsers_default�s


z2TestAddSubparsers.test_required_subparsers_defaultcCs8t�}|jddd�}|�d�|�d�}|�|j�dS)NrKFrPrJr
rRrTr
r
r�test_optional_subparsers�s


z*TestAddSubparsers.test_optional_subparserscCs.|�|j��d�|�|j��t�d��dS)N�)usage: PROG [-h] [--foo] bar {1,2,3} ...
aJ            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�rf�format_usage�format_help�textwrap�dedentrr
r
r�	test_help�s�zTestAddSubparsers.test_helpcCs6|jdd�}|�|��d�|�|��t�d��dS)Nz+:-r�z)usage: PROG [-h] [++foo] bar {1,2,3} ...
aJ            usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              ++foo       foo help
            �r�r�rXrYrZr[rr
r
r�test_help_extra_prefix_charss

�z.TestAddSubparsers.test_help_extra_prefix_charscCs6tddd�}|jdddd�|�|��t�d��dS)	Nr#r$r*z--non-breakingr*uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesr(uB            usage: PROG [-h] [--non-breaking]

            main description

            optional arguments:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        )rZrer�rYrZr[rr
r
r�test_help_non_breaking_spacess��z/TestAddSubparsers.test_help_non_breaking_spacescCs6|jdd�}|�|��d�|�|��t�d��dS)Nr�r�z)usage: PROG [+h] [++foo] bar {1,2,3} ...
aJ            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r]rr
r
r� test_help_alternate_prefix_chars)s

�z2TestAddSubparsers.test_help_alternate_prefix_charscCs.|�|j��d�|�|j��t�d��dS)NrWa�            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

            optional arguments:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�r?rXrYrZr[rr
r
r�test_parser_command_help;s��z*TestAddSubparsers.test_parser_command_helpcCsxtddd�}|jdddd�|jdd	d
�|jddd
d�}|�d�}|�d�}|�|��d�|�|��t�d��dS)Nr#r$r*r�r�r'r(r�r+�r)Zsubcommandsr/zadditional text)r.r&r)r^rz'usage: PROG [-h] [--foo] bar {1,2} ...
a�            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

            optional arguments:
              -h, --help  show this help message and exit
              --foo       foo help

            subcommands:
              command help

              {1,2}       additional text
            )	rZrer8r:r�rXrYrZr[)rrfr<r=r>r
r
r�test_subparser_title_helpPs��


�z+TestAddSubparsers.test_subparser_title_helpc	Cs:|�t��}|j�|���W5QRX|�||jj�dSr)r�rFrfrVr�r�r�rI)rr�Z
expected_helpr�r
r
r�_test_subparser_helpnsz&TestAddSubparsers._test_subparser_helpcCs|�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

            optional arguments:
              -h, --help  show this help message and exit
              -w W        w help
            �rdrZr[rr
r
r�test_subparser1_helpssz&TestAddSubparsers.test_subparser1_helpcCs|�dt�d��dS)Nz5.0 2 -ha#            usage: PROG bar 2 [-h] [-y {1,2,3}] [z [z ...]]

            2 description

            positional arguments:
              z           z help

            optional arguments:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            rerr
r
r�test_subparser2_help�sz&TestAddSubparsers.test_subparser2_helpc	Cs\|jdd�}|�|�d���tddddd�gf�|�|�d���tddddd�gf�dS)	NT�r1z
0.5 1alias1 bFr�rrCz
0.5 1alias2 b)r�r�rGr�r8rr
r
r�test_alias_invocation�s��z'TestAddSubparsers.test_alias_invocationcCs"|jdd�}|�|jd���dS)NTrhz
0.5 1alias3 b)r�r"rVr�rr
r
r�test_error_alias_invocation�s�z-TestAddSubparsers.test_error_alias_invocationcCs.|jddd�}d|_|�|��t�d��dS)NT)r1r;a            usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

            optional arguments:
              -h, --help            show this help message and exit
              --foo                 foo help

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )r�ZmaxDiffr�rYrZr[rr
r
r�test_alias_help�sz!TestAddSubparsers.test_alias_help)FNF)rrr	r"r�rr@rFrHrIrMrOrQrUrVr\r^r_r`rarcrdrfrgrirjrkr`r
r
r\rr Ss4�
7	r c@s$eZdZdd�Zdd�Zdd�ZdS)�TestPositionalsGroupscCsZt�}|�d�|�d�}|�d�|�d�tdddd�}|�d	���}|�||�dS)
Nrjr�r�r�r^rrJrq�1 2 3)rZrerkr8rVr�r��rrfrl�expectedrWr
r
r�test_nongroup_first�s



z)TestPositionalsGroups.test_nongroup_firstcCsZt�}|�d�}|�d�|�d�|�d�tdddd�}|�d	���}|�||�dS)
N�xxxrjr�r�r^rrJrqrm�rZrkrer8rVr�r�rnr
r
r�test_group_first�s



z&TestPositionalsGroups.test_group_firstcCspt�}|�d�}|�d�|�d�|�d�|�d�}|�d�tddd	d
d�}|�d���}|�||�dS)
Nrqrjr�r�r��frellr^rrJr)rjr�r�rtz1 2 3 4rrrnr
r
r�test_interleaved_groups�s





z-TestPositionalsGroups.test_interleaved_groupsN)rrr	rprsrur
r
r
rrl�s

rlcs�eZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�ZS)�TestParentParserscOs|jtf|�|�dSrr!r5r
r
rr"�sz+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�r6rz--dr�r�r�r)r[rrZ�wxyz_parentrerk�abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprr!�basenamerOrr�main_program)rZx_group�c_grouprlr\r
rr�s(



zTestParentParsers.setUpcCs2t|jgd�}|�|�d���tdddd��dS)N��parentsz-y 1 2 --w 3rJr^r�r+r�r�)rZrxr�rVr�r8rr
r
r�test_single_parent	s�z$TestParentParsers.test_single_parentcCs,|�|jj�t|jgd�}|�|j�dS�Nr�)�_test_mutex_abr|rVrZrr
r
r�test_single_parent_mutex	sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d�}t|gd�}|�|j�dS)NF)r�r�r�)r|rZr�rV�rr�rfr
r
r�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�rr�Tr6r8)r�r8r")rrVr
r
rr�	sz TestParentParsers._test_mutex_abcCs@|j|jg}t|d�}|�|�d���tddddddd��dS)Nr�z--d 1 --w 2 3 4rJr^rr)r�rrsr+r�r�)ryrxrZr�rVr�r8r�r
r
r�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rJ)r�rr+r�r�z
-a --w 2 3 -bz
-a -b --w 2 3)r|rxrZr�rVr�r8r"r�r
r
r�test_multiple_parents_mutex#	s
���z-TestParentParsers.test_multiple_parents_mutexcCs |jtjtj|j|jgd�dSr�)r�r��
ArgumentErrorr�rzrxrr
r
r�test_conflicting_parents-	s

�z*TestParentParsers.test_conflicting_parentscCs |jtjtj|j|jgd�dSr�)r�r�r�r�ryr|rr
r
r�test_conflicting_parents_mutex3	s

�z0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d�}|�|�d���tdddd��dS)Nr�r]rr�)rxr{rZr�rVr�r8r�r
r
r�test_same_argument_name_parents9	s

�z1TestParentParsers.test_same_argument_name_parentsc	CsPt�}|��}|jd|jgd�}|�d�|�|�d���tddddd	��dS)
Nr�r�rzbar -b 1 --d 2 3 4rJr^rr)r�rrsr)	rZr8r:ryrer�rVr�r8)rrfr<Zabcde_parserr
r
r�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)Nrjr�r�rr�rzfoo -a 4TFr)r�rrzbar -b  --w 2 3 4rrJ)r�rr+r�r�rzfoo -a -b 4zbar -b -a 4)rZr8r|r:rkrerxr�rVr�r8r")rrfr<r�Z
abc_parserr�Zwxyzabe_parserr
r
r�test_subparser_parents_mutexG	s.


����z.TestParentParsers.test_subparser_parents_mutexc	CsJ|j|jg}t|d�}|��}|j}|�|t�d�||r<dnd���dS)Nr�aR            usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

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

            c:
              --d D

            x:
              -y Y
        � r�)	ryrxrZrYrr�rZr[�format)rr�rf�parser_help�prognamer
r
r�test_parent_helpZ	s

�z"TestParentParsers.test_parent_helpc	Cs�tdd�}|jddd�}|�d�|�d�|��}|�d�|�d	�t|gd
�}|�t|jddd	dg�|��}|j}|�	|t
�d
�||r�dnd���dS)NFrwr�Zgd�r.r&r�r�r�r�r�r�r�a	            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

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

            g:
              gd

              -w W
              -x X
        r�r�)
rZrkrer}r�rFrVrYrr�rZr[r�)r�parentr�r�rfr�r�r
r
r�test_groups_parentsr	s"






�

�z%TestParentParsers.test_groups_parents)rrr	r"rr�r�r�r�r�r�r�r�r�r�r�r�r�r`r
r
r\rrv�s

rvc@s$eZdZdd�Zdd�Zdd�ZdS)� TestMutuallyExclusiveGroupErrorscCs t�}|j}|t|jdd�dS)Nrj)r.)rZr�r|r})rrf�raisesr
r
r�test_invalid_add_argument_group�	sz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_groupcCslt�}|��}|j}|j}|t|ddd�|t|d�|t|ddd�|t|ddd�|t|dtjd�dS)Nr�T�r#r�rr�rL)rZr}rer�r�r�ZPARSER)rrfrlrer�r
r
r�test_invalid_add_argument�	sz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argumentcCsptdd�}|��}|jddd�|jddd�|��}|jddd�|jd	dd�d
}|�|��t�|��dS)Nr#�r%r�r�r�r�r*z--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            optional arguments:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )rZr}rer�rYrZr[)rrfZgroup1�group2ror
r
rr\�	s

z*TestMutuallyExclusiveGroupErrors.test_helpN)rrr	r�r�r\r
r
r
rr��	sr�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�MEMixincCs4|jdd�j}t}|jD]}|�|||���qdS�NFr���
get_parserrVrFr�r�r��rrVr_�args_stringr
r
r�test_failures_when_not_required�	s
z'MEMixin.test_failures_when_not_requiredcCs:|jdd�j}t}|jdgD]}|�|||���qdS)NTr�r�r�r�r
r
r�test_failures_when_required�	sz#MEMixin.test_failures_when_requiredcCsD|jdd�j}|j|j}|D] \}}||���}|�||�qdSr�)r�rVr��successes_when_not_requiredr�r�)rrVr�r�r��	actual_nsr
r
r� test_successes_when_not_required�	s
z(MEMixin.test_successes_when_not_requiredcCs:|jdd�j}|jD] \}}||���}|�||�qdS�NTr�)r�rVr�r�r�)rrVr�r�r�r
r
r�test_successes_when_required�	sz$MEMixin.test_successes_when_requiredcCs,|jdd�j}|j}|�|�t�|��dSr�)r�rX�usage_when_not_requiredr�rZr[�rrXZexpected_usager
r
r�test_usage_when_not_required�	sz$MEMixin.test_usage_when_not_requiredcCs,|jdd�j}|j}|�|�t�|��dSr�)r�rX�usage_when_requiredr�rZr[r�r
r
r�test_usage_when_required�	sz MEMixin.test_usage_when_requiredcCs2|jdd�j}|j|j}|�|�t�|��dSr�)r�rYr�r)r�rZr[�rrYr)r
r
r�test_help_when_not_required�	sz#MEMixin.test_help_when_not_requiredcCs2|jdd�j}|j|j}|�|�t�|��dSr�)r�rYr�r)r�rZr[r�r
r
r�test_help_when_required�	szMEMixin.test_help_when_requiredN)rrr	r�r�r�r�r�r�r�r�r
r
r
rr��	sr�c@sxeZdZddd�ZddgZdeddd�fd	ed
dd�fdeddd�fd
edd
d�fgZdeddd�fgZdZdZ	dZ
dS)�TestMutuallyExclusiveSimpleNcCs:tdd�}|j|d�}|jddd�|jddd	d
d�|S)Nr#r�r�r�r+rbr�rr��baz help)r�r�r)�rZr}re�rr#rfrlr
r
rr��	s

z&TestMutuallyExclusiveSimple.get_parser�--bar X --baz Yz
--bar X --baz�--bar Xr��r�r�z--bar X --bar Zr��--baz Yr�r�r�z;        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
        z;        usage: PROG [-h] (--bar BAR | --baz [BAZ])
        z�
        optional arguments:
          -h, --help   show this help message and exit
          --bar BAR    bar help
          --baz [BAZ]  baz help
        )N�rrr	r�r�r8r�r�r�r�r)r
r
r
rr��	s
��r�c
@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)
Nr#r�z--abcdez
abcde helprbz--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�rZrer}r�r
r
rr�
s
z$TestMutuallyExclusiveLong.get_parserz--klmno X --pqrst Yz	--klmno Xr�)ZabcdeZfghijZklmnoZpqrstz--abcde Y --klmno Xr�z	--pqrst Xz--pqrst X --fghij Yr�zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                [--klmno KLMNO | --pqrst PQRST]
    zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                (--klmno KLMNO | --pqrst PQRST)
    z�
    optional arguments:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    )Nr�r
r
r
rr�
s 
	���	�r�c@sfeZdZdd�ZdgZdeddd�fded	dd�fd
eddd�fgZd
eddd�fgZdZdZ	dZ
dS)�$TestMutuallyExclusiveFirstSuppressedcCs:tdd�}|j|d�}|jdtjd�|jdddd	�|S)
Nr#r�r�r�rbr�r*r4r(�rZr}rer�r�r�r
r
rr�:
s

z/TestMutuallyExclusiveFirstSuppressed.get_parserz-x X -yz-x Xr�Tr�z	-x X -x Yr�r�NFr�z&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zx
        optional arguments:
          -h, --help  show this help message and exit
          -y          y help
        r�r
r
r
rr�8
s��r�c	@s�eZdZdd�ZdddgZdedddd	�fd
edddd	�fdeddd
d	�fdedddd	�fgZdedddd	�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedcCsNtdd�}|j|d�}|j}|ddtjd�|ddtjd�|d	tjd
�|S)Nr#r�r��--spamr�r(r�r*z	--bladderrbr�)rr#rfrlr�r
r
rr�[
s
z.TestMutuallyExclusiveManySuppressed.get_parserz--spam --badgerz--badger --bladder Bz--bladder B --spamr�TN)r	r�Zbladderr�Fz--bladder Br�z
--spam --spamr�z!        usage: PROG [-h]
        �[
        optional arguments:
          -h, --help  show this help message and exit
        �rrr	r�r�r8r�r�r�r�r)r
r
r
rr�Y
s
���r�c
@s�eZdZdd�ZdddddgZded	d
dd�fd
edddd�fdedd
dgd�fdedd
dddgd�fgZdedd
dd�fgZdZdZ	dZ
d
S)�*TestMutuallyExclusiveOptionalAndPositionalcCsJtdd�}|j|d�}|jdddd�|jdd	d
�|jddd
dd�|S)Nr#r�r�r�r��FOOr(r��SPAMrbr�rr��BADGER�r�r�r)r�r�r
r
rr�
s
z5TestMutuallyExclusiveOptionalAndPositional.get_parserz--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr�)rjr	r�z--spam SF�SzX Y Zr�r�r�zM        usage: PROG [-h] [--foo | --spam SPAM | badger [badger ...]]
        zM        usage: PROG [-h] (--foo | --spam SPAM | badger [badger ...])
        z�
        positional arguments:
          badger       BADGER

        optional arguments:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        r�r
r
r
rr�}
s"	���r�c
@s�eZdZdd�ZddddgZdedd	d	d	d	d
�fded	dd	d	d	d
�fded	d	dd	d	d
�fd
edd	d	dd	d
�fded	dd	d	dd
�fded	d	dddd
�fgZded	d	d	d	d	d
�fded	d	d	dd	d
�fded	d	d	d	dd
�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedcCsjtdd�}|jdddd�|j|d�}|jddd	d�|jd
ddd�|jddd
d�|jdddd�|S)Nr#r�r�r�r2r(r�r��a helpr6�b helpr�r4r8�c helpr�r�r
r
rr��
s
z.TestMutuallyExclusiveOptionalsMixed.get_parserz-a -b�-b -cz-a -cz-a -b -cr�TF�r�rrr�r�r6r8z-a -xz-y -bz-x -y -cr�r�r�z:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z�
        optional arguments:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        Nr�r
r
r
rr��
s
�	�r�c@s\eZdZddd�ZddgZdeddd�fd	edd
d�fgZdeddd�fgZdZd
Z	dZ
dS)�TestMutuallyExclusiveInGroupNcCsDtdd�}|jddd�}|j|d�}|jddd	�|jd
dd	�|S)Nr#r�zTitled groupzGroup descriptionr�r�r�r+rbr�r�)rZrkr}re)rr#rfZtitled_groupZmutex_groupr
r
rr��
s
�
�z'TestMutuallyExclusiveInGroup.get_parserr�z--baz X --bar Yr�r�r�r�r�r�z9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z�
        optional arguments:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        )Nr�r
r
r
rr��
s

��r�c@s�eZdZdd�ZdddgZdedddd	dd
�fdedd
dd	dd
�fdeddd
d	dd
�fdedddd	d
d
�fdedd
dd	d
d
�fgZd	edddd	dd
�fdedddd	d
d
�fgZdZZ	dZ
dS)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedcCshtdd�}|jddd�|jdddd	�|j|d
�}|jddd
d�|jdddd	�|jdddd	�|S)Nr#r�r�r2rbr�r�r4r(r�r�rr�r7r6r�r8r�r�r�r
r
rr��
s
z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parserzX A -br�z-c X AzX Ar�Fr�r�zX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a
        positional arguments:
          x           x help
          a           a help

        optional arguments:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        r�r
r
r
rr��
s

��r�c@s0eZdZdd�ZdZdZdZdZdZdZ	dZ
dS)�TestMutuallyExclusiveNestedcCsntdd�}|j|d�}|�d�|�d�|j|d�}|�d�|�d�|j|d�}|�d�|�d	�|S)
Nr#r�r�r�r6r8z-dz-er�r�)rr#rfrlr�Zgroup3r
r
rr�'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�
        optional arguments:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)rrr	r�r�r�r)r�r�r�r�r
r
r
rr�%s

r�cseZdZd�fdd�	Z�ZS)�MEPBaseNcs(tt|�j|d�}t|jd|gd�}|S)Nr�F)r%r�r�)r[r�r�rZr%)rr#r�rfr\r
rr�Ss�zMEPBase.get_parser)N)rrr	r�r`r
r
r\rr�Qsr�c@seZdZdS)�&TestMutuallyExclusiveGroupErrorsParentNrr
r
r
rr�Zsr�c@seZdZdS)�!TestMutuallyExclusiveSimpleParentNrr
r
r
rr�_sr�c@seZdZdS)�TestMutuallyExclusiveLongParentNrr
r
r
rr�dsr�c@seZdZdS)�*TestMutuallyExclusiveFirstSuppressedParentNrr
r
r
rr�isr�c@seZdZdS)�)TestMutuallyExclusiveManySuppressedParentNrr
r
r
rr�nsr�c@seZdZdS)�0TestMutuallyExclusiveOptionalAndPositionalParentNrr
r
r
rr�ssr�c@seZdZdS)�)TestMutuallyExclusiveOptionalsMixedParentNrr
r
r
rr�xsr�c@seZdZdS)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNrr
r
r
rr�}sr�c@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)
Nrjr�r�rL)r�r�r�r�r)r�r��rZ�set_defaultsr�r8rVrr
r
r�test_set_defaults_no_args�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)Nrjr�r�r�Zxfooxr�r�r�r^r$)rZr�rer�r8rVr�rr
r
r�test_set_defaults_with_args�s*������z+TestSetDefaults.test_set_defaults_with_argscCsRt�}|jdd�|��}|�d�}|jdd�|�tddd�|�d����dS)Nrjr�r�r�r(r�)rZr�r8r:r�r8rVr�)rrfr<Zparser_ar
r
r�test_set_defaults_subparsers�s
�z,TestSetDefaults.test_set_defaults_subparserscCs>tdd�}|jdd�t|gd�}|�tdd�|�g��dS)NFrwrjr�r�r�)rr�rfr
r
r�test_set_defaults_parents�s
z)TestSetDefaults.test_set_defaults_parentscCsLt��}|���d�}|jdd�|jdd�|�tdd�|�dg��dS)Nr�rLr�r)r�r�r8r:r�r�r8rV)rrfZxparserr
r
r�)test_set_defaults_on_parent_and_subparser�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�rr�r��XXr�r�rr�r��ZZr
�WW�YY)rZr�rer�r8rVrr
r
r�&test_set_defaults_same_as_add_argument�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)Nr�r�r�r�rrjr�r�r�r�r�rr�r�r�r
r�r�)rZr�rkrer�r8rV�rrfrlr
r
r�,test_set_defaults_same_as_add_argument_group�s

��z<TestSetDefaults.test_set_defaults_same_as_add_argument_groupN)
rrr	r�r�r�r�r�r�r�r
r
r
rr��s
	r�c@seZdZdd�ZdS)�TestGetDefaultcCs�t�}|�|�d��|�|�d��|�d�|�|�d��|�|�d��|jdtdd�|�|�d��|�d|�d��|jdd�|�d|�d��|�d|�d��dS)	Nrjr�r�r�r�r�r�r�)rZrSZget_defaultrerr�r�rr
r
r�test_get_default�s
zTestGetDefault.test_get_defaultN)rrr	r�r
r
r
rr��sr�c@seZdZdd�Zdd�ZdS)�TestNamespaceContainsSimplecCs$t��}|�d|�|�d|�dS)Nr�r�)r��	Namespace�assertNotIn�r�nsr
r
r�
test_empty�sz&TestNamespaceContainsSimple.test_emptycCsNtjddd�}|�d|�|�d|�|�d|�|�d|�|�d|�dS)	NrLrr�r�r�r�Zxxr�)r�r�r��assertInr�r
r
r�test_non_emptysz*TestNamespaceContainsSimple.test_non_emptyN)rrr	r�r�r
r
r
rr��sr�c@seZdZdd�ZdS)�TestHelpFormattingMetaclasscCs:|dkrdSGdd�dt�}dD]\}}||||�q dS)N�HelpTestCasec@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc	Ssl||_||_|j|j|jfD]J}d|j|f}|fdd�}z
||_Wntk
rXYnXt|||�qdS)Nz%s_%scSs||�dSrr
rur
r
r�test_wrapperszUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper)�func_suffix�std_name�test_format�
test_print�test_print_filerr|rR)rZ
test_classr�r�rvrr�r
r
rr6s�
z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__cSs�tj|jj|jj�}t|dg�D]}|j|j|j�q t|dg�}|D]2\}}|j|j|j�}|D]}|j|j|j�qbqFt|dg�}|r�|��}	|D]}
|	j	|
j|
j�q�|S)Nrg�argument_group_signatures�subparsers_signatures)
r�r�rcr3r4rQrerkr8r:)rr�rfZargument_sigZ
group_sigsZ	group_sigZ
argument_sigsrlZsubparsers_sigsr<Z
subparser_sigr
r
rr�&s2�����zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parsercSs&t||j�}t�|�}|�||�dSr)rQr�rZr[r�)rr��parser_textZ
expected_textr
r
r�_test<s
z<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testcSs,|�|�}t|d|j�}|�||��dS)Nz	format_%s)r�rQr�r)rr�rfr�r
r
rr�As
zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatc
Ssr|�|�}t|d|j�}tt|j�}tt|jt��z|�tt|j���}W5tt|j|�X|�||�dS�Nzprint_%s)	r�rQr�rOr�rRrrUr)rr�rf�print_Z
old_streamrr
r
rrFs
zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printcSs@|�|�}t|d|j�}t�}||�|��}|�||�dSr)r�rQr�rrUr)rr�rfrZsfilerr
r
rrRs
zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_fileN)	rrr	r6r�rr�rrr
r
r
rr�sr�))�usagerI)r)rI)r�)r�r)r�r�r�r�r�r
r
rr6s
Hz$TestHelpFormattingMetaclass.__init__Nr7r
r
r
rr�
sr�r�c@sjeZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerOptionalsr#�DESCRIPTION�EPILOG�r%r&Zepilogr�r�r��0.1r�r�r��X HELPr(�--y�Y HELPrbrj�FOO HELPr��BAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        ab
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
          -x             X HELP
          --y Y          Y HELP

        EPILOG
    �        0.1
        N�
rrr	r2rcrgrrr)r�r
r
r
rr	cs�


�r	c@s8eZdZdd�ZejZejZejZdZedZ	ej
Z
dS)�TestShortColumnscCs$t��}|�dd�|�|j�dS)Nr
r�)rrr|rrrr
r
rr�szTestShortColumns.setUpz�        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a�
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

        optional arguments:
          -h, --help
            show this
            help
            message and
            exit
          -v, --version
            show
            program's
            version
            number and
            exit
          -x
            X HELP
          --y Y
            Y HELP

        EPILOG
    N)rrr	rr	rcrgrrr)r�r
r
r
rr�s	rc@s�eZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZeddd�eddd�edddd�gfgZdZedZd Z	d!S)"�TestHelpBiggerOptionalGroupsr#r
rrr�r�r�r
r�r�r�rr(rrrbrjrr�rzGROUP TITLEzGROUP DESCRIPTIONr0r�zBAZ HELPr�rzZ HELPr7zN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a�
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
          -x             X HELP
          --y Y          Y HELP

        GROUP TITLE:
          GROUP DESCRIPTION

          baz            BAZ HELP
          -z Z [Z ...]   Z HELP

        EPILOG
    rNrr
r
r
rr�s"�


�

��rc@sZeZdZeddd�Zedddd�edd	d
�eddd
�ed
dd
�gZgZdZedZdZ	dS)�TestHelpBiggerPositionals�USAGEr
�rr&r�r�rr(rrrbZekiekiekifekangzEKI HELPr�r�        usage: USAGE
        a 
        DESCRIPTION

        positional arguments:
          ekiekiekifekang  EKI HELP
          bar              BAR HELP

        optional arguments:
          -h, --help       show this help message and exit
          -x               X HELP
          --y Y            Y HELP
        r�Nrr
r
r
rr�s


�rc@sbeZdZeddd�Zedddd�edd	d
d�gZeddd
�edddd�gfgZdZedZdZ	dS)�TestHelpReformattingr#ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedr*r�r�zoddly
    formatted -x help�r-r)r�r�z
normal y helpr.z'
    oddly formatted group

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

        positional arguments:
          yyy         normal y help

        optional arguments:
          -h, --help  show this help message and exit
          -x XX       oddly formatted -x help

        title:
          oddly formatted group description

          -a          oddly formatted -a help again, so long that it should be wrapped
                      over multiple lines
        r�Nrr
r
r
rr
s ��
���rc@s^eZdZeddd�Zedddd�edd	d
d�gZed�edd
dd�gfgZdZedZdZ	dS)�TestHelpWrappingShortNamesr#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*r�r�zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrr�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 HHAr(ra�
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

        positional arguments:
          yyy         YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH
                      YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH

        optional arguments:
          -h, --help  show this help message and exit
          -x XX       XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH
                      HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX

        ALPHAS:
          -a          AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH
                      HHAAHHH HHAAHHH HHA
        r�Nrr
r
r
rr@
s���rc@sxeZdZeddd�Zeddddd�ed	d
dd�ed
ddd�gZed�edddd�edddd�gfgZdZedZdZ	dS)�TestHelpWrappingLongNamesrzZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Drr�r�r�zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr�r��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrr�Zyyyyyyyyyyyyyyyyyyyyyyyyyrr 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 ZHrar
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

        positional arguments:
          yyyyyyyyyyyyyyyyyyyyyyyyy
                                YH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH
                                YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH

        optional arguments:
          -h, --help            show this help message and exit
          -v, --version         show program's version number and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
                                XH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH
                                XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH

        ALPHAS:
          -a AAAAAAAAAAAAAAAAAAAAAAAAA
                                AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH
                                AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
          zzzzzzzzzzzzzzzzzzzzzzzzz
                                ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH
                                ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
        zs        V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV
        VV VV VV VV V
        Nrr
r
r
rr!h
s���r!c	@s�eZdZedd�Zedddd�eddd	d�ed
d
d�eddd
d�edddd�gZed�edddd�edddd�edddd�edddd�gfgZdZedZdZ	dS)�
TestHelpUsager#r�r�rr+r7r�rr�r�rbrr)r)r�rrrlr�r�r�rr�rsrz�        usage: PROG [-h] [-w W [W ...]] [-x [X [X ...]]] [-y [Y]] [-z Z Z Z]
                    a b b [c] [d [d ...]] e [e ...]
        a�
        positional arguments:
          a               a
          b               b
          c               c

        optional arguments:
          -h, --help      show this help message and exit
          -w W [W ...]    w
          -x [X [X ...]]  x

        group:
          -y [Y]          y
          -z Z Z Z        z
          d               d
          e               e
        r�Nrr
r
r
rr#�
s"

���r#c@sleZdZeddd�ZgZed�eddd�eddd�gfed	�ed
d
d�eddd�gfgZd
ZedZdZ	dS)�TestHelpOnlyUserGroupsr#F�r%r�Zxxxxr�r�rbr�Zyyyyrr�r�z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        r�Nrr
r
r
rr$�
s

�

��

r$c@sNeZdZedd�Zeddd�eddd�ed�ed	�gZgZd
ZedZdZ	d
S)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr�r�r��r-r�r�r�rzz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w W] [-x X] a b
        z�
        positional arguments:
          a
          b

        optional arguments:
          -h, --help  show this help message and exit
          -w W
          -x X
        r�Nrr
r
r
rr&�
s


�r&c@sbeZdZedd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�gZgZdZedZdZ	dS)� TestHelpUsageLongProgOptionsWrapr'r�r��WWWWWWWWWWWWWWWWWWWWWWWWWr(r�r"r��YYYYYYYYYYYYYYYYYYYYYYYYYr��ZZZZZZZZZZZZZZZZZZZZZZZZZr�ra        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a8
        positional arguments:
          a
          b

        optional arguments:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r�Nrr
r
r
rr)s




�
r)c@sBeZdZeddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)�$TestHelpUsageLongProgPositionalsWrapr'Fr%�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r�Nrr
r
r
rr-*s�r-c@sheZdZedd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�ed�gZgZdZedZdZ	dS)�TestHelpUsageOptionalsWrapr#r�r�r*r(r�r"r�r+r�r,r�rrz�        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        aD
        positional arguments:
          a
          b
          c

        optional arguments:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r�Nrr
r
r
rr2Cs




�	r2c@sReZdZedd�Zed�ed�ed�ed�ed�ed�gZgZd	Zed
ZdZ	dS)
�TestHelpUsagePositionalsWrapr#r�r�r�r�r.r/r0z�        usage: PROG [-h] [-x X] [-y Y] [-z Z]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        a
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        optional arguments:
          -h, --help            show this help message and exit
          -x X
          -y Y
          -z Z
        r�Nrr
r
r
rr3is
�
r3c@s^eZdZedd�Zeddd�eddd�edd	d�ed
�ed�ed�gZgZd
ZedZdZ	dS)�%TestHelpUsageOptionalsPositionalsWrapr#r�r�r"r(r�r+r�r,r.r/r0a        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        ae
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        optional arguments:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r�Nrr
r
r
rr4�s



�
r4c@sLeZdZedd�Zeddd�eddd�edd	d�gZgZd
ZedZdZ	d
S)�TestHelpUsageOptionalsOnlyWrapr#r�r�r"r(r�r+r�r,z�        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
        z�
        optional arguments:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r�Nrr
r
r
rr5�s



�r5c@sBeZdZeddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)� TestHelpUsagePositionalsOnlyWrapr#Fr%r.r/r0z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r1r�Nrr
r
r
rr6�s�r6c
@s�eZdZedd�Zededd�edddd	d
d�edd
dd�eddddgddd�eddd�edddd�gZed�edd d�ed!d"d#d�gfgZd$Zed%Z	d&Z
d'S)(�TestHelpVariableExpansionr#r�r�z"x %(prog)s %(default)s %(type)s %%r,r�r�r��XXXz y %(prog)s %(default)s %(const)s)r�r�r�r)r�rz$foo %(prog)s %(default)s %(choices)sr3r�r�rLrZBBBz!bar %(prog)s %(default)s %(dest)s)r�rr-r)r	zspam %(prog)s %(default)srbr�r�zbadger %(prog)s %(default)s)r�r)rlr�za %(prog)s %(default)sr6r�zb %(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

        optional arguments:
          -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
        r�N)rrr	r2rcrrgrrr)r�r
r
r
rr7�s0
�
���
�

��r7c@s0eZdZeddd�ZgZgZdZedZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedr#z%(prog)s FOO�r%rz         usage: PROG FOO
        r�r�Nrr
r
r
rr9sr9c@s,eZdZeddd�ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsr#Fr%z        usage: PROG
        r�Nrr
r
r
rr; sr;c@sBeZdZedejd�Zeddd�eddd�gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsager#r:r�r'rbr	�	spam helpz�        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrr	r2r�r�rcrgrr)rr�r
r
r
rr<-s

�r<c@sFeZdZeddd�Zedejd�eddd�gZgZdZ	e	d	Z
d
ZdS)�TestHelpSuppressOptionalr#Fr%r�rbr	r=z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r�N�rrr	r2rcr�r�rgrrr)r�r
r
r
rr>Bs
�r>c@sXeZdZedd�Zeddd�eddd�gZed�ed	ejd�gfgZd
Z	e	dZ
dZd
S)�TestHelpSuppressOptionalGroupr#r�r�r'rbr	r=rlr��2        usage: PROG [-h] [--foo FOO] spam
        ��
        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrr	r2rcrgr�r�rrr)r�r
r
r
rr@Vs


��	r@c@sDeZdZedd�Zeddd�edejd�gZgZdZ	e	dZ
d	Zd
S)�TestHelpSuppressPositionalr#r�r�r'rbr	z-        usage: PROG [-h] [--foo FOO]
        �z
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�Nr?r
r
r
rrCps

�rCc@s:eZdZedd�Zedddd�gZgZdZedZd	Z	d
S)�TestHelpRequiredOptionalr#r�r�Tr')r#r)z+        usage: PROG [-h] --foo FOO
        rDr�Nrr
r
r
rrE�s
�rEc@sJeZdZedddd�Zedddd�ed	d
dd�gZgZd
ZedZdZ	dS)�TestHelpAlternatePrefixCharsr#z^;F)r%r�r�z^^foor�r'r(z;bz;;barr+rbz-        usage: PROG [^^foo] [;b BAR]
        zq
        optional arguments:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        r�Nrr
r
r
rrF�s�rFc@sDeZdZeddd�Zeddd�eddd�gZgZd	Zed
ZdZ	dS)
�TestHelpNoHelpOptionalr#Fr%r�r'rbr	r=z-        usage: PROG [--foo FOO] spam
        z�
        positional arguments:
          spam       spam help

        optional arguments:
          --foo FOO  foo help
        r�Nrr
r
r
rrG�s

�rGc@s:eZdZedd�Zed�ed�gZgZdZedZdZ	dS)	�TestHelpNoner#r�r�r	rAz�
        positional arguments:
          spam

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO
        r�Nrr
r
r
rrH�s
�	rHc	@sfeZdZedd�Zeddddd�edd	d
dd�edd
ddd�eddddd�gZgZdZedZdZ	dS)�TestHelpTupleMetavarr#r�r�r+r)ZW1ZW2)r)r�r-r�r�r)ZX1ZX2r�r�r)ZY1ZY2ZY3r�r�r)ZZ1z]        usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]
        z�
        optional arguments:
          -h, --help        show this help message and exit
          -w W1 [W2 ...]    w
          -x [X1 [X2 ...]]  x
          -y Y1 Y2 Y3       y
          -z [Z1]           z
        r�Nrr
r
r
rrI�s
�	rIc@s`eZdZedejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawTextr#�7Keep the formatting
    exactly as it is written

here
�r%�formatter_classr&r�z-    foo help should also
appear as given hererbr	r=r.�?    This text
  should be indented
    exactly like it is here
r0r�r+�>        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
        a�
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO       foo help should also
                      appear as given here

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

          --bar BAR   bar help
        r�N)rrr	r2r�ZRawTextHelpFormatterrcrgrrr)r�r
r
r
rrJ�s�

�
��rJc@s`eZdZedejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawDescriptionr#rKrLr�z4  foo help should not
    retain this odd formattingrbr	r=r.rNr0r�r+rOa�
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help should not retain this odd formatting

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

          --bar BAR   bar help
        r�N)rrr	r2r�ZRawDescriptionHelpFormatterrcrgrrr)r�r
r
r
rrP)s�

�
��rPc	@s~eZdZedejdd�Zeddd�eddd	d
�eddd�ed
dddd�gZeddd�ededdd�gfgZ	dZ
e
dZdZdS)�TestHelpArgumentDefaultsr#r&rLr�z)foo help - oh and by the way, %(default)srbr�r�r+r(r	r=r�rZwoodenzbadger helpr�r.r0r�r�r�)r@r�r)zO        usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger]
        a�
        description

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

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help - oh and by the way, None
          --bar       bar help (default: False)

        title:
          description

          --baz BAZ   baz help (default: 42)
        r�N)
rrr	r2r�ZArgumentDefaultsHelpFormatterrcrgrrrr)r�r
r
r
rrQYs"�

�
��rQc@s>eZdZeddd�Zeddddd�gZgZd	Zed
ZdZ	dS)
�TestHelpVersionActionr#r&r*�-Vr�r�z3.6r�z&        usage: PROG [-h] [-V]
        z�
        description

        optional arguments:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        r�Nrr
r
r
rrR�srRc@sPeZdZedd�Zeddddejd�edd	d
�eddd
�gZgZd
Z	e	dZ
dS)�TestHelpVersionActionSuppressr#r�r�r�r�r�)r�r�r)r�r'rbr	r=rArBN)rrr	r2rcr�r�rgrrr)r
r
r
rrT�s

�

�rTc@sHeZdZeddd�Zeddddd�gZd	d
�dD�ZdZed
ZdZ	dS)�TestHelpSubparsersOrderingr#�display some subcommandsr*r�r�r�r
r�cCsg|]}t|d��qS)r��r2)r;r)r
r
rr=�s�z%TestHelpSubparsersOrdering.<listcomp>)r�rrrsr�6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z�
        display some subcommands

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rN)
rrr	r2rcrgrrr)r�r
r
r
rrU�s��rUc@sLeZdZeddd�Zeddddd�gZd	Zd
d�eD�ZdZed
Z	dZ
dS)�"TestHelpSubparsersWithHelpOrderingr#rVr*r�r�r�r
r�))r�za subcommand help)rzb subcommand help)rzc subcommand help)rszd subcommand help)rze subcommand helpcCsg|]\}}t||d��qS))r)r)rW)r;r)r)r
r
rr=�s�z-TestHelpSubparsersWithHelpOrdering.<listcomp>rXa�
        display some subcommands

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rN)rrr	r2rcrgZsubcommand_datarrr)r�r
r
r
rrY�s��rYc@s\eZdZdd�Zeddejd�Zeded�eded�ed	e	d
d�gZ
gZdZed
Z
dZdS)�TestHelpMetavarTypeFormattercCs|Srr
rr
r
r�custom_type�sz(TestHelpMetavarTypeFormatter.custom_typer#r&)r%r&rMr�r�r6r8z
SOME FLOAT)r@r-zF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z�
        description

        positional arguments:
          int

        optional arguments:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        r�N)rrr	r[r2r�ZMetavarTypeHelpFormatterrcrr�rgrrr)r�r
r
r
rrZ�s�

�rZc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS) �TestInvalidArgumentConstructorscOs"t��}|jt|jf|�|�dSr)r�r�r�r|re�rr3r4rfr
r
r�assertTypeErrors��z/TestInvalidArgumentConstructors.assertTypeErrorcOs"t��}|jt|jf|�|�dSr)r�r�r�r�rer]r
r
r�assertValueErrors��z0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd�|jddd�|jddd�|jdid�dS)	Nr�)r�r�rj)�callbackr
)Z
callback_args)Zcallback_kwargs�r^rr
r
r�test_invalid_keyword_arguments$sz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs"|��dD]}|j|d�qdS)N)r-r&r�ra�rr�r
r
r�test_missing_destination*sz8TestInvalidArgumentConstructors.test_missing_destinationcCs|�d�|�d�dS)NrEz---�r_rr
r
r�test_invalid_option_strings/s
z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd�|jdttfd�dS)Nr�rr�)r_rr�rr
r
r�test_invalid_type3sz1TestInvalidArgumentConstructors.test_invalid_typec	Csl|jddd�|jddd�|jddd�t��}|�t��}|jddd�W5QRX|�dt|j��dS)	Nr�rjr�r�r��r&r-z
store-truezunknown action)	r_r�r�r�r�rer�r�r�r�r
r
r�test_invalid_action7sz3TestInvalidArgumentConstructors.test_invalid_actionc	CsNt��}|jdd�|�t��}|jddd�W5QRX|�dt|j��dS)Nrjr�r�r�z+dest supplied twice for positional argument)r�r�rer�r�r�r�r�r�r
r
r�test_multiple_dest@s�z2TestInvalidArgumentConstructors.test_multiple_destcCsDdD]:}ttd�tdd�tdd�fD]}|jd	d|i|��q$qdS)
N)r�r�r*r7rCr�rr�Zabrr�r�)r�)r9rr^)rr�Zattrsr
r
r�test_no_argument_actionsHs
�z8TestInvalidArgumentConstructors.test_no_argument_actionscCs.dD]$}|jdd|d�|jdd|d�qdS)N)r�r*rCr�rj)r�r�r�r�r�rarcr
r
r�!test_no_argument_no_const_actionsOszATestInvalidArgumentConstructors.test_no_argument_no_const_actionscCs\dD]R}|jdd|d�|jdd|d�dD](}|jdd||d�|jdd||d�q,qdS)	Nrhr�rrlr	)rLrrrj)r�r�r�re)rr�r�r
r
r�#test_more_than_one_argument_actionsYs��zCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCsdD]}|jdd|d�qdS)N)r�r7r�rrlrarcr
r
r�test_required_const_actionsgsz;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd�|jdddd�|jddtjd�dS)NrKZparsersr�r#)r�r%)r�rd)r^r�r�rr
r
r�"test_parsers_action_missing_paramsms
�zBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddd�dS)NrjTr�rarr
r
r�test_required_positionalssz8TestInvalidArgumentConstructors.test_required_positionalcs`Gdd�dt��G�fdd�dt�}t��}|j�|jd|��d�|j�|jd|��d�dS)Nc@seZdZdS)zITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNrr
r
r
r�Successxsrrcs"eZdZd�fdd�	Zdd�ZdS)zHTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFcs"|dkr|�kr|�kr���dS)Nr	r
)r�option_stringsr�r�r�r#�rrr
rr6}szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__c_sdSrr
r5r
r
rr�szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__N)F)rrr	r6rr
rtr
rr{s�rr�)r�r�r�r	)rGr�r�r�r�re)rrrfr
rtr�test_user_defined_actionvs��z8TestInvalidArgumentConstructors.test_user_defined_actionN)rrr	r^r_rbrdrfrgrirjrkrmrnrorprqrur
r
r
rr\s	
r\c@seZdZdd�Zdd�ZdS)�TestActionsReturnedcCsXt��}|�d�}|�|jd�|�dd�}|�|jd�|�dd�}|�|jd�dS)	Nr�rjr6r�r�r�r�r�)r�r�rer�r��rrfr�r
r
rrI�s
zTestActionsReturned.test_destcCs�t��}|jddddtddgddd	d
�	}|�|jd�|�|jd�|�|jd�|�|jt�|�|j	ddg�|�|j
d�|�|jd�|�|jd	�dS)Nr�rr�r
rLrr�ZBARr�)r�r�r�r@rr)r-r�)
r�r�rerr�r�r�r�r@rr)r-r�rwr
r
r�	test_misc�s"
�zTestActionsReturned.test_miscN)rrr	rIrxr
r
r
rrv�s	rvc@s$eZdZdd�Zdd�Zdd�ZdS)�TestConflictHandlingcCs|jttjdd�dS)Nrj)�conflict_handler)r�r�r�r�rr
r
r�
test_bad_type�s
�z"TestConflictHandling.test_bad_typecCsDt��}|�d�|�tj|jd�|�d�|�tj|jd�dS)Nr�r�)r�r�rer�r�rr
r
r�test_conflict_error�s
�
�z(TestConflictHandling.test_conflict_errorcCsztj}|ddd�}|jddd�|jddd�|�|��t�d��|jd	d
d�|jd	dd�|�|��t�d
��dS)Nr#Zresolve)r%rzr�zOLD XrbzNEW Xz�            usage: PROG [-h] [-x X]

            optional arguments:
              -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]

            optional arguments:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )r�r�rer�rYrZr[)rr�rfr
r
r�test_resolve_error�sz'TestConflictHandling.test_resolve_errorN)rrr	r{r|r}r
r
r
rry�s	ryc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestOptionalsHelpVersionActionsc	Cs<|�t��}|�|���W5QRX|�|��|jj�dSr)r�rFrVr�r�rYr�rI)rrfr�r�r
r
r�assertPrintHelpExit�sz3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|�t|j|�dSr)r�rFrV�rrfr3r
r
rr"�sz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt�}|jddddd�|�|d�|�|d�|�tt|d�dS)	Nr�r�r�r�r�r�r��format_version�rZrerr��AttributeErrorrQrr
r
r�test_version�s
z,TestOptionalsHelpVersionActions.test_versionc	CsRtdd�}|jddddd�|�t��}|�dg�W5QRX|�d|jj�dS)	NZPPPr�r�r�r�z%(prog)s 3.5r�zPPP 3.5
�rZrer�rFrVr�r�rIr�r
r
r�test_version_format�s

z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd�}|jddddd�|�|d�|�|d	�|�tt|d
�dS)NFrwr�r�r�r�r�r�r�r�)rZrer"r�r�rQrr
r
r�test_version_no_help�s

z4TestOptionalsHelpVersionActions.test_version_no_helpc	CsPtdd�}|jdddd�|�t��}|�dg�W5QRX|�d|jj�dS)Nr8r�rSr�z%(prog)s 3.7r�zXXX 3.7
r�r�r
r
r�test_version_actions

z3TestOptionalsHelpVersionActions.test_version_actioncCs>tdd�}|�|d�|�|d�|�|d�|�|d�dS)NFrwr�r�r�r�)rZr"rr
r
r�test_no_helps

z,TestOptionalsHelpVersionActions.test_no_helpcCsZt�}|jddd�|jddd�|�|d�|�|d�|�|d�|�tt|d�dS)	Nr�r)r�r�r�r�r�r�)rZrerr"r�r�rQrr
r
r�test_alternate_help_versionsz;TestOptionalsHelpVersionActions.test_alternate_help_versioncCs�t�}|jdddd�|jddd�|�d�d	dd
ddg}|d
dg}|D]J}|D]}d||f}qT|�||d�|�||d�|�tt|d�qLdS)Nr�r�r�r�r�r�r�r�r�rjz-x barzbaz -xz--bad-optionzfoo bar bazz	%s %%s %sr�r�r�r�)rrfZvalid_prefixesZvalid_suffixes�prefix�suffixr�r
r
r�!test_help_version_extra_argumentss
zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN)rrr	rr"r�r�r�r�r�r�r�r
r
r
rr~�s	r~c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestStringscCs"ttfD]}|�||�|�qdSr)r�r�r�)r�objZ
result_string�funcr
r
r�assertStringEqual/szTestStrings.assertStringEqualc
Cs:tjdddgdddddd	d
gddd
�}d}|�||�dS)Nr�r�r6rrrr�rLrrZHELPZMETAVAR�rsr�r@r�r�rr)r-z�Action(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], help='HELP', metavar='METAVAR'))r�rr�)rZoptionrr
r
r�
test_optional3s�
�zTestStrings.test_optionalc
Cs8tjgdtdddddgddd�}d	t}|�||�dS)
Nr�rr�r�g�?zH HH HzMV MV MVr�z�Action(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], help='H HH H', metavar='MV MV MV'))r�rr�r�)rZargumentrr
r
r�
test_argumentCs�
��zTestStrings.test_argumentcCs"tjddd�}d}|�||�dS)Nr�r	r`zNamespace(bar='spam', foo=42)�r�r�r��rr�rr
r
r�test_namespaceSszTestStrings.test_namespacecCs$tjfddi�}d}|�||�dS)N�"�quotezNamespace(**{'"': 'quote'})r�r�r
r
r�'test_namespace_starkwargs_notidentifierXsz3TestStrings.test_namespace_starkwargs_notidentifiercCs,tjfddiddi��}d}|�||�dS)Nr�rLr�r�z Namespace(a=1, **{'"': 'quote'})r�r�r
r
r�2test_namespace_kwargs_and_starkwargs_notidentifier]sz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiercCs$tjfddi�}d}|�||�dS)NZvalidTzNamespace(valid=True)r�r�r
r
r�$test_namespace_starkwargs_identifierbsz0TestStrings.test_namespace_starkwargs_identifiercCs&tjdd�}dtj}|�||�dS)Nr#r�zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r�r�Z
HelpFormatterr�)rrfrr
r
r�test_parsergs��zTestStrings.test_parserN)rrr	r�r�r�r�r�r�r�r�r
r
r
rr�,sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�
TestNamespacecCsFt��}|�tt|d�tjddd�}|�|jd�|�|jd�dS)Nr�r�r	r�)r�r�r�r�rQr�r�rr�r
r
r�test_constructorus
zTestNamespace.test_constructorcCs�tjddd�}tjddd�}tjdd�}tjdd�}|�||�|�||�|�||�|�||�|�||�|�||k�|�||k�|�||k�|�||k�dS)NrLrr�)rr�)r�r=)r�r�r�ZassertNotEqual�
assertTrue)rZns1Zns2Zns3Zns4r
r
r�
test_equality}szTestNamespace.test_equalitycCs6tjddd�}|�|�d�t�|�|�d�t�dS)NrLrr�)r�r�ZassertIsrE�NotImplemented�__ne__r�r
r
r�$test_equality_returns_notimplemented�sz2TestNamespace.test_equality_returns_notimplementedN)rrr	r�r�r�r
r
r
rr�ssr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestEncodingc	Cs>tj�|�\}}|d7}t|ddd��}|��W5QRXdS)Nz.pyrOzutf-8r�)rr!�splitextr,r�)rr!rtr�r
r
r�_test_module_encoding�sz"TestEncoding._test_module_encodingcCs|�tj�dSr)r�r��__file__rr
r
r�test_argparse_module_encoding�sz*TestEncoding.test_argparse_module_encodingcCs|�t�dSr)r�r�rr
r
r�"test_test_argparse_module_encoding�sz/TestEncoding.test_test_argparse_module_encodingN)rrr	r�r�r�r
r
r
rr��sr�c@seZdZdd�ZdS)�TestArgumentErrorcCs$d}t�d|�}|�t|�|�dS)Nz
my error here)r�r�r�r�)rr�r_r
r
r�test_argument_error�sz%TestArgumentError.test_argument_errorN)rrr	r�r
r
r
rr��sr�c@seZdZdd�ZdS)�TestArgumentTypeErrorc	CsXdd�}tddd�}|jd|d�|�t��}|�dg�W5QRX|�d	|jj�dS)
NcSst�d��dS)N�spam!)r�ZArgumentTypeErrorrr
r
rr	�sz<TestArgumentTypeError.test_argument_type_error.<locals>.spamr#Fr%r�r�r8z-usage: PROG x
PROG: error: argument x: spam!
)rZrer�rFrVr�r�rJ)rr	rfr�r
r
r�test_argument_type_error�s�z.TestArgumentTypeError.test_argument_type_errorN)rrr	r�r
r
r
rr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestMessageContentErrorc	Cs.tddd�}|jdtd�|jdtdd�|jd	td
d�|�t��}|�g�W5QRXt|j�}|�|d�|�|d�|�|d	�|�t��}|�d
g�W5QRXt|j�}|�	|d�|�|d�|�|d	�|�t��}|�d
dg�W5QRXt|j�}|�	|d�|�	|d�|�|d	�dS)Nr#r�r:�req_posr��-req_optTr"Zneed_oner)r@r��req_optZmyXargumentz
-req_opt=1)
rZrer�rr�rFrVr��assertRegexr��rrfr�r�r
r
r�%test_missing_argument_name_in_message�s,


z=TestMessageContentError.test_missing_argument_name_in_messagec	Cs�tddd�}|jdtd�|jdtdd�|jd	td
dd�|�t��}|�g�W5QRXt|j�}|�	|d�|�	|d�|�
|d
�|�t��}|�dg�W5QRXt|j�}|�	|d�|�
|d�|�
|d
�dS)Nr#r�r:r�r�z	--req_optTr"z	--opt_optr)r@r�r�r�Zopt_optz--req_opt=1)rZrer�r�boolr�rFrVr�r�r�r�r
r
r�%test_optional_optional_not_in_message�s$
�

z=TestMessageContentError.test_optional_optional_not_in_messagec	Csltddd�}|�d�|jdddd�|�t��}|�g�W5QRXt|j�}|�|d�|�|d�dS)	Nr#r�r:r�Zoptional_positionalrr�r
)	rZrer�rFrVr�r�r�r�r�r
r
r�'test_optional_positional_not_in_message�s

z?TestMessageContentError.test_optional_positional_not_in_messageN)rrr	r�r�r�r
r
r
rr��sr�c@seZdZdd�ZdS)�TestTypeFunctionCallOnlyOncecsH�fdd�}t��}|jd|dd�|�d���}��tdd�|�dS)	Ncs��|d�dS)Nr��
foo_converted�r�)Zstring_to_convertrr
rr	szLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamr�r�r�z--foo spam!r�r�)r�r�rerVr�r�r8�rr	rfr3r
rr�!test_type_function_call_only_onces
z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrr	r�r
r
r
rr�sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestTypeFunctionCalledOnDefaultcsD�fdd�}t��}|jd|dd�|�g�}��tdd�|�dS)Ncs��|d�dS)Nrr�r��Zint_to_convertrr
rr	sz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spamr�rr�r��r�r�rerVr�r8r�r
rr�/test_type_function_call_with_non_string_defaults

zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcCs@dd�}t��}|jd|dd�|�g�}|�tdd�|�dS)NcSsdS)Nr�r
r�r
r
rr	"szYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spamr��0r�r�r�r�r�r
r
r�+test_type_function_call_with_string_default!s

zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCs@dd�}t��}|jd|dd�|�g�}|�tdd�|�dS)NcSs|dS)Nrr
)Zstr_to_convertr
r
rr,szYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�--testrr�z**)r�r�)rrrfr3r
r
r�)test_no_double_type_conversion_of_default+s

zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8t��}|jddtgdd�|�g�}|�|jg�dS)Nr�r�r-)r�r@r�r�)r�r�rer�rVr�r�r�r
r
r�test_issue_159067s
�
z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrr	r�r�r�r�r
r
r
rr�s
r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestParseKnownArgscCst��}|�d�dS)Nr
�r�r�rVrr
r
r�test_arguments_tupleGsz'TestParseKnownArgs.test_arguments_tuplecCst��}|�g�dSrr�rr
r
r�test_arguments_listKsz&TestParseKnownArgs.test_arguments_listcCs t��}|�d�|�d�dS)Nr�r��r�r�rerVrr
r
r�test_arguments_tuple_positionalOs
z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"t��}|�d�|�dg�dS)Nr�r�rr
r
r�test_arguments_list_positionalTs
z1TestParseKnownArgs.test_arguments_list_positionalcCsJt��}|�d�|�d���\}}|�tdd�|�|�ddg|�dS)Nr�z--foo F --bar --baz�Fr�r�r�)r�r�rerGr�r�r8)rrfr3�extrasr
r
r�test_optionalsYs

z!TestParseKnownArgs.test_optionalscCs|t��}|jdddtd�|jddd�|�d�d	d
dddd
g}|�|�\}}|�tddd	d�|�|�d
dd
g|�dS)Nr�rrL)r�r�r@r�r*r�r�r�rr�rJrrT)�vr	r�)r�r�rerrGr�r8)rrfrrr3r�r
r
r�
test_mixed`s
zTestParseKnownArgs.test_mixedN)	rrr	r�r�r�r�r�r�r
r
r
rr�Esr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestIntermixedArgsc	Cstjdd�}|jddd�|jdddd	�}|�d
�|jddtd
�d��}|�|�}|�tdd
ddddgd�|�|�|�\}}|�tdd
dgd�|�|�dddg|�d��}|�	|�\}}|�tdd
ddgd�|�|�dddg|�|�
|j�|�|jd�dS)Nr#r�r�rjr�r�r�TrP�cmd�restr)r�r@zcmd --foo x 1 --bar y 2 3r�r�rLrr)r�r�rjr�r^rrJz!cmd --foo x 1 --error 2 --bar y 3z--error)
r�r�rerr��parse_intermixed_argsr�r8rGZparse_known_intermixed_argsrSrr#)rrfr�rrr3r�r
r
r�
test_basicps"

zTestIntermixedArgs.test_basicc	Csjtdd�}|�d�|�d�|jddd�d��}|�t��}|�|�W5QRX|�t|j�d	�dS)
Nr#r�r�r�r�r�r�r�z\.\.\.)	rZrer�r�r|r�r�r�r�)rrfrrr�r
r
r�test_remainder�s


z!TestIntermixedArgs.test_remaindercCs�tdd�}|jdd�}|jdddd�|jd	d
d�|jdd
ddd�|�d���}|�tddgddd�|�|�t|jd���|�|j	d�dS)Nr#r�Tr�r�r�r�r(r�r�rbr�rr�r�r�z	1 --foo 2r^r)r�rjr	r])
rZr}rer�r�r�r8r�rFr#)rrfrlr3r
r
r�test_exclusive�s
z!TestIntermixedArgs.test_exclusivecCshtdd�}|jdd�}|jdddd�|jd	d
d�|jdd
ddd�|�t|jg�|�|jd�dS)Nr#r�Tr�r�r�r�r(r�r�rbr�rr�r�r�)rZr}rer�r|r�r�r#r�r
r
r�test_exclusive_incompatible�s
z.TestIntermixedArgs.test_exclusive_incompatibleN)rrr	r�r�r�r�r
r
r
rr�os
r�c@seZdZdd�ZdS)�!TestIntermixedMessageContentErrorc	Cs�tddd�}|jdtd�|jdtdd�|�t��}|�g�W5QRXt|j�}|�|d�|�|d	�|�t��}|�	g�W5QRXt|j�}|�
|d�|�|d	�dS)
Nr#r�r:r�r�r�Tr"r�)rZrer�rr�rFrVr�r�r�ZassertNotRegexr�r
r
rr��s

zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageN)rrr	r�r
r
r
rr��sr�c@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��r�r-)r�r�re)rr�r-rfr
r
r�do_test_no_exception�sz+TestAddArgumentMetavar.do_test_no_exceptionc	CsHt��}|�t��}|jd||d�W5QRX|�|jjd|j�dS)Nr�r�r)	r�r�r�r�rer�r�r3�EXPECTED_MESSAGE)rr�r-rfr�r
r
r�do_test_exception�sz(TestAddArgumentMetavar.do_test_exceptioncCs|jddd�dS)Nr^r��r�rr
r
r�test_nargs_None_metavar_string�sz5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdt�d�dS)Nr��r��tuplerr
r
r�test_nargs_None_metavar_length0�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCs|jddd�dS)N�r^r�r�rr
r
r�test_nargs_None_metavar_length1�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jddd�dS)N�r^rr��r�rr
r
r�test_nargs_None_metavar_length2�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jddd�dS)N�r^rrJr�r�rr
r
r�test_nargs_None_metavar_length3�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jddd�dS)Nrr^r�r�rr
r
r�"test_nargs_optional_metavar_string�sz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcCs|jdt�d�dS)Nrr�r�rr
r
r�#test_nargs_optional_metavar_length0�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCs|jddd�dS)Nrr�r�r�rr
r
r�#test_nargs_optional_metavar_length1�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jddd�dS)Nrr�r�r�rr
r
r�#test_nargs_optional_metavar_length2�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jddd�dS)Nrr�r�r�rr
r
r�#test_nargs_optional_metavar_length3�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jddd�dS)Nrr^r�r�rr
r
r�$test_nargs_zeroormore_metavar_string�sz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCs|jdt�d�dS)Nrr�r�rr
r
r�%test_nargs_zeroormore_metavar_length0�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0cCs|jddd�dS)Nrr�r�r�rr
r
r�%test_nargs_zeroormore_metavar_length1�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1cCs|jddd�dS)Nrr�r�r�rr
r
r�%test_nargs_zeroormore_metavar_length2sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2cCs|jddd�dS)Nrr�r�r�rr
r
r�%test_nargs_zeroormore_metavar_length3sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3cCs|jddd�dS)Nrr^r�r�rr
r
r�#test_nargs_oneormore_metavar_string	sz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringcCs|jdt�d�dS)Nrr�r�rr
r
r�$test_nargs_oneormore_metavar_length0sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0cCs|jddd�dS)Nrr�r�r�rr
r
r�$test_nargs_oneormore_metavar_length1sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1cCs|jddd�dS)Nrr�r�r�rr
r
r�$test_nargs_oneormore_metavar_length2sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2cCs|jddd�dS)Nrr�r�r�rr
r
r�$test_nargs_oneormore_metavar_length3sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3cCs|jddd�dS)Nr�r^r�r�rr
r
r�#test_nargs_remainder_metavar_stringsz:TestAddArgumentMetavar.test_nargs_remainder_metavar_stringcCs|jdt�d�dS)Nr�r�)r�r�rr
r
r�$test_nargs_remainder_metavar_length0sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0cCs|jddd�dS)Nr�r�r�r�rr
r
r�$test_nargs_remainder_metavar_length1 sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1cCs|jddd�dS)Nr�r�r�r�rr
r
r�$test_nargs_remainder_metavar_length2#sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2cCs|jddd�dS)Nr�r�r�r�rr
r
r�$test_nargs_remainder_metavar_length3&sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3cCs|jddd�dS)N�A...r^r�r�rr
r
r� test_nargs_parser_metavar_string+sz7TestAddArgumentMetavar.test_nargs_parser_metavar_stringcCs|jdt�d�dS)Nrr�r�rr
r
r�!test_nargs_parser_metavar_length0.sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length0cCs|jddd�dS)Nrr�r�r�rr
r
r�!test_nargs_parser_metavar_length11sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length1cCs|jddd�dS)Nrr�r�r�rr
r
r�!test_nargs_parser_metavar_length24sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length2cCs|jddd�dS)Nrr�r�r�rr
r
r�!test_nargs_parser_metavar_length37sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length3cCs|jddd�dS)NrLr^r�r�rr
r
r�test_nargs_1_metavar_string<sz2TestAddArgumentMetavar.test_nargs_1_metavar_stringcCs|jdt�d�dS)NrLr�r�rr
r
r�test_nargs_1_metavar_length0?sz3TestAddArgumentMetavar.test_nargs_1_metavar_length0cCs|jddd�dS)NrLr�r�r�rr
r
r�test_nargs_1_metavar_length1Bsz3TestAddArgumentMetavar.test_nargs_1_metavar_length1cCs|jddd�dS)NrLr�r�r�rr
r
r�test_nargs_1_metavar_length2Esz3TestAddArgumentMetavar.test_nargs_1_metavar_length2cCs|jddd�dS)NrLr�r�r�rr
r
r�test_nargs_1_metavar_length3Hsz3TestAddArgumentMetavar.test_nargs_1_metavar_length3cCs|jddd�dS)Nrr^r�r�rr
r
r�test_nargs_2_metavar_stringMsz2TestAddArgumentMetavar.test_nargs_2_metavar_stringcCs|jdt�d�dS)Nrr�r�rr
r
r�test_nargs_2_metavar_length0Psz3TestAddArgumentMetavar.test_nargs_2_metavar_length0cCs|jddd�dS)Nrr�r�r�rr
r
r�test_nargs_2_metavar_length1Ssz3TestAddArgumentMetavar.test_nargs_2_metavar_length1cCs|jddd�dS)Nrr�r�r�rr
r
r�test_nargs_2_metavar_length2Vsz3TestAddArgumentMetavar.test_nargs_2_metavar_length2cCs|jddd�dS)Nrr�r�r�rr
r
r�test_nargs_2_metavar_length3Ysz3TestAddArgumentMetavar.test_nargs_2_metavar_length3cCs|jddd�dS)Nrr^r�r�rr
r
r�test_nargs_3_metavar_string^sz2TestAddArgumentMetavar.test_nargs_3_metavar_stringcCs|jdt�d�dS)Nrr�r�rr
r
r�test_nargs_3_metavar_length0asz3TestAddArgumentMetavar.test_nargs_3_metavar_length0cCs|jddd�dS)Nrr�r�r�rr
r
r�test_nargs_3_metavar_length1dsz3TestAddArgumentMetavar.test_nargs_3_metavar_length1cCs|jddd�dS)Nrr�r�r�rr
r
r�test_nargs_3_metavar_length2gsz3TestAddArgumentMetavar.test_nargs_3_metavar_length2cCs|jddd�dS)Nrr�r�r�rr
r
r�test_nargs_3_metavar_length3jsz3TestAddArgumentMetavar.test_nargs_3_metavar_length3N)3rrr	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�rrrrrrrrr	r
rrr
rrrrrrrrrr
r
r
rr��s`r�c@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 appropriatec	CsFt��}|�t��}|jd|d�W5QRX|�|jjd|j�dS�Nr�r�r)	r�r�r�r�rer�r�r3�EXPECTED_RANGE_MESSAGE�rr�rfr�r
r
r�do_test_range_exceptionusz(TestInvalidNargs.do_test_range_exceptionc	CsFt��}|�t��}|jd|d�W5QRX|�|jjd|j�dSr)	r�r�r�r�rer�r�r3�EXPECTED_INVALID_MESSAGErr
r
r�do_test_invalid_exception{sz*TestInvalidNargs.do_test_invalid_exceptioncCs|jdd�|jdd�dS)Nr�r�Zabcd)rrr
r
r�test_nargs_alphabetic�sz&TestInvalidNargs.test_nargs_alphabeticcCs|jdd�dS)Nrr�)rrr
r
r�test_nargs_zero�sz TestInvalidNargs.test_nargs_zeroN)	rrr	rrrrrrr
r
r
rrnsrc@seZdZdd�Zdd�ZdS)�TestImportStarcCs tjD]}|�tt|��qdSr)r��__all__r�r�r�r
r
rr��s
zTestImportStar.testcCs0dd�tt���D�}|�t|�ttj��dS)NcSs0g|](\}}|�d�s|dkst�|�s|�qS)rtZngettext)�
startswith�inspectZismodule)r;r)r�r
r
rr=�s


�zJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>)rBr�r?r�r>r!)rr?r
r
r�'test_all_exports_everything_but_modules�s
�z6TestImportStar.test_all_exports_everything_but_modulesN)rrr	r�r$r
r
r
rr �sr 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[rrZrfre)rr-r\r
rr�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>]

            optional arguments:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )rfrYr�rZr[)rZ	help_textr
r
r�test_help_with_metavar�s
z*TestWrappingMetavar.test_help_with_metavar)rrr	rr&r`r
r
r\rr%�s
r%cCst�t�it_t�t_dSr)rZrun_unittestrr�r�r|r�r
r
r
r�	test_main�s
r'�__main__)�r#rr%r#rOrZrZunittestr��iorr�rrrrr�rr2r8rGrFrYr�rZr@rar�rbr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr!r%r'r)r+r,r3r5rArBrDrFrKrMrQrRrTrUrWrXrYrZr[r\r_rarbrdrerfrgrhrirjrkrlrmrnrorprrrtrvrwrxryr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�Z	eq_stderrr�r�r�r�r�ZskipIfr�r�r�r�r�r�r�r�rrrrrr rlrvr�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	rrrrrr!r#r$r&r)r-r2r3r4r5r6r7r9r;r<r>r@rCrErFrGrHrIrJrPrQrRrTrUrYrZr\rvryr~r�r�r�r�r�r�r�r�r�r�r�r�rr r%r'rr
r
r
r�<module>s�
 q











""�C
i'4&0#+!$-*(),	��������^R$7/4(6,$&"$.
10(+!~-LG%=1*?)