Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/test/__pycache__/test_argparse.cpython-38.opt-2.pyc
U

>��g���@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
�1/opt/cppython/lib/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)�tempfile�mkdtemp�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�shutil�rmtree)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,r3r
r
r
rrsrc@seZdZdd�ZdS)�SigcOs||_||_dSr)�args�kwargs�rr5r6r
r
r�__init__5szSig.__init__N�rrr	r8r
r
r
rr43sr4c@s$eZdZdd�Zdd�Zdd�ZdS)�NScKs|j�|�dSr)�__dict__�update)rr6r
r
rr8<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))�sortedr;�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	r8rCrGr
r
r
rr::sr:c@seZdZddd�ZdS)�ArgumentParserErrorNcCs,t�||||�||_||_||_||_dSr)�	Exceptionr8�message�stdout�stderr�
error_code)rrJrKrLrMr
r
rr8Js
zArgumentParserError.__init__)NNNr9r
r
r
rrHHsrHc
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�sysrLrrK�listrD�getattr�setattrrO�exc_info�code�getvaluerH)
�
parse_argsr5r6Z
old_stdoutZ
old_stderr�result�keyrVrKrLr
r
r�stderr_to_parser_errorRs,




r[cs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�ErrorRaisingArgumentParsercstt|�j}t|f|�|�Sr)�superr\rXr[)rr5r6rX��	__class__r
rrXtsz%ErrorRaisingArgumentParser.parse_argscstt|�j}t|f|�|�Sr)r]r\�exitr[)rr5r6r`r^r
rr`xszErrorRaisingArgumentParser.exitcstt|�j}t|f|�|�Sr)r]r\�errorr[)rr5r6rar^r
rra|sz ErrorRaisingArgumentParser.error)rrr	rXr`ra�
__classcell__r
r
r^rr\rsr\c@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_argumentr5r6)�parser�argument_signatures�sigr
r
r�	no_groups�sz1ParserTesterMetaclass.__init__.<locals>.no_groupscSs(|�d�}|D]}|j|j|j�qdS)N�foo)�add_argument_grouprgr5r6)rhri�grouprjr
r
r�	one_group�s
z1ParserTesterMetaclass.__init__.<locals>.one_groupcSs4t|�D]&\}}|�d|�}|j|j|j�qdS)Nzfoo:%i)�	enumeratermrgr5r6)rhri�irjrnr
r
r�many_groups�sz3ParserTesterMetaclass.__init__.<locals>.many_groupscSs
|�|�Sr)rX)rhr5r
r
r�listargs�sz0ParserTesterMetaclass.__init__.<locals>.listargscSs0tj}|dg|t_z|��W�S|t_XdS)Nr)rQ�argvrX)rhr5Z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#�	TypeErrorrT)rZ
tester_cls�
add_argumentsrXZadd_arguments_nameZparse_args_namerx�	func_name�names�	test_nameryr
r
rr8�s


z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__cSs.|jj}|jj}|j||�}|�||j�|Sr)rer5r6rfrzri)r�testerr5r6rhr
r
r�_get_parser�s
z<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parserc
SsF|�|�}|jD]0}|��}|jt|d��|�|�W5QRXqdS)N)�msg)r��failures�split�assertRaisesrHrX)rr�rh�args_strr5r
r
rr|�s


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

z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successesN)rrr	r8r�r|r}r
r
r
r�AddTests�sr�)�hasattrr4rer\rf�object)�clsr+�bases�bodydictrkrorrrsrur�rrXr
r
rr8�s

	-zParserTesterMetaclass.__init__Nr9r
r
r
rrc�srcrdc@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	r4rir�r:r�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�rlz-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	r4rerir�r:r�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�hrqz--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�rN��nargsr�r�Nr�r�r�r
r
r
rrs
�rc@sLeZdZeddd�gZddddddgZd	ed
d�fdedd
dgd�fgZd
S)�TestOptionalsNargs3r��rr�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��?rr�r�)rr�r��spam�rr�r��42Z84)rrBr�r��2r�N�T�r-r�r�r�z-w 2z-x 2z-y 2z-z 2��	rrr	r4�intrir�r:r�r
r
r
rr
-s 
��r
c@s�eZdZeddd�edddd�gZdgZded	dd
�fdegdd
�fdedgdd
�fdedd
gdd
�fded	gd
�fded	dgd
�fded	dd
gd
�fgZd	S)�TestOptionalsNargsZeroOrMorer��*rr�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��+rr�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��rBrr�z-f dz-fadz-gaz-g 6r�N)r�r�r�z-f cr	z-g 0rz-g 03rz-fb -g4r��
rrr	r4r�rangerir�r:r�r
r
r
rrhs
��rc@s@eZdZededd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsRequiredr�T�rB�requiredr�r��-x 1rNr�z-x42r�Nrr
r
r
rr$ys��r$c@s>eZdZeddd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsActionStorer��storer�r�rr�Nr�z-xfoorlr�r
r
r
rr(�s
�r(c@s>eZdZedded�gZdgZdedd�fdeed�fgZdS)�TestOptionalsActionStoreConstr�r�r�r�r�N�r�)	rrr	r4r�rir�r:r�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�r0r��r�r�r�r1r2r�r3r4r5rNr�r
r
r
rr6�s�r6c@sheZdZedded�edddd�gZddd	d
dgZded
d�fdeegd�fdeededgd�fgZd
S)�TestOptionalsActionAppendConst�-b�append_constr��-cr0r�r�r�r��a -c�-bx�-b xr�N�r�-b -cx -b -cyzr��yz�	rrr	r4rIrir�r:r�r
r
r
rr8�s��r8c	@sreZdZeddedgd�edddd�gZd	dd
ddgZd
edgd�fdedegd�fdedededgd�fgZdS)�)TestOptionalsActionAppendConstWithDefaultr9r:r�)r�r�r�r;r0rr<r�r=r>r?r�r@rAr�rBNrCr
r
r
rrD�s��rDc@sBeZdZeddd�gZddddgZded	d
�fdedd
�fgZd	S)�TestOptionalsActionCountr��countr�r�r�z-x bz	-x a -x br�Nr�rNr�r
r
r
rrE�s
�rEc	@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)rlZfoobazZfooblez--foo 7�7z	--fooba ar�z--foobl --foo gr�Tr�r
r
r
rrG�s
��rGc@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�rlZfoodleZfoonlyz--foo 3�3z--foonly 7 --foodle --foo 2rTrHr�r
r
r
rrIs

��rIc@sreZdZeddd�Zed�eddd�ed�gZd	d
ddgZd
edddd�fdedddd�fdedddd�fgZdS)�0TestOptionalsDisallowLongAbbreviationPrefixCharsrF�r�rKz++fooz++foodler�r�z++foonlyz+foon 3z++foon 3z++foodz++food ++foo 2r�NrLz++foo 3rMz++foonly 7 ++foodle ++foo 2rTrHr�r
r
r
rrNs
��rNc
@s�eZdZedd�Zed�eddd�gZddgZded	d	d
�fdedd	d
�fd
edd	d
�fded	dd
�fdeddd
�fdeddd
�fgZd	S)�/TestDisallowLongAbbreviationAllowsShortGroupingFrJz-rr;rFr�z-c -rr�N��rr	z-rar�z-rcc�ccz-ccrz-cc -raz-ccrccr�r
r
r
rrP&s

��rPc
@s�eZdZeddd�Zed�eddd�gZddgZd	ed
d
d�fded
d
d�fdedd
d�fded
dd�fded
dd�fdeddd�fgZd
S)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixrFrOz+rz+crFr�z+c +rr�NrQz+rar�z+rccrSz+ccrz+cc +raz+ccrccr�r
r
r
rrT9s
��rTc@s0eZdZed�gZdddgZdedd�fgZdS)�TestPositionalsNargsNonerlr�r��a br�r�Nr�r
r
r
rrUPs

�rUc@s6eZdZeddd�gZdddgZdedgd�fgZd	S)
�TestPositionalsNargs1rlrNrr�r�rVr�r�Nr�r
r
r
rrWZs
�rWc@s:eZdZeddd�gZddddgZdedd	gd
�fgZdS)�TestPositionalsNargs2rlrrr�r�r��a b crVrr�Nr�r
r
r
rrXds�rXc@sNeZdZeddd�gZdgZdegd�fdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsZeroOrMorerlrrr�r�r�r�rVrNr�r
r
r
rrZns�rZc@sPeZdZedddd�gZdgZdedd�fdedgd�fd	edd
gd�fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultrlrr�r
r�r�r�r�rVrNr�r
r
r
rr[zs�r[c@sDeZdZeddd�gZddgZdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsOneOrMorerlrrr�r�r�r�rVrNr�r
r
r
rr\�s
�r\c@s>eZdZeddd�gZddgZdedd�fd	ed	d�fgZdS)
�TestPositionalsNargsOptionalrlrrr�rVr�Nr�r�r�r
r
r
rr]�s
�r]c@s@eZdZedddd�gZddgZdedd�fd	ed	d�fgZd
S)�#TestPositionalsNargsOptionalDefaultrlrr�r
r�rVr�r�r�Nr�r
r
r
rr^�s
�r^c@sDeZdZeddedd�gZdddgZded	d
�fdedd
�fgZd
S)�,TestPositionalsNargsOptionalConvertedDefaultrlrr)rrBr�r�rV�1 2r�r�r��1rNNrr
r
r
rr_�s�
�r_c@s:eZdZed�ed�gZddddgZdeddd	�fgZd
S)�TestPositionalsNargsNoneNonerlr�r�r�r�rYrVr�rlr�Nr�r
r
r
rrb�s�rbc@s@eZdZed�eddd�gZddddgZd	edd
gd�fgZdS)
�TestPositionalsNargsNone1rlr�rNrr�r�r�rYrVrrcNr�r
r
r
rrd�s�rdc@sDeZdZeddd�ed�gZddddd	gZd
eddgdd
�fgZdS)�TestPositionalsNargs2Nonerlrrr�r�r�r�rV�a b c drYrr	rcNr�r
r
r
rre�s�rec@s\eZdZed�eddd�gZddgZdedgd�fd	edd
gd�fdedd
dgd�fgZd
S)�"TestPositionalsNargsNoneZeroOrMorerlr�rrr�r�r�rcrVrrYr	Nr�r
r
r
rrg�s�rgc@sPeZdZed�eddd�gZdddgZdedd	gd
�fdedd	dgd
�fgZd
S)�!TestPositionalsNargsNoneOneOrMorerlr�rrr�r�r�rVrrcrYr	Nr�r
r
r
rrh�s

�rhc@sJeZdZed�eddd�gZdddgZdedd	d
�fdeddd
�fgZd	S)
� TestPositionalsNargsNoneOptionalrlr�rrr�r�rYr�NrcrVrr�r
r
r
rri�s

�ric@s\eZdZeddd�ed�gZddgZdegdd�fd	edgd
d�fdedd
gdd�fgZd
S)�"TestPositionalsNargsZeroOrMoreNonerlrrr�r�r�r�rcrVrrYr	Nr�r
r
r
rrj�s�rjc@sPeZdZeddd�ed�gZdddgZdedgd	d
�fdedd	gdd
�fgZd
S)�!TestPositionalsNargsOneOrMoreNonerlrrr�r�r�r�rVrrcrYr	Nr�r
r
r
rrks

�rkc@sLeZdZedddd�ed�gZdddgZd	edd	d
�fded	dd
�fgZd
S)� TestPositionalsNargsOptionalNonerlrr�r
r�r�r�rYr�rcrVrNr�r
r
r
rrl
s

�rlc@sXeZdZeddd�eddd�gZdddgZd	edd
ggd�fdedd
gd
gd�fgZdS)�TestPositionalsNargs2ZeroOrMorerlrrr�rr�r�r�rVrrcrYr	Nr�r
r
r
rrms

�rmc@sHeZdZeddd�eddd�gZdddd	gZd
eddgdgd
�fgZdS)�TestPositionalsNargs2OneOrMorerlrrr�rr�r�r�rVrYrr	rcNr�r
r
r
rrn#s�rnc@sXeZdZeddd�eddd�gZdddd	gZd
eddgdd
�fdeddgdd
�fgZdS)�TestPositionalsNargs2Optionalrlrrr�rr�r�r�rfrVrNrcrYr	r�r
r
r
rro-s
�roc@sfeZdZeddd�eddd�gZddgZdegdgd	�fd
edgdgd	�fdeddgd
gd	�fgZdS)�TestPositionalsNargsZeroOrMore1rlrrr�rNr�r�r�rcrVrrYr	Nr�r
r
r
rrp8s�rpc@sXeZdZeddd�eddd�gZdddgZd	edgd
gd�fdedd
gd
gd�fgZdS)�TestPositionalsNargsOneOrMore1rlrrr�rNr�r�r�rVrrcrYr	Nr�r
r
r
rrqDs

�rqc@sReZdZeddd�eddd�gZdddgZd	ed
d	gd�fded	d
gd�fgZd
S)�TestPositionalsNargsOptional1rlrrr�rNr�r�rYr�NrcrVrr�r
r
r
rrrOs

�rrc@s^eZdZed�eddd�eddd�gZddd	gZd
ed	gdgd�fd
ed	dgdgd�fgZdS)�#TestPositionalsNargsNoneZeroOrMore1rlr�rrr�rNr�r�r�rVr�rlr�r�rYr	Nr�r
r
r
rrsZs

�
�rsc@sdeZdZed�eddd�eddd�gZddd	d
gZded	d
gdgd
�fded	d
dgdgd
�fgZdS)�"TestPositionalsNargsNoneOneOrMore1rlr�rrr�rNr�r�r�rrYr	rtrf�dNr�r
r
r
rruis

��ruc@s^eZdZed�edddd�eddd�gZd	d
dgZdeddd
gd�fdedd
dgd�fgZdS)�!TestPositionalsNargsNoneOptional1rlr�r��?r
r�rNrr�r�r�rVrrtrYr	Nr�r
r
r
rrwxs
�
�rwc@s\eZdZeddd�edddd�gZddgZd	ed
dd�fdeddd�fd
eddd�fgZd
S)�$TestPositionalsNargsOptionalOptionalrlrrr�r�r
r�rYr�Nrcr�rVrr�r
r
r
rry�s
��ryc@sleZdZeddd�eddd�gZdgZdedgd	�fd
ed
gd	�fded
dgd	�fd
ed
ddgd	�fgZdS)�&TestPositionalsNargsOptionalZeroOrMorerlrrr�rr�r�Nrcr�rVrrYr	r�r
r
r
rrz�s�rzc@sbeZdZeddd�eddd�gZddgZded	dgd
�fdeddgd
�fd
edddgd
�fgZd	S)�%TestPositionalsNargsOptionalOneOrMorerlrrr�rr�r�r�NrcrVrrYr	r�r
r
r
rr{�s�r{c@sHeZdZeded�d�gZdddddgZd	ed	d
�fdedd
�fgZdS)
�TestPositionalsChoicesStringrZabcdefgrr�r�r�r�efr��rr�N)	rrr	r4�setrir�r:r�r
r
r
rr|�s
�r|c@sJeZdZedeed�d�gZdddddgZd	ed
d�fded
d�fgZ	dS)�TestPositionalsChoicesIntr�r r�r�r�rr}�4r!r~�15�Nr"r
r
r
rr��s
�r�c@sLeZdZeddd�edddd�gZdddd	d
gZdeddd
ggd�fgZdS)�TestPositionalsActionAppendrr0r�r)r�rr�r�r�rVrfrYrr	r~Nr�r
r
r
rr��s
��r�c@sjeZdZeddd�edddd�gZdd	gZd
eddd
�fdeddd
�fdeddd
�fdeddd
�fgZdS)�"TestOptionalsNumericAndPositionalsr�rrz-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�rrz-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�rrr�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�rr�rr�r�)r�rBr�z-+-r�r�r�r�z+ -r�NFr�z- Xr�z+ -3���Tz- ===z===)
rrr	r4rerrir�r:r�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�rrr�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��...rr�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��rBz-3r�)rBr�r�rrz-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	r4�floatrir�r:r�r
r
r
rr�9s6

���r�c@s�eZdZeddejd�eddejd�eddejd�gZd	gZd
e�fdedd�fd
eddgd�fdedd�fdeddd�fdeddgdd�fgZ	dS)�TestDefaultSuppressrlrr
r�rr�r�r7r�r�r�r�rVrrcTr3r1�rlr�r2rtN)
rrr	r4�argparse�SUPPRESSrir�r:r�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��argument_defaultrlrrr�rr�r�r�r�r�r�r�rVrrcTr3r1r�r2rtN)rrr	r4r�r�rerir�r:r�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�rlrrr�rr�r�r�r�r�)rlr�r�r�r�rVrTr1r2Nr�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)�invalidz@no-such-path
r-)r]r�rr.r/�rZ
file_textsr"�textr2r^r
rr�s�zTestArgumentsFromFile.setUp�@��fromfile_prefix_chars�-ar�r�rrr�r9r�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	rr4rerir�r:r�rbr
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)r�arg_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�rrr�r�zworld!r�r+)rrr	rr\r�rfr4rerir�r:r�rbr
r
r^rr��s	

��r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestFileTypeReprcCst�d�}|�dt|��dS)NrRz
FileType('r')�r��FileTyper��repr�rrBr
r
r�test_r�s
zTestFileTypeRepr.test_rcCs t�dd�}|�dt|��dS)N�wbrNzFileType('wb', 1)r�r�r
r
r�	test_wb_1�szTestFileTypeRepr.test_wb_1cCs"tjddd�}|�dt|��dS)NrR�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)NrRrN�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
rr8�szStdStreamComparer.__init__cCs|tt|j�kSr)rSrQr�rEr
r
rrG�szStdStreamComparer.__eq__N�rrr	r8rGr
r
r
rr��sr��stdinrKrLc@s eZdZiZdd�Zdd�ZdS)�RFilecCs
||_dSr�r+�rr+r
r
rr8�szRFile.__init__cCs`||jkr|j|}n|��}|j|<|��t|t�sD|�d�}|j|jkoZ|kSS)N�ascii)�seen�read�closerPr��decoder+�rrFr�r
r
rrG�s


