Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/test/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/test/__pycache__/test_argparse.cpython-35.opt-2.pyc



���]���@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ddlmZGdd�de�ZGdd�dej�ZGd	d
�d
e�ZGdd�de�ZGd
d�de�ZGdd�de�Zdd�ZGdd�de	j�ZGdd�de�ZefZedei�ZGdd�de�ZGdd�de�ZGdd�de�Z Gdd�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�Z0Gd>d?�d?e�Z1Gd@dA�dAe�Z2GdBdC�dCe�Z3GdDdE�dEe�Z4GdFdG�dGe�Z5GdHdI�dIe�Z6GdJdK�dKe�Z7GdLdM�dMe�Z8GdNdO�dOe�Z9GdPdQ�dQe�Z:GdRdS�dSe�Z;GdTdU�dUe�Z<GdVdW�dWe�Z=GdXdY�dYe�Z>GdZd[�d[e�Z?Gd\d]�d]e�Z@Gd^d_�d_e�ZAGd`da�dae�ZBGdbdc�dce�ZCGddde�dee�ZDGdfdg�dge�ZEGdhdi�die�ZFGdjdk�dke�ZGGdldm�dme�ZHGdndo�doe�ZIGdpdq�dqe�ZJGdrds�dse�ZKGdtdu�due�ZLGdvdw�dwe�ZMGdxdy�dye�ZNGdzd{�d{e�ZOGd|d}�d}e�ZPGd~d�de�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�ee�ZlGd�d��d�ee�ZmGd�d��d�e�ZnGd�d��d�e�ZoGd�d��d�ee�ZpGd�d��d�ee�ZqGd�d��d�ee�ZrGd�d��d�e�Zsejteued��o	ejv�dkd��Gd�d��d�ee��ZwGd�d��d�ee�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�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�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��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�Gdd�de�e��Z�Gdd�de�e��Z�Gdd�de�Z�Gdd�de�Z�Gdd	�d	e�Z�Gd
d�de�Z�efZe�dei�Z�Gd
d�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd�de��Z�Gdd �d e��Z�Gd!d"�d"e��Z�Gd#d$�d$e��Z�Gd%d&�d&e��Z�Gd'd(�d(e��Z�Gd)d*�d*e��Z�Gd+d,�d,e��Z�Gd-d.�d.e��Z�Gd/d0�d0e��Z�Gd1d2�d2e��Z�Gd3d4�d4e��Z�Gd5d6�d6e��Z�Gd7d8�d8e��Z�Gd9d:�d:e��Z�Gd;d<�d<e��Z�Gd=d>�d>e��Z�Gd?d@�d@e��Z�GdAdB�dBe��Z�GdCdD�dDe��Z�GdEdF�dFe��Z�GdGdH�dHe��Z�GdIdJ�dJe��Z�GdKdL�dLe��Z�GdMdN�dNe��Z�GdOdP�dPe��Z�GdQdR�dRe��Z�GdSdT�dTe��Z�GdUdV�dVe��Z�GdWdX�dXe�Z�GdYdZ�dZe�Z�Gd[d\�d\e�Z�Gd]d^�d^e�Z�Gd_d`�d`e�Z�Gdadb�dbe�Z�Gdcdd�dde�Z�Gdedf�dfe�Z�Gdgdh�dhe�Z�Gdidj�dje�Z�Gdkdl�dle�Z�Gdmdn�dne�Z�Gdodp�dpe�Z�Gdqdr�dre�Z�Gdsdt�dte�Z�dudv�Z�e�dwkre��dS(x�N)�StringIO)�support)�mockc@seZdZdS)�StdIOBufferN)�__name__�
__module__�__qualname__�r	r	�2/opt/alt/python35/lib64/python3.5/test_argparse.pyrsrc@seZdZdd�ZdS)�TestCasecCs-tj�}|jd�|j|j�dS)N�COLUMNS)r�EnvironmentVarGuardZunset�
addCleanup�__exit__)�self�envr	r	r
�setUps
zTestCase.setUpN)rrrrr	r	r	r
rsrc@s4eZdZdd�Zdd�Zdd�ZdS)�TempDirMixincCs2tj�|_tj�|_tj|j�dS)N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdir)rr	r	r
r"szTempDirMixin.setUpcCs�tj|j�x_tj|jdd�D]E\}}}x3|D]+}tjtjj|j|�tj	�q?Wq)Wt
j|jd�dS)N�topdownFT)rrr�walkr�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�namer	r	r
�tearDown's
(
-zTempDirMixin.tearDownc
CsUtjj|j|�}t|d��}|j|�WdQRXtj|tj�dS)N�w)	rrrr�open�writerr �S_IREAD)r�filenameZ	file_path�filer	r	r
�create_readonly_file.sz!TempDirMixin.create_readonly_fileN)rrrrr(r/r	r	r	r
r src@seZdZdd�ZdS)�SigcOs||_||_dS)N)�args�kwargs)rr1r2r	r	r
�__init__6s	zSig.__init__N)rrrr3r	r	r	r
r04sr0c@s4eZdZdd�Zdd�Zdd�ZdS)�NScKs|jj|�dS)N)�__dict__�update)rr2r	r	r
r3=szNS.__init__cCsHt|jj��}djdd�|D��}dt|�j|fS)Nz, cSsg|]}d|�qS)z%s=%rr	)�.0�tupr	r	r
�
<listcomp>Bs	zNS.__repr__.<locals>.<listcomp>z%s(%s))�sortedr5�itemsr�typer)r�sorted_itemsZ	kwarg_strr	r	r
�__repr__@szNS.__repr__cCst|�t|�kS)N)�vars)r�otherr	r	r
�__eq__Esz	NS.__eq__N)rrrr3r>rAr	r	r	r
r4;sr4c@s%eZdZddddd�ZdS)�ArgumentParserErrorNcCs>tj||||�||_||_||_||_dS)N)�	Exceptionr3�message�stdout�stderr�
error_code)rrDrErFrGr	r	r
r3Ks
			zArgumentParserError.__init__)rrrr3r	r	r	r
rBIsrBc
OsXttjt�s$ttjt�r1|||�Stj}tj}t�t_t�t_z�y�|||�}xjtt|��D]V}t||�tjkr�t|||�t||�tjkr�t|||�q�W|SWnXt	k
r<tj
�dj}tjj�}tjj�}	t
d||	|��YnXWd|t_|t_XdS)N��
SystemExit)�
isinstance�sysrFrrE�listr?�getattr�setattrrI�exc_info�code�getvaluerB)
�
parse_argsr1r2Z
old_stdoutZ
old_stderr�result�keyrPrErFr	r	r
�stderr_to_parser_errorSs,$
		
	rUcsFeZdZ�fdd�Z�fdd�Z�fdd�Z�S)�ErrorRaisingArgumentParsercs"tt|�j}t|||�S)N)�superrVrRrU)rr1r2rR)�	__class__r	r
rRusz%ErrorRaisingArgumentParser.parse_argscs"tt|�j}t|||�S)N)rWrV�exitrU)rr1r2rY)rXr	r
rYyszErrorRaisingArgumentParser.exitcs"tt|�j}t|||�S)N)rWrV�errorrU)rr1r2rZ)rXr	r
rZ}sz ErrorRaisingArgumentParser.error)rrrrRrYrZr	r	)rXr
rVssrVc@seZdZdd�ZdS)�ParserTesterMetaclasscCs�|dkrdSt|d�s+t�|_t|d�sCt|_dd�}dd�}dd	�}d
d�}dd
�}Gdd�dt�}	x>|||gD]-}
x$||gD]}|	||
|�q�Wq�WdS)N�ParserTestCase�parser_signature�parser_classcSs+x$|D]}|j|j|j�qWdS)N)�add_argumentr1r2)�parser�argument_signatures�sigr	r	r
�	no_groups�s
z1ParserTesterMetaclass.__init__.<locals>.no_groupscSs:|jd�}x$|D]}|j|j|j�qWdS)N�foo)�add_argument_groupr_r1r2)r`ra�grouprbr	r	r
�	one_group�s
z1ParserTesterMetaclass.__init__.<locals>.one_groupcSsJxCt|�D]5\}}|jd|�}|j|j|j�q
WdS)Nzfoo:%i)�	enumeraterer_r1r2)r`ra�irbrfr	r	r
�many_groups�sz3ParserTesterMetaclass.__init__.<locals>.many_groupscSs
|j|�S)N)rR)r`r1r	r	r
�listargs�sz0ParserTesterMetaclass.__init__.<locals>.listargscSs<tj}|dg|t_z|j�SWd|t_XdS)Nr)rK�argvrR)r`r1Z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}x�|j|jgD]n}|j}|||f}dj|�}	|dd�}
y
|	|
_Wntk
r�YnXt||	|
�q=WdS)N�_cSs||�dS)Nr	)r�	test_funcr	r	r
�wrapper�szJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper)�_add_arguments�_parse_argsr�
test_failures�test_successesr�	TypeErrorrN)rZ
tester_cls�
add_argumentsrRZadd_arguments_nameZparse_args_namero�	func_name�names�	test_namerpr	r	r
r3�s			

z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__cSsA|jj}|jj}|j||�}|j||j�|S)N)r]r1r2r^rqra)r�testerr1r2r`r	r	r
�_get_parser�s
z<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parserc
Ss]|j|�}xG|jD]<}|j�}|jtd|��|j|�WdQRXqWdS)N�msg)r{�failures�split�assertRaisesrBrR)rrzr`�args_strr1r	r	r
rs�s
z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failurescSsj|j|�}xT|jD]I\}}t|t�r@|j�}|j||�}|j||�qWdS)N)r{�	successesrJ�strr~rr�assertEqual)rrzr`r1�expected_nsZ	result_nsr	r	r
rt�sz?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successesN)rrrr3r{rsrtr	r	r	r
�AddTests�sr�)�hasattrr0r]rVr^�object)�clsr'�bases�bodydictrcrgrjrkrmr�rvrRr	r	r
r3�s		-zParserTesterMetaclass.__init__N)rrrr3r	r	r	r
r[�sr[r\c@s�eZdZed�gZdddddgZdedd�fd	edd�fd
edd�fdedd�fd
edd�fgZdS)�TestOptionalsSingleDashz-x�az--fooz-x --fooz-x -y��xNz-x az-xaz-x -1z-1z-x-1)rrrr0rar}r4r�r	r	r	r
r��sr�c@s�eZdZeddd�eddddd�ed�gZd	d
ddd
ddddddgZdedddddd�fdedddddd�fdedddddd	�fdedddddd	�fdedddddd	�fdedddddd	�fdedddddd	�fd edddddd	�fd!edddddd�fdedddddd�fd"edddddd	�fd#edddddd	�fgZdS)$�TestOptionalsSingleDashCombinedz-x�action�
store_truez-yyy�store_const�const�*z-zr�z--fooz-xaz-x --fooz-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzar�r�F�yyyN�zTz-zaz-z az-xzaz-xz az-x -zaz-x -z az-yz-x -yyy -zaz-x -yyy -z a)rrrr0rar}r4r�r	r	r	r
r�s"r�c@s�eZdZed�gZddddddgZdedd	�fd
edd�fdedd�fd
edd�fdedd�fgZd	S)�TestOptionalsSingleDashLongz-foor�z--fooz
-foo --fooz-foo -yz-fooar�rdNz-foo az-foo -1z-1z-fo az-f a)rrrr0rar}r4r�r	r	r	r
r�"sr�c@s$eZdZed�ed�ed�gZddddddd	gZd
eddd
ddd�fdeddd
ddd�fdeddd
ddd�fdeddd
ddd�fdeddd
ddd�fdeddd
ddd�fdeddd
ddd�fgZdS)�&TestOptionalsSingleDashSubsetAmbiguousz-fz-foobarz-foorabz-fooz-foz-foo bz-foobz-foobaz-foorar��fN�foobar�foorabz-f ar�z-faz-foaZoaz-fooaZooaz	-foobar az	-foorab a)rrrr0rar}r4r�r	r	r	r
r�0s!r�c@s�eZdZed�ed�gZddddddd	gZd
eddd
d�fdeddd
d�fdeddd
d�fdeddd
d�fdeddd
d�fdeddd
d�fdeddd
d�fgZdS)� TestOptionalsSingleDashAmbiguousz-foobarz-foorabz-fz-f az-faz-foaz-fooz-foz-foo br�r�Nr�z-foob ar�z-foor az-fooba az-foora az	-foobar az	-foorab a)rrrr0rar}r4r�r	r	r	r
r�@sr�c@s�eZdZeddd�gZddddddgZd	edd
�fdedd�fdedd�fd
edd�fgZd
S)�TestOptionalsNumericz-1�destZoner�z-1 --fooz-1 -yz-1 -1z-1 -2r�Nz-1 az-1az-1-2z-2)rrrr0rar}r4r�r	r	r	r
r�Psr�c@s�eZdZed�gZddddddgZdedd	�fd
edd�fdedd�fdedd
�fdedd
�fgZd	S)�TestOptionalsDoubleDashz--fooz-fz-f ar�z--foo -xz--foo --barr�rdNz--foo az--foo=az
--foo -2.5z-2.5z
--foo=-2.5)rrrr0rar}r4r�r	r	r	r
r�]sr�c@s�eZdZeddd�ed�gZddddd	d
gZdedd
dd�fdedd
dd�fdedddd�fdedddd�fdedddd�fdedddd�fgZdS)�#TestOptionalsDoubleDashPartialMatchz--badgerr�r�z--batz--barz--bz--baz--b=2z--ba=4z	--badge 5r��badgerFZbatNz--bat X�Xz--badTz--badgz--badge)rrrr0rar}r4r�r	r	r	r
r�ksr�c@s�eZdZeddd�ed�gZdddddgZd	ed
ddd
�fded
ddd�fded
ddd�fded
ddd
�fded
ddd
�fded
ddd
�fded
ddd
�fgZd
S)�"TestOptionalsDoubleDashPrefixMatchz--badgerr�r�z--baz--barz--bz--b=2z	--badge 5r�r�FZbaNz--ba Xr�z--ba=Xz--badTz--badgz--badge)rrrr0rar}r4r�r	r	r	r
r�}sr�c
@seZdZeddd�ed�eddddd�gZdd	d
ddd
gZdedddddd�fdedddddd�fdedddd
dd�fdedddd
dd�fdedddddd�fdedddddd�fgZdS)�TestOptionalsSingleDoubleDashz-fr�r�z--barz-bazr�r�r�z-fbarz-fbazz-bazfz-b B�Br�r�F�barN�bazTz--ba Bz
-f --bar Bz-f -bz-ba -f)rrrr0rar}r4r�r	r	r	r
r��s	r�c
@s<eZdZedddd�Zeddd�ed�ed	dd
dd�gZd
dddddddddddgZdedddddd�fdedddddd�fdedddddd�fd edddddd�fd!edddddd�fd"edddddd�fgZdS)#�!TestOptionalsAlternatePrefixChars�prefix_charsz+:/�add_helpFz+fr�r�z::barz/bazr�r�r�z--barz-fbarz-b Br�z-fz--bar Bz-bazz-hz--helpz+hz::helpz/helpr�r�r�Nr�Tz::ba Bz
+f ::bar Bz+f /bz/ba +f)	rrrr0r]rar}r4r�r	r	r	r
r��s	*r�c
@s-eZdZedddd�Zeddd�ed�ed	dd
dd�gZd
ddddddgZdedddddd�fdedddddd�fdedddddd�fdedddddd�fdedddddd�fdedddddd�fgZdS)�*TestOptionalsAlternatePrefixCharsAddedHelpr�z+:/r�Tz+fr�r�z::barz/bazr�r�r�z--barz-fbarz-b Br�z-fz--bar Bz-bazr�r�Fr�Nr�z::ba Bz
+f ::bar Bz+f /bz/ba +f)	rrrr0r]rar}r4r�r	r	r	r
r��s	r�c@s�eZdZedddd�Zeddd�eddd�ed	dd�gZd
ddd
dgZdedddddd�fdedddddd�fdedddddd�fdedddddd�fgZdS)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsr�z+-r�Fz-xr�r�z+yz+zz-wz-xyzz+xz-yz+xyzr�r��yr�Tz+y -xz+yz -xN)	rrrr0r]rar}r4r�r	r	r	r
r��s	r�c@s�eZdZedddddd�gZddd	d
gZdedd
�fdedd�fdedd�fdedd�fdedd�fgZdS)�TestOptionalsShortLongz-vz	--verbosez-nz--noisyr�r�z
--x --verbosez-Nr�z-v xr��verboseFTN)rrrr0rar}r4r�r	r	r	r
r��sr�c	@s�eZdZed�eddd�gZdgZdedddd	�fd
edd	dd�fdedd
dd�fdedddd�fgZd	S)�TestOptionalsDestz	--foo-barz--bazr�Zzabbazr�z--foo-bar fZfoo_barr�Nz--baz g�gz--foo-bar h --baz i�hriz--baz j --foo-bar k�k�j)rrrr0rar}r4r�r	r	r	r
r��s	r�c@s�eZdZed�eddd�gZdgZdeddd	d�fd
eddd	d�fdeddd	d	�fgZdS)�TestOptionalsDefaultz-xz-y�defaultr�r�r�r�Nr�z-xxz-yy)rrrr0rar}r4r�r	r	r	r
r�s
	r�c@sUeZdZed�gZddgZdedd�fdedd�fgZdS)�TestOptionalsNargsDefaultz-xr�r�r�Nz-x a)rrrr0rar}r4r�r	r	r	r