zRFile.__eq__N)rrr	r�r8rGr
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)Nrcr-�readonly)
r]r�rr.rr"r#rr/r3�r�	file_namer2r^r
rr
s
zTestFileTypeR.setUpr�r�rrRr�znon-existent-file.txtrlN�r�r�
-x foo barr��
bar -x foo�-x - -r��rrr	rr4r�r�rir�r:r��eq_stdinr�rbr
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�)rr2r^r
rr s
zTestFileTypeDefaults.setUpr;rRzno-file.txt�rBr�r�z-c goodr�)r	)
rrr	rr4r�r�rir�r:r�r�rbr
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)Nrcr-)	r]r�rr.rr"r#rr/r�r^r
rr2szTestFileTypeRB.setUpr��rbr�rr�rlNr�r�r�r�r�r�r
r
r^rr�/s��r�c@s"eZdZe�Zdd�Zdd�ZdS)�WFilecCs
||_dSrr�r�r
r
rr8HszWFile.__init__cCsL||jkr@d}d|jkr"|�d�}|�|�|��|j�|�|j|jkS)NzCheck that file is writable.rr�)r��mode�encoder/r��addr+r�r
r
rrGKs



zWFile.__eq__N)rrr	rr�r8rGr
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�rr3rr^r
rr[szTestFileTypeW.setUpr�r-r�rr�r�rlNr�r�r�r�r�)rrr	rr4r�r�rir�r:r��	eq_stdoutr�rbr
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�rlNr�r�r�r�r�)rrr	r4r�r�rir�r:r�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-rN)r-rNNNr�r�)r-r�Nr�r�r�r�)r�r�r�Nr�l1�strict)r-rr�r�z
builtins.openrl)rl)r�r�rZpatchZassert_called_with)rZFTZcases�mrBr5r
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��
ValueErrorrgr�r�r��	exception�rrh�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	r4�complexr�rir�r:r�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�rrr
r
rr8�sz#TestTypeUserDefined.MyType.__init__cCst|�|jft|�|jfkSr�rBrrEr
r
rrG�sz!TestTypeUserDefined.MyType.__eq__Nr�r
r
r
r�MyType�srr�r�rrrr�r��-xf gr�r�N)
rrr	rrr4rir�r:r�r
r
r
rr�s	