r�
sr�c@s^eZdZeddd�gZddgZdedd�fdeddg�fgZdS)	�TestOptionalsNargs1z-x�nargsrHr�r�r�Nz-x a)rrrr0rar}r4r�r	r	r	r
r�sr�c@speZdZeddd�gZddddddgZd	ed
d�fded
dd
dg�fgZdS)�TestOptionalsNargs3z-xr��r�z-x az-x a bza -xza -x br�r�Nz-x a b c�b�c)rrrr0rar}r4r�r	r	r	r
r�#sr�c@s�eZdZeddd�eddddd�eddddd	�ed
dddedddd
�gZdgZdedddddd	dd�fdedddddd	dd�fdedddddd	dd�fdedddddd	dd�fdedddddd	dd�fdedddddddd�fdedddddddd�fd
edddddd	dd�fdedddddd	dd�fg	ZdS)�TestOptionalsNargsOptionalz-wr��?z-xr�r�z-yr��spamz-zr<�42Z84�2r�r)Nr�r�r��Tz-w 2z-x 2z-y 2z-z 2�)	rrrr0�intrar}r4r�r	r	r	r
r�.s'	$$$$$$$$r�c
@seZdZeddd�eddddd�gZdgZded	d
dd�fded	gdd�fded	dgdd�fd
ed	ddgdd�fded	d
dg�fded	d
ddg�fded	d
dddg�fgZd
S)�TestOptionalsNargsZeroOrMorez-xr��*z-yr�r�r�r�r�Nr�z-x az-x a br�z-y az-y a b)rrrr0rar}r4r�r	r	r	r
r�Es	r�c@s�eZdZeddd�eddddd�gZddddd	gZd
eddd
d�fdeddgd
d�fdedddgd
d�fdeddd
dg�fdeddd
ddg�fgZdS)�TestOptionalsNargsOneOrMorez-xr��+z-yr�r�r�za -xza -y br�r�Nr�z-x az-x a br�z-y az-y a b)rrrr0rar}r4r�r	r	r	r
r�Xsr�c@s�eZdZeddd�eddeded��gZddd	d
dgZded
ddd�fded
ddd�fded
ddd�fded
ddd�fded
ddd�fded
ddd�fgZ	dS)�TestOptionalsChoicesz-f�choices�abcz-gr<�r�z-f dz-fadz-gaz-g 6r�r�Nr�z-f az-f cr�z-g 0rz-g 03r�z-fb -g4r��)
rrrr0r��rangerar}r4r�r	r	r	r
r�is!r�c@saeZdZeddedd�gZddgZdedd	�fd
edd�fgZdS)
�TestOptionalsRequiredz-xr<�requiredTr�r�z-x 1r�rHz-x42r�N)	rrrr0r�rar}r4r�r	r	r	r
r�zsr�c@s[eZdZeddd�gZddgZdedd�fd	edd
�fgZdS)�TestOptionalsActionStorez-xr��storer�za -xr�r�Nz-xfoord)rrrr0rar}r4r�r	r	r	r
r��sr�c@s^eZdZedddde�gZdgZdedd�fdede�fgZdS)	�TestOptionalsActionStoreConstz-yr�r�r�r�r�r�N)	rrrr0r�rar}r4r�r	r	r	r
r��s	r�c@s^eZdZeddd�gZdddgZdedd	�fdedd
�fgZdS)�TestOptionalsActionStoreFalsez-zr��store_falser�z-zaz-z ar�r�TFN)rrrr0rar}r4r�r	r	r	r
r��sr�c@s^eZdZeddd�gZdddgZdedd	�fdedd
�fgZdS)�TestOptionalsActionStoreTruez--appler�r�r�z	--apple=bz	--apple br�ZappleFTN)rrrr0rar}r4r�r	r	r	r
r��sr�c@s|eZdZeddd�gZddddgZdedd	�fd
eddg�fdedddg�fgZd	S)
�TestOptionalsActionAppendz--bazr��appendr�za --bazz	--baz a br�r�Nz--baz az--baz a --baz br�)rrrr0rar}r4r�r	r	r	r
r��s
r�c@s�eZdZedddddg�gZddddgZd	ed
dg�fded
ddg�fded
ddd
g�fgZdS)�$TestOptionalsActionAppendWithDefaultz--bazr�r�r�r�r�za --bazz	--baz a br�r�z--baz az--baz a --baz br�N)rrrr0rar}r4r�r	r	r	r
r��s
r�c	@s�eZdZedddde�eddddd�gZd	dd
ddgZd
edd�fdedeg�fdedededg�fgZdS)�TestOptionalsActionAppendConstz-br��append_constr�z-cr�r�r�r�za -cz-bxz-b xr�Nz-b -cx -b -cyzr��yz)	rrrr0rCrar}r4r�r	r	r	r
r��sr�c
@s�eZdZeddddeddg�edddd	d
�gZdddd
dgZded
dg�fded
deg�fded
dededg�fgZdS)�)TestOptionalsActionAppendConstWithDefaultz-br�r�r�r�r�z-cr�r�r�r�za -cz-bxz-b xr�z-b -cx -b -cyzr�r�N)	rrrr0rCrar}r4r�r	r	r	r
r��sr�c@saeZdZeddd�gZddddgZded	d
�fded	d�fgZd
S)�TestOptionalsActionCountz-xr��countr�z-x az-x bz	-x a -x br�r�NrH)rrrr0rar}r4r�r	r	r	r
r��sr�c@s�eZdZed�ed�eddd�gZddgZded	d
dd
dd
�fded	ddd
dd
�fded	d
dddd
�fded	ddd
dd�fgZd
S)�"TestOptionalsAllowLongAbbreviationz--fooz--foobazz--foobler�r�z--foob 5z--foobr�rdNZfoobazZfoobleFz--foo 7�7z	--fooba ar�z--foobl --foo gr�T)rrrr0rar}r4r�r	r	r	r
r��s		r�c
@s�eZdZedd�Zed�eddd�ed�gZdd	d
dgZded
ddddd�fded
ddddd�fded
ddddd�fgZdS)�%TestOptionalsDisallowLongAbbreviation�allow_abbrevFz--fooz--foodler�r�z--foonlyz-foon 3z--foon 3z--foodz--food --foo 2r�rdNZfoodleZfoonlyz--foo 3�3z--foonly 7 --foodle --foo 2r�Tr�)	rrrr0r]rar}r4r�r	r	r	r
r�s	r�c@sFeZdZed�gZdddgZdedd�fgZdS)�TestPositionalsNargsNonerdr�z-xza br�N)rrrr0rar}r4r�r	r	r	r
r�sr�c@sOeZdZeddd�gZdddgZdeddg�fgZdS)	�TestPositionalsNargs1rdr�rHr�z-xza br�N)rrrr0rar}r4r�r	r	r	r
r�#sr�c@sUeZdZeddd�gZddddgZdeddd	g�fgZd
S)�TestPositionalsNargs2rdr�r�r�r�z-xza b cza br�N)rrrr0rar}r4r�r	r	r	r
r�-sr�c@sseZdZeddd�gZdgZdedg�fdeddg�fdedddg�fgZd	S)
�TestPositionalsNargsZeroOrMorerdr�r�z-xr�r�za br�N)rrrr0rar}r4r�r	r	r	r
r�7s
	r�c@syeZdZeddddd�gZdgZdedd�fdeddg�fd	eddd
g�fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultrdr�r�r�r�z-xr�r�za br�N)rrrr0rar}r4r�r	r	r	r
r�Cs
	r�c@sdeZdZeddd�gZddgZdeddg�fdedddg�fgZd	S)
�TestPositionalsNargsOneOrMorerdr�r�r�z-xr�za br�N)rrrr0rar}r4r�r	r	r	r
r�Osr�c@s[eZdZeddd�gZddgZdedd�fdedd�fgZdS)	�TestPositionalsNargsOptionalrdr�r�z-xza br�Nr�)rrrr0rar}r4r�r	r	r	r
r�Zsr�c@saeZdZeddddd�gZddgZdedd�fd	edd	�fgZd
S)�#TestPositionalsNargsOptionalDefaultrdr�r�r�r�z-xza br�r�N)rrrr0rar}r4r�r	r	r	r
r�esr�c@sjeZdZeddddedd�gZddd	gZd
edd�fdedd
�fgZdS)�,TestPositionalsNargsOptionalConvertedDefaultrdr�r�r<r�r�z-xza bz1 2r�r��1rHN)	rrrr0r�rar}r4r�r	r	r	r
r�ps!r�c@sXeZdZed�ed�gZddddgZdedddd�fgZd	S)
�TestPositionalsNargsNoneNonerdr�r�z-xr�za b cza br�N)rrrr0rar}r4r�r	r	r	r
r�sr�c@saeZdZed�eddd�gZddddgZd	edddd
g�fgZdS)�TestPositionalsNargsNone1rdr�r�rHr�z--foor�za b cza br�N)rrrr0rar}r4r�r	r	r	r
r��sr�c@sgeZdZeddd�ed�gZddddd	gZd
edddgdd�fgZd
S)�TestPositionalsNargs2Nonerdr�r�r�r�z--foor�za bza b c dza b cr�r�N)rrrr0rar}r4r�r	r	r	r
r��sr�c	@s�eZdZed�eddd�gZddgZdedddg�fdedddd	g�fd
edddd	dg�fgZdS)
�"TestPositionalsNargsNoneZeroOrMorerdr�r�r�r�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r��s
r�c@s|eZdZed�eddd�gZdddgZdedddd	g�fd
edddd	dg�fgZdS)
�!TestPositionalsNargsNoneOneOrMorerdr�r�r�r�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r��sr�c@sseZdZed�eddd�gZdddgZdedddd	�fd
edddd�fgZd	S)� TestPositionalsNargsNoneOptionalrdr�r�r�r�z--fooza b cr�Nza br�)rrrr0rar}r4r�r	r	r	r
r��sr�c@s�eZdZeddd�ed�gZddgZdedgdd�fdeddgdd	�fd
eddd	gdd�fgZdS)
�"TestPositionalsNargsZeroOrMoreNonerdr�r�r�r�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r��s
r�c@s|eZdZeddd�ed�gZdddgZdeddgdd	�fd
eddd	gdd�fgZdS)
�!TestPositionalsNargsOneOrMoreNonerdr�r�r�r�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r��sr�c@syeZdZeddddd�ed�gZddd	gZd
edddd
�fdedd
dd�fgZd
S)� TestPositionalsNargsOptionalNonerdr�r�r�r�r�r�z--fooza b cr�za br�N)rrrr0rar}r4r�r	r	r	r
r��s$r�c@s�eZdZeddd�eddd�gZdddgZd	eddd
gdg�fdeddd
gddg�fgZd
S)�TestPositionalsNargs2ZeroOrMorerdr�r�r�r�r�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r��s$r�c@smeZdZeddd�eddd�gZdddd	gZd
edddgddg�fgZd
S)�TestPositionalsNargs2OneOrMorerdr�r�r�r�r�z--foor�za bza b cr�r�N)rrrr0rar}r4r�r	r	r	r
r��s$r�c@s�eZdZeddd�eddd�gZdddd	gZd
edddgdd�fd
edddgdd�fgZdS)�TestPositionalsNargs2Optionalrdr�r�r�r�r�z--foor�za b c dza br�Nza b cr�)rrrr0rar}r4r�r	r	r	r
r��s$r�c@s�eZdZeddd�eddd�gZddgZdedgddg�fd	eddgdd
g�fdeddd
gddg�fgZd
S)�TestPositionalsNargsZeroOrMore1rdr�r�r�rHr�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r�s
$r�c@s�eZdZeddd�eddd�gZdddgZd	eddgdd
g�fdeddd
gddg�fgZd
S)�TestPositionalsNargsOneOrMore1rdr�r�r�rHr�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r�
s$r�c@seZdZeddd�eddd�gZdddgZd	edd
dd	g�fdedd	ddg�fgZd
S)
�TestPositionalsNargsOptional1rdr�r�r�rHr�z--fooza b cr�Nza br�)rrrr0rar}r4r�r	r	r	r
r�s$r�c	@s�eZdZed�eddd�eddd�gZddd	gZd
edd	dgddg�fdedd	ddgdd
g�fgZdS)�#TestPositionalsNargsNoneZeroOrMore1rdr�r�r�r�rHr�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
r�#s	!r�c	@s�eZdZed�eddd�eddd�gZddd	d
gZdedd	dd
gddg�fd
edd	dd
dgddg�fgZdS)�"TestPositionalsNargsNoneOneOrMore1rdr�r�r�r�rHr�z--foor�r�za b cr�za b c d�dN)rrrr0rar}r4r�r	r	r	r
r2s	$rc	@s�eZdZed�eddddd�eddd�gZd	d
dgZdedddddd
g�fdedddd
ddg�fgZdS)�!TestPositionalsNargsNoneOptional1rdr�r�r�r�g�?r�rHr�z--foor�za br�za b cr�N)rrrr0rar}r4r�r	r	r	r
rAs	!rc@s�eZdZeddd�eddddd�gZddgZd	edd
dd�fdedddd�fdedddd
�fgZd
S)�$TestPositionalsNargsOptionalOptionalrdr�r�r�r�r�z--fooza b cr�Nr�za br�)rrrr0rar}r4r�r	r	r	r
rPsrc
@s�eZdZeddd�eddd�gZdgZdedddg�fd	edd	dg�fd
edd	ddg�fdedd	ddd
g�fgZdS)�&TestPositionalsNargsOptionalZeroOrMorerdr�r�r�r�z--foor�Nr�za br�za b cr�)rrrr0rar}r4r�r	r	r	r
r_s$	rc	@s�eZdZeddd�eddd�gZddgZdedd	ddg�fd
eddddg�fdeddddd
g�fgZd	S)�%TestPositionalsNargsOptionalOneOrMorerdr�r�r�r�r�z--foor�Nza br�za b cr�)rrrr0rar}r4r�r	r	r	r
rls
$rc@sjeZdZedded��gZdddddgZd	edd	�fd
edd
�fgZdS)�TestPositionalsChoicesStringr�r�Zabcdefgr�z--foor�r��efr�r�N)	rrrr0�setrar}r4r�r	r	r	r
rxsrc@speZdZeddeded��gZddddd	gZd
edd�fdedd
�fgZ	dS)�TestPositionalsChoicesIntr�r<r��r�z--foor�r�r�4r��15�N)
rrrr0r�r�rar}r4r�r	r	r	r
r	�s!r	c@sseZdZeddd�eddddd�gZdddd	d
gZdedddd
gg�fgZdS)�TestPositionalsActionAppendr�r�r�r�r�r�z--foor�za bza b c dza b cr�r�N)rrrr0rar}r4r�r	r	r	r
r�src	@s�eZdZeddd�eddddd�gZd	d
gZdedddd
�fdedddd
�fdedddd�fdedddd�fgZdS)�"TestOptionalsNumericAndPositionalsr�r�r�z-4r�r�r�r�z-2z-315r�NFr�Tz-4 a)rrrr0rar}r4r�r	r	r	r
r�src
@s�eZdZeddd�eddddd�gZd	gZd
edddd�fd
edd
dd�fdedddd�fdedddd�fdedddd�fgZdS)�(TestOptionalsAlmostNumericAndPositionalsr�r�r�z-k4r�r�r�r�z-k3r�NFz-2r�Tz-k4 a)rrrr0rar}r4r�r	r	r	r
r�s	rc
@s'eZdZeddd�edddd�gZdgZdgedddd	�fd
gedd
dd	�fdgedddd	�fddgedd	dd�fdd
gedd	dd
�fddgedd	dd�fdgedd	dd
�fd
gedd	dd�fgZd	S)�$TestEmptyAndSpaceContainingArgumentsr�r�r�z-yz--yyyr�r�r�Nza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badger)rrrr0rar}r4r�r	r	r	r
r�s	rc
@s6eZdZedd�Zeddddddd	�ed
ddded
d�eddddd�gZddgZdedddddd�fdedd	dddd�fdedddddd�fdedddddd�fdedddddd�fdedddddd�fgZ	dS) � TestPrefixCharacterOnlyArgumentsr�z-+�-r�r�r�r�r�r�r�r�r<r�r�z-+-r�r�r�z-yz+ -r�NFz- Xr�z+ -3r�Tz- ===z===���)
rrrr0r]r�rar}r4r�r	r	r	r
r�src@s�eZdZeddd�eddd�gZgZdedddg�fdedgdg�fdedd	gdg�fd
edd	gddg�fd	edddd	g�fdedgdd	g�fd
eddgdd	g�fgZdS)�TestNargsZeroOrMorez-xr�r�r�r�r�Nz-x ar�z	-x a -- br�za -xza -x b)rrrr0rar}r4r�r	r	r	r
r�s$rc@s�eZdZed�eddd�ed�gZdddgZdedddgd	d
�fdedddgd	d�fd
edddddddgd	d
�fdedddddgd	d
�fgZd
S)�TestNargsRemainderr�r�r�z...z-zr�z-z Zr�r�Nz-z Z X�Zz
X A B -z Z�Ar�z	X Y --foo�Yz--foo)rrrr0rar}r4r�r	r	r	r
r�s'*rc@s�eZdZedde�eddedd�eddd�gZdd	d
ddd
dddddddg
Zdedddddg�fdedddddg�fdeddddddg�fdedddddg�fdedddd%dg�fdedddddg�fd eddddddg�fdeddddddg�fd!edd"ddddg�fd#edd"ddddg�fd$edddd"ddg�fgZdS)&�TestOptionLikez-xr<z-3r�r�r�r�r�z-y2.5z-xaz-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�r�Nz-x 2.5g@z-x 2.5 ar�z-3.5g�?z-3-.5z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 ag�)	rrrr0�floatrar}r4r�r	r	r	r
rs$		!!!!!rc
@s�eZdZeddddej�eddddej�eddd	dej�gZd
gZde�fdedd�fd
eddddg�fdedd�fdedddd�fdeddddgdd�fgZ	dS)�TestDefaultSuppressrdr�r�r�r�r�z--bazr�r�z-xr�r�za br�r�Tza --bazz	--baz a bN)
rrrr0�argparse�SUPPRESSrar}r4r�r	r	r	r
rs	rc
@s�eZdZedej�Zeddd�eddd�eddd	�gZd
gZde	�fde	dd�fd
e	ddddg�fde	dd�fde	dddd�fde	ddddgdd�fgZ
dS)�TestParserDefaultSuppress�argument_defaultrdr�r�r�r�z--bazr�r�z-xr�r�za br�r�Tza --bazz	--baz a bN)rrrr0rrr]rar}r4r�r	r	r	r
r0s	rc@sTeZdZedd�Zeddddd�eddd	�ed
dd�eddd
�gZdgZdeddd
ddddd�fdeddd
ddddd�fdeddd
dgdddd�fdeddd
ddddd�fdeddd
ddddd�fdeddd
dgdddd�fgZdS)�TestParserDefault42r r�z	--versionr��versionz1.0rdr�r�r�r�z--bazr�z-xr�r�r�za br�Tza --bazz	--baz a bN)	rrrr0r]rar}r4r�r	r	r	r
r!Ds	$$'$$r!csoeZdZ�fdd�Zedd�Zed�ed�eddd	�gZd
ddd
dgZdeddddddg�fdedddddddg�fdeddddddg�fdeddddddg�fdedddddddg�fdedddddddg�fdd
ddgedd
ddddg�fgZ	�S)�TestArgumentsFromFilecsctt|�j�dd	d
g}x:|D]2\}}t|d�}|j|�|j�q)WdS)N�hello�
hello world!
�	recursive�-a
A
@hello�invalid�@no-such-path
r))r$r%)r&r')r(r))rWr#rr*r+�close)r�
file_textsr�textr.)rXr	r
r\s	
zTestArgumentsFromFile.setUp�fromfile_prefix_chars�@z-ar�r�r�r�r�z-br�z@invalidz@missingzX Yr�Nrz
X -a A Y Zrrz@hello Xzhello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br�)
rrrrr0r]rar}r4r�r	r	)rXr
r#Ys		!$!!$$r#cs�eZdZ�fdd�ZGdd�de�ZeZedd�Zeddd	�gZ	gZ
d
edddd
g�fgZ�S)�TestArgumentsFromFileConvertercs]tt|�j�dg}x:|D]2\}}t|d�}|j|�|j�q#WdS)Nr$�
hello world!
r))r$r0)rWr/rr*r+r*)rr+rr,r.)rXr	r
rs	
z$TestArgumentsFromFileConverter.setUpc@seZdZdd�ZdS)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs/x(|j�D]}|j�s"q
|Vq
WdS)N)r~�strip)r�arg_line�argr	r	r
�convert_arg_line_to_args�szWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrrr4r	r	r	r
�FromFileConverterArgumentParser�sr5r-r.r�r�r�z@hello Xr$zworld!r�)
rrrrrVr5r^r0r]rar}r4r�r	r	)rXr
r/|s
r/c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestFileTypeReprcCs)tjd�}|jdt|��dS)N�rz
FileType('r'))r�FileTyper��repr)rr<r	r	r
�test_r�szTestFileTypeRepr.test_rcCs,tjdd�}|jdt|��dS)N�wbrHzFileType('wb', 1))rr8r�r9)rr<r	r	r
�	test_wb_1�szTestFileTypeRepr.test_wb_1cCs/tjddd�}|jdt|��dS)Nr7�encoding�latin_1z!FileType('r', encoding='latin_1'))rr8r�r9)rr<r	r	r
�test_r_latin�szTestFileTypeRepr.test_r_latincCs5tjddddd�}|jdt|��dS)Nr)r=�big5�errors�ignorez/FileType('w', encoding='big5', errors='ignore'))rr8r�r9)rr<r	r	r
�test_w_big5_ignore�s	z#TestFileTypeRepr.test_w_big5_ignorecCs2tjdddd�}|jdt|��dS)Nr7rHrA�replacez"FileType('r', 1, errors='replace'))rr8r�r9)rr<r	r	r
�test_r_1_replace�sz!TestFileTypeRepr.test_r_1_replaceN)rrrr:r<r?rCrEr	r	r	r
r6�s
r6c@s.eZdZiZdd�Zdd�ZdS)�RFilecCs
||_dS)N)r')rr'r	r	r
r3�szRFile.__init__cCs|||jkr|j|}n!|j�}|j|<|j�t|t�s^|jd�}|j|jkoy|kSS)N�ascii)�seen�readr*rJr��decoder')rr@r,r	r	r
rA�s
zRFile.__eq__N)rrrrHr3rAr	r	r	r
rF�srFcseZdZ�fdd�Zeddej��eddejd��gZdddgZd	e	d
dde
d	��fde	d
e
d	�de
d
��fde	d
e
d	�de
d
��fde	d
ejdej�fde	d
dde
d��fgZ
�S)�
TestFileTypeRcsstt|�j�xLddgD]>}ttjj|j|�d�}|j|�|j	�q W|j
d�dS)Nrdr�r)�readonly)rWrKrr*rrrrr+r*r/)r�	file_namer.)rXr	r
r�s!
zTestFileTypeR.setUpz-xr<r�r7r�znon-existent-file.txtrdr�Nz
-x foo barr�z
bar -x fooz-x - -rL)rrrrr0rr8rar}r4rFrK�stdinr�r	r	)rXr
rK�s	$$rKcsmeZdZ�fdd�Zeddejd�dd�gZdgZd	e	d
e
d��fgZ�S)�TestFileTypeDefaultscsOtt|�j�ttjj|jd�d�}|jd�|j	�dS)N�goodr))
rWrOrr*rrrrr+r*)rr.)rXr	r
r�s!
zTestFileTypeDefaults.setUpz-cr<r7r�zno-file.txtr�z-c goodr�rP)rrrrr0rr8rar}r4rFr�r	r	)rXr
rO�s$	rOc	s�eZdZ�fdd�Zeddejd��eddejd��gZddgZde	d	d
de
d��fde	d	e
d�de
d��fd
e	d	e
d�de
d��fde	d	ejdej�fgZ
�S)�TestFileTypeRBcsftt|�j�xLddgD]>}ttjj|j|�d�}|j|�|j	�q WdS)Nrdr�r))
rWrQrr*rrrrr+r*)rrMr.)rXr	r
r�s
!
zTestFileTypeRB.setUpz-xr<�rbr�r�rdr�Nz
-x foo barr�z
bar -x fooz-x - -)rrrrr0rr8rar}r4rFrKrNr�r	r	)rXr
rQ�s$$rQc@s1eZdZe�Zdd�Zdd�ZdS)�WFilecCs
||_dS)N)r')rr'r	r	r
r3szWFile.__init__cCsj||jkrZd}d|jkr3|jd�}|j|�|j�|jj|�|j|jkS)NzCheck that file is writable.r�rG)rH�mode�encoder+r*�addr')rr@r,r	r	r
rAs