��rc@sfeZdZGdd�d�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZd
S)�TestTypeClassicClassc@seZdZdd�Zdd�ZdS)zTestTypeClassicClass.CcCs
||_dSrrrr
r
rr8�szTestTypeClassicClass.C.__init__cCst|�|jft|�|jfkSrrrEr
r
rrG�szTestTypeClassicClass.C.__eq__Nr�r
r
r
r�C�sr	r�r�rrrr�r�rr�r�N)	rrr	r	r4rir�r:r�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_typerBZmy_typer�r�r�raz
my_type{1}r�z-x 1 42zmy_type{42})r�r��registerrgr�rXr�r:)rr
rhr
r
rr��s
�
�zTestTypeRegistration.testNr�r
r
r
rr
�sr
c@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~)��?rxr)�@r�	value: %srNzopt_action failed: %sr)r:r��AssertionErrorrQrUrHrT�rrh�	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�rr)rNrx)rrrrNzarg_action failed: %sr�)r:rrrQrUrHrTrr
r
rr
s
z/TestActionUserDefined.PositionalAction.__call__)Nrr
r
r
r�PositionalActionsrz-srr)r�r�rBr�r�rr)r�rBrr�z-s0.125r)rr�rr�z
-s 0.625 1rxrNz84 -s2rrN)rrr	r��Actionrrr4r�rrir�r:r�r
r
r
rr�s$����rc@s&eZdZGdd�dej�Zdd�ZdS)�TestActionRegistrationc@seZdZddd�ZdS)zTestActionRegistration.MyActionNcCst||jd|�dS)Nzfoo[%s])rTr�)rrhr�valuesrr
r
rr9sz(TestActionRegistration.MyAction.__call__)Nrr
r
r
r�MyAction7sr!cCs^t��}|�dd|j�|jddd�|�|�dg�tdd��|�|�dg�td	d��dS)
Nr�Z	my_actionr�r�razfoo[1]rrzfoo[42])r�r�rr!rgr�rXr:�rrhr
r
rr�<s
zTestActionRegistration.testN)rrr	r�rr!r�r
r
r
rr4src@s:eZdZeddded�gZdZdeddd	d
gd�fgZdS)
�TestActionExtendr��extendr)r�rrBr
z--foo f1 --foo f2 f3 f4�f1�f2Zf3Zf4r�N)	rrr	r4r�rir�r:r�r
r
r
rr#Fs
��r#cs�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�rHr7r
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�rrrlr��foo help�r��help�r,r-r�r��bar help�rBr0r&FZCOMMAND�metavar�commands�title�command helpr0z
1 description�r-z1 helpZ1alias1Z1alias2�aliasesrar�zw helpr�r�x help�rr0z
2 descriptionz2 helprr�Z123�y helpr�rzz help)rBrr0z
3 descriptionz3 helprM�tzt help�ur�zu help�rr0)ra)r)rM)	r\rgr��add_subparsersr)�dict�
add_parserrr)
r�subparser_helpr�r9rhZsubparsers_kwargs�
subparsersZparser1_kwargs�parser1Zparser2_kwargs�parser2Zparser3_kwargsZparser3r
r
rr�Ysj�����



zTestAddSubparsers._get_parsercs&t���|��|_|jdd�|_dS)NT)rC)r]rr�rh�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)rhrX)rr�r5r
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�rlr�r-r�z0.25 --foo 2 -y 2 3j -- -1jTrry@y��)rlr�r�r�z--foo 0.125 1 crr	z-1.5 3 11 -- a --foo 7 -- br��r�r�rH�--)rlr�r=r>)r�rhrXr�r:rr
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)NrIFr�rJrrKz0.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�rh�parse_known_argsr�r:rr
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�rar�Frrtr`)r\rgr@rBr�r:rXr�)rrhrDrEr
r
r�	test_dest�s

�zTestAddSubparsers.test_destcCs,|�dg�}|�|jd�|�|jd�dS)N�runr
)rXr��commandr))rrh�retr
r
r�_test_required_subparsers�sz+TestAddSubparsers._test_required_subparserscCs0t�}|jdd�}d|_|�d�|�|�dS)NrSr�TrR)r\r@r&rBrU�rrhrDr
r
r�&test_required_subparsers_via_attribute�s

z8TestAddSubparsers.test_required_subparsers_via_attributecCs,t�}|jddd�}|�d�|�|�dS)NrST�r�r&rR)r\r@rBrUrVr
r
r�"test_required_subparsers_via_kwarg�s
z4TestAddSubparsers.test_required_subparsers_via_kwargcCs6t�}|jdd�}|�d�|�d�}|�|j�dS)NrSr�rRr
�r\r@rBrX�assertIsNonerS�rrhrDrTr
r
r� test_required_subparsers_default�s


z2TestAddSubparsers.test_required_subparsers_defaultcCs8t�}|jddd�}|�d�|�d�}|�|j�dS)NrSFrXrRr
rZr\r
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�rh�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�r`rarbrcr"r
r
r�test_help_extra_prefix_charss

�z.TestAddSubparsers.test_help_extra_prefix_charscCs6tddd�}|jdddd�|�|��t�d��dS)	Nr*r+r1z--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
        )r\rgr�rarbrcr"r
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
            rer"r
r
r� test_help_alternate_prefix_chars)s

�z2TestAddSubparsers.test_help_alternate_prefix_charscCs.|�|j��d�|�|j��t�d��dS)Nr_a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�rGr`rarbrcrr
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+r1r�r�r.r/r�r2�r0�subcommandsr7zadditional text)r6r-r0rarz'usage: PROG [-h] [--foo] bar {1,2} ...
a�            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

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

            subcommands:
              command help

              {1,2}       additional text
            )	r\rgr@rBr�r`rarbrc)rrhrDrErFr
r
r�test_subparser_title_helpPs��


�z+TestAddSubparsers.test_subparser_title_helpc	Cs:|�t��}|j�|���W5QRX|�||jj�dSr)r�rHrhrXr�r�r�rK)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
            �rmrbrcrr
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
            rnrr
r
r�test_subparser2_help�sz&TestAddSubparsers.test_subparser2_helpc	Cs\|jdd�}|�|�d���tddddd�gf�|�|�d���tddddd�gf�dS)	NT�r9z
0.5 1alias1 bFr�rrKz
0.5 1alias2 b)r�r�rOr�r:r"r
r
r�test_alias_invocation�s��z'TestAddSubparsers.test_alias_invocationcCs"|jdd�}|�|jd���dS)NTrqz
0.5 1alias3 b)r�r)rXr�r"r
r
r�test_error_alias_invocation�s�z-TestAddSubparsers.test_error_alias_invocationcCs.|jddd�}d|_|�|��t�d��dS)NT)r9rCa            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�rarbrcr"r
r
r�test_alias_help�sz!TestAddSubparsers.test_alias_help)FNF)rrr	r)r�rrHrNrPrQrUrWrYr]r^rdrfrgrhrirlrmrorprrrsrtrbr
r
r^rr'Ss4�
7	r'c@s$eZdZdd�Zdd�Zdd�ZdS)�TestPositionalsGroupscCsZt�}|�d�|�d�}|�d�|�d�tdddd�}|�d	���}|�||�dS)
Nrlr�r�r�rarrMrt�1 2 3)r\rgrmr:rXr�r��rrhrn�expectedrYr
r
r�test_nongroup_first�s



z)TestPositionalsGroups.test_nongroup_firstcCsZt�}|�d�}|�d�|�d�|�d�tdddd�}|�d	���}|�||�dS)
N�xxxrlr�r�rarrMrtrv�r\rmrgr:rXr�r�rwr
r
r�test_group_first�s



z&TestPositionalsGroups.test_group_firstcCspt�}|�d�}|�d�|�d�|�d�|�d�}|�d�tddd	d
d�}|�d���}|�||�dS)
Nrzrlr�r�r��frellrarrMr�)rlr�r�r}z1 2 3 4r{rwr
r
r�test_interleaved_groups�s





z-TestPositionalsGroups.test_interleaved_groupsN)rrr	ryr|r~r
r
r
rru�s

rucs�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(r7r
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�r9r	z--dr�r�r�r)r]rr\�wxyz_parentrgrm�abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprr"�basenamerQrt�main_program)rZx_group�c_grouprnr^r
rr�s(



zTestParentParsers.setUpcCs2t|jgd�}|�|�d���tdddd��dS)N��parentsz-y 1 2 --w 3rMrar�r-r�r�)r\r�r�rXr�r:r"r
r
r�test_single_parent	s�z$TestParentParsers.test_single_parentcCs,|�|jj�t|jgd�}|�|j�dS�Nr�)�_test_mutex_abr�rXr\r"r
r
r�test_single_parent_mutex	sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d�}t|gd�}|�|j�dS)NF)r�r�r�)r�r\r�rX�rr�rhr
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�Tr9r;)r�r:r))rrXr
r
rr�	sz TestParentParsers._test_mutex_abcCs@|j|jg}t|d�}|�|�d���tddddddd��dS)Nr�z--d 1 --w 2 3 4rMrarr�)r�rrvr-r�r�)r�r�r\r�rXr�r:r�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 3TFrrM)r�rr-r�r�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�r\r�rXr�r:r)r�r
r
r�test_multiple_parents_mutex#	s
���z-TestParentParsers.test_multiple_parents_mutexcCs |jtjtj|j|jgd�dSr�)r�r��
ArgumentErrorr�r�r�rr
r
r�test_conflicting_parents-	s

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