zWFile.__eq__N)rrrrrHr3rAr	r	r	r
rSs	rS�geteuidznon-root user requiredc	s�eZdZ�fdd�Zeddejd��eddejd��gZdddgZd	e	d
dde
d	��fde	d
e
d	�de
d
��fde	d
e
d	�de
d
��fde	d
ejdej�fgZ
�S)�
TestFileTypeWcs$tt|�j�|jd�dS)NrL)rWrXrr/)r)rXr	r
rszTestFileTypeW.setUpz-xr<r)r�r�rLrdr�Nz
-x foo barr�z
bar -x fooz-x - -)rrrrr0rr8rar}r4rSrKrEr�r	r	)rXr
rXs$$rXc	@s�eZdZeddejd��eddejd��gZddgZdeddde	d��fd	ede	d�de	d
��fdede	d�de	d
��fdede
jde
j�fgZdS)
�TestFileTypeWBz-xr<r;r�r�rdr�Nz
-x foo barr�z
bar -x fooz-x - -)
rrrr0rr8rar}r4rSrKrEr�r	r	r	r
rY/s$$rYc@seZdZdd�ZdS)�TestFileTypeOpenArgscCs�tj}|d�df|dd�df|ddd�df|ddd�df|dd	d
d�dfg}tjd��8}x.|D]&\}}|d
�|jd
|�q�WWdQRXdS)NrRrHr)rArDr;r=r@r�l1�strictz
builtins.openrd���)rRr]NN)r)rHNNr])r)r]NrDr])r;r]r@N)r)rr[r\)rr8rZpatchZassert_called_with)rZFTZcases�mr<r1r	r	r
�test_open_argsAs	
z#TestFileTypeOpenArgs.test_open_argsN)rrrr_r	r	r	r
rZ>srZc@s�eZdZedde�edde�gZddddgZded	d
dd�fded	d
dd�fded	ddd�fgZ	dS)�TestTypeCallablez--eggsr<r�r�Z42jz--eggs az	--eggs 2iz--eggs=42 42�eggsr�gE@z--eggs 2j -- -1.5y@g�?z1024.675Ng3333��@g��)
rrrr0�complexrrar}r4r�r	r	r	r
r`Psr`c@s�eZdZGdd�de�Zedde�edde�gZgZdeded�ded	��fd
eded�ded��fgZ	d
S)�TestTypeUserDefinedc@s(eZdZdd�Zdd�ZdS)zTestTypeUserDefined.MyTypecCs
||_dS)N)�value)rrdr	r	r
r3dsz#TestTypeUserDefined.MyType.__init__cCs(t|�|jft|�|jfkS)N)r<rd)rr@r	r	r
rAgsz!TestTypeUserDefined.MyType.__eq__N)rrrr3rAr	r	r	r
�MyTypebsrez-xr<r�za -x br�r�r�z-xf gr�r�N)
rrrrrer0rar}r4r�r	r	r	r
rc_s	$rcc@s�eZdZGdd�d�Zedde�edde�gZgZdeded�ded	��fd
eded�ded��fgZd
S)�TestTypeClassicClassc@s(eZdZdd�Zdd�ZdS)zTestTypeClassicClass.CcCs
||_dS)N)rd)rrdr	r	r
r3zszTestTypeClassicClass.C.__init__cCs(t|�|jft|�|jfkS)N)r<rd)rr@r	r	r
rA}szTestTypeClassicClass.C.__eq__N)rrrr3rAr	r	r	r
�Cxsrgz-xr<r�za -x br�r�r�z-xf gr�r�N)	rrrrgr0rar}r4r�r	r	r	r
rfus	$rfc@seZdZdd�ZdS)�TestTypeRegistrationcCs�dd�}tj�}|jdd|�|jddd�|jddd�|j|jdj��tdddd	��|j|jd
j��tdd	dd��dS)NcSsd|S)Nzmy_type{%s}r	)�stringr	r	r
�get_my_type�sz.TestTypeRegistration.test.<locals>.get_my_typer<Zmy_typez-xr�r�r�z
my_type{1}z-x 1 42zmy_type{42})r�ArgumentParser�registerr_r�rRr~r4)rrjr`r	r	r
�test�szTestTypeRegistration.testN)rrrrmr	r	r	r
rh�srhc@s�eZdZGdd�dej�ZGdd�dej�Zedddded	ed
d�edded	e	d
dd
d�gZ
gZdedddd�fdedddd�fdedddd�fdedddd�fgZ
dS)�TestActionUserDefinedc@seZdZddd�ZdS)z$TestActionUserDefined.OptionalActionNcCs�yStdd�}|dkr*d|_n(|dkrBd|_ntd|��Wn2tk
r�tj�d	}td
|��YnXt|d|�dS)
Nr�g�?��?��?r��@r�z	value: %srHzopt_action failed: %s)rorp)rq)r4r��AssertionErrorrKrOrBrN)rr`�	namespacerd�
option_stringr��er	r	r
�__call__�s
z-TestActionUserDefined.OptionalAction.__call__)rrrrvr	r	r	r
�OptionalAction�srwc@seZdZddd�ZdS)z&TestActionUserDefined.PositionalActionNcCs�yktdd�}|dkr*d|_n@|dkrBd|_n(|d
krZd|_ntd	|��Wn2tk
r�tj�d}td
|��YnXt|d|�dS)Nr�r�r�r�g�?rHg�?g�?z	value: %szarg_action failed: %s)r�r�)rH)r�)r4r�rrrKrOrBrN)rr`rsrdrtr�rur	r	r
rv�s
z/TestActionUserDefined.PositionalAction.__call__)rrrrvr	r	r	r
�PositionalAction�srxz-sr�r�r�r<r�g�?r�r�r�r�z-s0.125g�?r�r�z
-s 0.625 1g�?rHz84 -s2g@r�N)rrrr�Actionrwrxr0rr�rar}r4r�r	r	r	r
rn�srnc@s5eZdZGdd�dej�Zdd�ZdS)�TestActionRegistrationc@seZdZddd�ZdS)zTestActionRegistration.MyActionNcCst||jd|�dS)Nzfoo[%s])rNr�)rr`rs�valuesrtr	r	r
rv�sz(TestActionRegistration.MyAction.__call__)rrrrvr	r	r	r
�MyAction�sr|cCs�tj�}|jdd|j�|jddd�|j|jdg�tdd��|j|jdg�tdd��dS)Nr�Z	my_actionr�r�zfoo[1]r�zfoo[42])rrkrlr|r_r�rRr4)rr`r	r	r
rm�s
%zTestActionRegistration.testN)rrrrryr|rmr	r	r	r
rz�srzcseZdZdd�Zddddd�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(�Z�S))�TestAddSubparserscOs|jt||�dS)N)rrB)rr1r2r	r	r
�assertArgumentParserError�sz+TestAddSubparsers.assertArgumentParserErrorFNc
Cs%|rItddddd|�}|j|dddd	d
dd�n.tdddd�}|jd
d	d
dd�|jddtdd�i}|r�d|d<d|d<n
d|d<|j|�}|j|j�tdd�}|r�d|d<|rddg|d<|jd|�}|jddtdd�|jddd dd!�tdd"�}	|rtd#|	d<|jd$|	�}
|
jd%dd&dd'�|
jd(dtd)d*dd+�tdd,�}|r�d-|d<|jd.|�}|jd/dtdd0�|jd1d)d2dd3�|S)4N�prog�PROG�descriptionzmain descriptionr�rr�rdr�r��helpzfoo helpz--foor�r<zbar helpZCOMMAND�metavar�commands�titlezcommand helpz
1 descriptionz1 helpZ1alias1Z1alias2�aliasesr�z-wzw helpr�r�r�zx helpz
2 descriptionz2 helpr�z-yZ123zy helpr�r�r�zz helpz
3 descriptionz3 helpr��tzt help�uz...zu help)	rVr_r�add_subparsersr~�dict�
add_parserr�rb)
r�subparser_helpr�r�r`Zsubparsers_kwargs�
subparsersZparser1_kwargs�parser1Zparser2_kwargs�parser2Zparser3_kwargsZparser3r	r	r
r{sN"





zTestAddSubparsers._get_parsercs5t�j�|j�|_|jdd�|_dS)Nr�T)rWrr{r`�command_help_parser)r)rXr	r
r8s
zTestAddSubparsers.setUpcCsLxEdddddddgD](}|j�}|j|jj|�qWdS)Nr�r�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r~r~r`rR)rr�r1r	r	r
�test_parse_args_failures=sz*TestAddSubparsers.test_parse_args_failurescCs
|j|jjdj��tdddddddd	��|j|jjd
j��tddddd
ddddg��|j|jjdj��tdddddddd��|j|jjdj��tdddddddddddd	g��dS) Nz0.5 1 b -w 7rdFr�g�?r)�r�r�z0.25 --foo 2 -y 2 3j -- -1jTg�?r�r�r�y@y�?z--foo 0.125 1 cg�?r�z-1.5 3 11 -- a --foo 7 -- bg�?r��r�r�z--foor�z--y��g��)r�r`rRr~r4)rr	r	r
�test_parse_argsDs"("z!TestAddSubparsers.test_parse_argscCsk|j|jjdj��tdddddddd	�gf�|j|jjd
j��tdddddddd	�dgf�|j|jjdj��tdddddddd	�dgf�|j|jjd
j��tdddddddd	�ddgf�|j|jjdj��tdddddddd	�ddddgf�dS)Nz0.5 1 b -w 7rdFr�g�?r)r�r�r�z0.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-Xrr)r�r`�parse_known_argsr~r4)rr	r	r
�test_parse_known_argsWs(++.z'TestAddSubparsers.test_parse_known_argscCs�t�}|jddd�|jdd�}|jd�}|jd�|jtdd	dddd
�|jdj���dS)Nz--foor�r�r�r�r�r�rdFr�z1 2)rVr_r�r�r�r4rRr~)rr`r�r�r	r	r
�	test_destms	
zTestAddSubparsers.test_destcCs?|j|jj�d�|j|jj�tjd��dS)Nz)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`�format_usage�format_help�textwrap�dedent)rr	r	r
�	test_helpvszTestAddSubparsers.test_helpcCsK|jdd�}|j|j�d�|j|j�tjd��dS)Nr�z+:-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�r�r�r�)rr`r	r	r
�test_help_extra_prefix_chars�s
z.TestAddSubparsers.test_help_extra_prefix_charscCsQtdddd�}|jddddd	�|j|j�tjd
��dS)Nrr�r�zmain descriptionz--non-breakingr�r�r�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesuB            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
        )rVr_r�r�r�r�)rr`r	r	r
�test_help_non_breaking_spaces�s	z/TestAddSubparsers.test_help_non_breaking_spacescCsK|jdd�}|j|j�d�|j|j�tjd��dS)Nr�z+:/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�r�r�r�)rr`r	r	r
� test_help_alternate_prefix_chars�s
z2TestAddSubparsers.test_help_alternate_prefix_charscCs?|j|jj�d�|j|jj�tjd��dS)Nz)usage: PROG [-h] [--foo] bar {1,2,3} ...
a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�r�r�r�r�r�)rr	r	r
�test_parser_command_help�s
z*TestAddSubparsers.test_parser_command_helpcCs�tdddd�}|jddddd	�|jd
dd�|jdd
dddd�}|jd�}|jd�}|j|j�d�|j|j�tjd��dS)Nrr�r�zmain descriptionz--foor�r�r�zfoo helpr�zbar helpr��subcommandszcommand helpzadditional textr�r�z'usage: PROG [-h] [--foo] bar {1,2} ...
a�            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

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

            subcommands:
              command help

              {1,2}       additional text
            )	rVr_r�r�r�r�r�r�r�)rr`r�r�r�r	r	r
�test_subparser_title_help�s		z+TestAddSubparsers.test_subparser_title_helpc
CsI|jt��}|jj|j��WdQRX|j||jj�dS)N)rrBr`rRr~r��	exceptionrE)rr�Z
expected_help�cmr	r	r
�_test_subparser_help�sz&TestAddSubparsers._test_subparser_helpcCs|jdtjd��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
            )r�r�r�)rr	r	r
�test_subparser1_help�sz&TestAddSubparsers.test_subparser1_helpcCs|jdtjd��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
            )r�r�r�)rr	r	r
�test_subparser2_helpsz&TestAddSubparsers.test_subparser2_helpcCs�|jdd�}|j|jdj��tddddddd	d
�gf�|j|jdj��tddddddd	d
�gf�dS)Nr�Tz
0.5 1alias1 brdFr�g�?r)r�r�z
0.5 1alias2 b)r{r�r�r~r4)rr`r	r	r
�test_alias_invocations(z'TestAddSubparsers.test_alias_invocationcCs/|jdd�}|j|jdj��dS)Nr�Tz
0.5 1alias3 b)r{r~rRr~)rr`r	r	r
�test_error_alias_invocationsz-TestAddSubparsers.test_error_alias_invocationcCsD|jdddd�}d|_|j|j�tjd��dS)Nr�Tr�a            usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

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

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )r{ZmaxDiffr�r�r�r�)rr`r	r	r
�test_alias_help"s	z!TestAddSubparsers.test_alias_help)rrrr~r{rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	)rXr
r}�s(6	r}c@s4eZdZdd�Zdd�Zdd�ZdS)�TestPositionalsGroupscCs�t�}|jd�|jd�}|jd�|jd�tdddddd�}|jdj��}|j||�dS)	Nrdr�r�r�r�r�r�z1 2 3)rVr_rer4rRr~r�)rr`rf�expectedrSr	r	r
�test_nongroup_first@s	


z)TestPositionalsGroups.test_nongroup_firstcCs�t�}|jd�}|jd�|jd�|jd�tdddddd�}|jdj��}|j||�dS)	N�xxxrdr�r�r�r�r�z1 2 3)rVrer_r4rRr~r�)rr`rfr�rSr	r	r
�test_group_firstJs	


z&TestPositionalsGroups.test_group_firstc	Cs�t�}|jd�}|jd�|jd�|jd�|jd�}|jd�tdddddd	dd
�}|jdj��}|j||�dS)Nr�rdr�r�r�Zfrellr�r�r�rz1 2 3 4)rVrer_r4rRr~r�)rr`rfr�rSr	r	r
�test_interleaved_groupsTs	



!z-TestPositionalsGroups.test_interleaved_groupsN)rrrr�r�r�r	r	r	r
r�=s

r�cs�eZdZdd�Z�fdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�S)�TestParentParserscOs|jt||�dS)N)rrB)rr1r2r	r	r
r~gsz+TestParentParsers.assertArgumentParserErrorcsZt�j�tdd�|_|jjd�|jjd�}|jd�|jjd�tdd�|_|jjd�|jjd�|jjd	�}|jd
�tdd�|_|jjd�tdd�|_|jjd�tdd�|_	|j	j
�}|jddd
�|jddd
�tjj
tjd�|_dS)Nr�Fz--wr�z-yr�r�z-br�z--dz-ar�r�r)rWrrV�wxyz_parentr_re�abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprr�basenamerKrl�main_program)rZx_group�c_grouprf)rXr	r
rjs(


zTestParentParsers.setUpc	CsMtd|jg�}|j|jdj��tdddddd��dS)	N�parentsz-y 1 2 --w 3r)r�r�r�r�r�)rVr�r�rRr~r4)rr`r	r	r
�test_single_parent�sz$TestParentParsers.test_single_parentcCs<|j|jj�td|jg�}|j|j�dS)Nr�)�_test_mutex_abr�rRrV)rr`r	r	r
�test_single_parent_mutex�sz*TestParentParsers.test_single_parent_mutexcCsG|jg}tddd|�}td|g�}|j|j�dS)Nr�Fr�)r�rVr�rR)rr�r`r	r	r
�test_single_granparent_mutex�sz.TestParentParsers.test_single_granparent_mutexcCs�|j|g�tdddd��|j|dg�tdddd��|j|dg�tdddd��|j|ddg�|j|ddg�|j|dg�|j|ddg�|j|ddg�dS)Nr�Fr�z-aTz-bz-c)r�r4r~)rrRr	r	r
r��s%((z TestParentParsers._test_mutex_abcCsk|j|jg}td|�}|j|jdj��tdddddddd	d
ddd��dS)
Nr�z--d 1 --w 2 3 4r�r�r�rr�r)r�r�r�r)r�r�rVr�rRr~r4)rr�r`r	r	r
�test_multiple_parents�sz'TestParentParsers.test_multiple_parentsc
Cs�|j|jg}td|�}|j|jdj��tddddddd	dd
d��|j|jdj��|j|jd
j��dS)Nr�z
-a --w 2 3r�Tr�Fr)r�r�r�r�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�rVr�rRr~r4r~)rr�r`r	r	r
�test_multiple_parents_mutex�s(z-TestParentParsers.test_multiple_parents_mutexcCs,|jtjtjd|j|jg�dS)Nr�)rr�
ArgumentErrorrkr�r�)rr	r	r
�test_conflicting_parents�s	z*TestParentParsers.test_conflicting_parentscCs,|jtjtjd|j|jg�dS)Nr�)rrr�rkr�r�)rr	r	r
�test_conflicting_parents_mutex�s	z0TestParentParsers.test_conflicting_parents_mutexc	CsY|j|jg}td|�}|j|jdj��tdddddd��dS)Nr�z1 2r)r�r�r�)r�r�rVr�rRr~r4)rr�r`r	r	r
�test_same_argument_name_parents�sz1TestParentParsers.test_same_argument_name_parentscCs{t�}|j�}|jdd|jg�}|jd�|j|jdj��tddddd	d
dd��dS)Nr�r�ruzbar -b 1 --d 2 3 4r�r�r�r�rr�r)	rVr�r�r�r_r�rRr~r4)rr`r�Zabcde_parserr	r	r
�test_subparser_parents�s	
z(TestParentParsers.test_subparser_parentscCs6t�}|j�}|jg}|jdd|�}|jd�}|jd�|j|jg}|jdd|�}|jd�|j|jdj	��t
dd	d
ddd��|j|jd
j	��t
ddd
d	dddddddd��|j|jdj	��|j|jdj	��dS)Nrdr�r�r�r�ruzfoo -a 4r�Tr�Frzbar -b  --w 2 3 4r)r�r�r�r�zfoo -a -b 4zbar -b -a 4)rVr�r�r�rer_r�r�rRr~r4r~)rr`r�r�Z
abc_parserr�Zwxyzabe_parserr	r	r
�test_subparser_parents_mutex�s"	

.z.TestParentParsers.test_subparser_parents_mutexcCsk|j|jg}td|�}|j�}|j}|j|tjdj||rZdnd���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�rVr�r�r�r�r��format)rr�r`�parser_help�prognamer	r	r
�test_parent_help�s	z"TestParentParsers.test_parent_helpcCs�tdd�}|jdddd�}|jd�|jd�|j�}|jd	�|jd
�td|g�}|jt|jd	dd
d
g�|j�}|j}|j	|t
jdj||r�dnd���dS)Nr�Fr�r�r��gdz-wz-xz-yz-zr�rra	            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�)
rVrer_r�rrBrRr�r�r�r�r�r�)r�parentr�r^r`r�r�r	r	r
�test_groups_parents�s



	
z%TestParentParsers.test_groups_parents)rrrr~rr�r�r�r�r�r�r�r�r�r�r�r�r�r	r	)rXr
r�ds

r�c@s4eZdZdd�Zdd�Zdd�ZdS)� TestMutuallyExclusiveGroupErrorscCs,t�}|j}|t|jdd�dS)Nr�rd)rVrrur�)rr`�raisesr	r	r
�test_invalid_add_argument_group	s		z@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_groupcCs�t�}|j�}|j}|j}|t|ddd�|t|d�|t|ddd�|t|ddd�|t|ddtj�dS)Nz--foor�Tr�r�r�rH)rVr�r_r�
ValueErrorr�PARSER)rr`rfr_r�r	r	r
�test_invalid_add_argument	s			z:TestMutuallyExclusiveGroupErrors.test_invalid_add_argumentcCs�tdd�}|j�}|jddd�|jddd�|j�}|jddd�|jd	dd�d
}|j|j�tj|��dS)Nrr�z--foor�r�z--barr�z--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            optional arguments:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )rVr�r_r�r�r�r�)rr`Zgroup1Zgroup2r�r	r	r
r�)	s
z*TestMutuallyExclusiveGroupErrors.test_helpN)rrrr�r�r�r	r	r	r
r�	sr�c@speZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�MEMixincCsL|jdd�j}t}x*|jD]}|j|||j��q%WdS)Nr�F)�
get_parserrRrBr}rr~)rrRrZ�args_stringr	r	r
�test_failures_when_not_required?	sz'MEMixin.test_failures_when_not_requiredcCsS|jdd�j}t}x1|jdgD]}|j|||j��q,WdS)Nr�Tr�)r�rRrBr}rr~)rrRrZr�r	r	r
�test_failures_when_requiredE	sz#MEMixin.test_failures_when_requiredcCsb|jdd�j}|j|j}x6|D].\}}||j��}|j||�q,WdS)Nr�F)r�rRr��successes_when_not_requiredr~r�)rrRr�r�r��	actual_nsr	r	r
� test_successes_when_not_requiredK	s
z(MEMixin.test_successes_when_not_requiredcCsU|jdd�j}x9|jD].\}}||j��}|j||�qWdS)Nr�T)r�rRr�r~r�)rrRr�r�r�r	r	r
�test_successes_when_requiredR	sz$MEMixin.test_successes_when_requiredcCs>|jdd�j}|j}|j|�tj|��dS)Nr�F)r�r��usage_when_not_requiredr�r�r�)rr��expected_usager	r	r
�test_usage_when_not_requiredX	s	z$MEMixin.test_usage_when_not_requiredcCs>|jdd�j}|j}|j|�tj|��dS)Nr�T)r�r��usage_when_requiredr�r�r�)rr�r�r	r	r
�test_usage_when_required]	s	z MEMixin.test_usage_when_requiredcCsE|jdd�j}|j|j}|j|�tj|��dS)Nr�F)r�r�r�r�r�r�r�)rr�r�r	r	r
�test_help_when_not_requiredb	sz#MEMixin.test_help_when_not_requiredcCsE|jdd�j}|j|j}|j|�tj|��dS)Nr�T)r�r�r�r�r�r�r�)rr�r�r	r	r
�test_help_when_requiredg	szMEMixin.test_help_when_requiredN)rrrr�r�r�r�r�r�r�r�r	r	r	r
r�=	sr�c	@s�eZdZddd�ZddgZdeddd	d�fd
eddd	d�fdeddd	d
�fdeddd	d�fgZdeddd	d�fgZdZdZ	dZ
dS)�TestMutuallyExclusiveSimpleNcCsWtdd�}|jd|�}|jddd�|jddd	d
ddd�|S)
Nrr�r�z--barr�zbar helpz--bazr�r�r�rzbaz help)rVr�r_)rr�r`rfr	r	r
r�o	s
z&TestMutuallyExclusiveSimple.get_parserz--bar X --baz Yz
--bar X --bazz--bar Xr�r�r�z--bar X --bar Zrz--baz Yrz--bazr�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
        )rrrr�r}r4r�r�r�r�r�r	r	r	r
r�m	sr�c
@s�eZdZddd�ZdgZdedddddd	d
d�fdedddddd	d
d�fd
eddddddd
d	�fdeddddddd
d	�fgZdeddddddd
d�fgZdZdZ	dZ
dS)�TestMutuallyExclusiveLongNcCsqtdd�}|jddd�|jddd�|jd|�}|jd	dd
�|jddd�|S)
Nrr�z--abcder�z
abcde helpz--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help)rVr_r�)rr�r`rfr	r	r
r��	sz$TestMutuallyExclusiveLong.get_parserz--klmno X --pqrst Yz	--klmno XZabcdeZfghijZklmnor�Zpqrstz--abcde Y --klmno Xrz	--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
    )rrrr�r}r4r�r�r�r�r�r	r	r	r
r��	s		$!$'*	r�c@s�eZdZdd�ZdgZdedddd�fd	edd
dd�fdedddd
�fgZdedddd�fgZdZdZ	dZ
dS)�$TestMutuallyExclusiveFirstSuppressedcCsTtdd�}|jd|�}|jddtj�|jddddd	�|S)
Nrr�r�z-xr�z-yr�r�zy help)rVr�r_rr)rr�r`rfr	r	r
r��	s
z/TestMutuallyExclusiveFirstSuppressed.get_parserz-x X -yz-x Xr�r�r�Tz	-x X -x Yrz-yNFr�z&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zx
        optional arguments:
          -h, --help  show this help message and exit
          -y          y help
        )rrrr�r}r4r�r�r�r�r�r	r	r	r
r��	s	r�c@s�eZdZdd�ZdddgZdeddd	dd
d�fdedd
d	d
d
d�fdedd
d	dd
d�fdeddd	dd
d�fgZdedd
d	dd
d�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedcCsstdd�}|jd|�}|j}|ddddtj�|ddd	dtj�|d
dtj�|S)Nrr�r�z--spamr�r�r�z--badgerr�z	--bladder)rVr�r_rr)rr�r`rfrVr	r	r
r��	s	z.TestMutuallyExclusiveManySuppressed.get_parserz--spam --badgerz--badger --bladder Bz--bladder B --spamz--spamr�Tr�ZbladderNz--badgerFz--bladder Br�z
--spam --spamr�z!        usage: PROG [-h]
        z[
        optional arguments:
          -h, --help  show this help message and exit
        )rrrr�r}r4r�r�r�r�r�r	r	r	r
r��	s
	$$
r�c
@s�eZdZdd�ZdddddgZded	d
ddd
d�fded	dddd
d�fded	dddd
dg�fded	dddd
dddg�fgZded	dddd
d�fgZdZdZ	dZ
dS)�*TestMutuallyExclusiveOptionalAndPositionalcCsptdd�}|jd|�}|jddddd�|jd	dd
�|jddd
dddd�|S)Nrr�r�z--foor�r�r��FOOz--spamZSPAMr�r�r�r�r�ZBADGER)rVr�r_)rr�r`rfr	r	r
r�
sz5TestMutuallyExclusiveOptionalAndPositional.get_parserz--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yz--foordTr�Nr�r�z--spam SF�SzX Y Zrrr�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
        )rrrr�r}r4r�r�r�r�r�r	r	r	r
r�
s		!-$
r�c@s�eZdZdd�ZddddgZdedd	d
dddd
ddd�fdeddd
d	ddd
ddd�fdeddd
ddd	d
ddd�fdedd	d
dddd
d	dd�fdeddd
d	ddd
ddd	�fdeddd
ddd	d
d	dd	�fgZdeddd
dddd
ddd�fdeddd
dddd
d	dd�fdeddd
dddd
ddd	�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedcCs�tdd�}|jddddd�|jd|�}|jd	dddd
�|jddddd�|jd
dddd�|jddddd�|S)Nrr�z-xr�r�r�zx helpr�z-aza helpz-bzb helpz-yzy helpz-czc help)rVr_r�)rr�r`rfr	r	r
r�/
sz.TestMutuallyExclusiveOptionalsMixed.get_parserz-a -bz-b -cz-a -cz-a -b -cz-ar�Tr�Fr�r�r�z-bz-cz-a -xz-y -bz-x -y -cr�z-xz-yz:        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
        N)rrrr�r}r4r�r�r�r�r�r	r	r	r
r�-
s
*****0**0

r�c@s�eZdZddd�ZddgZdeddd	d�fd
eddd	d�fgZdeddd	d�fgZd
ZdZ	dZ
dS)�TestMutuallyExclusiveInGroupNcCsctdd�}|jdddd�}|jd|�}|jdd	d
�|jdd	d�|S)
Nrr�r�zTitled groupr�zGroup descriptionr�z--barr�zbar helpz--bazzbaz help)rVrer�r_)rr�r`Ztitled_group�mutex_groupr	r	r
r�Y
s	z'TestMutuallyExclusiveInGroup.get_parserz--bar X --baz Yz--baz X --bar Yz--bar Xr�r�r�z--baz Yrr�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
        )rrrr�r}r4r�r�r�r�r�r	r	r	r
r�W
s
r�c@smeZdZdd�ZdddgZdeddd	d
dd
dd
dd
�fdeddd	ddd
dd
dd
�fdeddd	d
dddd
dd
�fdeddd	d
dd
dd
dd�fdeddd	ddd
dd
dd�fgZd
eddd	d
dd
dd
dd
�fdeddd	d
dd
dd
dd�fgZdZZ	dZ
dS)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedcCs�tdd�}|jddd�|jddddd	�|jd
|�}|jddd
dd�|jddddd�|jddddd�|S)Nrr�r�r�zx helpz-yr�r�zy helpr�r�r�r�za helpz-bzb helpz-czc help)rVr_r�)rr�r`rfr	r	r
r��
sz<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parserzX A -bz-b -cz-c X AzX Ar�rr�Fr�r�r�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
        )rrrr�r}r4r�r�r�r�r�r	r	r	r