�z0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d�}|�|�d���tdddd��dS)Nr�r`rr�)r�r�r\r�rXr�r:r�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 4rMrarr�)r�rrvr)	r\r@rBr�rgr�rXr�r:)rrhrDZ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)Nrlr�r�r	r�rzfoo -a 4TFr�)r�rr	zbar -b  --w 2 3 4rrM)r�rr-r�r�rzfoo -a -b 4zbar -b -a 4)r\r@r�rBrmrgr�r�rXr�r:r))rrhrDr�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�)	r�r�r\rar�r�rbrc�format)rr�rh�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)NFr�r��gd�r6r-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�)
r\rmrgr�r�rHrXrar�r�rbrcr�)r�parentr�r�rhr�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�rbr
r
r^rr�s

rc@s$eZdZdd�Zdd�Zdd�ZdS)� TestMutuallyExclusiveGroupErrorscCs t�}|j}|t|jdd�dS)Nrl)r6)r\r�r~r�)rrh�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�rrrN)r\r�rgr�r�r��PARSER)rrhrnrgr�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
              )r\r�rgr�rarbrc)rrhZgroup1�group2rxr
r
rrd�	s

z*TestMutuallyExclusiveGroupErrors.test_helpN)rrr	r�r�rdr
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_parserrXrHr�r�r��rrXra�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�rXr��successes_when_not_requiredr�r�)rrXr�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�rXr�r�r�)rrXr�r�r�r
r
r�test_successes_when_required�	sz$MEMixin.test_successes_when_requiredcCs,|jdd�j}|j}|�|�t�|��dSr�)r�r`�usage_when_not_requiredr�rbrc�rr`Zexpected_usager
r
r�test_usage_when_not_required�	sz$MEMixin.test_usage_when_not_requiredcCs,|jdd�j}|j}|�|�t�|��dSr�)r�r`�usage_when_requiredr�rbrcr�r
r
r�test_usage_when_required�	sz MEMixin.test_usage_when_requiredcCs2|jdd�j}|j|j}|�|�t�|��dSr�)r�rar�r0r�rbrc�rrar0r
r
r�test_help_when_not_required�	sz#MEMixin.test_help_when_not_requiredcCs2|jdd�j}|j|j}|�|�t�|��dSr�)r�rar�r0r�rbrcr�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�r2rjr�rr��baz help)rr�r0�r\r�rg�rr&rhrnr
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�r:r�r�r�r�r0r
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 helprjz--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�r\rgr�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�rjr�r-r<r/�r\r�rgr�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	--bladderrjr�)rr&rhrnr�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�r:r�r�r�r�r0r
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��SPAMrjr�rr��BADGER�rr�r0r�r�r
r
rr�
s
z5TestMutuallyExclusiveOptionalAndPositional.get_parserz--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr�)rlr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�r:r/r�r��a helpr9�b helpr�r<r;�c helpr�r�r
r
rr��
s
z.TestMutuallyExclusiveOptionalsMixed.get_parserz-a -b�-b -cz-a -cz-a -b -cr�TF�r�rr	r�r�r9r;z-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�r2rjr�r�)r\rmr�rg)rr&rhZtitled_group�mutex_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�r:rjr�r�r<r/r�r�rr�r?r9r�r;r�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�r9r;z-dz-er�r�)rr&rhrnr�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�r0r�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�r\r,)rr&r�rhr^r
rr�Ss�zMEPBase.get_parser)N)rrr	r�rbr
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)
Nrlr�r�rN)r�r�r�r�r)r�r��r\�set_defaultsr�r:rXr"r
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)Nrlr�r�r�Zxfooxr�r�r�rar')r\r�rgr�r:rXr�r"r
r
r�test_set_defaults_with_args�s*������z+TestSetDefaults.test_set_defaults_with_argscCsRt�}|jdd�|��}|�d�}|jdd�|�tddd�|�d����dS)Nrlr�r�r�r+r�)r\r�r@rBr�r:rXr�)rrhrDZparser_ar
r
r�test_set_defaults_subparsers�s
�z,TestSetDefaults.test_set_defaults_subparserscCs>tdd�}|jdd�t|gd�}|�tdd�|�g��dS)NFr�rlr�r�r�)rr�rhr
r
r�test_set_defaults_parents�s
z)TestSetDefaults.test_set_defaults_parentscCsLt��}|���d�}|jdd�|jdd�|�tdd�|�dg��dS)Nr�rNr�r)r�r�r@rBr�r�r:rX)rrhZxparserr
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�rrr��ZZr
�WW�YY)r\r�rgr�r:rXr"r
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�rrlr�r�r�r�r�rrr�r�r
r�r�)r\r�rmrgr�r:rX�rrhrnr
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)	Nrlr�r�r�r�r�r�r�)r\r[�get_defaultrgrr�r�r"r
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)	NrNrr�r�r�r�Zxxr�)r�rr�assertInrr
r
r�test_non_emptysz*TestNamespaceContainsSimple.test_non_emptyN)rrr	rrr
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
rwr
r
r�test_wrapperszUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper)�func_suffix�std_name�test_format�
test_print�test_print_filerr~rT)rZ
test_classr
rrxr�r	r
r
rr8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)Nri�argument_group_signatures�subparsers_signatures)
r�r�rer5r6rSrgrmr@rB)rr�rhZargument_sigZ
group_sigsZ	group_sigZ
argument_sigsrnZsubparsers_sigsrDZ
subparser_sigr
r
rr�&s2�����zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parsercSs&t||j�}t�|�}|�||�dSr)rSr
rbrcr�)rr��parser_textZ
expected_textr
r
r�_test<s
z<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testcSs,|�|�}t|d|j�}|�||��dS)Nz	format_%s)r�rSr
r)rr�rhr�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�rSr
rQrrTrrWr)rr�rh�print_Z
old_streamrr
r
rr
Fs
zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printcSs@|�|�}t|d|j�}t�}||�|��}|�||�dSr)r�rSr
rrWr)rr�rhrZsfilerr
r
rrRs
zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_fileN)	rrr	r8r�rrr
rr
r
r
rr�sr�))�usagerK)r0rK)r�)r�r+r�r�r�r
rr
r
rr8s
Hz$TestHelpFormattingMetaclass.__init__Nr9r
r
r
rr
srrc@sjeZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerOptionalsr*�DESCRIPTION�EPILOG�r,r-�epilogr�r�r��0.1r�r�r��X HELPr/�--y�Y HELPrjrl�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	r4rerirrr0r�r
r
r
rrcs�


�rc@s8eZdZdd�ZejZejZejZdZedZ	ej
Z
dS)�TestShortColumnscCs$t��}|�dd�|�|j�dS)Nr
r�)rrrrrrr
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	rrrerirrr0r�r
r
r
rr#�s	r#c@s�eZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZeddd�eddd�edddd�gfgZdZedZd Z	d!S)"�TestHelpBiggerOptionalGroupsr*rrrr�r�r�rr�r�r�rr/rrrjrlrr�r zGROUP TITLEzGROUP DESCRIPTIONr8r�zBAZ HELPr�rzZ HELPr?zN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a�
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        GROUP TITLE:
          GROUP DESCRIPTION

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

        EPILOG
    r!Nr"r
r
r
rr$�s"�


�

��r$c@sZeZdZeddd�Zedddd�edd	d
�eddd
�ed
dd
�gZgZdZedZdZ	dS)�TestHelpBiggerPositionals�USAGEr�rr-r�r�rr/rrrjZekiekiekifekangzEKI 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�Nr"r
r
r
rr%�s


�r%c@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 wrappedr1r�r�zoddly
    formatted -x help�r4r0r�r�z
normal y helpr6z'
    oddly formatted group

descriptionr8r�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�Nr"r
r
r
rr)
s ��
���r)c@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
Dr1r�r�zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXr*r�r��dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�r�zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAr/r+a�
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

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

        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�Nr"r
r
r
rr,@
s���r,c@sxeZdZeddd�Zeddddd�ed	d
dd�ed
ddd�gZed�edddd�edddd�gfgZdZedZdZ	dS)�TestHelpWrappingLongNamesr&zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Dr'r�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 XHr*r�Zyyyyyyyyyyyyyyyyyyyyyyyyyr-r.r�ZAAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr�ZzzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHr(ar
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

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

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

        ALPHAS:
          -a AAAAAAAAAAAAAAAAAAAAAAAAA
                                AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH
                                AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
          zzzzzzzzzzzzzzzzzzzzzzzzz
                                ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH
                                ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
        zs        V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV
        VV VV VV VV V
        Nr"r
r
r
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-r?r�rr�r�rjrr)r0rr	rrnr�r�r�rr�rvrz�        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�Nr"r
r
r
rr1�
s"

���r1c@sleZdZeddd�ZgZed�eddd�eddd�gfed	�ed
d
d�eddd�gfgZd
ZedZdZ	dS)�TestHelpOnlyUserGroupsr*F�r,r�Zxxxxr�r�rjr�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�Nr"r
r
r
rr2�
s

�

��

r2c@sNeZdZedd�Zeddd�eddd�ed�ed	�gZgZd
ZedZdZ	d
S)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr�r�r��r4r�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�Nr"r
r
r
rr4�
s