r�
s
****0*0
r�cs%eZdZd�fdd�Z�S)�MEPBaseNcs@tt|�jd|�}td|jddd|g�}|S)Nr�rr�Fr�)rWr�r�rVr)rr�r�r`)rXr	r
r��
szMEPBase.get_parser)rrrr�r	r	)rXr
r��
sr�c@seZdZdS)�&TestMutuallyExclusiveGroupErrorsParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�!TestMutuallyExclusiveSimpleParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�TestMutuallyExclusiveLongParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�*TestMutuallyExclusiveFirstSuppressedParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�)TestMutuallyExclusiveManySuppressedParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�0TestMutuallyExclusiveOptionalAndPositionalParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�)TestMutuallyExclusiveOptionalsMixedParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentN)rrrr	r	r	r
r��
sr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestSetDefaultsc	Cst�}|jdd�|jdddd�|jtdddddd�|jg��|jtdddddd�|jgt���|jtdddddd�|jgtdd���|jtdddddd�|jgtdddd���dS)	Nr�rdr�r�r�rHr�r�)rV�set_defaultsr�r4rR)rr`r	r	r
�test_set_defaults_no_args�
s	z)TestSetDefaults.test_set_defaults_no_argscCs\t�}|jdddd�|jddd�|jtdddd�|jg��|jtdddd�|jgt���|jtdddd�|jgtdd���|jtdd	dd�|jd
j���|jtdd	dd�|jd
j�t���|jtdd	dd�|jd
j�tdd���dS)Nr�rdr�r�z-xr�Zxfooxr�r�z-x 1)rVr�r_r�r4rRr~)rr`r	r	r
�test_set_defaults_with_args�
s	z+TestSetDefaults.test_set_defaults_with_argscCsvt�}|jdd�|j�}|jd�}|jdd�|jtdddd�|jdj���dS)Nr�rdr�r�r�)rVr�r�r�r�r4rRr~)rr`r�Zparser_ar	r	r
�test_set_defaults_subparserss	z,TestSetDefaults.test_set_defaults_subparserscCsWtdd�}|jdd�td|g�}|jtdd�|jg��dS)Nr�Fr�rdr�)rVr�r�r4rR)rr�r`r	r	r
�test_set_defaults_parents	sz)TestSetDefaults.test_set_defaults_parentscCsjtj�}|j�jd�}|jdd�|jdd�|jtdd�|jdg��dS)Nr�rdrHr�)rrkr�r�r�r�r4rR)rr`Zxparserr	r	r
�)test_set_defaults_on_parent_and_subparsers
z9TestSetDefaults.test_set_defaults_on_parent_and_subparserc
Cst�}|jdddddddd�|jd	�|jd
dd�|jdd
d�|jdd
ddd�|jtdddddddd�|jg��|jdddddddd�|jtdddddddd�|jg��dS)Nr)�Wr�r�r�rr�rz-wz-xr��XXr�r��ZZ�WW�YY)rVr�r_r�r4rR)rr`r	r	r
�&test_set_defaults_same_as_add_arguments	"
$"$z6TestSetDefaults.test_set_defaults_same_as_add_argumentc
Cst�}|jdddddddd�|jd	�}|jd
�|jddd
�|jddd�|jddddd�|jtdddd
dddd�|jg��|jdddddddd�|jtdddddddd�|jg��dS)Nr)rr�r�r�rr�rrdz-wz-xr�rr�r�rrr)rVr�rer_r�r4rR)rr`rfr	r	r
�,test_set_defaults_same_as_add_argument_group's	"
$"$z<TestSetDefaults.test_set_defaults_same_as_add_argument_groupN)
rrrr�r�r�r�rrrr	r	r	r
r��
s
	r�c@seZdZdd�ZdS)�TestGetDefaultcCs�t�}|j|jd��|j|jd��|jd�|j|jd��|j|jd��|jddtdd�|j|jd��|jd|jd��|jdd�|jd|jd��|jd|jd��dS)	Nrdr�z--fooz--barr<r�r�r�)rVZassertIsNone�get_defaultr_r�r�r�)rr`r	r	r
�test_get_default@s	
zTestGetDefault.test_get_defaultN)rrrr
r	r	r	r
r>src@s(eZdZdd�Zdd�ZdS)�TestNamespaceContainsSimplecCs0tj�}|jd|�|jd|�dS)Nr�r�)r�	Namespace�assertNotIn)r�nsr	r	r
�
test_emptyWsz&TestNamespaceContainsSimple.test_emptycCsltjdddd�}|jd|�|jd|�|jd|�|jd|�|jd|�dS)Nr�rHr�r�r�Zxxr�)rrr
�assertIn)rrr	r	r
�test_non_empty\sz*TestNamespaceContainsSimple.test_non_emptyN)rrrrrr	r	r	r
rUsrc@seZdZdd�ZdS)�TestHelpFormattingMetaclasscCsW|dkrdSGdd�dt�}x*ddgD]\}}||||�q3WdS)	N�HelpTestCasec@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc
Ss�||_||_xt|j|j|jgD]Z}d|j|f}|dd�}y
||_Wntk
rtYnXt|||�q+WdS)Nz%s_%scSs||�dS)Nr	)rror	r	r
�test_wrapperyszUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper)�func_suffix�std_name�test_format�
test_print�test_print_filerrurN)rZ
test_classrrroryrr	r	r
r3ps			

z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__cSstj|jj|jj�}x0t|dg�D]}|j|j|j�q1Wt|dg�}xS|D]K\}}|j|j|j�}x$|D]}|j|j|j�q�WqjWt|dg�}|r|j�}	x$|D]}
|	j	|
j|
j�q�W|S)Nra�argument_group_signatures�subparsers_signatures)
rrkr]r1r2rMr_rer�r�)rrzr`Zargument_sigZ
group_sigsZ	group_sigZ
argument_sigsrfZsubparsers_sigsr�Z
subparser_sigr	r	r
r{�s(	

zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parsercSs5t||j�}tj|�}|j||�dS)N)rMrr�r�r�)rrz�parser_textZ
expected_textr	r	r
�_test�sz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testcSs<|j|�}t|d|j�}|j||��dS)Nz	format_%s)r{rMrr)rrzr`r�r	r	r
r�szBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatc
Ss�|j|�}t|d|j�}tt|j�}tt|jt��z#|�tt|j�j�}Wdtt|j|�X|j||�dS)Nzprint_%s)	r{rMrrKrrNrrQr)rrzr`�print_Z
old_streamrr	r	r
r�szATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printcSsX|j|�}t|d|j�}t�}||�|j�}|j||�dS)Nzprint_%s)r{rMrrrQr)rrzr`rZsfilerr	r	r
r�s	
zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_fileN)	rrrr3r{rrrrr	r	r	r
r�nsr��usagerEr�)rrE)r�rE)r�)r�r'r�r�r�rrr	r	r
r3jsHz$TestHelpFormattingMetaclass.__init__N)rrrr3r	r	r	r
rhsrrc@s�eZdZedddddd�Zeddd	d
d
d�edd	d
dd�eddd�eddd�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerOptionalsrr�r��DESCRIPTION�epilog�EPILOGz-vz	--versionr�r"z0.1z-xr�r�zX HELPz--yzY HELPrdzFOO HELPr�zBAR 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
    z        0.1
        N)
rrrr0r]rarrr�r"r	r	r	r
r �s	r c@sPeZdZdd�ZejZejZejZdZedZ	ej
Z
dS)�TestShortColumnscCs0tj�}|jdd�|j|j�dS)Nrr)rr
rrr)rrr	r	r
r�szTestShortColumns.setUpz�        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a�
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

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

        EPILOG
    N)rrrrr r]rarrr�r"r	r	r	r
r$�s				r$c@s�eZdZedddddd�Zeddd	d
d
d�edd	d
dd�eddd�eddd�eddd�gZeddd�eddd�eddddd�gfgZdZedZd Z	d!S)"�TestHelpBiggerOptionalGroupsrr�r�r!r"r#z-vz	--versionr�r"z0.1z-xr�r�zX HELPz--yzY HELPrdzFOO HELPr�zBAR HELPzGROUP TITLEzGROUP DESCRIPTIONr�zBAZ HELPz-zr�r�zZ HELPzN        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
    z        0.1
        N)
rrrr0r]rarrr�r"r	r	r	r
r%s	!r%c@s�eZdZedddd�Zeddddd	�ed
dd�eddd
�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerPositionalsr�USAGEr�r!z-xr�r�r�zX HELPz--yzY HELPZekiekiekifekangzEKI HELPr�zBAR HELPz        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�N)
rrrr0r]rarrr�r"r	r	r	r
r&Hsr&c@s�eZdZedddd�Zeddddd	�ed
dddd�gZed
dd�eddddd�gfgZdZedZdZ	dS)�TestHelpReformattingrr�r�ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedz-xr�rr�zoddly
    formatted -x helpr�r�z
normal y helpr�z'
    oddly formatted group

descriptionz-ar�r�z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesz2        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�N)
rrrr0r]rarrr�r"r	r	r	r
r(gs	r(c@s�eZdZeddddd�Zedddd	d
d�eddd
d	dd�gZed�edddd	dd�gfgZdZedZdZ	dS)�TestHelpWrappingShortNamesrr�r�zD
D�z-xr�rr�zXHH HXr
r�r�zYH YH�ALPHASz-ar�r�zAHHH HHA�
z2        usage: PROG [-h] [-x XX] [-a] yyy
        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�N)
rrrr0r]rarrr�r"r	r	r	r
r)�s	%r)c	@s�eZdZeddddd�Zedddd	d	d
d�eddd
dddd�eddddddd�gZed�eddddddd�eddddddd�gfgZdZedZdZ	dS)�TestHelpWrappingLongNamesrr'r�zD Dr*z-vz	--versionr�r"zV Vz-xr�r��r�zXH XHr
r�zYH YHr+z-arzAH AHr�zZH ZHz        usage: USAGE
        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
        N)
rrrr0r]rarrr�r"r	r	r	r
r-�s#	)r-c
@seZdZedd�Zeddddd�eddd	dd
�eddd�eddddd
�eddddd�gZed�eddddd�eddddd�eddddd	�eddddd�gfgZdZedZdZ	dS)�
TestHelpUsagerr�z-wr�r�r�r)z-xr�r�r�r�r�r�r�rfz-yr�z-zr�r�rruz�        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�N)
rrrr0r]rarrr�r"r	r	r	r
r/�s	!r/c@s�eZdZedddd�ZgZed�eddd�ed	dd	�gfed
�eddd�eddd
�gfgZdZedZdZ	dS)�TestHelpOnlyUserGroupsrr�r�FZxxxxz-xr�r�r�Zyyyyr�z-yr�z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        r�N)
rrrr0r]rarrr�r"r	r	r	r
r0%
s			r0c@sueZdZeddd�Zeddd�eddd�ed	�ed
�gZgZdZedZd
Z	dS)�TestHelpUsageLongProgr�P�<z-wr�rz-xr�r�r�zz        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�N)
rrrr0r]rarrr�r"r	r	r	r
r1D
s	
r1c@s�eZdZeddd�Zedddd�eddd	d�ed
ddd�eddd
d�ed�ed�gZgZdZedZdZ	dS)� TestHelpUsageLongProgOptionsWraprr2r3z-wr�rr.z-xr�z-yrz-zrr�r�a        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�N)
rrrr0r]rarrr�r"r	r	r	r
r4a
s	r4c@sreZdZeddddd�Zedd�edd�ed	d�gZgZd
ZedZdZ	d
S)�$TestHelpUsageLongProgPositionalsWraprr2r3r�Fr�r.r�r�z�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        z�
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r�N)
rrrr0r]rarrr�r"r	r	r	r
r5�
s

r5c@s�eZdZedd�Zedddd�edddd�ed	dd
d�edddd�ed
�ed�ed�gZgZdZedZdZ	dS)�TestHelpUsageOptionalsWraprr�z-wr�rr.z-xr�z-yrz-zrr�r�r�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�N)
rrrr0r]rarrr�r"r	r	r	r
r6�
s		
r6c@s�eZdZedd�Zed�ed�ed�edd�edd�ed	d�gZgZd
ZedZdZ	d
S)�TestHelpUsagePositionalsWraprr�z-xz-yz-zr�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�N)
rrrr0r]rarrr�r"r	r	r	r
r7�
s			

r7c@s�eZdZedd�Zedddd�edddd�ed	dd
d�edd�edd�ed
d�gZgZdZedZdZ	dS)�%TestHelpUsageOptionalsPositionalsWraprr�z-xr�r�r.z-yrz-zrr�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�N)
rrrr0r]rarrr�r"r	r	r	r
r8�
s

r8c@szeZdZedd�Zedddd�edddd�ed	dd
d�gZgZdZedZd
Z	dS)�TestHelpUsageOptionalsOnlyWraprr�z-xr�r�r.z-yrz-zrz�        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�N)
rrrr0r]rarrr�r"r	r	r	r
r9
sr9c@sneZdZedddd�Zedd�edd�edd�gZgZd	Zed
ZdZ	dS)
� TestHelpUsagePositionalsOnlyWraprr�r�Fr�r.r�r�z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        z�
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r�N)
rrrr0r]rarrr�r"r	r	r	r
r:$s

r:c
@s
eZdZedd�Zeddedd�eddd	d
ddd
dd�eddddd�edd
ddddgdddd�eddd�edd
ddd�gZed�ed dd!�ed"d
d(dd#�gfgZd$Zed%Z	d&Z
d'S))�TestHelpVariableExpansionrr�z-xr<r�z"x %(prog)s %(default)s %(type)s %%z-yr�r�r�r�r��XXXz y %(prog)s %(default)s %(const)sz--foor�r�z$foo %(prog)s %(default)s %(choices)sz--barr�rHr�r�ZBBBz!bar %(prog)s %(default)s %(dest)sr�zspam %(prog)s %(default)sr�g�?zbadger %(prog)s %(default)srfz-aza %(prog)s %(default)sz-bzb %(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�Nr])rrrr0r]r�rarrr�r"r	r	r	r
r;<s$!	!r;c@sGeZdZedddd�ZgZgZdZedZdZ	dS)	�&TestHelpVariableExpansionUsageSuppliedrr�rz%(prog)s FOOz         usage: PROG FOO
        z[
        optional arguments:
          -h, --help  show this help message and exit
        r�N)
rrrr0r]rarrr�r"r	r	r	r
r=jsr=c@sCeZdZedddd�ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsrr�r�Fz        usage: PROG
        r�N)
rrrr0r]rarrr�r"r	r	r	r
r>{sr>c@sdeZdZedddej�Zeddd�eddd�gZgZd	Z	d
Z
d
ZdS)�TestHelpSuppressUsagerr�rz--foor�zfoo helpr�z	spam helpz�        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrrr0rrr]rarr�rr"r	r	r	r
r?�sr?c@sheZdZedddd�Zeddej�eddd�gZgZd	Z	e	d
Z
dZdS)
�TestHelpSuppressOptionalrr�r�Fz--foor�r�z	spam helpz!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r�N)rrrr0r]rrrarrr�r"r	r	r	r
r@�sr@c@s�eZdZedd�Zeddd�eddd�gZed�ed	dej�gfgZd
Z	e	dZ
dZd
S)�TestHelpSuppressOptionalGrouprr�z--foor�zfoo helpr�z	spam helprfz--barz2        usage: PROG [-h] [--foo FOO] spam
        z�
        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrrr0r]rarrrrr�r"r	r	r	r
rA�s'rAc@sbeZdZedd�Zeddd�eddej�gZgZdZ	e	dZ
d	Zd
S)�TestHelpSuppressPositionalrr�z--foor�zfoo helpr�z-        usage: PROG [-h] [--foo FOO]
        zz
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrrr0r]rrrarrr�r"r	r	r	r
rB�srBc@sVeZdZedd�Zeddddd�gZgZdZed	Zd
Z	dS)�TestHelpRequiredOptionalrr�z--foor�Tr�zfoo helpz+        usage: PROG [-h] --foo FOO
        zz
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)
rrrr0r]rarrr�r"r	r	r	r
rC�srCc@steZdZedddddd�Zeddd	d
d�edd
d
d�gZgZdZedZdZ	dS)�TestHelpAlternatePrefixCharsrr�r�z^;r�Fz^^foor�r�r�zfoo helpz;bz;;barzbar helpz-        usage: PROG [^^foo] [;b BAR]
        zq
        optional arguments:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        r�N)
rrrr0r]rarrr�r"r	r	r	r
rD�srDc@seeZdZedddd�Zeddd�eddd	�gZgZd
ZedZdZ	d
S)�TestHelpNoHelpOptionalrr�r�Fz--foor�zfoo helpr�z	spam helpz-        usage: PROG [--foo FOO] spam
        z�
        positional arguments:
          spam       spam help

        optional arguments:
          --foo FOO  foo help
        r�N)
rrrr0r]rarrr�r"r	r	r	r
rE	srEc@sSeZdZedd�Zed�ed�gZgZdZedZdZ	dS)	�TestHelpNonerr�z--foor�z2        usage: PROG [-h] [--foo FOO] spam
        z�
        positional arguments:
          spam

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO
        r�N)
rrrr0r]rarrr�r"r	r	r	r
rF s	rFc@s�eZdZedd�Zeddddddd�eddddd
dd�eddddddd �eddddddd!�gZgZdZedZdZ	dS)"�TestHelpTupleMetavarrr�z-wr�r)r�r�r��W1�W2z-xr�r��X1�X2z-yr�r��Y1�Y2�Y3z-zr�r��Z1z]        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�N)rHrI)rJrK)rLrMrN)rO)
rrrr0r]rarrr�r"r	r	r	r
rG8s!rGc@s�eZdZedddejdd�Zeddd�ed	dd
�gZeddd�ed
dd�gfgZdZ	e	dZ
dZdS)�TestHelpRawTextrr��formatter_classr�z7Keep the formatting
    exactly as it is written

here
z--foor�z-    foo help should also
appear as given herer�z	spam helpr�z?    This text
  should be indented
    exactly like it is here
z--barzbar helpz>        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)rrrr0r�RawTextHelpFormatterr]rarrr�r"r	r	r	r
rPSs	rPc@s�eZdZedddejdd�Zeddd�ed	dd
�gZeddd�ed
dd�gfgZdZ	e	dZ
dZdS)�TestHelpRawDescriptionrr�rQr�z7Keep the formatting
    exactly as it is written

here
z--foor�z4  foo help should not
    retain this odd formattingr�z	spam helpr�z?    This text
  should be indented
    exactly like it is here
z--barzbar helpz>        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 not retain this odd formatting

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

          --bar BAR   bar help
        r�N)rrrr0r�RawDescriptionHelpFormatterr]rarrr�r"r	r	r	r
rS�s	rSc@s�eZdZedddejdd�Zeddd�edd	d
dd�eddd
�eddddddd�gZeddd�eddedddd�gfgZ	dZ
e
dZdZdS)�TestHelpArgumentDefaultsrr�rQr�z--foor�z)foo help - oh and by the way, %(default)sz--barr�r�zbar helpr�z	spam helpr�r�r�r�Zwoodenzbadger helpr�z--bazr<r�zbaz helpzO        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)
rrrr0r�ArgumentDefaultsHelpFormatterr]rar�rrr�r"r	r	r	r
rU�s	!'rUc@s_eZdZedddd�Zedddddd�gZgZd	Zed
ZdZ	dS)
�TestHelpVersionActionrr�r�z-Vz	--versionr�r"z3.6z&        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�N)
rrrr0r]rarrr�r"r	r	r	r
rW�srWc	@szeZdZedd�Zedddddddej�ed	dd
�eddd�gZgZd
Z	e	dZ
dS)�TestHelpVersionActionSuppressrr�z-vz	--versionr�r"z1.0r�z--foozfoo helpr�z	spam helpz2        usage: PROG [-h] [--foo FOO] spam
        z�
        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        N)rrrr0r]rrrarrr�r	r	r	r
rX�s	rXc@sleZdZedddd�Zedddddd	�gZd
d�dD�ZdZedZdZ	dS)�TestHelpSubparsersOrderingrr�r�zdisplay some subcommandsz-vz	--versionr�r"z0.1cCsg|]}td|��qS)r')r0)r7r'r	r	r
r9s	z%TestHelpSubparsersOrdering.<listcomp>r�r�r�rruz6        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
        z        0.1
        N)r�r�r�rru)
rrrr0r]rarrr�r"r	r	r	r
rY	s		

rYc@sreZdZedddd�Zedddddd	�gZdZdd�eD�ZdZedZ	dZ
dS) �"TestHelpSubparsersWithHelpOrderingrr�r�zdisplay some subcommandsz-vz	--versionr�r"z0.1r��a subcommand helpr��b subcommand helpr��c subcommand helpr�d subcommand helpru�e subcommand helpcCs+g|]!\}}td|d|��qS)r'r�)r0)r7r'r�r	r	r
r93s	z-TestHelpSubparsersWithHelpOrdering.<listcomp>z6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        a�
        display some subcommands

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        z        0.1
        N�r�r[�r�r\�r�r]�rr^�rur_)r`rarbrcrd)rrrr0r]raZsubcommand_datarrr�r"r	r	r	r
rZ&s		
rZc@s�eZdZdd�Zedddddej�Zedde�ed	de�ed
de	dd�gZ
gZd
ZedZ
dZdS)�TestHelpMetavarTypeFormattercCs|S)Nr	)rir	r	r
�custom_typeTsz(TestHelpMetavarTypeFormatter.custom_typerr�r�rQr�r<z-bz-cr�z
SOME FLOATzF        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)rrrrfr0r�MetavarTypeHelpFormatterr]r�rrarrr�r"r	r	r	r
reQsrec@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS) �TestInvalidArgumentConstructorscOs)tj�}|jt|j||�dS)N)rrkrrur_)rr1r2r`r	r	r
�assertTypeErrorvsz/TestInvalidArgumentConstructors.assertTypeErrorcOs)tj�}|jt|j||�dS)N)rrkrr�r_)rr1r2r`r	r	r
�assertValueError{sz0TestInvalidArgumentConstructors.assertValueErrorcCsP|jddd�|jddd�|jddf�|jddi�dS)Nz-xr�z-y�callbackrdZ
callback_argsZcallback_kwargs)ri)rr	r	r
�test_invalid_keyword_arguments�sz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs5|j�x$ddgD]}|jd|�qWdS)Nr�r�r�)ri)rr�r	r	r
�test_missing_destination�s
z8TestInvalidArgumentConstructors.test_missing_destinationcCs|jd�|jd�dS)Nz--z---)rj)rr	r	r
�test_invalid_option_strings�s
z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs0|jddd�|jddttf�dS)Nz--foor<r�)rjr�r)rr	r	r
�test_invalid_type�sz1TestInvalidArgumentConstructors.test_invalid_typecCs�|jddd�|jddd�|jddd
�tj�}|jt��}|jddd�WdQRX|jd	t|j��dS)Nz-xr�rdr�z--foor�r�z
store-truezunknown action)r�r�)	rjrrkrr�r_rr�r�)rr`r�r	r	r
�test_invalid_action�sz3TestInvalidArgumentConstructors.test_invalid_actioncCsetj�}|jdd�|jt��}|jddd�WdQRX|jdt|j��dS)Nr�rdr�r�z+dest supplied twice for positional argument)rrkr_rr�rr�r�)rr`r�r	r	r
�test_multiple_dest�s	z2TestInvalidArgumentConstructors.test_multiple_destcCsoxhdddddgD]Q}xHtdt�tdd�td	d
�gD]}|jdd||�qGWqWdS)
Nr�r�r�r�r�r<r�r�r��abz-xr�)r�r�ri)rr�Zattrsr	r	r
�test_no_argument_actions�s
z8TestInvalidArgumentConstructors.test_no_argument_actionscCsPxIdddgD]8}|jdddd|�|jddd	d|�qWdS)
Nr�r�r�z-xr�rdr�r�r�)ri)rr�r	r	r
�!test_no_argument_no_const_actions�szATestInvalidArgumentConstructors.test_no_argument_no_const_actionsc
Cs�x�ddgD]�}|jdddd|�|jdddd|�xUdd	d
gD]D}|jdddd|d|�|jdddd|d|�qUWq
WdS)
Nr�r�z-xr�rr�r�rHr�r�r�rd)rj)rr�r�r	r	r
�#test_more_than_one_argument_actions�s
zCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCs4x-ddgD]}|jdddd|�q
WdS)Nr�r�z-xr�r�r�)ri)rr�r	r	r
�test_required_const_actions�sz;TestInvalidArgumentConstructors.test_required_const_actionscCsL|jddd�|jddddd�|jddddtj�dS)NZcommandr��parsersrr�r^)rirrk)rr	r	r
�"test_parsers_action_missing_params�szBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddd�dS)Nrdr�T)ri)rr	r	r
�test_required_positional�sz8TestInvalidArgumentConstructors.test_required_positionalc
s�Gdd�dt��G�fdd�dt�}tj�}|j�|jdd|d�d��|j�|jd	d|d�d��dS)
Nc@seZdZdS)zITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessN)rrrr	r	r	r
�Success�srzcs1eZdZd�fdd�Zdd�ZdS)zHTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFcs1|dkr-|�kr-|�kr-���dS)Nr�r	)r�option_stringsr�r�r�r�)rzr	r
r3�szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__c_sdS)Nr	)rr1r2r	r	r
rv�szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__N)rrrr3rvr	)rzr	r
ry�sryz--spamr�r�r�r�)rCr�rrkrr_)rryr`r	)rzr
�test_user_defined_action�sz8TestInvalidArgumentConstructors.test_user_defined_actionN)rrrrirjrlrmrnrorprqrsrtrurvrxryr|r	r	r	r
rhss	
rhc@s(eZdZdd�Zdd�ZdS)�TestActionsReturnedcCs|tj�}|jd�}|j|jd�|jdd�}|j|jd�|jdd�}|j|jd�dS)	Nz--foordz-bz--barr�z-xz-yr�)rrkr_r�r�)rr`r�r	r	r
r��szTestActionsReturned.test_destcCs�tj�}|jddddddddtd	d
dgdd
dddd�}|j|jd�|j|jd�|j|jd�|j|jt�|j|j	d
dg�|j|j
d
�|j|jd�|j|jd�dS)Nz--foor�r�r�r�r�r�r<r�rHr�r�r�r�ZBARr�r�)
rrkr_r�r�r�r�r�r<r�r�r�r�)rr`r�r	r	r
�	test_misc�szTestActionsReturned.test_miscN)rrrr�r~r	r	r	r
r}�s	r}c@s4eZdZdd�Zdd�Zdd�ZdS)�TestConflictHandlingcCs|jttjdd�dS)N�conflict_handlerrd)rr�rrk)rr	r	r
�
test_bad_typesz"TestConflictHandling.test_bad_typecCs\tj�}|jd�|jtj|jd�|jd�|jtj|jd�dS)Nz-xz--spam)rrkr_rr�)rr`r	r	r
�test_conflict_errors


z(TestConflictHandling.test_conflict_errorcCs�tj}|dddd�}|jddd�|jddd�|j|j�tjd	��|jd
dd�|jd
dd
�|j|j�tjd��dS)Nrr�r�Zresolvez-xr�zOLD XzNEW Xz�            usage: PROG [-h] [-x X]

            optional arguments:
              -h, --help  show this help message and exit
              -x X        NEW X
            z--spamr�ZOLD_SPAMZNEW_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
            )rrkr_r�r�r�r�)rr�r`r	r	r
�test_resolve_errors	
z'TestConflictHandling.test_resolve_errorN)rrrr�r�r�r	r	r	r
rs	rc@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestOptionalsHelpVersionActionsc
CsL|jt��}|j|j��WdQRX|j|j�|jj�dS)N)rrBrRr~r�r�r�rE)rr`r�r�r	r	r
�assertPrintHelpExit?sz3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|jt|j|�dS)N)rrBrR)rr`r1r	r	r
r~Dsz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCs_t�}|jdddddd�|j|d�|j|d�|jtt|d�dS)	Nz-vz	--versionr�r"z1.0z-hz--help�format_version)rVr_r�r�AttributeErrorrM)rr`r	r	r
�test_versionGs
	z,TestOptionalsHelpVersionActions.test_versionc
Csntdd�}|jdddddd�|jt��}|jdg�WdQRX|jd|jj�dS)	NrZPPPz-vz	--versionr�r"z%(prog)s 3.5zPPP 3.5
)rVr_rrBrRr�r�rE)rr`r�r	r	r
�test_version_formatNs
z3TestOptionalsHelpVersionActions.test_version_formatcCsetdd�}|jdddddd�|j|d�|j|d	�|jtt|d
�dS)Nr�Fz-vz	--versionr�r"z1.0z-hz--helpr�)rVr_r~rr�rM)rr`r	r	r
�test_version_no_helpUs
z4TestOptionalsHelpVersionActions.test_version_no_helpc
Csktdd�}|jddddd�|jt��}|jdg�WdQRX|jd|jj�dS)Nrr<z-Vr�r"z%(prog)s 3.7zXXX 3.7
)rVr_rrBrRr�r�rE)rr`r�r	r	r
�test_version_action\s
z3TestOptionalsHelpVersionActions.test_version_actioncCsStdd�}|j|d�|j|d�|j|d�|j|d�dS)Nr�Fz-hz--helpz-vz	--version)rVr~)rr`r	r	r
�test_no_helpcs
z,TestOptionalsHelpVersionActions.test_no_helpcCsyt�}|jddd�|jddd�|j|d�|j|d�|j|d�|jtt|d�dS)	Nz-xr�r�z-yr"z-vz	--versionr�)rVr_r�r~rr�rM)rr`r	r	r
�test_alternate_help_versionjs	z;TestOptionalsHelpVersionActions.test_alternate_help_versioncCs�t�}|jddddd�|jddd�|jd�ddd	d
dg}|dd
g}xm|D]e}x|D]}d||f}q{W|j||d�|j||d�|jtt|d�qnWdS)Nz	--versionr�r"z1.0z-xr�r�r�rdz-x barzbaz -xz--bad-optionzfoo bar bazz	%s %%s %sz-hz--helpr�)rVr_r�rr�rM)rr`Zvalid_prefixesZvalid_suffixes�prefix�suffixr�r	r	r
�!test_help_version_extra_argumentsss	


zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN)rrrr�r~r�r�r�r�r�r�r�r	r	r	r
r�<s	r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestStringscCs1x*ttgD]}|j||�|�q
WdS)N)r�r9r�)r�objZ
result_string�funcr	r	r
�assertStringEqual�szTestStrings.assertStringEqualcCshtjddddgddddd	d
ddd
dddgdddd�}d}|j||�dS)Nr{z--fooz-az-br�r�r<r�r�r�r�r�r�rHr�r�r�ZHELPr�ZMETAVARz�Action(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], help='HELP', metavar='METAVAR'))rryr�)r�optionrir	r	r
�
test_optional�s		zTestStrings.test_optionalcCsctjdgdddtddddd	d
ddgdd
dd�}dt}|j||�dS)Nr{r�r�r<r�r�r�g@r�g�?g�?r�zH HH Hr�zMV MV MVz�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'))rryrr�)r�argumentrir	r	r
�
test_argument�s		zTestStrings.test_argumentcCs2tjdddd�}d}|j||�dS)Nrdr�r�r�zNamespace(bar='spam', foo=42))rrr�)rrrir	r	r
�test_namespace�szTestStrings.test_namespacecCs3tjdd�}dtj}|j||�dS)Nrr�zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))rrk�
HelpFormatterr�)rr`rir	r	r
�test_parser�s
zTestStrings.test_parserN)rrrr�r�r�r�r�r	r	r	r
r��s
r�c@s4eZdZdd�Zdd�Zdd�ZdS)�
TestNamespacecCsdtj�}|jtt|d�tjdddd�}|j|jd�|j|jd�dS)Nr�r�r�r�r�)rrrr�rMr�r�r�)rrr	r	r
�test_constructor�s
zTestNamespace.test_constructorcCs�tjdddd�}tjdddd�}tjdd�}tjdd�}|j||�|j||�|j||�|j||�|j||�|j||k�|j||k�|j||k�|j||k�dS)Nr�rHr�r�)rrr�ZassertNotEqual�
assertTrue)rZns1Zns2Zns3Zns4r	r	r
�
test_equality�szTestNamespace.test_equalitycCsNtjdddd�}|j|jd�t�|j|jd�t�dS)Nr�rHr�r�)rrZassertIsrA�NotImplemented�__ne__)rrr	r	r
�$test_equality_returns_notimplemented�sz2TestNamespace.test_equality_returns_notimplementedN)rrrr�r�r�r	r	r	r
r��sr�c@s4eZdZdd�Zdd�Zdd�ZdS)�TestEncodingc	CsOtjj|�\}}|d7}tj|dd��}|j�WdQRXdS)Nz.pyr7zutf-8)rr�splitext�codecsr*rI)rrrnr�r	r	r
�_test_module_encoding�s
z"TestEncoding._test_module_encodingcCs|jtj�dS)N)r�r�__file__)rr	r	r
�test_argparse_module_encoding�sz*TestEncoding.test_argparse_module_encodingcCs|jt�dS)N)r�r�)rr	r	r
�"test_test_argparse_module_encoding�sz/TestEncoding.test_test_argparse_module_encodingN)rrrr�r�r�r	r	r	r
r��sr�c@seZdZdd�ZdS)�TestArgumentErrorcCs2d}tjd|�}|jt|�|�dS)Nz
my error here)rr�r�r�)rr|rZr	r	r
�test_argument_error�sz%TestArgumentError.test_argument_errorN)rrrr�r	r	r	r
r��sr�c@seZdZdd�ZdS)�TestArgumentTypeErrorc
Cswdd�}tdddd�}|jdd|�|jt��}|jd	g�WdQRX|jd
|jj�dS)NcSstjd��dS)Nzspam!)r�ArgumentTypeError)rir	r	r
r�sz<TestArgumentTypeError.test_argument_type_error.<locals>.spamrr�r�Fr�r<r<z-usage: PROG x
PROG: error: argument x: spam!
)rVr_rrBrRr�r�rF)rr�r`r�r	r	r
�test_argument_type_errors	z.TestArgumentTypeError.test_argument_type_errorN)rrrr�r	r	r	r
r�sr�c@s4eZdZdd�Zdd�Zdd�ZdS)�TestMessageContentErrorcCs�tdddd�}|jddt�|jddtdd	�|jd
dtdd�|jt��}|jg�WdQRXt|j�}|j|d�|j|d
�|j|d
�|jt��}|jdg�WdQRXt|j�}|j	|d�|j|d
�|j|d
�|jt��}|jddg�WdQRXt|j�}|j	|d�|j	|d
�|j|d
�dS)Nrr�rr��req_posr<z-req_optr�TZneed_oner�r��req_optZmyXargumentz
-req_opt=1)
rVr_r�r�rrBrRr��assertRegexr
)rr`r�r|r	r	r
�%test_missing_argument_name_in_messages,z=TestMessageContentError.test_missing_argument_name_in_messagecCs1tdddd�}|jddt�|jddtdd	�|jd
dtddd
d	�|jt��}|jg�WdQRXt|j�}|j	|d�|j	|d�|j
|d�|jt��}|jdg�WdQRXt|j�}|j	|d�|j
|d�|j
|d�dS)Nrr�rr�r�r<z	--req_optr�Tz	--opt_optr�r�r�r�Zopt_optz--req_opt=1)rVr_r�r��boolrrBrRr�r�r
)rr`r�r|r	r	r
�%test_optional_optional_not_in_message/s"z=TestMessageContentError.test_optional_optional_not_in_messagec
Cs�tdddd�}|jd�|jdddd	d
�|jt��}|jg�WdQRXt|j�}|j|d�|j|d�dS)Nrr�rr�r�Zoptional_positionalr�r�r�ra)	rVr_rrBrRr�r�r�r
)rr`r�r|r	r	r
�'test_optional_positional_not_in_messageBs
z?TestMessageContentError.test_optional_positional_not_in_messageN)rrrr�r�r�r	r	r	r
r�sr�c@seZdZdd�ZdS)�TestTypeFunctionCallOnlyOncecsi�fdd�}tj�}|jdd|dd�|jdj��}�jtdd	�|�dS)
Ncs�j|d�dS)Nzspam!�
foo_converted)r�)Zstring_to_convert)rr	r
r�TszLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamz--foor<r�r�z--foo spam!rdr�)rrkr_rRr~r�r4)rr�r`r1r	)rr
�!test_type_function_call_only_onceSs
z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrrr�r	r	r	r
r�Qsr�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestTypeFunctionCalledOnDefaultcsc�fdd�}tj�}|jdd|dd�|jg�}�jtdd�|�dS)Ncs�j|d�dS)Nrr�)r�)�int_to_convert)rr	r
r�dsz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spamz--foor<r�rrd)rrkr_rRr�r4)rr�r`r1r	)rr
�/test_type_function_call_with_non_string_defaultcs
zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcCs]dd�}tj�}|jdd|dd�|jg�}|jtdd�|�dS)	NcSsdS)Nr�r	)r�r	r	r
r�oszYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spamz--foor<r��0rdr�)rrkr_rRr�r4)rr�r`r1r	r	r
�+test_type_function_call_with_string_defaultns
zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCs]dd�}tj�}|jdd|dd�|jg�}|jtdd�|�dS)	NcSs|dS)Nr�r	)Zstr_to_convertr	r	r
�extendyszYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extendz--testr<r�r�rmz**)rrkr_rRr�r4)rr�r`r1r	r	r
�)test_no_double_type_conversion_of_defaultxs
zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultc
CsWtj�}|jddddtdgdd�|jg�}|j|jg�dS)Nz--testr�rmr<r�r�r�)rrkr_r�rRr�rm)rr`r1r	r	r
�test_issue_15906�s

z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrrr�r�r�r�r	r	r	r
r�as
r�c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestParseKnownArgscCstj�}|jf�dS)N)rrkrR)rr`r	r	r
�test_arguments_tuple�sz'TestParseKnownArgs.test_arguments_tuplecCstj�}|jg�dS)N)rrkrR)rr`r	r	r
�test_arguments_list�sz&TestParseKnownArgs.test_arguments_listcCs*tj�}|jd�|jd�dS)Nr�)r�)rrkr_rR)rr`r	r	r
�test_arguments_tuple_positional�s
z2TestParseKnownArgs.test_arguments_tuple_positionalcCs-tj�}|jd�|jdg�dS)Nr�)rrkr_rR)rr`r	r	r
�test_arguments_list_positional�s
z1TestParseKnownArgs.test_arguments_list_positionalcCsgtj�}|jd�|jdj��\}}|jtdd�|�|jddg|�dS)Nz--fooz--foo F --bar --bazrd�Fz--barz--baz)rrkr_r�r~r�r4)rr`r1�extrasr	r	r
�test_optionals�s

z!TestParseKnownArgs.test_optionalscCs�tj�}|jddddddt�|jddd	�|jd
�ddd
dddg}|j|�\}}|jtddddd
d�|�|jdd
dg|�dS)Nz-vr�r�r�rHr<z--spamr�r�r�r�rgz--foor�r�vr�r�T)rrkr_r�r�r�r4)rr`rlr1r�r	r	r
�
test_mixed�s
%zTestParseKnownArgs.test_mixedN)	rrrr�r�r�r�r�r�r	r	r	r
r��sr�c@sJeZdZdZdd�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 nargscCs)tj�}|jdd|d|�dS)Nz--foor�r�)rrkr_)rr�r�r`r	r	r
�do_test_no_exception�sz+TestAddArgumentMetavar.do_test_no_exceptionc
Cs_tj�}|jt�� }|jdd|d|�WdQRX|j|jjd|j�dS)Nz--foor�r�r)	rrkrr�r_r�r�r1�EXPECTED_MESSAGE)rr�r�r`r�r	r	r
�do_test_exception�s z(TestAddArgumentMetavar.do_test_exceptioncCs|jdddd�dS)Nr�r�r�)r�)rr	r	r
�test_nargs_None_metavar_string�sz5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdddt��dS)Nr�r�)r��tuple)rr	r	r
�test_nargs_None_metavar_length0�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCs|jdddd�dS)Nr�r�r�)r�)rr	r	r
�test_nargs_None_metavar_length1�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jdddd�dS)Nr�r�r�r�)r�r�)r�)rr	r	r
�test_nargs_None_metavar_length2�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jdddd�dS)Nr�r�r�r�r�)r�r�r�)r�)rr	r	r
�test_nargs_None_metavar_length3�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�"test_nargs_optional_metavar_string�sz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcCs|jdddt��dS)Nr�r�r�)r�r�)rr	r	r
�#test_nargs_optional_metavar_length0�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�#test_nargs_optional_metavar_length1�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jdddd�dS)Nr�r�r�r�r�)r�r�)r�)rr	r	r
�#test_nargs_optional_metavar_length2�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jdddd�dS)Nr�r�r�r�r�r�)r�r�r�)r�)rr	r	r
�#test_nargs_optional_metavar_length3�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�$test_nargs_zeroormore_metavar_string�sz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCs|jdddt��dS)Nr�r�r�)r�r�)rr	r	r
�%test_nargs_zeroormore_metavar_length0�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�%test_nargs_zeroormore_metavar_length1�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1cCs|jdddd�dS)Nr�r�r�r�r�)r�r�)r�)rr	r	r
�%test_nargs_zeroormore_metavar_length2�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2cCs|jdddd�dS)Nr�r�r�r�r�r�)r�r�r�)r�)rr	r	r
�%test_nargs_zeroormore_metavar_length3�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�#test_nargs_oneormore_metavar_string�sz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringcCs|jdddt��dS)Nr�r�r�)r�r�)rr	r	r
�$test_nargs_oneormore_metavar_length0sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�$test_nargs_oneormore_metavar_length1sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1cCs|jdddd�dS)Nr�r�r�r�r�)r�r�)r�)rr	r	r
�$test_nargs_oneormore_metavar_length2sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2cCs|jdddd�dS)Nr�r�r�r�r�r�)r�r�r�)r�)rr	r	r
�$test_nargs_oneormore_metavar_length3sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3cCs|jdddd�dS)Nr�z...r�r�)r�)rr	r	r
�#test_nargs_remainder_metavar_stringsz:TestAddArgumentMetavar.test_nargs_remainder_metavar_stringcCs|jdddt��dS)Nr�z...r�)r�r�)rr	r	r
�$test_nargs_remainder_metavar_length0sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0cCs|jdddd�dS)Nr�z...r�r�)r�)rr	r	r
�$test_nargs_remainder_metavar_length1sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1cCs|jdddd�dS)Nr�z...r�r�r�)r�r�)r�)rr	r	r
�$test_nargs_remainder_metavar_length2sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2cCs|jdddd�dS)Nr�z...r�r�r�r�)r�r�r�)r�)rr	r	r
�$test_nargs_remainder_metavar_length3sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3cCs|jdddd�dS)Nr�zA...r�r�)r�)rr	r	r
� test_nargs_parser_metavar_string!sz7TestAddArgumentMetavar.test_nargs_parser_metavar_stringcCs|jdddt��dS)Nr�zA...r�)r�r�)rr	r	r
�!test_nargs_parser_metavar_length0$sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length0cCs|jdddd�dS)Nr�zA...r�r�)r�)rr	r	r
�!test_nargs_parser_metavar_length1'sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length1cCs|jdddd�dS)Nr�zA...r�r�r�)r�r�)r�)rr	r	r
�!test_nargs_parser_metavar_length2*sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length2cCs|jdddd�dS)Nr�zA...r�r�r�r�)r�r�r�)r�)rr	r	r
�!test_nargs_parser_metavar_length3-sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length3cCs|jdddd�dS)Nr�rHr�r�)r�)rr	r	r
�test_nargs_1_metavar_string2sz2TestAddArgumentMetavar.test_nargs_1_metavar_stringcCs|jdddt��dS)Nr�rHr�)r�r�)rr	r	r
�test_nargs_1_metavar_length05sz3TestAddArgumentMetavar.test_nargs_1_metavar_length0cCs|jdddd�dS)Nr�rHr�r�)r�)rr	r	r
�test_nargs_1_metavar_length18sz3TestAddArgumentMetavar.test_nargs_1_metavar_length1cCs|jdddd�dS)Nr�rHr�r�r�)r�r�)r�)rr	r	r
�test_nargs_1_metavar_length2;sz3TestAddArgumentMetavar.test_nargs_1_metavar_length2cCs|jdddd�dS)Nr�rHr�r�r�r�)r�r�r�)r�)rr	r	r
�test_nargs_1_metavar_length3>sz3TestAddArgumentMetavar.test_nargs_1_metavar_length3cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�test_nargs_2_metavar_stringCsz2TestAddArgumentMetavar.test_nargs_2_metavar_stringcCs|jdddt��dS)Nr�r�r�)r�r�)rr	r	r
�test_nargs_2_metavar_length0Fsz3TestAddArgumentMetavar.test_nargs_2_metavar_length0cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�test_nargs_2_metavar_length1Isz3TestAddArgumentMetavar.test_nargs_2_metavar_length1cCs|jdddd�dS)Nr�r�r�r�r�)r�r�)r�)rr	r	r
�test_nargs_2_metavar_length2Lsz3TestAddArgumentMetavar.test_nargs_2_metavar_length2cCs|jdddd�dS)Nr�r�r�r�r�r�)r�r�r�)r�)rr	r	r
�test_nargs_2_metavar_length3Osz3TestAddArgumentMetavar.test_nargs_2_metavar_length3cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�test_nargs_3_metavar_stringTsz2TestAddArgumentMetavar.test_nargs_3_metavar_stringcCs|jdddt��dS)Nr�r�r�)r�r�)rr	r	r
�test_nargs_3_metavar_length0Wsz3TestAddArgumentMetavar.test_nargs_3_metavar_length0cCs|jdddd�dS)Nr�r�r�r�)r�)rr	r	r
�test_nargs_3_metavar_length1Zsz3TestAddArgumentMetavar.test_nargs_3_metavar_length1cCs|jdddd�dS)Nr�r�r�r�r�)r�r�)r�)rr	r	r
�test_nargs_3_metavar_length2]sz3TestAddArgumentMetavar.test_nargs_3_metavar_length2cCs|jdddd�dS)Nr�r�r�r�r�r�)r�r�r�)r�)rr	r	r
�test_nargs_3_metavar_length3`sz3TestAddArgumentMetavar.test_nargs_3_metavar_length3N)3rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r
r��s`r�c@s(eZdZdd�Zdd�ZdS)�TestImportStarcCs.x'tjD]}|jtt|��q
WdS)N)r�__all__r�r�)rr'r	r	r
rmiszTestImportStar.testcCsBdd�tt�j�D�}|jt|�ttj��dS)NcSsFg|]<\}}|jd�p*|dkstj|�s|�qS)rn�ngettext)�
startswith�inspectZismodule)r7r'rdr	r	r
r9os		zJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>)r?rr;r�r:r�)rr;r	r	r
�'test_all_exports_everything_but_modulesms	z6TestImportStar.test_all_exports_everything_but_modulesN)rrrrmrr	r	r	r
r�gsr�cCs&tjt�it_t�t_dS)N)rZrun_unittestrrFrHrrSr	r	r	r
�	test_mainvs
	r�__main__)�r�rrr"r rKr�rZunittestr�iorrmrrrrr�rr0r4rCrBrUrkrVr<r[r�r\r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr	rrrrrrrrrrr!r#r/r6rFrKrOrQrSZskipIfr�rWrXrYrZr`rcrfrhrnrzr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr r$r%r&r(r)r-r/r0r1r4r5r6r7r8r9r:r;r=r>r?r@rArBrCrDrErFrGrPrSrUrWrXrYrZrerhr}rr�r�r�r�r�r�r�r�r�r�r�r�rrr	r	r	r
�<module>s�
 q	








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