�r4c@sbeZdZedd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�gZgZdZedZdZ	dS)� TestHelpUsageLongProgOptionsWrapr5r�r��WWWWWWWWWWWWWWWWWWWWWWWWWr6r�r0r��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�Nr"r
r
r
rr7s




�
r7c@sBeZdZeddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)�$TestHelpUsageLongProgPositionalsWrapr5Fr3�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r�Nr"r
r
r
rr;*s�r;c@sheZdZedd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�ed�gZgZdZedZdZ	dS)�TestHelpUsageOptionalsWrapr*r�r�r8r6r�r0r�r9r�r:r�rr	z�        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�Nr"r
r
r
rr@Cs




�	r@c@sReZdZedd�Zed�ed�ed�ed�ed�ed�gZgZd	Zed
ZdZ	dS)
�TestHelpUsagePositionalsWrapr*r�r�r�r�r<r=r>z�        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�Nr"r
r
r
rrAis
�
rAc@s^eZdZedd�Zeddd�eddd�edd	d�ed
�ed�ed�gZgZd
ZedZdZ	dS)�%TestHelpUsageOptionalsPositionalsWrapr*r�r�r0r6r�r9r�r:r<r=r>a        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�Nr"r
r
r
rrB�s



�
rBc@sLeZdZedd�Zeddd�eddd�edd	d�gZgZd
ZedZdZ	d
S)�TestHelpUsageOptionalsOnlyWrapr*r�r�r0r6r�r9r�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�Nr"r
r
r
rrC�s



�rCc@sBeZdZeddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)� TestHelpUsagePositionalsOnlyWrapr*Fr3r<r=r>z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r?r�Nr"r
r
r
rrD�s�rDc
@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 %%r3r�r�r��XXXz y %(prog)s %(default)s %(const)s)r�r�r�r0r�rz$foo %(prog)s %(default)s %(choices)sr;r�r�rNrZBBBz!bar %(prog)s %(default)s %(dest)s)r�rr4r0rzspam %(prog)s %(default)srjr�r�zbadger %(prog)s %(default)s)r�r0rnr�za %(prog)s %(default)sr9r�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	r4rerrirrr0r�r
r
r
rrE�s0
�
���
�

��rEc@s0eZdZeddd�ZgZgZdZedZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedr*z%(prog)s FOO�r,rz         usage: PROG FOO
        r�r�Nr"r
r
r
rrGsrGc@s,eZdZeddd�ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsr*Fr3z        usage: PROG
        r�Nr"r
r
r
rrI srIc@sBeZdZedejd�Zeddd�eddd�gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsager*rHr�r.rjr�	spam helpz�        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrr	r4r�r�rerirr0rr�r
r
r
rrJ-s

�rJc@sFeZdZeddd�Zedejd�eddd�gZgZdZ	e	d	Z
d
ZdS)�TestHelpSuppressOptionalr*Fr3r�rjrrKz!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r�N�rrr	r4rer�r�rirrr0r�r
r
r
rrLBs
�rLc@sXeZdZedd�Zeddd�eddd�gZed�ed	ejd�gfgZd
Z	e	dZ
dZd
S)�TestHelpSuppressOptionalGroupr*r�r�r.rjrrKrnr��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	r4rerir�r�rrr0r�r
r
r
rrNVs


��	rNc@sDeZdZedd�Zeddd�edejd�gZgZdZ	e	dZ
d	Zd
S)�TestHelpSuppressPositionalr*r�r�r.rjrz-        usage: PROG [-h] [--foo FOO]
        �z
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�NrMr
r
r
rrQps

�rQc@s:eZdZedd�Zedddd�gZgZdZedZd	Z	d
S)�TestHelpRequiredOptionalr*r�r�Tr.)r&r0z+        usage: PROG [-h] --foo FOO
        rRr�Nr"r
r
r
rrS�s
�rSc@sJeZdZedddd�Zedddd�ed	d
dd�gZgZd
ZedZdZ	dS)�TestHelpAlternatePrefixCharsr*z^;F)r,r�r�z^^foor�r.r/z;bz;;barr2rjz-        usage: PROG [^^foo] [;b BAR]
        zq
        optional arguments:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        r�Nr"r
r
r
rrT�s�rTc@sDeZdZeddd�Zeddd�eddd�gZgZd	Zed
ZdZ	dS)
�TestHelpNoHelpOptionalr*Fr3r�r.rjrrKz-        usage: PROG [--foo FOO] spam
        z�
        positional arguments:
          spam       spam help

        optional arguments:
          --foo FOO  foo help
        r�Nr"r
r
r
rrU�s

�rUc@s:eZdZedd�Zed�ed�gZgZdZedZdZ	dS)	�TestHelpNoner*r�r�rrOz�
        positional arguments:
          spam

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO
        r�Nr"r
r
r
rrV�s
�	rVc	@sfeZdZedd�Zeddddd�edd	d
dd�edd
ddd�eddddd�gZgZdZedZdZ	dS)�TestHelpTupleMetavarr*r�r�r-r)ZW1ZW2)r0rr4r�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�Nr"r
r
r
rrW�s
�	rWc@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 hererjrrKr6�?    This text
  should be indented
    exactly like it is here
r8r�r2�>        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	r4r��RawTextHelpFormatterrerirrr0r�r
r
r
rrX�s�

�
��rXc@s`eZdZedejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawDescriptionr*rYrZr�z4  foo help should not
    retain this odd formattingrjrrKr6r\r8r�r2r]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 not retain this odd formatting

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

          --bar BAR   bar help
        r�N)rrr	r4r��RawDescriptionHelpFormatterrerirrr0r�r
r
r
rr_)s�

�
��r_c	@s~eZdZedejdd�Zeddd�eddd	d
�eddd�ed
dddd�gZeddd�ededdd�gfgZ	dZ
e
dZdZdS)�TestHelpArgumentDefaultsr*r-rZr�z)foo help - oh and by the way, %(default)srjr�r�r2r/rrKr�rZwoodenzbadger helpr�r6r8r�r�r�)rBr�r0zO        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	r4r��ArgumentDefaultsHelpFormatterrerirrrr0r�r
r
r
rraYs"�

�
��rac@s>eZdZeddd�Zeddddd�gZgZd	Zed
ZdZ	dS)
�TestHelpVersionActionr*r-r1�-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�Nr"r
r
r
rrc�srcc@sPeZdZedd�Zeddddejd�edd	d
�eddd
�gZgZd
Z	e	dZ
dS)�TestHelpVersionActionSuppressr*r�r�r�r�r�)r�r�r0r�r.rjrrKrOrPN)rrr	r4rer�r�rirrr0r
r
r
rre�s

�

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

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r!N)
rrr	r4rerirrr0r�r
r
r
rrf�s��rfc@sLeZdZeddd�Zeddddd�gZd	Zd
d�eD�ZdZed
Z	dZ
dS)�"TestHelpSubparsersWithHelpOrderingr*rgr1r�r�r�rr�))r�za subcommand help)rzb subcommand help)r	zc subcommand help)rvzd subcommand help)rze subcommand helpcCsg|]\}}t||d��qS))r+r0rh)r=r+r0r
r
rr?�s�z-TestHelpSubparsersWithHelpOrdering.<listcomp>ria�
        display some subcommands

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r!N)rrr	r4reriZsubcommand_datarrr0r�r
r
r
rrj�s��rjc@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-r[r�r�r9r;z
SOME FLOAT)rBr4zF        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	rlr4r��MetavarTypeHelpFormatterrerr�rirrr0r�r
r
r
rrk�s�

�rkc@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~rg�rr5r6rhr
r
r�assertTypeErrors��z/TestInvalidArgumentConstructors.assertTypeErrorcOs"t��}|jt|jf|�|�dSr)r�r�r�r�rgror
r
r�assertValueErrors��z0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd�|jddd�|jddd�|jdid�dS)	Nr�)r�r�rl)�callbackr
)Z
callback_args)Zcallback_kwargs�rprr
r
r�test_invalid_keyword_arguments$sz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs"|��dD]}|j|d�qdS)N)r0r)r�rs�rr�r
r
r�test_missing_destination*sz8TestInvalidArgumentConstructors.test_missing_destinationcCs|�d�|�d�dS)NrMz---�rqrr
r
r�test_invalid_option_strings/s
z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd�|jdttfd�dS)Nr�rr�)rqrr�rr
r
r�test_invalid_type3sz1TestInvalidArgumentConstructors.test_invalid_typec	Csl|jddd�|jddd�|jddd�t��}|�t��}|jddd�W5QRX|�dt|j��dS)	Nr�rlr�r�r��r)r0z
store-truezunknown action)	rqr�r�r�r�rgrr�r�r�r
r
r�test_invalid_action7sz3TestInvalidArgumentConstructors.test_invalid_actionc	CsNt��}|jdd�|�t��}|jddd�W5QRX|�dt|j��dS)Nrlr�r�r�z+dest supplied twice for positional argument)r�r�rgr�r�rr�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-r:rFr�rr�abrr�r�)r�)rArrp)rr�Zattrsr
r
r�test_no_argument_actionsHs
�z8TestInvalidArgumentConstructors.test_no_argument_actionscCs.dD]$}|jdd|d�|jdd|d�qdS)N)r�r-rFr�rl)r�r�r�rr�rsrur
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)	Nrzr�rrr)rNrrrl)r�rr�rw)rr�rr
r
r�#test_more_than_one_argument_actionsYs��zCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCsdD]}|jdd|d�qdS)N)r�r:r�rrrsrur
r
r�test_required_const_actionsgsz;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd�|jdddd�|jddtjd�dS)NrS�parsersr�r*)r�r,)r�rf)rpr�r�rr
r
r�"test_parsers_action_missing_paramsms
�zBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddd�dS)NrlTr�rsrr
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�Successxsr�cs"eZdZd�fdd�	Zdd�ZdS)zHTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFcs"|dkr|�kr|�kr���dS)Nrr
)r�option_stringsr�r�r�r&�r�r
rr8}szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__c_sdSrr
r7r
r
rr�szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__N)F)rrr	r8rr
r�r
rr{s�rr�)r�r�r�r)rIr�r�r�r�rg)rrrhr
r�r�test_user_defined_actionvs��z8TestInvalidArgumentConstructors.test_user_defined_actionN)rrr	rprqrtrvrxryr{r|r~r�r�r�r�r�r�r
r
r
rrns	
rnc@seZdZdd�Zdd�ZdS)�TestActionsReturnedcCsXt��}|�d�}|�|jd�|�dd�}|�|jd�|�dd�}|�|jd�dS)	Nr�rlr9r�r�r�r�r�)r�r�rgr�r��rrhr�r
r
rrQ�s
zTestActionsReturned.test_destcCs�t��}|jddddtddgddd	d
�	}|�|jd�|�|jd�|�|jd�|�|jt�|�|j	ddg�|�|j
d�|�|jd�|�|jd	�dS)Nr�rr�rrNrr�ZBARr�)rr�r�rBrr0r4r�)
r�r�rgrr�rr�r�rBrr0r4r�r�r
r
r�	test_misc�s"
�zTestActionsReturned.test_miscN)rrr	rQr�r
r
r
rr��s	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestConflictHandlingcCs|jttjdd�dS)Nrl)�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�rgr�r�r"r
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,r�r�zOLD XrjzNEW Xz�            usage: PROG [-h] [-x X]

            optional arguments:
              -h, --help  show this help message and exit
              -x X        NEW X
            r�ZOLD_SPAMr6ZNEW_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�rgr�rarbrc)rr�rhr
r
r�test_resolve_error�sz'TestConflictHandling.test_resolve_errorN)rrr	r�r�r�r
r
r
rr��s	r�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestOptionalsHelpVersionActionsc	Cs<|�t��}|�|���W5QRX|�|��|jj�dSr)r�rHrXr�r�rar�rK)rrhr�r�r
r
r�assertPrintHelpExit�sz3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|�t|j|�dSr)r�rHrX�rrhr5r
r
rr)�sz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt�}|jddddd�|�|d�|�|d�|�tt|d�dS)	Nr�r�r�r�r�r�r��format_version�r\rgr�r��AttributeErrorrSr"r
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
�r\rgr�rHrXr�r�rKr�r
r
r�test_version_format�s

z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd�}|jddddd�|�|d�|�|d	�|�tt|d
�dS)NFr�r�r�r�r�r�r�r�r�)r\rgr)r�r�rSr"r
r
r�test_version_no_help�s

z4TestOptionalsHelpVersionActions.test_version_no_helpc	CsPtdd�}|jdddd�|�t��}|�dg�W5QRX|�d|jj�dS)NrFr�rdr�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)NFr�r�r�r�r�)r\r)r"r
r
r�test_no_helps

z,TestOptionalsHelpVersionActions.test_no_helpcCsZt�}|jddd�|jddd�|�|d�|�|d�|�|d�|�tt|d�dS)	Nr�r0r�r�r�r�r�r�)r\rgr�r)r�r�rSr"r
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�rlz-x barzbaz -xz--bad-optionzfoo bar bazz	%s %%s %sr�r�r�r�)rrhZvalid_prefixesZvalid_suffixes�prefix�suffixr�r
r
r�!test_help_version_extra_argumentss
zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN)rrr	r�r)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�r9rrrr�rNrrZHELPZMETAVAR�r�r�rBrr�rr0r4z�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�)r�optionrr
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�)r�argumentrr
r
r�
test_argumentCs�
��zTestStrings.test_argumentcCs"tjddd�}d}|�||�dS)Nr�rrczNamespace(bar='spam', foo=42)�r�rr��rrrr
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�rNr�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��
HelpFormatterr�)rrhrr
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�rr�r�rSr�r�rrr
r
r�test_constructorus
zTestNamespace.test_constructorcCs�tjddd�}tjddd�}tjdd�}tjdd�}|�||�|�||�|�||�|�||�|�||�|�||k�|�||k�|�||k�|�||k�dS)NrNrr�)rr�)r�r@)r�rr�ZassertNotEqual�
assertTrue)rZns1Zns2Zns3Zns4r
r
r�
test_equality}szTestNamespace.test_equalitycCs6tjddd�}|�|�d�t�|�|�d�t�dS)NrNrr�)r�rZassertIsrG�NotImplemented�__ne__rr
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.pyrRzutf-8r�)rr"�splitextr.r�)rr"rvr�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�rar
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��ArgumentTypeErrorrr
r
rr�sz<TestArgumentTypeError.test_argument_type_error.<locals>.spamr*Fr3r�r�rFz-usage: PROG x
PROG: error: argument x: spam!
)r\rgr�rHrXr�r�rL)rrrhr�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�rH�req_posr��-req_optTr%Zneed_oner)rBr�req_optZmyXargumentz
-req_opt=1)
r\rgr�rr�rHrXr��assertRegexr�rrhr�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�rHr�r�z	--req_optTr%z	--opt_optr)rBrr�r�Zopt_optz--req_opt=1)r\rgr�r�boolr�rHrXr�r�rr�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�rHr�Zoptional_positionalrr�r
)	r\rgr�rHrXr�r�r�rr�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�rgrXr�r�r:�rrrhr5r
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�rgrXr�r:r�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�)rr$rhr5r
r
r�)test_no_double_type_conversion_of_default+s

zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8t��}|jddtgdd�|�g�}|�|jg�dS)Nr�r�r0)r�rBr�r�)r�r�rgr�rXr�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�rXr"r
r
r�test_arguments_tupleGsz'TestParseKnownArgs.test_arguments_tuplecCst��}|�g�dSrr�r"r
r
r�test_arguments_listKsz&TestParseKnownArgs.test_arguments_listcCs t��}|�d�|�d�dS)Nr�r��r�r�rgrXr"r
r
r�test_arguments_tuple_positionalOs
z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"t��}|�d�|�dg�dS)Nr�r�r"r
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�rgrOr�r�r:)rrhr5�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�rrN)rr�rBr�r-r�r�r�r	r�rMr�rT)�vrr�)r�r�rgrrOr�r:)rrhrtr5r�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�rlr�r�r�TrX�cmd�restr)rrBzcmd --foo x 1 --bar y 2 3r�r�rNrr)r�r�rlr�rarrMz!cmd --foo x 1 --error 2 --bar y 3z--error)
r�r�rgrr��parse_intermixed_argsr�r:rO�parse_known_intermixed_argsr[rr&)rrhr�rtr5r�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�rr�z\.\.\.)	r\rgr�r�r~r�r�r�r�)rrhrtr�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�rjr�rr�r�r�z	1 --foo 2rar)r�rlrr`)
r\r�rgr�r�r�r:r�rHr&)rrhrnr5r
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�rjr�rr�r�r�)r\r�rgr�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�rHr�r�r�Tr%r�)r\rgr�rr�rHrXr�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��rr4)r�r�rg)rrr4rhr
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�rgr�r�r5�EXPECTED_MESSAGE)rrr4rhr�r
r
r�do_test_exception�sz(TestAddArgumentMetavar.do_test_exceptioncCs|jddd�dS)Nrar��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�rar�r�rr
r
r�test_nargs_None_metavar_length1�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jddd�dS)N�rarr��r�rr
r
r�test_nargs_None_metavar_length2�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jddd�dS)N�rarrMr�rrr
r
r�test_nargs_None_metavar_length3�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jddd�dS)Nrrar�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)Nrrr�r�rr
r
r�#test_nargs_optional_metavar_length1�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jddd�dS)Nrrr�rrr
r
r�#test_nargs_optional_metavar_length2�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jddd�dS)Nrrr�rrr
r
r�#test_nargs_optional_metavar_length3�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jddd�dS)Nrrar�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)Nrrr�rrr
r
r�%test_nargs_zeroormore_metavar_length1�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1cCs|jddd�dS)Nrrr�r�rr
r
r�%test_nargs_zeroormore_metavar_length2sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2cCs|jddd�dS)Nrrr�rrr
r
r�%test_nargs_zeroormore_metavar_length3sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3cCs|jddd�dS)Nrrar�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)Nrrr�rrr
r
r�$test_nargs_oneormore_metavar_length1sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1cCs|jddd�dS)Nrrr�r�rr
r
r�$test_nargs_oneormore_metavar_length2sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2cCs|jddd�dS)Nrrr�rrr
r
r�$test_nargs_oneormore_metavar_length3sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3cCs|jddd�dS)Nr�rar�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�rr�r�rr
r
r�$test_nargs_remainder_metavar_length1 sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1cCs|jddd�dS)Nr�rr�r�rr
r
r�$test_nargs_remainder_metavar_length2#sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2cCs|jddd�dS)Nr�rr�r�rr
r
r�$test_nargs_remainder_metavar_length3&sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3cCs|jddd�dS)N�A...rar�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)Nrrr�r�rr
r
r�!test_nargs_parser_metavar_length11sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length1cCs|jddd�dS)Nrrr�rrr
r
r�!test_nargs_parser_metavar_length24sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length2cCs|jddd�dS)Nrrr�rrr
r
r�!test_nargs_parser_metavar_length37sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length3cCs|jddd�dS)NrNrar�r�rr
r
r�test_nargs_1_metavar_string<sz2TestAddArgumentMetavar.test_nargs_1_metavar_stringcCs|jdt�d�dS)NrNr�r�rr
r
r�test_nargs_1_metavar_length0?sz3TestAddArgumentMetavar.test_nargs_1_metavar_length0cCs|jddd�dS)NrNrr�r�rr
r
r�test_nargs_1_metavar_length1Bsz3TestAddArgumentMetavar.test_nargs_1_metavar_length1cCs|jddd�dS)NrNrr�rrr
r
r�test_nargs_1_metavar_length2Esz3TestAddArgumentMetavar.test_nargs_1_metavar_length2cCs|jddd�dS)NrNrr�rrr
r
r�test_nargs_1_metavar_length3Hsz3TestAddArgumentMetavar.test_nargs_1_metavar_length3cCs|jddd�dS)Nrrar�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)Nrrr�rrr
r
r�test_nargs_2_metavar_length1Ssz3TestAddArgumentMetavar.test_nargs_2_metavar_length1cCs|jddd�dS)Nrrr�r�rr
r
r�test_nargs_2_metavar_length2Vsz3TestAddArgumentMetavar.test_nargs_2_metavar_length2cCs|jddd�dS)Nrrr�rrr
r
r�test_nargs_2_metavar_length3Ysz3TestAddArgumentMetavar.test_nargs_2_metavar_length3cCs|jddd�dS)Nrrar�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)Nrrr�rrr
r
r�test_nargs_3_metavar_length1dsz3TestAddArgumentMetavar.test_nargs_3_metavar_length1cCs|jddd�dS)Nrrr�rrr
r
r�test_nargs_3_metavar_length2gsz3TestAddArgumentMetavar.test_nargs_3_metavar_length2cCs|jddd�dS)Nrrr�r�rr
r
r�test_nargs_3_metavar_length3jsz3TestAddArgumentMetavar.test_nargs_3_metavar_length3N)3rrr	r�r�r�r�r�rrrrrr	r
rrr
rrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r
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�rr)	r�r�r�r�rgr�r�r5�EXPECTED_RANGE_MESSAGE�rrrhr�r
r
r�do_test_range_exceptionusz(TestInvalidNargs.do_test_range_exceptionc	CsFt��}|�t��}|jd|d�W5QRX|�|jjd|j�dSr1)	r�r�r�r�rgr�r�r5�EXPECTED_INVALID_MESSAGEr3r
r
r�do_test_invalid_exception{sz*TestInvalidNargs.do_test_invalid_exceptioncCs|jdd�|jdd�dS)Nr�rZabcd)r6rr
r
r�test_nargs_alphabetic�sz&TestInvalidNargs.test_nargs_alphabeticcCs|jdd�dS)Nrr)r4rr
r
r�test_nargs_zero�sz TestInvalidNargs.test_nargs_zeroN)	rrr	r5r2r4r6r7r8r
r
r
rr0nsr0c@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)rv�ngettext)�
startswith�inspectZismodule)r=r+rr
r
rr?�s


�zJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>)rDr�rAr�r@r:)rrAr
r
r�'test_all_exports_everything_but_modules�s
�z6TestImportStar.test_all_exports_everything_but_modulesN)rrr	r�r>r
r
r
rr9�sr9cs$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--proxyr6)r]rr\rhrg)rr4r^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>
            )rhrar�rbrc)r�	help_textr
r
r�test_help_with_metavar�s
z*TestWrappingMetavar.test_help_with_metavar)rrr	rrArbr
r
r^rr?�s
r?cCst�t�it_t�t_dSr)rZrun_unittestrr�r�rr�r
r
r
r�	test_main�s
rB�__main__)�r=rr&r$rQrbrZunittestr��iorr�rrrrr�rr4r:rIrHr[r�r\rBrcr�rdr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrr$r(r*r,r.r/r6r8rDrErGrIrNrPrTrUrWrXrZr[r\r]r^r_rbrdrergrhrirjrkrlrmrnrorprqrrrsrurwryrzr{r|r�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�rrr
rrr#r'rurr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr#r$r%r)r,r/r1r2r4r7r;r@rArBrCrDrErGrIrJrLrNrQrSrTrUrVrWrXr_rarcrerfrjrkrnr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r0r9r?rBrr
r
r
r�<module>s�
 q








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

F1le Man4ger