403Webshell
Server IP : 118.27.122.248  /  Your IP : 216.73.216.15
Web Server : Apache
System : Linux web0264.sh.tyo1 4.18.0-553.79.1.lve.el7h.x86_64 #1 SMP Wed Oct 15 16:34:46 UTC 2025 x86_64
User : c9415830 ( 11735)
PHP Version : 8.4.17
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/alt/python36/lib64/python3.6/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/alt/python36/lib64/python3.6/test/__pycache__/test_argparse.cpython-36.opt-2.pyc
3

�
�^u��@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��Zoeod��Zpeod��Zqeod��ZrGd�d��d�e�ZsGd�d„d�ee�ZtGd�dĄd�ee�ZuGd�dƄd�ee�ZvGd�dȄd�e�ZwejxeyedɃ�o�ejz�dkdʃGd�d̄d�ee��Z{Gd�d΄d�ee�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�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��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d�d��de�e��Z�G�d	�d
��d
e�Z�G�d�d��de�Z�G�d
�d��de�Z�G�d�d��de�Z�efZe��dei�Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d�d��de��Z�G�d �d!��d!e��Z�G�d"�d#��d#e��Z�G�d$�d%��d%e��Z�G�d&�d'��d'e��Z�G�d(�d)��d)e��Z�G�d*�d+��d+e��Z�G�d,�d-��d-e��Z�G�d.�d/��d/e��Z�G�d0�d1��d1e��Z�G�d2�d3��d3e��Z�G�d4�d5��d5e��Z�G�d6�d7��d7e��Z�G�d8�d9��d9e��Z�G�d:�d;��d;e��Z�G�d<�d=��d=e��Z�G�d>�d?��d?e��Z�G�d@�dA��dAe��Z�G�dB�dC��dCe��Z�G�dD�dE��dEe��Z�G�dF�dG��dGe��Z�G�dH�dI��dIe��Z�G�dJ�dK��dKe��Z�G�dL�dM��dMe��Z�G�dN�dO��dOe��Z�G�dP�dQ��dQe��Z�G�dR�dS��dSe��Z�G�dT�dU��dUe��Z�G�dV�dW��dWe��Z�G�dX�dY��dYe��Z�G�dZ�d[��d[e��Z�G�d\�d]��d]e�Z�G�d^�d_��d_e�Z�G�d`�da��dae�Z�G�db�dc��dce�Z�G�dd�de��dee�Z�G�df�dg��dge�Z�G�dh�di��die�Z�G�dj�dk��dke�Z�G�dl�dm��dme�Z�G�dn�do��doe�Z�G�dp�dq��dqe�Z�G�dr�ds��dse�Z�G�dt�du��due�Z�G�dv�dw��dwe�Z�G�dx�dy��dye�Z�G�dz�d{��d{e�ZӐd|�d}�Z�eՐd~k�r
eԃdS(�N)�StringIO)�support)�mockc@seZdZdS)�StdIOBufferN)�__name__�
__module__�__qualname__�r	r	�2/opt/alt/python36/lib64/python3.6/test_argparse.pyrsrc@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
rsrc@s$eZdZdd�Zdd�Zdd�ZdS)�TempDirMixincCs$tj�|_tj�|_tj|j�dS)N)�tempfileZmkdtemp�temp_dir�os�getcwd�old_dir�chdir)rr	r	r
r"s

zTempDirMixin.setUpcCsftj|j�xFtj|jdd�D]2\}}}x&|D]}tjtjj|j|�tj	�q.WqWt
j|jd�dS)NF)�topdownT)rrr�walkr�chmod�path�join�stat�S_IWRITE�shutilZrmtree)r�root�dirs�files�namer	r	r
�tearDown's

"zTempDirMixin.tearDownc
CsBtjj|j|�}t|d��}|j|�WdQRXtj|tj�dS)N�w)	rrrr�open�writerr�S_IREAD)r�filenameZ	file_path�filer	r	r
�create_readonly_file.sz!TempDirMixin.create_readonly_fileN)rrrrr&r-r	r	r	r
r src@seZdZdd�ZdS)�SigcOs||_||_dS)N)�args�kwargs)rr/r0r	r	r
�__init__6szSig.__init__N)rrrr1r	r	r	r
r.4sr.c@s$eZdZdd�Zdd�Zdd�ZdS)�NScKs|jj|�dS)N)�__dict__�update)rr0r	r	r
r1=szNS.__init__cCs4t|jj��}djdd�|D��}dt|�j|fS)Nz, cSsg|]}d|�qS)z%s=%rr	)�.0�tupr	r	r
�
<listcomp>BszNS.__repr__.<locals>.<listcomp>z%s(%s))�sortedr3�itemsr�typer)rZsorted_itemsZ	kwarg_strr	r	r
�__repr__@szNS.__repr__cCst|�t|�kS)N)�vars)r�otherr	r	r
�__eq__Esz	NS.__eq__N)rrrr1r;r>r	r	r	r
r2;sr2c@seZdZddd�ZdS)�ArgumentParserErrorNcCs,tj||||�||_||_||_||_dS)N)�	Exceptionr1�message�stdout�stderr�
error_code)rrArBrCrDr	r	r
r1Ks
zArgumentParserError.__init__)NNN)rrrr1r	r	r	r
r?Isr?c
Os�ttjt�sttjt�r"|||�Stj}tj}t�t_t�t_z�y\|||�}xLtt|��D]<}t||�tjkrzt|||�t||�tjkrZt|||�qZW|St	k
r�tj
�dj}tjj�}tjj�}	t
d||	|��YnXWd|t_|t_XdS)N��
SystemExit)�
isinstance�sysrCrrB�listr<�getattr�setattrrF�exc_info�code�getvaluer?)
�
parse_argsr/r0Z
old_stdoutZ
old_stderr�result�keyrMrBrCr	r	r
�stderr_to_parser_errorSs,



rRcs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�ErrorRaisingArgumentParsercstt|�j}t|f|�|�S)N)�superrSrOrR)rr/r0rO)�	__class__r	r
rOusz%ErrorRaisingArgumentParser.parse_argscstt|�j}t|f|�|�S)N)rTrS�exitrR)rr/r0rV)rUr	r
rVyszErrorRaisingArgumentParser.exitcstt|�j}t|f|�|�S)N)rTrS�errorrR)rr/r0rW)rUr	r
rW}sz ErrorRaisingArgumentParser.error)rrrrOrVrW�
__classcell__r	r	)rUr
rSssrSc@seZdZdd�ZdS)�ParserTesterMetaclasscCs�|dkrdSt|d�st�|_t|d�s.t|_dd�}dd�}dd	�}d
d�}dd
�}Gdd�dt�}	x0|||gD]"}
x||gD]}|	||
|�q�WqrWdS)N�ParserTestCase�parser_signature�parser_classcSs"x|D]}|j|j|j�qWdS)N)�add_argumentr/r0)�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]r/r0)r^r_�groupr`r	r	r
�	one_group�s

z1ParserTesterMetaclass.__init__.<locals>.one_groupcSs8x2t|�D]&\}}|jd|�}|j|j|j�q
WdS)Nzfoo:%i)�	enumeratercr]r/r0)r^r_�ir`rdr	r	r
�many_groups�sz3ParserTesterMetaclass.__init__.<locals>.many_groupscSs
|j|�S)N)rO)r^r/r	r	r
�listargs�sz0ParserTesterMetaclass.__init__.<locals>.listargscSs,tj}|dg|t_z|j�S|t_XdS)Nr)rH�argvrO)r^r/Z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}xf|j|jgD]V}|j}|||f}dj|�}	|fdd�}
y
|	|
_Wntk
rrYnXt||	|
�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�	TypeErrorrK)rZ
tester_cls�
add_argumentsrOZadd_arguments_nameZparse_args_namermZ	func_name�names�	test_namernr	r	r
r1�s


z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__cSs.|jj}|jj}|j||�}|j||j�|S)N)r[r/r0r\ror_)r�testerr/r0r^r	r	r
�_get_parser�s
z<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parserc
SsJ|j|�}x:|jD]0}|j�}|jt|d��|j|�WdQRXqWdS)N)�msg)rx�failures�split�assertRaisesr?rO)rrwr^�args_strr/r	r	r
rq�s

z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failurescSsL|j|�}x<|jD]2\}}t|t�r,|j�}|j||�}|j||�qWdS)N)rx�	successesrG�strr{rp�assertEqual)rrwr^r/�expected_nsZ	result_nsr	r	r
rr�s

z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successesN)rrrr1rxrqrrr	r	r	r
�AddTests�sr�)�hasattrr.r[rSr\�object)�clsr%�bases�bodydictrarerhrirkr�rtrOr	r	r
r1�s

	-zParserTesterMetaclass.__init__N)rrrr1r	r	r	r
rY�srYrZc@sdeZdZed�gZdddddgZdedd�fd	edd�fd
edd�fdedd�fd
edd�fgZdS)�TestOptionalsSingleDashz-x�az--fooz-x --fooz-x -y�N)�xz-x az-xaz-x -1z-1z-x-1)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@s
eZdZeddd�edddd�ed�gZd	d
ddd
ddddddgZdedddd�fdedddd�fdeddd	d�fdeddd	d�fdeddd	d�fdeddd	d�fdeddd	d�fdeddd	d�fdedddd�fdedddd�fd eddd	d�fd!eddd	d�fgZdS)"�TestOptionalsSingleDashCombinedz-x�
store_true)�actionz-yyy�store_const�*)r��constz-zr�z--fooz-xaz-x --fooz-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzar�FN)r��yyy�zTz-zaz-z az-xzaz-xz az-x -zaz-x -z az-yz-x -yyy -zaz-x -yyy -z a)rrrr.r_rzr2r~r	r	r	r
r�s"

r�c@sfeZdZed�gZddddddgZdedd	�fd
edd	�fdedd	�fd
edd	�fdedd	�fgZdS)�TestOptionalsSingleDashLongz-foor�z--fooz
-foo --fooz-foo -yz-fooar�N)rbz-foo az-foo -1z-1z-fo az-f a)rrrr.r_rzr2r~r	r	r	r
r�"s
r�c@s�eZdZed�ed�ed�gZddddddd	gZd
edddd�fd
edddd�fdedddd�fdedddd�fdedddd�fdedddd�fdedddd�fgZdS)�&TestOptionalsSingleDashSubsetAmbiguousz-fz-foobarz-foorabz-fooz-foz-foo bz-foobz-foobaz-foorar�N)�f�foobar�foorabz-f ar�z-faz-foaZoaz-fooaZooaz	-foobar az	-foorab a)rrrr.r_rzr2r~r	r	r	r
r�0sr�c@s�eZdZed�ed�gZddddddd	gZd
eddd�fd
eddd�fdeddd�fdeddd�fdeddd�fdeddd�fdeddd�fgZdS)� TestOptionalsSingleDashAmbiguousz-foobarz-foorabz-fz-f az-faz-foaz-fooz-foz-foo br�N)r�r�z-foob ar�z-foor az-fooba az-foora az	-foobar az	-foorab a)rrrr.r_rzr2r~r	r	r	r
r�@sr�c@s^eZdZeddd�gZddddddgZd	ed
d�fdedd�fd
edd�fdedd�fgZd
S)�TestOptionalsNumericz-1�one)�destr�z-1 --fooz-1 -yz-1 -1z-1 -2r�N)r�z-1 az-1az-1-2z-2)rrrr.r_rzr2r~r	r	r	r
r�Psr�c@sfeZdZed�gZddddddgZdedd	�fd
edd	�fdedd	�fded
d	�fded
d	�fgZdS)�TestOptionalsDoubleDashz--fooz-fz-f ar�z--foo -xz--foo --barr�N)rbz--foo az--foo=az
--foo -2.5z-2.5z
--foo=-2.5)rrrr.r_rzr2r~r	r	r	r
r�]s
r�c
@s�eZdZeddd�ed�gZddddd	d
gZdedd
d�fdeddd�fdedd
d�fdedd
d�fdedd
d�fdedd
d�fgZd
S)�#TestOptionalsDoubleDashPartialMatchz--badgerr�)r�z--batz--barz--bz--baz--b=2z--ba=4z	--badge 5r�FN)�badgerZbatz--bat X�Xz--badTz--badgz--badge)rrrr.r_rzr2r~r	r	r	r
r�ks

r�c@s�eZdZeddd�ed�gZdddddgZd	ed
dd�fd
ed
dd�fded
dd�fdeddd�fdeddd�fdeddd�fdeddd�fgZdS)�"TestOptionalsDoubleDashPrefixMatchz--badgerr�)r�z--baz--barz--bz--b=2z	--badge 5r�FN)r�Zbaz--ba Xr�z--ba=Xz--badTz--badgz--badge)rrrr.r_rzr2r~r	r	r	r
r�}s

r�c@s�eZdZeddd�ed�edddd�gZdd	d
ddd
gZdedddd�fdedddd�fdedd
dd�fdedd
dd�fdedddd�fdedddd�fgZdS)�TestOptionalsSingleDoubleDashz-fr�)r�z--barz-bazr�r�)r�r�z-fbarz-fbazz-bazfz-b B�Br�FN)r��bar�bazTz--ba Bz
-f --bar Bz-f -bz-ba -f)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@s�eZdZeddd�Zeddd�ed�edd	d
d�gZdd
ddddddddddgZdedddd�fdedddd�fdedddd�fdedddd�fdeddd
d�fdeddd
d�fgZdS) �!TestOptionalsAlternatePrefixCharsz+:/F)�prefix_chars�add_helpz+fr�)r�z::barz/bazr�r�)r�r�z--barz-fbarz-b Br�z-fz--bar Bz-bazz-hz--helpz+hz::helpz/helpr�N)r�r�r�Tz::ba Bz
+f ::bar Bz+f /bz/ba +f)	rrrr.r[r_rzr2r~r	r	r	r
r��s
r�c@s�eZdZeddd�Zeddd�ed�edd	d
d�gZdd
dddddgZdedddd�fdedddd�fdedddd�fdedddd�fdeddd
d�fdeddd
d�fgZdS)�*TestOptionalsAlternatePrefixCharsAddedHelpz+:/T)r�r�z+fr�)r�z::barz/bazr�r�)r�r�z--barz-fbarz-b Br�z-fz--bar Bz-bazr�FN)r�r�r�z::ba Bz
+f ::bar Bz+f /bz/ba +f)	rrrr.r[r_rzr2r~r	r	r	r
r��s
r�c	@s�eZdZeddd�Zeddd�eddd�eddd�gZd	d
ddd
gZdedddd�fdedddd�fdedddd�fdedddd�fgZdS)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-F)r�r�z-xr�)r�z+yz+zz-wz-xyzz+xz-yz+xyzr�)r��yr�Tz+y -xz+yz -xN)	rrrr.r[r_rzr2r~r	r	r	r
r��s

r�c@sleZdZedddddd�gZddd	d
gZdedd
�fdedd
�fdedd
�fdedd
�fdedd
�fgZdS)�TestOptionalsShortLongz-vz	--verbosez-nz--noisyr�)r�z
--x --verbosez-Nr�z-v xr�F)�verboseTN)rrrr.r_rzr2r~r	r	r	r
r��sr�c@sbeZdZed�eddd�gZdgZdeddd	�fd
eddd	�fded
dd	�fdeddd	�fgZdS)�TestOptionalsDestz	--foo-barz--baz�zabbaz)r�r�z--foo-bar fr�N)Zfoo_barr�z--baz g�gz--foo-bar h --baz i�hrgz--baz j --foo-bar k�k�j)rrrr.r_rzr2r~r	r	r	r
r��sr�c@sTeZdZed�eddd�gZdgZdeddd�fd	ed
dd�fdeddd�fgZdS)
�TestOptionalsDefaultz-xz-yr�)�defaultr�r�N)r�r�z-xxr�z-yyr�)rrrr.r_rzr2r~r	r	r	r
r�s
r�c@s:eZdZed�gZddgZdedd�fdedd�fgZdS)�TestOptionalsNargsDefaultz-xr�r�N)r�z-x a)rrrr.r_rzr2r~r	r	r	r
r�
s
r�c@s@eZdZeddd�gZddgZdedd�fdedgd�fgZdS)	�TestOptionalsNargs1z-xrE)�nargsr�r�N)r�z-x a)rrrr.r_rzr2r~r	r	r	r
r�sr�c@sLeZdZeddd�gZddddddgZd	ed
d�fdedd
dgd�fgZd
S)�TestOptionalsNargs3z-x�)r�r�z-x az-x a bza -xza -x br�N)r�z-x a b c�b�c)rrrr.r_rzr2r~r	r	r	r
r�#sr�c@s�eZdZeddd�edddd�edddd	�ed
deddd
�gZdgZdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fd
eddddd�fdeddddd�fg	ZdS)�TestOptionalsNargsOptionalz-w�?)r�z-xr�)r�r�z-y�spam)r�r�z-z�42Z84)r�r:r�r��2r�N�T)r'r�r�r�z-w 2z-x 2z-y 2z-z 2�)	rrrr.�intr_rzr2r~r	r	r	r
r�.s
r�c@s�eZdZeddd�edddd�gZdgZded	dd
�fdegdd
�fdedgdd
�fdedd
gdd
�fded	gd
�fded	dgd
�fded	dd
gd
�fgZd	S)�TestOptionalsNargsZeroOrMorez-x�*)r�z-yr�)r�r�r�r�N)r�r�z-x az-x a br�z-y az-y a b)rrrr.r_rzr2r~r	r	r	r
r�Es
r�c	@s�eZdZeddd�edddd�gZddddd	gZd
eddd�fd
edgdd�fdeddgdd�fdeddgd�fdedddgd�fgZdS)�TestOptionalsNargsOneOrMorez-x�+)r�z-yr�)r�r�r�za -xza -y br�N)r�r�z-x az-x a br�z-y az-y a b)rrrr.r_rzr2r~r	r	r	r
r�Xs
r�c
@s�eZdZeddd�edeed�d�gZddd	d
dgZded
d
d�fdedd
d�fdedd
d�fded
dd�fded
dd�fdeddd�fgZ	d
S)�TestOptionalsChoicesz-f�abc)�choicesz-g�)r:r�r�z-f dz-fadz-gaz-g 6r�N)r�r�z-f az-f cr�z-g 0rz-g 03r�z-fb -g4r��)
rrrr.r��ranger_rzr2r~r	r	r	r
r�is
r�c@s@eZdZededd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsRequiredz-xT)r:�requiredr�r�z-x 1rE)r�z-x42r�N)	rrrr.r�r_rzr2r~r	r	r	r
r�zsr�c@s>eZdZeddd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsActionStorez-x�store)r�r�za -xr�N)r�z-xfoorb)rrrr.r_rzr2r~r	r	r	r
r��sr�c@s>eZdZedded�gZdgZdedd�fdeed�fgZdS)�TestOptionalsActionStoreConstz-yr�)r�r�r�r�N)r�)	rrrr.r�r_rzr2r~r	r	r	r
r��sr�c@s@eZdZeddd�gZdddgZdedd	�fded
d	�fgZdS)�TestOptionalsActionStoreFalsez-z�store_false)r�r�z-zaz-z ar�T)r�FN)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@s@eZdZeddd�gZdddgZdedd	�fded
d	�fgZdS)�TestOptionalsActionStoreTruez--appler�)r�r�z	--apple=bz	--apple br�F)ZappleTN)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sTeZdZeddd�gZddddgZdedd	�fd
edgd	�fdeddgd	�fgZdS)
�TestOptionalsActionAppendz--baz�append)r�r�za --bazz	--baz a br�N)r�z--baz az--baz a --baz br�)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@s^eZdZedddgd�gZddddgZdedgd	�fd
eddgd	�fdedddgd	�fgZd
S)�$TestOptionalsActionAppendWithDefaultz--bazr�r�)r�r�r�za --bazz	--baz a br�)r�z--baz az--baz a --baz br�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sheZdZedded�edddd�gZddd	d
dgZded
d�fdeegd�fdeededgd�fgZd
S)�TestOptionalsActionAppendConstz-b�append_const)r�r�z-cr�r�)r�r�r�za -cz-bxz-b xr�N)r�z-b -cx -b -cyzr��yz)	rrrr.r@r_rzr2r~r	r	r	r
r��sr�c	@sreZdZeddedgd�edddd�gZd	dd
ddgZd
edgd�fdedegd�fdedededgd�fgZdS)�)TestOptionalsActionAppendConstWithDefaultz-br�r�)r�r�r�z-cr�r�)r�r�r�za -cz-bxz-b xr�)r�z-b -cx -b -cyzr�r�N)	rrrr.r@r_rzr2r~r	r	r	r
r��sr�c@sBeZdZeddd�gZddddgZded	d
�fdedd
�fgZd	S)�TestOptionalsActionCountz-x�count)r�r�z-x az-x bz	-x a -x br�N)r�rE)rrrr.r_rzr2r~r	r	r	r
r��sr�c	@sreZdZed�ed�eddd�gZddgZded	d	d
d�fded
d	d
d�fded	dd
d�fdedd	dd�fgZd	S)�"TestOptionalsAllowLongAbbreviationz--fooz--foobazz--foobler�)r�z--foob 5z--foobr�NF)rbZfoobazZfooblez--foo 7�7z	--fooba ar�z--foobl --foo gr�T)rrrr.r_rzr2r~r	r	r	r
r��sr�c@speZdZedd�Zed�eddd�ed�gZdd	d
dgZded
dd
d�fdeddd
d�fdedddd�fgZd
S)�%TestOptionalsDisallowLongAbbreviationF)�allow_abbrevz--fooz--foodler�)r�z--foonlyz-foon 3z--foon 3z--foodz--food --foo 2r�N)rbZfoodleZfoonlyz--foo 3�3z--foonly 7 --foodle --foo 2r�Tr�)	rrrr.r[r_rzr2r~r	r	r	r
r�s


r�c@s0eZdZed�gZdddgZdedd�fgZdS)�TestPositionalsNargsNonerbr�z-xza br�)rbN)rrrr.r_rzr2r~r	r	r	r
r�s

r�c@s6eZdZeddd�gZdddgZdedgd�fgZd	S)
�TestPositionalsNargs1rbrE)r�r�z-xza br�)rbN)rrrr.r_rzr2r~r	r	r	r
r�#s
r�c@s:eZdZeddd�gZddddgZdedd	gd
�fgZdS)�TestPositionalsNargs2rbr�)r�r�r�z-xza b cza br�)rbN)rrrr.r_rzr2r~r	r	r	r
r�-sr�c@sNeZdZeddd�gZdgZdegd�fdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsZeroOrMorerbr�)r�z-xr�)rbr�za br�N)rrrr.r_rzr2r~r	r	r	r
r�7s
r�c@sPeZdZedddd�gZdgZdedd�fdedgd�fd	edd
gd�fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultrbr�r�)r�r�z-xr�)rbr�za br�N)rrrr.r_rzr2r~r	r	r	r
r�Cs
r�c@sDeZdZeddd�gZddgZdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsOneOrMorerbr�)r�r�z-xr�)rbza br�N)rrrr.r_rzr2r~r	r	r	r
r�Osr�c@s>eZdZeddd�gZddgZdedd�fd	ed	d�fgZdS)
�TestPositionalsNargsOptionalrbr�)r�z-xza br�N)rbr�)rrrr.r_rzr2r~r	r	r	r
r�Zsr�c@s@eZdZedddd�gZddgZdedd�fd	ed	d�fgZd
S)�#TestPositionalsNargsOptionalDefaultrbr�r�)r�r�z-xza br�)rbr�N)rrrr.r_rzr2r~r	r	r	r
r�esr�c@sDeZdZeddedd�gZdddgZded	d
�fdedd
�fgZd
S)�,TestPositionalsNargsOptionalConvertedDefaultrbr�r�)r�r:r�z-xza bz1 2r�r�)rb�1rEN)	rrrr.r�r_rzr2r~r	r	r	r
r�ps
r�c@s:eZdZed�ed�gZddddgZdeddd	�fgZd
S)�TestPositionalsNargsNoneNonerbr�r�z-xr�za b cza br�)rbr�N)rrrr.r_rzr2r~r	r	r	r
r�sr�c@s@eZdZed�eddd�gZddddgZd	edd
gd�fgZdS)
�TestPositionalsNargsNone1rbr�rE)r�r�z--foor�za b cza br�)rbr�N)rrrr.r_rzr2r~r	r	r	r
r��sr�c@sDeZdZeddd�ed�gZddddd	gZd
eddgdd
�fgZdS)�TestPositionalsNargs2Nonerbr�)r�r�r�z--foor�za bza b c dza b cr�r�)rbr�N)rrrr.r_rzr2r~r	r	r	r
r��sr�c@s\eZdZed�eddd�gZddgZdedgd�fd	edd
gd�fdedd
dgd�fgZd
S)�"TestPositionalsNargsNoneZeroOrMorerbr�r�)r�r�z--foor�)rbr�za br�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sPeZdZed�eddd�gZdddgZdedd	gd
�fdedd	dgd
�fgZd
S)�!TestPositionalsNargsNoneOneOrMorerbr�r�)r�r�z--foor�za br�)rbr�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sJeZdZed�eddd�gZdddgZdedd	d
�fdeddd
�fgZd	S)
� TestPositionalsNargsNoneOptionalrbr�r�)r�r�z--fooza b cr�N)rbr�za br�)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@s\eZdZeddd�ed�gZddgZdegdd�fd	edgd
d�fdedd
gdd�fgZd
S)�"TestPositionalsNargsZeroOrMoreNonerbr�)r�r�r�z--foor�)rbr�za br�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sPeZdZeddd�ed�gZdddgZdedgd	d
�fdedd	gdd
�fgZd
S)�!TestPositionalsNargsOneOrMoreNonerbr�)r�r�r�z--foor�za br�)rbr�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sLeZdZedddd�ed�gZdddgZd	edd	d
�fded	dd
�fgZd
S)� TestPositionalsNargsOptionalNonerbr�r�)r�r�r�r�z--fooza b cr�)rbr�za br�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sXeZdZeddd�eddd�gZdddgZd	edd
ggd�fdedd
gd
gd�fgZdS)�TestPositionalsNargs2ZeroOrMorerbr�)r�r�r�r�z--foor�za br�)rbr�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r��s
r�c@sHeZdZeddd�eddd�gZdddd	gZd
eddgdgd
�fgZdS)�TestPositionalsNargs2OneOrMorerbr�)r�r�r�r�z--foor�za bza b cr�r�)rbr�N)rrrr.r_rzr2r~r	r	r	r
r��sr�c@sXeZdZeddd�eddd�gZdddd	gZd
eddgdd
�fdeddgdd
�fgZdS)�TestPositionalsNargs2Optionalrbr�)r�r�r�r�z--foor�za b c dza br�N)rbr�za b cr�)rrrr.r_rzr2r~r	r	r	r
r��sr�c@sfeZdZeddd�eddd�gZddgZdegdgd	�fd
edgdgd	�fdeddgd
gd	�fgZdS)�TestPositionalsNargsZeroOrMore1rbr�)r�r�rEr�z--foor�)rbr�za br�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r�s
r�c@sXeZdZeddd�eddd�gZdddgZd	edgd
gd�fdedd
gd
gd�fgZdS)�TestPositionalsNargsOneOrMore1rbr�)r�r�rEr�z--foor�za br�)rbr�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r�
s
r�c@sReZdZeddd�eddd�gZdddgZd	ed
d	gd�fded	d
gd�fgZd
S)�TestPositionalsNargsOptional1rbr�)r�r�rEr�z--fooza b cr�N)rbr�za br�)rrrr.r_rzr2r~r	r	r	r
r�s
r�c@s^eZdZed�eddd�eddd�gZddd	gZd
ed	gdgd�fd
ed	dgdgd�fgZdS)�#TestPositionalsNargsNoneZeroOrMore1rbr�r�)r�r�rEr�z--foor�za br�)rbr�r�za b cr�N)rrrr.r_rzr2r~r	r	r	r
r�#s

r�c@sdeZdZed�eddd�eddd�gZddd	d
gZded	d
gdgd
�fded	d
dgdgd
�fgZdS)�"TestPositionalsNargsNoneOneOrMore1rbr�r�)r�r�rEr�z--foor�r�za b cr�)rbr�r�za b c d�dN)rrrr.r_rzr2r~r	r	r	r
r�2s
r�c@s^eZdZed�edddd�eddd�gZd	d
dgZdeddd
gd�fdedd
dgd�fgZdS)�!TestPositionalsNargsNoneOptional1rbr�r�g�?)r�r�r�rE)r�r�z--foor�za br�)rbr�r�za b cr�N)rrrr.r_rzr2r~r	r	r	r
rAs
rc@s\eZdZeddd�edddd�gZddgZd	ed
dd�fdeddd�fd
eddd�fgZd
S)�$TestPositionalsNargsOptionalOptionalrbr�)r�r�r�)r�r�z--fooza b cr�N)rbr�r�za br�)rrrr.r_rzr2r~r	r	r	r
rPs
rc@sleZdZeddd�eddd�gZdgZdedgd	�fd
ed
gd	�fded
dgd	�fd
ed
ddgd	�fgZdS)�&TestPositionalsNargsOptionalZeroOrMorerbr�)r�r�r�z--foor�N)rbr�r�za br�za b cr�)rrrr.r_rzr2r~r	r	r	r
r_src@sbeZdZeddd�eddd�gZddgZded	dgd
�fdeddgd
�fd
edddgd
�fgZd	S)�%TestPositionalsNargsOptionalOneOrMorerbr�)r�r�r�r�z--foor�N)rbr�za br�za b cr�)rrrr.r_rzr2r~r	r	r	r
rls
rc@sHeZdZeded�d�gZdddddgZd	ed	d
�fdedd
�fgZdS)
�TestPositionalsChoicesStringr�Zabcdefg)r�r�z--foor�r��efr�)r�r�N)	rrrr.�setr_rzr2r~r	r	r	r
rxsrc@sJeZdZedeed�d�gZdddddgZd	ed
d�fded
d�fgZ	dS)�TestPositionalsChoicesIntr��)r:r�r�z--foor�r�r�4r�)r��15�N)
rrrr.r�r�r_rzr2r~r	r	r	r
r�src@sLeZdZeddd�edddd�gZdddd	d
gZdeddd
ggd�fgZdS)�TestPositionalsActionAppendr�r�)r�r�)r�r�r�z--foor�za bza b c dza b cr�r�)r�N)rrrr.r_rzr2r~r	r	r	r
r
�s
r
c@sjeZdZeddd�edddd�gZdd	gZd
eddd
�fdeddd
�fdeddd
�fdeddd
�fgZdS)�"TestOptionalsNumericAndPositionalsr�r�)r�z-4r�r�)r�r�z-2z-315r�NF)r�r�r�Tz-4 a)rrrr.r_rzr2r~r	r	r	r
r�s
rc	@sveZdZeddd�edddd�gZdgZd	ed
dd�fd
ed
dd�fdeddd�fded
dd�fdeddd�fgZd
S)�(TestOptionalsAlmostNumericAndPositionalsr�r�)r�z-k4r�r�)r�r�z-k3r�NF)r�r�z-2r�Tz-k4 a)rrrr.r_rzr2r~r	r	r	r
r�s
rc@s�eZdZeddd�edddd�gZdgZdgedd	d
�fdgedd	d
�fdgedd	d
�fddged	dd
�fddged	dd
�fddged	dd
�fd
ged	dd
�fdged	dd
�fgZd	S)�$TestEmptyAndSpaceContainingArgumentsr�r�)r�z-yz--yyyr�)r�r�N)r�r�za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badger)rrrr.r_rzr2r~r	r	r	r
r�s
rc@s�eZdZedd�Zeddddd�edd	ed
d�edd
dd�gZddgZdedd
dd�fdedd
dd�fdedd
dd�fdedddd�fdedd
dd�fdedd
dd�fgZ	dS)� TestPrefixCharacterOnlyArgumentsz-+)r��-r�r�r�)r�r�r�r�r�r�)r�r:r�z-+-r�r�)r�r�z-yz+ -r�NF)r�r�r�z- Xr�z+ -3r�Tz- ===z===���)
rrrr.r[r�r_rzr2r~r	r	r	r
r�s
rc@s�eZdZeddd�eddd�gZgZdedgd�fdeggd�fded	ggd�fd
ed	gdgd�fd	edd	gd�fdegd	gd�fd
edgd	gd�fgZdS)�TestNargsZeroOrMorez-xr�)r�r�r�N)r�r�z-x ar�z	-x a -- br�za -xza -x b)rrrr.r_rzr2r~r	r	r	r
r�src	@s�eZdZed�eddd�ed�gZdddgZdedgd	d
�fdedgdd
�fd
edddddgd	d
�fdedddgd	d
�fgZd	S)�TestNargsRemainderr�r�z...)r�z-zr�z-z Zr�N)r�r�r�z-z Z X�Zz
X A B -z Z�Ar�z	X Y --foo�Yz--foo)rrrr.r_rzr2r~r	r	r	r
r�s
rc@seZdZeded�ededd�eddd�gZdd	d
ddd
dddddddg
Zdeddgd�fdeddgd�fdedddgd�fdeddgd�fdedd%gd�fdeddgd�fd edddgd�fdedddgd�fd!ed"ddgd�fd#ed"ddgd�fd$edd"dgd�fgZdS)&�TestOptionLikez-x)r:z-3r�)r: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�N)r�r�r�z-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�)	rrrr.�floatr_rzr2r~r	r	r	r
rs$

rc@s�eZdZeddejd�eddejd�eddejd�gZd	gZd
e�fdedd�fd
eddgd�fdedd�fdeddd�fdeddgdd�fgZ	dS)�TestDefaultSuppressrbr�)r�r�r�r�z--bazr�)r�r�z-xr�r�)rbza br�)rbr�T)r�za --baz)rbr�z	--baz a b)rbr�r�N)
rrrr.�argparse�SUPPRESSr_rzr2r~r	r	r	r
rsrc@s�eZdZeejd�Zeddd�eddd�eddd	�gZd
gZde	�fde	dd
�fde	ddgd�fde	dd�fde	ddd�fde	ddgdd�fgZ
dS)�TestParserDefaultSuppress)�argument_defaultrbr�)r�r�r�z--bazr�)r�z-xr�r�)rbza br�)rbr�T)r�za --baz)rbr�z	--baz a b)rbr�r�N)rrrr.rrr[r_rzr2r~r	r	r	r
r0s

rc@s�eZdZedd�Zedddd�eddd	�ed
dd	�edd
d�gZdgZdeddddd�fdeddddd�fdeddgddd�fdeddddd�fdeddddd�fdeddgddd�fgZdS)�TestParserDefault42r�)rz	--version�versionz1.0)r�r!rbr�)r�r�r�z--bazr�)r�z-xr�)rbr�r�r!r�za br�Tza --bazz	--baz a bN)	rrrr.r[r_rzr2r~r	r	r	r
r Ds


r cs�eZdZ�fdd�Zedd�Zed�ed�eddd	�gZd
ddd
dgZdedddgd�fdeddddgd�fdedddgd�fdedddgd�fdeddddgd�fdeddddgd�fdd
ddged
ddgd�fgZ	�Z
S)�TestArgumentsFromFilecsJtt|�j�dd	d
g}x,|D]$\}}t|d�}|j|�|j�qWdS)N�hello�
hello world!
�	recursive�-a
A
@hello�invalid�@no-such-path
r')r#r$)r%r&)r'r()rTr"rr(r)�close)r�
file_textsr�textr,)rUr	r
r\s

zTestArgumentsFromFile.setUp�@)�fromfile_prefix_charsz-ar�r�r�)r�r�z-br�z@invalidz@missingzX YNr)r�r�r�z
X -a A Y Zrrz@hello Xzhello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br�)rrrrr.r[r_rzr2r~rXr	r	)rUr
r"Ys
r"csbeZdZ�fdd�ZGdd�de�ZeZedd�Zeddd	�gZ	gZ
d
eddd
gd�fgZ�Z
S)�TestArgumentsFromFileConvertercsFtt|�j�dg}x,|D]$\}}t|d�}|j|�|j�qWdS)Nr#�
hello world!
r')r#r/)rTr.rr(r)r))rr*rr+r,)rUr	r
rs

z$TestArgumentsFromFileConverter.setUpc@seZdZdd�ZdS)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs&x |j�D]}|j�sq
|Vq
WdS)N)r{�strip)r�arg_line�argr	r	r
�convert_arg_line_to_args�szWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrrr3r	r	r	r
�FromFileConverterArgumentParser�sr4r,)r-r�r�)r�z@hello Xr#zworld!r�)r�)rrrrrSr4r\r.r[r_rzr2r~rXr	r	)rUr
r.|s

r.c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestFileTypeReprcCstjd�}|jdt|��dS)N�rz
FileType('r'))r�FileTyper��repr)rr:r	r	r
�test_r�s
zTestFileTypeRepr.test_rcCs tjdd�}|jdt|��dS)N�wbrEzFileType('wb', 1))rr7r�r8)rr:r	r	r
�	test_wb_1�szTestFileTypeRepr.test_wb_1cCs"tjddd�}|jdt|��dS)Nr6�latin_1)�encodingz!FileType('r', encoding='latin_1'))rr7r�r8)rr:r	r	r
�test_r_latin�szTestFileTypeRepr.test_r_latincCs$tjdddd�}|jdt|��dS)Nr'�big5�ignore)r=�errorsz/FileType('w', encoding='big5', errors='ignore'))rr7r�r8)rr:r	r	r
�test_w_big5_ignore�sz#TestFileTypeRepr.test_w_big5_ignorecCs$tjdddd�}|jdt|��dS)Nr6rE�replace)rAz"FileType('r', 1, errors='replace'))rr7r�r8)rr:r	r	r
�test_r_1_replace�sz!TestFileTypeRepr.test_r_1_replaceN)rrrr9r;r>rBrDr	r	r	r
r5�s
r5c@seZdZdd�Zdd�ZdS)�StdStreamComparercCs
||_dS)N)�attr)rrFr	r	r
r1�szStdStreamComparer.__init__cCs|tt|j�kS)N)rJrHrF)rr=r	r	r
r>�szStdStreamComparer.__eq__N)rrrr1r>r	r	r	r
rE�srE�stdinrBrCc@s eZdZiZdd�Zdd�ZdS)�RFilecCs
||_dS)N)r%)rr%r	r	r
r1�szRFile.__init__cCs`||jkr|j|}n|j�}|j|<|j�t|t�sD|jd�}|j|jkoZ|kSS)N�ascii)�seen�readr)rGr�decoder%)rr=r+r	r	r
r>�s


zRFile.__eq__N)rrrrJr1r>r	r	r	r
rH�srHc	s�eZdZ�fdd�Zedej�d�edejd�d�gZdddgZd	e	d
e
d	�d�fde	e
d	�e
d
�d�fde	e
d	�e
d
�d�fde	eed�fde	d
e
d�d�fgZ�Z
S)�
TestFileTypeRcsRtt|�j�x4dD],}ttjj|j|�d�}|j|�|j	�qW|j
d�dS)Nrbr�r'�readonly)rbr�)rTrMrr(rrrrr)r)r-)r�	file_namer,)rUr	r
r�s

zTestFileTypeR.setUpz-x)r:r�r6r�znon-existent-file.txtrbN)r�r�z
-x foo barr�z
bar -x fooz-x - -rN)rrrrr.rr7r_rzr2rH�eq_stdinr~rXr	r	)rUr
rM�s	
rMcsLeZdZ�fdd�Zedejd�dd�gZdgZde	e
d	�d
�fgZ�ZS)�TestFileTypeDefaultscs:tt|�j�ttjj|jd�d�}|jd�|j	�dS)N�goodr')
rTrQrr(rrrrr)r))rr,)rUr	r
r�s
zTestFileTypeDefaults.setUpz-cr6zno-file.txt)r:r�r�z-c goodrR)r�)
rrrrr.rr7r_rzr2rHr~rXr	r	)rUr
rQ�srQcs�eZdZ�fdd�Zedejd�d�edejd�d�gZddgZde	d	e
d�d
�fde	e
d�e
d�d
�fd
e	e
d�e
d�d
�fde	eed
�fgZ�Z
S)�TestFileTypeRBcsHtt|�j�x4dD],}ttjj|j|�d�}|j|�|j	�qWdS)Nrbr�r')rbr�)
rTrSrr(rrrrr)r))rrOr,)rUr	r
r�s


zTestFileTypeRB.setUpz-x�rb)r:r�r�rbN)r�r�z
-x foo barr�z
bar -x fooz-x - -)rrrrr.rr7r_rzr2rHrPr~rXr	r	)rUr
rS�srSc@s"eZdZe�Zdd�Zdd�ZdS)�WFilecCs
||_dS)N)r%)rr%r	r	r
r1szWFile.__init__cCsL||jkr@d}d|jkr"|jd�}|j|�|j�|jj|�|j|jkS)NzCheck that file is writable.r�rI)rJ�mode�encoder)r)�addr%)rr=r+r	r	r
r>s



zWFile.__eq__N)rrrrrJr1r>r	r	r	r
rUsrU�geteuidznon-root user requiredcs�eZdZ�fdd�Zedejd�d�edejd�d�gZdddgZd	e	d
e
d	�d�fde	e
d	�e
d
�d�fde	e
d	�e
d
�d�fde	eed�fgZ�Z
S)�
TestFileTypeWcstt|�j�|jd�dS)NrN)rTrZrr-)r)rUr	r
r(szTestFileTypeW.setUpz-xr')r:r�r�rNrbN)r�r�z
-x foo barr�z
bar -x fooz-x - -)rrrrr.rr7r_rzr2rU�	eq_stdoutr~rXr	r	)rUr
rZ#s
rZc@s�eZdZedejd�d�edejd�d�gZddgZdede	d�d�fd	ee	d�e	d
�d�fdee	d�e	d
�d�fdee
e
d�fgZdS)
�TestFileTypeWBz-xr:)r:r�r�rbN)r�r�z
-x foo barr�z
bar -x fooz-x - -)rrrr.rr7r_rzr2rUr[r~r	r	r	r
r\9sr\c@seZdZdd�ZdS)�TestFileTypeOpenArgscCs�tj}|d�df|dd�df|ddd�df|ddd�df|dd	d
d�dfg}tjd��.}x&|D]\}}|d
�|jd|��q^WWdQRXdS)NrTrEr'rC)rAr:r?)r=r�l1�strictz
builtins.openrb���)rTr`NN)r'rENNr`)r'r`NrCr`)r:r`r?N)r'rr^r_)rb)rr7rZpatchZassert_called_with)rZFTZcases�mr:r/r	r	r
�test_open_argsKs
z#TestFileTypeOpenArgs.test_open_argsN)rrrrbr	r	r	r
r]Hsr]c@s^eZdZeded�eded�gZddddgZded	d
d�fded
dd�fdeddd�fgZ	dS)�TestTypeCallablez--eggs)r:r�r�Z42jz--eggs az	--eggs 2iz--eggs=42 42r�gE@)�eggsr�z--eggs 2j -- -1.5y@g�?z1024.675Ng3333��@g��)
rrrr.�complexrr_rzr2r~r	r	r	r
rcZs
rcc@sheZdZGdd�de�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZ	d
S)�TestTypeUserDefinedc@seZdZdd�Zdd�ZdS)zTestTypeUserDefined.MyTypecCs
||_dS)N)�value)rrgr	r	r
r1nsz#TestTypeUserDefined.MyType.__init__cCst|�|jft|�|jfkS)N)r:rg)rr=r	r	r
r>qsz!TestTypeUserDefined.MyType.__eq__N)rrrr1r>r	r	r	r
�MyTypelsrhz-x)r:r�za -x br�r�)r�r�z-xf gr�r�N)
rrrrrhr.r_rzr2r~r	r	r	r
rfis	
rfc@sfeZdZGdd�d�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZd
S)�TestTypeClassicClassc@seZdZdd�Zdd�ZdS)zTestTypeClassicClass.CcCs
||_dS)N)rg)rrgr	r	r
r1�szTestTypeClassicClass.C.__init__cCst|�|jft|�|jfkS)N)r:rg)rr=r	r	r
r>�szTestTypeClassicClass.C.__eq__N)rrrr1r>r	r	r	r
�C�srjz-x)r:r�za -x br�r�)r�r�z-xf gr�r�N)	rrrrjr.r_rzr2r~r	r	r	r
ris	
ric@seZdZdd�ZdS)�TestTypeRegistrationcCszdd�}tj�}|jdd|�|jddd�|jddd�|j|jdj��tdd	d
��|j|jdj��td	dd
��dS)
NcSsd|S)Nzmy_type{%s}r	)�stringr	r	r
�get_my_type�sz.TestTypeRegistration.test.<locals>.get_my_typer:Zmy_typez-x)r:r�r�z
my_type{1})r�r�z-x 1 42zmy_type{42})r�ArgumentParser�registerr]r�rOr{r2)rrmr^r	r	r
�test�szTestTypeRegistration.testN)rrrrpr	r	r	r
rk�srkc@s�eZdZGdd�dej�ZGdd�dej�Zeddeedd�ed	ee	d
dd�gZ
gZd
eddd�fdeddd�fdeddd�fdeddd�fgZ
dS)�TestActionUserDefinedc@seZdZddd�ZdS)z$TestActionUserDefined.OptionalActionNcCsxy:tdd�}|dkrd|_n|d
kr,d|_ntd|��Wn,tk
rftj�d	}td
|��YnXt|d|�dS)Ng�?)r���?��?r��@r�z	value: %srEzopt_action failed: %sr�)rrrs)rt)r2r��AssertionErrorrHrLr?rK)rr^�	namespacerg�
option_stringr��er	r	r
�__call__�s
z-TestActionUserDefined.OptionalAction.__call__)N)rrrryr	r	r	r
�OptionalAction�srzc@seZdZddd�ZdS)z&TestActionUserDefined.PositionalActionNcCs�yJtdd�}|dkrd|_n,|d
kr,d|_n|dkr<d|_ntd	|��Wn,tk
rvtj�d}td
|��YnXt|d|�dS)Nr�)r�r�r�g�?rEg�?g�?z	value: %szarg_action failed: %sr�)r�r�)rE)r�)r2r�rurHrLr?rK)rr^rvrgrwr�rxr	r	r
ry�s
z/TestActionUserDefined.PositionalAction.__call__)N)rrrryr	r	r	r
�PositionalAction�sr{z-sr�g�?)r�r�r:r�r�r�r�)r�r:r�r�z-s0.125g�?)r�r�r�r�z
-s 0.625 1g�?rEz84 -s2g@r�N)rrrr�Actionrzr{r.rr�r_rzr2r~r	r	r	r
rq�srqc@s&eZdZGdd�dej�Zdd�ZdS)�TestActionRegistrationc@seZdZddd�ZdS)zTestActionRegistration.MyActionNcCst||jd|�dS)Nzfoo[%s])rKr�)rr^rv�valuesrwr	r	r
ry�sz(TestActionRegistration.MyAction.__call__)N)rrrryr	r	r	r
�MyAction�srcCs^tj�}|jdd|j�|jddd�|j|jdg�tdd��|j|jdg�td	d��dS)
Nr�Z	my_actionr�)r�r�zfoo[1])r�r�zfoo[42])rrnrorr]r�rOr2)rr^r	r	r
rp�s
zTestActionRegistration.testN)rrrrr|rrpr	r	r	r
r}�sr}cs�eZdZdd�Zd)dd�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�ZS)*�TestAddSubparserscOs|jtf|�|�dS)N)r|r?)rr/r0r	r	r
�assertArgumentParserErrorsz+TestAddSubparsers.assertArgumentParserErrorFNc
Csv|r0tdd|d�}|j|dddddd	�ntddd
�}|jdddd	�|jdtd
d�i}|rvd|d<d|d<nd|d<|jf|�}|j|j�tdd�}|r�d|d<|r�ddg|d<|jd5|�}|jdtdd�|jddd d!�td"d�}	|�rd#|	d<|jd6|	�}
|
jd%d&d'd!�|
jd(td)d*d+�td,d�}|�rFd-|d<|jd7|�}|jd/td0d�|jd1d2d3d4�|S)8N�PROGzmain description)�prog�descriptionr�rr�rbr�zfoo help)r��help)r�r�z--foor�zbar help)r:r�ZCOMMAND�metavarZcommands�titlezcommand helpr�z
1 description)r�z1 helpZ1alias1Z1alias2�aliasesr�z-wzw helpr�r�zx help)r�r�z
2 descriptionz2 helpr�z-yZ123zy helpr�r�zz help)r:r�r�z
3 descriptionz3 helpr��tzt help�uz...zu help)r�r�)r�)r�)r�)	rSr]r�add_subparsersr��dict�
add_parserr�re)
r�subparser_helpr�r�r^Zsubparsers_kwargs�
subparsersZparser1_kwargs�parser1Zparser2_kwargs�parser2Zparser3_kwargsZparser3r	r	r
rxsN




zTestAddSubparsers._get_parsercs&t�j�|j�|_|jdd�|_dS)NT)r�)rTrrxr^�command_help_parser)r)rUr	r
rBs

zTestAddSubparsers.setUpcCs*x$dD]}|j�}|j|jj|�qWdS)	Nr�r��a a�0.5 a�0.5 1�0.5 1 -y�0.5 2 -w)r�r�r�r�r�r�r�)r{r�r^rO)rr}r/r	r	r
�test_parse_args_failuresGsz*TestAddSubparsers.test_parse_args_failurescCs�|j|jjdj��tddddd��|j|jjdj��tdd	d
ddgd
��|j|jjdj��tddddd��|j|jjdj��tddddddddgd��dS)Nz0.5 1 b -w 7Fg�?�r�)rbr�r'r�z0.25 --foo 2 -y 2 3j -- -1jTg�?r�y@y�?)rbr�r�r�z--foo 0.125 1 cg�?r�z-1.5 3 11 -- a --foo 7 -- bg�?�r�z--foor�z--)rbr�r�r�y��g��)r�r^rOr{r2)rr	r	r
�test_parse_argsNsz!TestAddSubparsers.test_parse_argscCs�|j|jjdj��tddddd�gf�|j|jjdj��tddddd�dgf�|j|jjd	j��tddddd�dgf�|j|jjd
j��tddddd�ddgf�|j|jjd
j��tddddd�ddddgf�dS)Nz0.5 1 b -w 7Fg�?r�r�)rbr�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{r2)rr	r	r
�test_parse_known_argsasz'TestAddSubparsers.test_parse_known_argscCsXt�}|jddd�|jdd�}|jd�}|jd�|jtddd	d
�|jdj���dS)Nz--foor�)r�r�)r�r�r�Fr�)rbr�r�z1 2)rSr]r�r�r�r2rOr{)rr^r�r�r	r	r
�	test_destws

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_help�szTestAddSubparsers.test_helpcCs6|jdd�}|j|j�d�|j|j�tjd��dS)Nz+:-)r�z)usage: PROG [-h] [++foo] bar {1,2,3} ...
aJ            usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              ++foo       foo help
            )rxr�r�r�r�r�)rr^r	r	r
�test_help_extra_prefix_chars�s

z.TestAddSubparsers.test_help_extra_prefix_charscCs6tddd�}|jdddd�|j|j�tjd��dS)	Nr�zmain description)r�r�z--non-breakingr�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spaces)r�r�uB            usage: PROG [-h] [--non-breaking]

            main description

            optional arguments:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        )rSr]r�r�r�r�)rr^r	r	r
�test_help_non_breaking_spaces�s
	z/TestAddSubparsers.test_help_non_breaking_spacescCs6|jdd�}|j|j�d�|j|j�tjd��dS)Nz+:/)r�z)usage: PROG [+h] [++foo] bar {1,2,3} ...
aJ            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              +h, ++help  show this help message and exit
              ++foo       foo help
            )rxr�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_helpcCsxtddd�}|jdddd�|jdd	d
�|jddd
d�}|jd�}|jd�}|j|j�d�|j|j�tjd��dS)Nr�zmain description)r�r�z--foor�zfoo help)r�r�r�zbar help)r��subcommandszcommand helpzadditional text)r�r�r�r�r�z'usage: PROG [-h] [--foo] bar {1,2} ...
a�            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

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

            subcommands:
              command help

              {1,2}       additional text
            )	rSr]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
Cs:|jt��}|jj|j��WdQRX|j||jj�dS)N)r|r?r^rOr{r��	exceptionrB)rr}Z
expected_help�cmr	r	r
�_test_subparser_help�sz&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_helps
z&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_helps
z&TestAddSubparsers.test_subparser2_helpcCs\|jdd�}|j|jdj��tddddd�gf�|j|jdj��tddddd�gf�dS)	NT)r�z
0.5 1alias1 bFg�?r�)rbr�r'r�z
0.5 1alias2 b)rxr�r�r{r2)rr^r	r	r
�test_alias_invocationsz'TestAddSubparsers.test_alias_invocationcCs"|jdd�}|j|jdj��dS)NT)r�z
0.5 1alias3 b)rxr�rOr{)rr^r	r	r
�test_error_alias_invocation'sz-TestAddSubparsers.test_error_alias_invocationcCs.|jddd�}d|_|j|j�tjd��dS)NT)r�r�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
            )rxZmaxDiffr�r�r�r�)rr^r	r	r
�test_alias_help,sz!TestAddSubparsers.test_alias_help)FNF)rrrr�rxrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rXr	r	)rUr
r�s(
6	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestPositionalsGroupscCsZt�}|jd�|jd�}|jd�|jd�tdddd�}|jd	j��}|j||�dS)
Nrbr�r�r�r�r�r�)rbr�r�z1 2 3)rSr]rcr2rOr{r�)rr^rd�expectedrPr	r	r
�test_nongroup_firstJs



z)TestPositionalsGroups.test_nongroup_firstcCsZt�}|jd�}|jd�|jd�|jd�tdddd�}|jd	j��}|j||�dS)
N�xxxrbr�r�r�r�r�)rbr�r�z1 2 3)rSrcr]r2rOr{r�)rr^rdr�rPr	r	r
�test_group_firstTs



z&TestPositionalsGroups.test_group_firstcCspt�}|jd�}|jd�|jd�|jd�|jd�}|jd�tddd	d
d�}|jdj��}|j||�dS)
Nr�rbr�r�r��frellr�r�r�r
)rbr�r�r�z1 2 3 4)rSrcr]r2rOr{r�)rr^rdr�rPr	r	r
�test_interleaved_groups^s





z-TestPositionalsGroups.test_interleaved_groupsN)rrrr�r�r�r	r	r	r
r�Gs

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�ZS)�TestParentParserscOs|jtf|�|�dS)N)r|r?)rr/r0r	r	r
r�qsz+TestParentParsers.assertArgumentParserErrorcs�t�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)NF)r�z--wr�z-yr�r�z-br�z--dz-ar�)r�r)rTrrS�wxyz_parentr]rc�abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprr�basenamerHrj�main_program)rZx_group�c_grouprd)rUr	r
rts(



zTestParentParsers.setUpcCs2t|jgd�}|j|jdj��tdddd��dS)N)�parentsz-y 1 2 --w 3r�r�r�)r'r�r�)rSr�r�rOr{r2)rr^r	r	r
�test_single_parent�sz$TestParentParsers.test_single_parentcCs,|j|jj�t|jgd�}|j|j�dS)N)r�)�_test_mutex_abr�rOrS)rr^r	r	r
�test_single_parent_mutex�sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d�}t|gd�}|j|j�dS)NF)r�r�)r�)r�rSr�rO)rr�r^r	r	r
�test_single_granparent_mutex�sz.TestParentParsers.test_single_granparent_mutexcCs�|j|g�tddd��|j|dg�tddd��|j|dg�tddd��|j|ddg�|j|ddg�|j|dg�|j|ddg�|j|ddg�dS)NF)r�r�z-aTz-bz-c)r�r2r�)rrOr	r	r
r��sz TestParentParsers._test_mutex_abc
Cs@|j|jg}t|d�}|j|jdj��tddddddd��dS)N)r�z--d 1 --w 2 3 4r�r�r�r
)r�r�rr'r�r�)r�r�rSr�rOr{r2)rr�r^r	r	r
�test_multiple_parents�s
z'TestParentParsers.test_multiple_parentsc	Csb|j|jg}t|d�}|j|jdj��tdddddd��|j|jdj��|j|jd	j��dS)
N)r�z
-a --w 2 3TFr�r�)r�r�r'r�r�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�rSr�rOr{r2r�)rr�r^r	r	r
�test_multiple_parents_mutex�s
z-TestParentParsers.test_multiple_parents_mutexcCs |jtjtj|j|jgd�dS)N)r�)r|r�
ArgumentErrorrnr�r�)rr	r	r
�test_conflicting_parents�sz*TestParentParsers.test_conflicting_parentscCs |jtjtj|j|jgd�dS)N)r�)r|rr�rnr�r�)rr	r	r
�test_conflicting_parents_mutex�sz0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d�}|j|jdj��tdddd��dS)N)r�z1 2r�)r'r�r�)r�r�rSr�rOr{r2)rr�r^r	r	r
�test_same_argument_name_parents�s
z1TestParentParsers.test_same_argument_name_parentscCsPt�}|j�}|jd|jgd�}|jd�|j|jdj��tddddd	��dS)
Nr�)r�rxzbar -b 1 --d 2 3 4r�r�r�r
)r�r�rrx)	rSr�r�r�r]r�rOr{r2)rr^r�Zabcde_parserr	r	r
�test_subparser_parents�s
z(TestParentParsers.test_subparser_parentsc
Cs�t�}|j�}|jg}|jd|d�}|jd�}|jd�|j|jg}|jd|d�}|jd�|j|jdj	��t
dd	d
d��|j|jdj	��t
d	dd
ddd
d��|j|jdj	��|j|jdj	��dS)Nrb)r�r�r�r�rxzfoo -a 4TFr
)r�r�r�zbar -b  --w 2 3 4r�r�)r�r�r'r�r�rxzfoo -a -b 4zbar -b -a 4)rSr�r�r�rcr]r�r�rOr{r2r�)rr^r�r�Z
abc_parserr�Zwxyzabe_parserr	r	r
�test_subparser_parents_mutex�s"


z.TestParentParsers.test_subparser_parents_mutexcCsJ|j|jg}t|d�}|j�}|j}|j|tjdj||r<dnd���dS)N)r�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�rSr�r�r�r�r��format)rr�r^�parser_help�prognamer	r	r
�test_parent_help�s

z"TestParentParsers.test_parent_helpcCs�tdd�}|jddd�}|jd�|jd�|j�}|jd�|jd	�t|gd
�}|jt|jddd	dg�|j�}|j}|j	|t
jd
j||r�dnd���dS)NF)r�r��gd)r�r�z-wz-xz-yz-z)r�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�)
rSrcr]r�r|r?rOr�r�r�r�r�r�)r�parentr�rar^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�rXr	r	)rUr
r�ns

r�c@s$eZdZdd�Zdd�Zdd�ZdS)� TestMutuallyExclusiveGroupErrorscCs t�}|j}|t|jdd�dS)Nrb)r�)rSr|rsr�)rr^�raisesr	r	r
�test_invalid_add_argument_group#	sz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_groupcCslt�}|j�}|j}|j}|t|ddd�|t|d�|t|ddd�|t|ddd�|t|dtjd�dS)Nz--fooT)r�r�r�)r�rE)rSr�r]r|�
ValueErrorr�PARSER)rr^rdr]r�r	r	r
�test_invalid_add_argument(	sz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argumentcCsptdd�}|j�}|jddd�|jddd�|j�}|jddd�|jd	dd�d
}|j|j�tj|��dS)Nr�)r�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
              )rSr�r]r�r�r�r�)rr^Zgroup1Zgroup2r�r	r	r
r�3	s

z*TestMutuallyExclusiveGroupErrors.test_helpN)rrrr�r�r�r	r	r	r
r�!	sr�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�MEMixincCs8|jdd�j}t}x |jD]}|j|||j��qWdS)NF)r�)�
get_parserrOr?rzr|r{)rrOrW�args_stringr	r	r
�test_failures_when_not_requiredI	sz'MEMixin.test_failures_when_not_requiredcCs>|jdd�j}t}x&|jdgD]}|j|||j��q WdS)NT)r�r�)r�rOr?rzr|r{)rrOrWr�r	r	r
�test_failures_when_requiredO	sz#MEMixin.test_failures_when_requiredcCsH|jdd�j}|j|j}x(|D] \}}||j��}|j||�q WdS)NF)r�)r�rOr~�successes_when_not_requiredr{r�)rrOr~r�r��	actual_nsr	r	r
� test_successes_when_not_requiredU	s
z(MEMixin.test_successes_when_not_requiredcCs>|jdd�j}x*|jD] \}}||j��}|j||�qWdS)NT)r�)r�rOr~r{r�)rrOr�r�r�r	r	r
�test_successes_when_required\	sz$MEMixin.test_successes_when_requiredcCs,|jdd�j}|j}|j|�tj|��dS)NF)r�)r�r��usage_when_not_requiredr�r�r�)rr��expected_usager	r	r
�test_usage_when_not_requiredb	sz$MEMixin.test_usage_when_not_requiredcCs,|jdd�j}|j}|j|�tj|��dS)NT)r�)r�r��usage_when_requiredr�r�r�)rr�r�r	r	r
�test_usage_when_requiredg	sz MEMixin.test_usage_when_requiredcCs2|jdd�j}|j|j}|j|�tj|��dS)NF)r�)r�r�r�r�r�r�r�)rr�r�r	r	r
�test_help_when_not_requiredl	sz#MEMixin.test_help_when_not_requiredcCs2|jdd�j}|j|j}|j|�tj|��dS)NT)r�)r�r�r�r�r�r�r�)rr�r�r	r	r
�test_help_when_requiredq	szMEMixin.test_help_when_requiredN)rrrr�r�r�r�r�r�r�r�r	r	r	r
r�G	sr�c@sxeZdZddd�ZddgZdeddd�fd	ed
dd�fdeddd�fd
edd
d�fgZdeddd�fgZdZdZ	dZ
dS)�TestMutuallyExclusiveSimpleNcCs:tdd�}|j|d�}|jddd�|jddd	d
d�|S)Nr�)r�)r�z--barzbar help)r�z--bazr�rzbaz help)r�r�r�)rSr�r])rr�r^rdr	r	r
r�y	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
        )N)rrrr�rzr2r~r�r�r�r�r	r	r	r
r�w	s
r�c
@s�eZdZddd�ZdgZdeddddd�fded	dddd�fd
eddddd�fdedd	ddd�fgZdeddddd�fgZd
ZdZ	dZ
dS)�TestMutuallyExclusiveLongNcCsRtdd�}|jddd�|jddd�|j|d�}|jd	d
d�|jddd�|S)
Nr�)r�z--abcdez
abcde help)r�z--fghijz
fghij help)r�z--klmnoz
klmno helpz--pqrstz
pqrst help)rSr]r�)rr�r^rdr	r	r
r��	s
z$TestMutuallyExclusiveLong.get_parserz--klmno X --pqrst Yz	--klmno Xr�)ZabcdeZfghijZklmnoZpqrstz--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
    )N)rrrr�rzr2r~r�r�r�r�r	r	r	r
r��	s
		r�c@sfeZdZdd�ZdgZdeddd�fded	dd�fd
eddd�fgZd
eddd�fgZdZdZ	dZ
dS)�$TestMutuallyExclusiveFirstSuppressedcCs:tdd�}|j|d�}|jdtjd�|jdddd	�|S)
Nr�)r�)r�z-x)r�z-yr�zy help)r�r�)rSr�r]rr)rr�r^rdr	r	r
r��	s

z/TestMutuallyExclusiveFirstSuppressed.get_parserz-x X -yz-x Xr�T)r�r�z	-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�rzr2r~r�r�r�r�r	r	r	r
r��	sr�c	@s�eZdZdd�ZdddgZdedddd	�fd
edddd	�fdeddd
d	�fdedddd	�fgZdedddd	�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedcCsNtdd�}|j|d�}|j}|ddtjd�|ddtjd�|d	tjd
�|S)Nr�)r�)r�z--spamr�)r�r�z--badgerr�z	--bladder)r�)rSr�r]rr)rr�r^rdrXr	r	r
r��	s
z.TestMutuallyExclusiveManySuppressed.get_parserz--spam --badgerz--badger --bladder Bz--bladder B --spamz--spamTN)r�r�Zbladderz--badgerFz--bladder Br�z
--spam --spamr�z!        usage: PROG [-h]
        z[
        optional arguments:
          -h, --help  show this help message and exit
        )rrrr�rzr2r~r�r�r�r�r	r	r	r
r��	s
r�c
@s�eZdZdd�ZdddddgZded	d
dd�fd
edddd�fdedd
dgd�fdedd
dddgd�fgZdedd
dd�fgZdZdZ	dZ
d
S)�*TestMutuallyExclusiveOptionalAndPositionalcCsJtdd�}|j|d�}|jdddd�|jdd	d
�|jddd
dd�|S)Nr�)r�)r�z--foor��FOO)r�r�z--spamZSPAM)r�r�r�r�ZBADGER)r�r�r�)rSr�r])rr�r^rdr	r	r
r�
s
z5TestMutuallyExclusiveOptionalAndPositional.get_parserz--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yz--fooTNr�)rbr�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�rzr2r~r�r�r�r�r	r	r	r
r�

s	
r�c
@s�eZdZdd�ZddddgZdedd	d	d	d	d
�fded	dd	d	d	d
�fded	d	dd	d	d
�fd
edd	d	dd	d
�fded	dd	d	dd
�fded	d	dddd
�fgZded	d	d	d	d	d
�fded	d	d	dd	d
�fded	d	d	d	dd
�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedcCsjtdd�}|jdddd�|j|d�}|jddd	d�|jd
ddd�|jddd
d�|jdddd�|S)Nr�)r�z-xr�zx help)r�r�)r�z-aza helpz-bzb helpz-yzy helpz-czc help)rSr]r�)rr�r^rdr	r	r
r�9
s
z.TestMutuallyExclusiveOptionalsMixed.get_parserz-a -bz-b -cz-a -cz-a -b -cz-aTF)r�r�r�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�rzr2r~r�r�r�r�r	r	r	r
r�7
s

r�c@s\eZdZddd�ZddgZdeddd�fd	edd
d�fgZdeddd�fgZdZd
Z	dZ
dS)�TestMutuallyExclusiveInGroupNcCsDtdd�}|jddd�}|j|d�}|jddd	�|jd
dd	�|S)Nr�)r�zTitled groupzGroup description)r�r�)r�z--barzbar help)r�z--bazzbaz help)rSrcr�r])rr�r^Ztitled_group�mutex_groupr	r	r
r�c
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
        )N)rrrr�rzr2r~r�r�r�r�r	r	r	r
r�a
s

r�c@s�eZdZdd�ZdddgZdedddd	dd
�fdedd
dd	dd
�fdeddd
d	dd
�fdedddd	d
d
�fdedd
dd	d
d
�fgZd	edddd	dd
�fdedddd	d
d
�fgZdZZ	dZ
dS)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedcCshtdd�}|jddd�|jdddd	�|j|d
�}|jddd
d�|jdddd	�|jdddd	�|S)Nr�)r�r�zx help)r�z-yr�zy help)r�r�)r�r�r�za help)r�r�z-bzb helpz-czc help)rSr]r�)rr�r^rdr	r	r
r��
s
z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parserzX A -bz-b -cz-c X AzX ArFr�)r�r�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�rzr2r~r�r�r�r�r	r	r	r
r��
s

r�cseZdZd�fdd�	Z�ZS)�MEPBaseNcs(tt|�j|d�}t|jd|gd�}|S)N)r�F)r�r�r�)rTr�r�rSr�)rr�r�r^)rUr	r
r��
szMEPBase.get_parser)N)rrrr�rXr	r	)rUr
r��
sr�c@seZdZdS)�&TestMutuallyExclusiveGroupErrorsParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�!TestMutuallyExclusiveSimpleParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�TestMutuallyExclusiveLongParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�*TestMutuallyExclusiveFirstSuppressedParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�)TestMutuallyExclusiveManySuppressedParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�0TestMutuallyExclusiveOptionalAndPositionalParentN)rrrr	r	r	r
r��
sr�c@seZdZdS)�)TestMutuallyExclusiveOptionalsMixedParentN)rrrr	r	r	r
r�
src@seZdZdS)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentN)rrrr	r	r	r
r�
src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestSetDefaultscCs�t�}|jdd�|jddd�|jtdddd�|jg��|jtdddd�|jgt���|jtdddd�|jgtdd���|jtdddd�|jgtddd	���dS)
Nrb)r�r�rE)r�r�)r�r�r�r�r�)r�r�)rS�set_defaultsr�r2rO)rr^r	r	r
�test_set_defaults_no_args�
sz)TestSetDefaults.test_set_defaults_no_argscCs�t�}|jddd�|jddd�|jtddd�|jg��|jtddd�|jgt���|jtddd�|jgtdd���|jtd	dd�|jd
j���|jtd	dd�|jd
j�t���|jtd	dd�|jd
j�tdd���dS)Nrbr�)r�r�z-xZxfoox)r�r�)r�r�z-x 1)rSrr]r�r2rOr{)rr^r	r	r
�test_set_defaults_with_args�
sz+TestSetDefaults.test_set_defaults_with_argscCsRt�}|jdd�|j�}|jd�}|jdd�|jtddd�|jdj���dS)Nrb)r�r�r�)r�)r�r�)rSrr�r�r�r2rOr{)rr^r�Zparser_ar	r	r
�test_set_defaults_subparsers
s
z,TestSetDefaults.test_set_defaults_subparserscCs>tdd�}|jdd�t|gd�}|jtdd�|jg��dS)NF)r�rb)r�)r�)rSrr�r2rO)rr�r^r	r	r
�test_set_defaults_parentss
z)TestSetDefaults.test_set_defaults_parentscCsLtj�}|j�jd�}|jdd�|jdd�|jtdd�|jdg��dS)Nr�rE)rbr�)rrnr�r�rr�r2rO)rr^Zxparserr	r	r
�)test_set_defaults_on_parent_and_subparsers
z9TestSetDefaults.test_set_defaults_on_parent_and_subparsercCs�t�}|jddddd�|jd�|jddd	�|jd
dd�|jd
ddd�|jtddddd�|jg��|jddddd�|jtddddd�|jg��dS)N�Wr�rr)r'r�r�r�z-wz-x�XX)r�r�r�)r�r��ZZ)r�r��WW�YY)rSrr]r�r2rO)rr^r	r	r
�&test_set_defaults_same_as_add_argument s
z6TestSetDefaults.test_set_defaults_same_as_add_argumentcCs�t�}|jddddd�|jd�}|jd�|jdd	d
�|jddd
�|jdddd�|jtdd	ddd�|jg��|jddddd�|jtddddd�|jg��dS)Nr	r�rr)r'r�r�r�rbz-wz-xr
)r�r�r�)r�r�r)r�r�rr
)rSrrcr]r�r2rO)rr^rdr	r	r
�,test_set_defaults_same_as_add_argument_group1s

z<TestSetDefaults.test_set_defaults_same_as_add_argument_groupN)
rrrrrrrrrrr	r	r	r
r�
s
	rc@seZdZdd�ZdS)�TestGetDefaultcCs�t�}|j|jd��|j|jd��|jd�|j|jd��|j|jd��|jdtdd�|j|jd��|jd|jd��|jdd�|jd|jd��|jd|jd��dS)	Nrbr�z--fooz--barr�)r:r�r�)rb)rSZassertIsNone�get_defaultr]r�r�r)rr^r	r	r
�test_get_defaultJs
zTestGetDefault.test_get_defaultN)rrrrr	r	r	r
rHsrc@seZdZdd�Zdd�ZdS)�TestNamespaceContainsSimplecCs$tj�}|jd|�|jd|�dS)Nr�r�)r�	Namespace�assertNotIn)r�nsr	r	r
�
test_emptyasz&TestNamespaceContainsSimple.test_emptycCsNtjddd�}|jd|�|jd|�|jd|�|jd|�|jd|�dS)	NrEr�)r�r�r�r�r�Zxxr�)rrr�assertIn)rrr	r	r
�test_non_emptyfsz*TestNamespaceContainsSimple.test_non_emptyN)rrrrrr	r	r	r
r_src@seZdZdd�ZdS)�TestHelpFormattingMetaclasscCs>|dkrdSGdd�dt�}xd	D]\}}||||�q"WdS)
N�HelpTestCasec@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc
Ssp||_||_x^|j|j|jgD]J}d|j|f}|fdd�}y
||_Wntk
rZYnXt|||�qWdS)Nz%s_%scSs||�dS)Nr	)rrmr	r	r
�test_wrapper�szUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper)�func_suffix�std_name�test_format�
test_print�test_print_filerrsrK)rZ
test_classrrrmrvrr	r	r
r1zs
z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__cSs�tj|jj|jj�}x$t|dg�D]}|j|j|j�q"Wt|dg�}x>|D]6\}}|j|j|j�}x|D]}|j|j|j�qjWqLWt|dg�}|r�|j�}	x|D]}
|	j	|
j|
j�q�W|S)Nr_�argument_group_signatures�subparsers_signatures)
rrnr[r/r0rJr]rcr�r�)rrwr^Zargument_sigZ
group_sigsZ	group_sigZ
argument_sigsrdZsubparsers_sigsr�Z
subparser_sigr	r	r
rx�s(


zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parsercSs&t||j�}tj|�}|j||�dS)N)rJrr�r�r�)rrw�parser_textZ
expected_textr	r	r
�_test�s
z<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testcSs,|j|�}t|d|j�}|j||��dS)Nz	format_%s)rxrJrr%)rrwr^r�r	r	r
r�s
zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatc
Ssr|j|�}t|d|j�}tt|j�}tt|jt��z|�tt|j�j�}Wdtt|j|�X|j||�dS)Nzprint_%s)	rxrJrrHrrKrrNr%)rrwr^�print_Z
old_streamr$r	r	r
r �s
zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printcSs@|j|�}t|d|j�}t�}||�|j�}|j||�dS)Nzprint_%s)rxrJrrrNr%)rrwr^r&Zsfiler$r	r	r
r!�s
zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_fileN)	rrrr1rxr%rr r!r	r	r	r
r�xsr��usagerBr��r'rB�r�rB)r(r))r�)r�r%r�r�r�rrr	r	r
r1tsHz$TestHelpFormattingMetaclass.__init__N)rrrr1r	r	r	r
rrsrrc@sjeZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerOptionalsr��DESCRIPTION�EPILOG)r�r��epilogz-vz	--versionr!z0.1)r�r!z-xr�zX HELP)r�r�z--yzY HELP)r�rbzFOO 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)
rrrr.r[r_r"r'r�r!r	r	r	r
r*�s

r*c@s8eZdZdd�ZejZejZejZdZedZ	ej
Z
dS)�TestShortColumnscCs$tj�}|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[r_r"r'r�r!r	r	r	r
r.�s	r.c@s�eZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZeddd�eddd�edddd�gfgZdZedZd Z	d!S)"�TestHelpBiggerOptionalGroupsr�r+r,)r�r�r-z-vz	--versionr!z0.1)r�r!z-xr�zX HELP)r�r�z--yzY HELP)r�rbzFOO HELPr�zBAR HELPzGROUP TITLEzGROUP DESCRIPTION)r�r�zBAZ HELPz-zr�zZ HELP)r�r�zN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a�
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        GROUP TITLE:
          GROUP DESCRIPTION

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

        EPILOG
    z        0.1
        N)
rrrr.r[r_r"r'r�r!r	r	r	r
r/#s



r/c@sZeZdZeddd�Zedddd�edd	d
�eddd
�ed
dd
�gZgZdZedZdZ	dS)�TestHelpBiggerPositionals�USAGEr+)r'r�z-xr�zX HELP)r�r�z--yzY HELP)r�ZekiekiekifekangzEKI 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)
rrrr.r[r_r"r'r�r!r	r	r	r
r0Rs

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

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

description)r�z-ar�z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple lines)r�r�z2        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)
rrrr.r[r_r"r'r�r!r	r	r	r
r2qs
r2c@sneZdZedddd�Zeddddd	�ed
dddd	�gZed
�eddddd�gfgZdZedZdZ	dS)�TestHelpWrappingShortNamesr�zD
D�)r�r�z-xr
zXHH HXr	)r�r�r�r�zYH YH�ALPHASz-ar�zAHHH HHA�
)r�r�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)
rrrr.r[r_r"r'r�r!r	r	r	r
r3�sr3c@s�eZdZedddd�Zedddddd	�ed
ddd
dd�edddddd�gZed�edddddd�edddddd�gfgZdZedZdZ	dS)�TestHelpWrappingLongNamesr1zD Dr4)r'r�z-vz	--versionr!zV V)r�r!z-xr��zXH XHr	)r�r�r�zYH YHr5z-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)
rrrr.r[r_r"r'r�r!r	r	r	r
r7�sr7c	@s�eZdZedd�Zedddd�eddd	d�ed
d
d�eddd
d�edddd�gZed�edddd�edddd�edddd�edddd�gfgZdZedZdZ	dS)�
TestHelpUsager�)r�z-wr�r')r�r�z-xr�r�r�)r�r�r�)r�r�r�r�rdz-yr�z-zr�r�rrxz�        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)
rrrr.r[r_r"r'r�r!r	r	r	r
r9
s

r9c@sleZdZeddd�ZgZed�eddd�eddd�gfed	�ed
d
d�eddd�gfgZd
ZedZdZ	dS)�TestHelpOnlyUserGroupsr�F)r�r�Zxxxxz-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)
rrrr.r[r_r"r'r�r!r	r	r	r
r:/
s

	r:c@sReZdZeddd�Zeddd�eddd�ed	�ed
�gZgZdZedZd
Z	dS)�TestHelpUsageLongProg�P�<)r�z-wr	)r�z-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)
rrrr.r[r_r"r'r�r!r	r	r	r
r;N
s



r;c@sveZdZeddd�Zedddd�edd	dd�ed
ddd�edd
dd�ed�ed�gZgZdZedZdZ	dS)� TestHelpUsageLongProgOptionsWrapr<r=)r�z-wr	r8)r�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)
rrrr.r[r_r"r'r�r!r	r	r	r
r>k
s
r>c@sReZdZedddd�Zedd�edd�edd�gZgZd	Zed
ZdZ	dS)
�$TestHelpUsageLongProgPositionalsWrapr<r=F)r�r�r�r8r�r�z�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        z�
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
r?�
s

r?c@sxeZdZedd�Zedddd�edddd�ed	d
dd�edddd�ed
�ed�ed�gZgZdZedZdZ	dS)�TestHelpUsageOptionalsWrapr�)r�z-wr	r8)r�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)
rrrr.r[r_r"r'r�r!r	r	r	r
r@�
s


r@c@s^eZdZedd�Zed�ed�ed�edd�edd�ed	d�gZgZd
ZedZdZ	d
S)�TestHelpUsagePositionalsWrapr�)r�z-xz-yz-zr�r8r�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)
rrrr.r[r_r"r'r�r!r	r	r	r
rA�
s


rAc@sveZdZedd�Zedddd�edddd�ed	d
dd�edd�edd�ed
d�gZgZdZedZdZ	dS)�%TestHelpUsageOptionalsPositionalsWrapr�)r�z-xr�r8)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)
rrrr.r[r_r"r'r�r!r	r	r	r
rB�
s


rBc@sXeZdZedd�Zedddd�edddd�ed	d
dd�gZgZdZedZd
Z	dS)�TestHelpUsageOptionalsOnlyWrapr�)r�z-xr�r8)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)
rrrr.r[r_r"r'r�r!r	r	r	r
rCs
rCc@sNeZdZeddd�Zedd�edd�edd�gZgZdZed	Zd
Z	dS)� TestHelpUsagePositionalsOnlyWrapr�F)r�r�r�r8r�r�z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        z�
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
rD.s

rDc
@s�eZdZedd�Zededd�edddd	d
d�edd
dd�eddddgddd�eddd�edddd�gZed�edd d�ed!d'd"d�gfgZd#Zed$Z	d%Z
d&S)(�TestHelpVariableExpansionr�)r�z-xz"x %(prog)s %(default)s %(type)s %%)r:r�z-yr�r��XXXz y %(prog)s %(default)s %(const)s)r�r�r�r�z--foor�z$foo %(prog)s %(default)s %(choices)s)r�r�z--barr�rEr�ZBBBz!bar %(prog)s %(default)s %(dest)s)r�r�r�r�r�zspam %(prog)s %(default)s)r�r�g�?zbadger %(prog)s %(default)s)r�r�rdz-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`)rrrr.r[r�r_r"r'r�r!r	r	r	r
rEFs$



rEc@s0eZdZeddd�ZgZgZdZedZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedr�z%(prog)s FOO)r�r'z         usage: PROG FOO
        z[
        optional arguments:
          -h, --help  show this help message and exit
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
rGtsrGc@s,eZdZeddd�ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsr�F)r�r�z        usage: PROG
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
rH�srHc@sBeZdZedejd�Zeddd�eddd�gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsager�)r�r'z--foozfoo help)r�r�z	spam helpz�        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrrr.rrr[r_r"r�r'r!r	r	r	r
rI�s
rIc@sFeZdZeddd�Zedejd�eddd�gZgZdZ	e	d	Z
d
ZdS)�TestHelpSuppressOptionalr�F)r�r�z--foo)r�r�z	spam helpz!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r�N)rrrr.r[rrr_r"r'r�r!r	r	r	r
rJ�srJc@sXeZdZedd�Zeddd�eddd�gZed�ed	ejd�gfgZd
Z	e	dZ
dZd
S)�TestHelpSuppressOptionalGroupr�)r�z--foozfoo help)r�r�z	spam helprdz--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)rrrr.r[r_rrr"r'r�r!r	r	r	r
rK�s

rKc@sDeZdZedd�Zeddd�edejd�gZgZdZ	e	dZ
d	Zd
S)�TestHelpSuppressPositionalr�)r�z--foozfoo help)r�r�z-        usage: PROG [-h] [--foo FOO]
        zz
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)rrrr.r[rrr_r"r'r�r!r	r	r	r
rL�s

rLc@s:eZdZedd�Zedddd�gZgZdZedZd	Z	d
S)�TestHelpRequiredOptionalr�)r�z--fooTzfoo help)r�r�z+        usage: PROG [-h] --foo FOO
        zz
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
rM�s
rMc@sJeZdZedddd�Zedddd�ed	d
dd�gZgZd
ZedZdZ	dS)�TestHelpAlternatePrefixCharsr�z^;F)r�r�r�z^^foor�zfoo help)r�r�z;bz;;barzbar help)r�z-        usage: PROG [^^foo] [;b BAR]
        zq
        optional arguments:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
rN�srNc@sDeZdZeddd�Zeddd�eddd�gZgZd	Zed
ZdZ	dS)
�TestHelpNoHelpOptionalr�F)r�r�z--foozfoo help)r�r�z	spam helpz-        usage: PROG [--foo FOO] spam
        z�
        positional arguments:
          spam       spam help

        optional arguments:
          --foo FOO  foo help
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
rOs
rOc@s:eZdZedd�Zed�ed�gZgZdZedZdZ	dS)	�TestHelpNoner�)r�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)
rrrr.r[r_r"r'r�r!r	r	r	r
rP*s

rPc	@sfeZdZedd�Zeddddd�ed	d
ddd�eddddd�eddddd�gZgZdZedZdZ	dS) �TestHelpTupleMetavarr�)r�z-wr'r��W1�W2)r�r�r�z-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)rRrS)rTrU)rVrWrX)rY)
rrrr.r[r_r"r'r�r!r	r	r	r
rQBs
rQc@s`eZdZedejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawTextr�z7Keep the formatting
    exactly as it is written

here
)r��formatter_classr�z--fooz-    foo help should also
appear as given here)r�r�z	spam helpr�z?    This text
  should be indented
    exactly like it is here
)r�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)rrrr.r�RawTextHelpFormatterr[r_r"r'r�r!r	r	r	r
rZ]s

rZc@s`eZdZedejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawDescriptionr�z7Keep the formatting
    exactly as it is written

here
)r�r[r�z--fooz4  foo help should not
    retain this odd formatting)r�r�z	spam helpr�z?    This text
  should be indented
    exactly like it is here
)r�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)rrrr.r�RawDescriptionHelpFormatterr[r_r"r'r�r!r	r	r	r
r]�s

r]c	@s~eZdZedejdd�Zeddd�eddd	d
�eddd�ed
dddd�gZeddd�ededdd�gfgZ	dZ
e
dZdZdS)�TestHelpArgumentDefaultsr�r�)r�r[r�z--fooz)foo help - oh and by the way, %(default)s)r�z--barr�zbar help)r�r�r�z	spam helpr�r�Zwoodenzbadger help)r�r�r�r�)r�z--bazr�zbaz help)r:r�r�zO        usage: PROG [-h] [--foo FOO] [--bar] [--baz BAZ] spam [badger]
        a�
        description

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

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

        title:
          description

          --baz BAZ   baz help (default: 42)
        r�N)
rrrr.r�ArgumentDefaultsHelpFormatterr[r_r�r"r'r�r!r	r	r	r
r_�s


r_c@s>eZdZeddd�Zeddddd�gZgZd	Zed
ZdZ	dS)
�TestHelpVersionActionr�r�)r�r�z-Vz	--versionr!z3.6)r�r!z&        usage: PROG [-h] [-V]
        z�
        description

        optional arguments:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        r�N)
rrrr.r[r_r"r'r�r!r	r	r	r
ra�srac@sPeZdZedd�Zeddddejd�edd	d
�eddd
�gZgZd
Z	e	dZ
dS)�TestHelpVersionActionSuppressr�)r�z-vz	--versionr!z1.0)r�r!r�z--foozfoo help)r�r�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)rrrr.r[rrr_r"r'r�r	r	r	r
rb�s


rbc@sHeZdZeddd�Zeddddd�gZd	d
�dD�ZdZedZdZ	dS)�TestHelpSubparsersOrderingr�zdisplay some subcommands)r�r�z-vz	--versionr!z0.1)r�r!cCsg|]}t|d��qS))r%)r.)r5r%r	r	r
r7sz%TestHelpSubparsersOrdering.<listcomp>r�r�r�rrxz6        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�rrx)
rrrr.r[r_r#r'r�r!r	r	r	r
rcs
rcc@sLeZdZeddd�Zeddddd�gZdZdd�eD�ZdZedZ	dZ
dS)�"TestHelpSubparsersWithHelpOrderingr�zdisplay some subcommands)r�r�z-vz	--versionr!z0.1)r�r!r��a subcommand helpr��b subcommand helpr��c subcommand helpr�d subcommand helprx�e subcommand helpcCsg|]\}}t||d��qS))r%r�)r.)r5r%r�r	r	r
r7=sz-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�re�r�rf�r�rg�rrh�rxri)rjrkrlrmrn)rrrr.r[r_Zsubcommand_datar#r'r�r!r	r	r	r
rd0srdc@s\eZdZdd�Zeddejd�Zeded�eded�ed	e	d
d�gZ
gZdZed
Z
dZdS)�TestHelpMetavarTypeFormattercCs|S)Nr	)rlr	r	r
�custom_type^sz(TestHelpMetavarTypeFormatter.custom_typer�r�)r�r�r[r�)r:z-bz-cz
SOME FLOAT)r:r�zF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z�
        description

        positional arguments:
          int

        optional arguments:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        r�N)rrrrpr.r�MetavarTypeHelpFormatterr[r�rr_r"r'r�r!r	r	r	r
ro[s


roc@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|jf|�|�dS)N)rrnr|rsr])rr/r0r^r	r	r
�assertTypeError�sz/TestInvalidArgumentConstructors.assertTypeErrorcOs"tj�}|jt|jf|�|�dS)N)rrnr|r�r])rr/r0r^r	r	r
�assertValueError�sz0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd�|jddd�|jdfd�|jdid�dS)Nz-x)r�z-yrb)�callback)Z
callback_args)Zcallback_kwargs)rs)rr	r	r
�test_invalid_keyword_arguments�sz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs&|j�xdD]}|j|d�qWdS)Nr�r�)r�)r�r�)rs)rr�r	r	r
�test_missing_destination�s
z8TestInvalidArgumentConstructors.test_missing_destinationcCs|jd�|jd�dS)Nz--z---)rt)rr	r	r
�test_invalid_option_strings�s
z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd�|jdttfd�dS)Nz--foor�)r:)rtr�r)rr	r	r
�test_invalid_type�sz1TestInvalidArgumentConstructors.test_invalid_typecCsl|jddd�|jddd�|jdd
d�tj�}|jt��}|jddd�WdQRX|jd	t|j��dS)Nz-xrb)r�r�z--foor�r�z
store-truezunknown action)r�r�)	rtrrnr|r�r]rrr�)rr^r�r	r	r
�test_invalid_action�sz3TestInvalidArgumentConstructors.test_invalid_actioncCsNtj�}|jdd�|jt��}|jddd�WdQRX|jdt|j��dS)Nrb)r�r�r�z+dest supplied twice for positional argument)rrnr]r|r�rrr�)rr^r�r	r	r
�test_multiple_dest�sz2TestInvalidArgumentConstructors.test_multiple_destcCsLxFd
D]>}x8ttd�tdd�td	d
�gD]}|jdd|i|��q(WqWdS)Nr�r�r�r�r�)r:r�)r�Zab)r��-xr�)r�r�r�r�r�)r|)r�r�rs)rr�Zattrsr	r	r
�test_no_argument_actions�s
z8TestInvalidArgumentConstructors.test_no_argument_actionscCs2x,d	D]$}|jdd|d�|jdd|d�qWdS)
Nr�r�r�z-xrb)r�r�r�)r�r�)r�r�r�)rs)rr�r	r	r
�!test_no_argument_no_const_actions�s
zATestInvalidArgumentConstructors.test_no_argument_no_const_actionscCsdx^dD]V}|jdd|d�|jdd|d�x0d
D](}|jdd
||d�|jdd
||d�q0WqWdS)Nr�r�z-xr)r�r�r�rEr�r�rb)r�r�r�)r�r�)rEr�r�)rt)rr�r�r	r	r
�#test_more_than_one_argument_actions�s


zCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCs"xdD]}|jdd|d�qWdS)Nr�r�z-xr�)r�r�)r�r�)rs)rr�r	r	r
�test_required_const_actions�s
z;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd�|jdddd�|jddtjd�dS)NZcommand�parsers)r�r�)r�r�)r�r\)rsrrn)rr	r	r
�"test_parsers_action_missing_params�szBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddd�dS)NrbT)r�)rs)rr	r	r
�test_required_positional�sz8TestInvalidArgumentConstructors.test_required_positionalcs`Gdd�dt��G�fdd�dt�}tj�}|j�|jd|��d�|j�|jd|��d�dS)Nc@seZdZdS)zITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessN)rrrr	r	r	r
�Success�sr�cs"eZdZd�fdd�	Zdd�ZdS)zHTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFcs"|dkr|�kr|�kr���dS)Nr�r	)r�option_stringsr�r�r�r�)r�r	r
r1�szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__c_sdS)Nr	)rr/r0r	r	r
ry�szQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__N)F)rrrr1ryr	)r�r	r
r|�sr|z--spam)r�r�r�r�)r@r�rrnr|r])rr|r^r	)r�r
�test_user_defined_action�sz8TestInvalidArgumentConstructors.test_user_defined_actionN)rrrrsrtrvrwrxryrzr{r}r~rr�r�r�r�r	r	r	r
rr}s	
rrc@seZdZdd�Zdd�ZdS)�TestActionsReturnedcCsXtj�}|jd�}|j|jd�|jdd�}|j|jd�|jdd�}|j|jd�dS)	Nz--foorbz-bz--barr�z-xz-yr�)rrnr]r�r�)rr^r�r	r	r
r��s
zTestActionsReturned.test_destcCs�tj�}|jddddtddgddd	d
�	}|j|jd�|j|jd�|j|jd�|j|jt�|j|j	ddg�|j|j
d�|j|jd�|j|jd	�dS)Nz--foor�r�r�rEr�r�ZBARr�)r�r�r�r:r�r�r�r�)
rrnr]r�r�r�r�r�r:r�r�r�r�)rr^r�r	r	r
�	test_miscs

zTestActionsReturned.test_miscN)rrrr�r�r	r	r	r
r��s	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestConflictHandlingcCs|jttjdd�dS)Nrb)�conflict_handler)r|r�rrn)rr	r	r
�
test_bad_types
z"TestConflictHandling.test_bad_typecCsDtj�}|jd�|jtj|jd�|jd�|jtj|jd�dS)Nz-xz--spam)rrnr]r|r�)rr^r	r	r
�test_conflict_errors


z(TestConflictHandling.test_conflict_errorcCsztj}|ddd�}|jddd�|jddd�|j|j�tjd��|jd	d
d�|jd	dd�|j|j�tjd
��dS)Nr�Zresolve)r�r�z-xzOLD X)r�zNEW Xz�            usage: PROG [-h] [-x X]

            optional arguments:
              -h, --help  show this help message and exit
              -x X        NEW X
            z--spamZOLD_SPAM)r�ZNEW_SPAMz�            usage: PROG [-h] [-x X] [--spam NEW_SPAM]

            optional arguments:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )rrnr]r�r�r�r�)rr�r^r	r	r
�test_resolve_error(sz'TestConflictHandling.test_resolve_errorN)rrrr�r�r�r	r	r	r
r�s	r�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestOptionalsHelpVersionActionsc
Cs<|jt��}|j|j��WdQRX|j|j�|jj�dS)N)r|r?rOr{r�r�r�rB)rr^r}r�r	r	r
�assertPrintHelpExitIsz3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|jt|j|�dS)N)r|r?rO)rr^r/r	r	r
r�Nsz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt�}|jddddd�|j|d�|j|d�|jtt|d�dS)	Nz-vz	--versionr!z1.0)r�r!z-hz--help�format_version)rSr]r�r|�AttributeErrorrJ)rr^r	r	r
�test_versionQs
z,TestOptionalsHelpVersionActions.test_versionc
CsRtdd�}|jddddd�|jt��}|jdg�WdQRX|jd|jj�dS)	NZPPP)r�z-vz	--versionr!z%(prog)s 3.5)r�r!zPPP 3.5
)rSr]r|r?rOr�r�rB)rr^r�r	r	r
�test_version_formatXs

z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd�}|jddddd�|j|d�|j|d	�|jtt|d
�dS)NF)r�z-vz	--versionr!z1.0)r�r!z-hz--helpr�)rSr]r�r|r�rJ)rr^r	r	r
�test_version_no_help_s

z4TestOptionalsHelpVersionActions.test_version_no_helpc
CsPtdd�}|jdddd�|jt��}|jdg�WdQRX|jd|jj�dS)NrF)r�z-Vr!z%(prog)s 3.7)r�r!zXXX 3.7
)rSr]r|r?rOr�r�rB)rr^r�r	r	r
�test_version_actionfs

z3TestOptionalsHelpVersionActions.test_version_actioncCs>tdd�}|j|d�|j|d�|j|d�|j|d�dS)NF)r�z-hz--helpz-vz	--version)rSr�)rr^r	r	r
�test_no_helpms

z,TestOptionalsHelpVersionActions.test_no_helpcCsZt�}|jddd�|jddd�|j|d�|j|d�|j|d�|jtt|d�dS)	Nz-xr�)r�z-yr!z-vz	--versionr�)rSr]r�r�r|r�rJ)rr^r	r	r
�test_alternate_help_versiontsz;TestOptionalsHelpVersionActions.test_alternate_help_versioncCs�t�}|jdddd�|jddd�|jd�d	dd
ddg}|d
dg}xV|D]N}x|D]}d||f}qXW|j||d�|j||d�|jtt|d�qNWdS)Nz	--versionr!z1.0)r�r!z-xr�)r�r�r�rbz-x barzbaz -xz--bad-optionzfoo bar bazz	%s %%s %sz-hz--helpr�)rSr]r�r|r�rJ)rr^Zvalid_prefixesZvalid_suffixes�prefix�suffixr�r	r	r
�!test_help_version_extra_arguments}s


zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN)rrrr�r�r�r�r�r�r�r�r�r	r	r	r
r�Fs	r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestStringscCs&x ttgD]}|j||�|�q
WdS)N)rr8r�)r�objZ
result_string�funcr	r	r
�assertStringEqual�szTestStrings.assertStringEqualc
Cs:tjdddgdddddd	d
gddd
�}d}|j||�dS)Nz--fooz-az-br�r�r�r�rEr�r�ZHELPZMETAVAR)r�r�r:r�r�r�r�r�z�Action(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], help='HELP', metavar='METAVAR'))rr|r�)r�optionrlr	r	r
�
test_optional�szTestStrings.test_optionalc
Cs8tjgdtdddddgddd�}d	t}|j||�dS)
Nr�r�g@g�?g�?zH HH HzMV MV MV)r�r�r:r�r�r�r�r�z�Action(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], help='H HH H', metavar='MV MV MV'))rr|rr�)r�argumentrlr	r	r
�
test_argument�szTestStrings.test_argumentcCs"tjddd�}d}|j||�dS)Nr�r�)rbr�zNamespace(bar='spam', foo=42))rrr�)rrrlr	r	r
�test_namespace�szTestStrings.test_namespacecCs$tjfddi�}d}|j||�dS)N�"�quotezNamespace(**{'"': 'quote'}))rrr�)rrrlr	r	r
�'test_namespace_starkwargs_notidentifier�sz3TestStrings.test_namespace_starkwargs_notidentifiercCs,tjfddiddi��}d}|j||�dS)Nr�rEr�r�z Namespace(a=1, **{'"': 'quote'}))rrr�)rrrlr	r	r
�2test_namespace_kwargs_and_starkwargs_notidentifier�sz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiercCs$tjfddi�}d}|j||�dS)NZvalidTzNamespace(valid=True))rrr�)rrrlr	r	r
�$test_namespace_starkwargs_identifier�sz0TestStrings.test_namespace_starkwargs_identifiercCs&tjdd�}dtj}|j||�dS)Nr�)r�zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))rrn�
HelpFormatterr�)rr^rlr	r	r
�test_parser�szTestStrings.test_parserN)rrrr�r�r�r�r�r�r�r�r	r	r	r
r��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�
TestNamespacecCsFtj�}|jtt|d�tjddd�}|j|jd�|j|jd�dS)Nr�r�r�)r�r�)rrr|r�rJr�r�r�)rrr	r	r
�test_constructor�s
zTestNamespace.test_constructorcCs�tjddd�}tjddd�}tjdd�}tjdd�}|j||�|j||�|j||�|j||�|j||�|j||k�|j||k�|j||k�|j||k�dS)NrEr�)r�r�)r�r�)r�)r�)rrr�ZassertNotEqual�
assertTrue)rZns1Zns2Zns3Zns4r	r	r
�
test_equality�szTestNamespace.test_equalitycCs6tjddd�}|j|jd�t�|j|jd�t�dS)NrEr�)r�r�)rrZassertIsr>�NotImplemented�__ne__)rrr	r	r
�$test_equality_returns_notimplemented�sz2TestNamespace.test_equality_returns_notimplementedN)rrrr�r�r�r	r	r	r
r��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestEncodingc	Cs>tjj|�\}}|d7}tj|dd��}|j�WdQRXdS)Nz.pyr6zutf-8)rr�splitext�codecsr(rK)rrrlr�r	r	r
�_test_module_encodingsz"TestEncoding._test_module_encodingcCs|jtj�dS)N)r�r�__file__)rr	r	r
�test_argparse_module_encodingsz*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��sr�c@seZdZdd�ZdS)�TestArgumentErrorcCs$d}tjd|�}|jt|�|�dS)Nz
my error here)rr�r�r)rryrWr	r	r
�test_argument_errorsz%TestArgumentError.test_argument_errorN)rrrr�r	r	r	r
r�sr�c@seZdZdd�ZdS)�TestArgumentTypeErrorc
CsXdd�}tddd�}|jd|d�|jt��}|jdg�WdQRX|jd	|jj�dS)
NcSstjd��dS)Nzspam!)r�ArgumentTypeError)rlr	r	r
r�sz<TestArgumentTypeError.test_argument_type_error.<locals>.spamr�F)r�r�r�)r:rFz-usage: PROG x
PROG: error: argument x: spam!
)rSr]r|r?rOr�r�rC)rr�r^r�r	r	r
�test_argument_type_errorsz.TestArgumentTypeError.test_argument_type_errorN)rrrr�r	r	r	r
r�sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestMessageContentErrorcCs.tddd�}|jdtd�|jdtdd�|jd	td
d�|jt��}|jg�WdQRXt|j�}|j|d�|j|d�|j|d	�|jt��}|jd
g�WdQRXt|j�}|j	|d�|j|d�|j|d	�|jt��}|jd
dg�WdQRXt|j�}|j	|d�|j	|d�|j|d	�dS)Nr�r�)r�r'�req_pos)r:z-req_optT)r:r�Zneed_oner�)r:r��req_optZmyXargumentz
-req_opt=1)
rSr]rr�r|r?rOr��assertRegexr)rr^r�ryr	r	r
�%test_missing_argument_name_in_message/s,


z=TestMessageContentError.test_missing_argument_name_in_messagecCs�tddd�}|jdtd�|jdtdd�|jd	td
dd�|jt��}|jg�WdQRXt|j�}|j	|d�|j	|d�|j
|d
�|jt��}|jdg�WdQRXt|j�}|j	|d�|j
|d�|j
|d
�dS)Nr�r�)r�r'r�)r:z	--req_optT)r:r�z	--opt_optr�)r:r�r�r�Zopt_optz--req_opt=1)rSr]rr��boolr|r?rOr�r�r)rr^r�ryr	r	r
�%test_optional_optional_not_in_messageHs"


z=TestMessageContentError.test_optional_optional_not_in_messagec
Csltddd�}|jd�|jdddd�|jt��}|jg�WdQRXt|j�}|j|d�|j|d�dS)	Nr�r�)r�r'r�Zoptional_positionalr�rd)r�r�)	rSr]r|r?rOrr�r�r)rr^r�ryr	r	r
�'test_optional_positional_not_in_message[s

z?TestMessageContentError.test_optional_positional_not_in_messageN)rrrr�r�r�r	r	r	r
r�-sr�c@seZdZdd�ZdS)�TestTypeFunctionCallOnlyOncecsH�fdd�}tj�}|jd|dd�|jdj��}�jtdd�|�dS)	Ncs�j|d�dS)Nzspam!�
foo_converted)r�)Zstring_to_convert)rr	r
r�mszLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamz--foor�)r:r�z--foo spam!r�)rb)rrnr]rOr{r�r2)rr�r^r/r	)rr
�!test_type_function_call_only_oncels
z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrrr�r	r	r	r
r�jsr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestTypeFunctionCalledOnDefaultcsD�fdd�}tj�}|jd|dd�|jg�}�jtdd�|�dS)Ncs�j|d�dS)Nrr�)r�)�int_to_convert)rr	r
r�}sz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spamz--foor)r:r�)rb)rrnr]rOr�r2)rr�r^r/r	)rr
�/test_type_function_call_with_non_string_default|s

zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcCs@dd�}tj�}|jd|dd�|jg�}|jtdd�|�dS)NcSsdS)Nr�r	)r�r	r	r
r��szYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spamz--foo�0)r:r�r�)rb)rrnr]rOr�r2)rr�r^r/r	r	r
�+test_type_function_call_with_string_default�s

zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCs@dd�}tj�}|jd|dd�|jg�}|jtdd�|�dS)NcSs|dS)Nr�r	)Zstr_to_convertr	r	r
�extend�szYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extendz--testr�)r:r�z**)rp)rrnr]rOr�r2)rr�r^r/r	r	r
�)test_no_double_type_conversion_of_default�s

zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8tj�}|jddtgdd�|jg�}|j|jg�dS)Nz--testrpr�)r�r:r�r�)rrnr]rrOr�rp)rr^r/r	r	r
�test_issue_15906�s



z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrrr�r�r�r�r	r	r	r
r�zs
r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestParseKnownArgscCstj�}|jf�dS)N)rrnrO)rr^r	r	r
�test_arguments_tuple�sz'TestParseKnownArgs.test_arguments_tuplecCstj�}|jg�dS)N)rrnrO)rr^r	r	r
�test_arguments_list�sz&TestParseKnownArgs.test_arguments_listcCs tj�}|jd�|jd�dS)Nr�)r�)rrnr]rO)rr^r	r	r
�test_arguments_tuple_positional�s
z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"tj�}|jd�|jdg�dS)Nr�)rrnr]rO)rr^r	r	r
�test_arguments_list_positional�s
z1TestParseKnownArgs.test_arguments_list_positionalcCsJtj�}|jd�|jdj��\}}|jtdd�|�|jddg|�dS)Nz--fooz--foo F --bar --baz�F)rbz--barz--baz)rrnr]r�r{r�r2)rr^r/�extrasr	r	r
�test_optionals�s

z!TestParseKnownArgs.test_optionalscCs|tj�}|jdddtd�|jddd�|jd�d	d
dddd
g}|j|�\}}|jtddd	d�|�|jd
dd
g|�dS)Nz-vr�rE)r�r�r:z--spamr�)r�r�r�rjz--foor�r
r�T)�vr�r�)rrnr]r�r�r�r2)rr^rjr/r�r	r	r
�
test_mixed�s
zTestParseKnownArgs.test_mixedN)	rrrr�r�r�r�r�r�r	r	r	r
r��sr�c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`S)a�TestAddArgumentMetavarz,length of metavar tuple does not match nargscCstj�}|jd||d�dS)Nz--foo)r�r�)rrnr])rr�r�r^r	r	r
�do_test_no_exception�sz+TestAddArgumentMetavar.do_test_no_exceptioncCsHtj�}|jt��}|jd||d�WdQRX|j|jjd|j�dS)Nz--foo)r�r�r)	rrnr|r�r]r�r�r/�EXPECTED_MESSAGE)rr�r�r^r�r	r	r
�do_test_exception�sz(TestAddArgumentMetavar.do_test_exceptioncCs|jddd�dS)Nr�)r�r�)r�)rr	r	r
�test_nargs_None_metavar_string�sz5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdt�d�dS)N)r�r�)r��tuple)rr	r	r
�test_nargs_None_metavar_length0�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCs|jddd�dS)Nr�)r�r�)r�)r�)rr	r	r
�test_nargs_None_metavar_length1�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jddd�dS)Nr�r�)r�r�)r�r�)r�)rr	r	r
�test_nargs_None_metavar_length2�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jddd�dS)Nr�r�r�)r�r�)r�r�r�)r�)rr	r	r
�test_nargs_None_metavar_length3�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jddd�dS)Nr�r�)r�r�)r�)rr	r	r
�"test_nargs_optional_metavar_string�sz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcCs|jdt�d�dS)Nr�)r�r�)r�r�)rr	r	r
�#test_nargs_optional_metavar_length0�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCs|jddd�dS)Nr�r�)r�r�)r�)r�)rr	r	r
�#test_nargs_optional_metavar_length1�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jddd�dS)Nr�r�r�)r�r�)r�r�)r�)rr	r	r
�#test_nargs_optional_metavar_length2�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jddd�dS)Nr�r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�#test_nargs_optional_metavar_length3sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jddd�dS)Nr�r�)r�r�)r�)rr	r	r
�$test_nargs_zeroormore_metavar_stringsz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCs|jdt�d�dS)Nr�)r�r�)r�r�)rr	r	r
�%test_nargs_zeroormore_metavar_length0
sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0cCs|jddd�dS)Nr�r�)r�r�)r�)r�)rr	r	r
�%test_nargs_zeroormore_metavar_length1
sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1cCs|jddd�dS)Nr�r�r�)r�r�)r�r�)r�)rr	r	r
�%test_nargs_zeroormore_metavar_length2sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2cCs|jddd�dS)Nr�r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�%test_nargs_zeroormore_metavar_length3sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3cCs|jddd�dS)Nr�r�)r�r�)r�)rr	r	r
�#test_nargs_oneormore_metavar_stringsz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringcCs|jdt�d�dS)Nr�)r�r�)r�r�)rr	r	r
�$test_nargs_oneormore_metavar_length0sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0cCs|jddd�dS)Nr�r�)r�r�)r�)r�)rr	r	r
�$test_nargs_oneormore_metavar_length1sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1cCs|jddd�dS)Nr�r�r�)r�r�)r�r�)r�)rr	r	r
�$test_nargs_oneormore_metavar_length2!sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2cCs|jddd�dS)Nr�r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�$test_nargs_oneormore_metavar_length3$sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3cCs|jddd�dS)Nz...r�)r�r�)r�)rr	r	r
�#test_nargs_remainder_metavar_string)sz:TestAddArgumentMetavar.test_nargs_remainder_metavar_stringcCs|jdt�d�dS)Nz...)r�r�)r�r�)rr	r	r
�$test_nargs_remainder_metavar_length0,sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0cCs|jddd�dS)Nz...r�)r�r�)r�)r�)rr	r	r
�$test_nargs_remainder_metavar_length1/sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1cCs|jddd�dS)Nz...r�r�)r�r�)r�r�)r�)rr	r	r
�$test_nargs_remainder_metavar_length22sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2cCs|jddd�dS)Nz...r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�$test_nargs_remainder_metavar_length35sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3cCs|jddd�dS)NzA...r�)r�r�)r�)rr	r	r
� test_nargs_parser_metavar_string:sz7TestAddArgumentMetavar.test_nargs_parser_metavar_stringcCs|jdt�d�dS)NzA...)r�r�)r�r�)rr	r	r
�!test_nargs_parser_metavar_length0=sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length0cCs|jddd�dS)NzA...r�)r�r�)r�)r�)rr	r	r
�!test_nargs_parser_metavar_length1@sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length1cCs|jddd�dS)NzA...r�r�)r�r�)r�r�)r�)rr	r	r
�!test_nargs_parser_metavar_length2Csz8TestAddArgumentMetavar.test_nargs_parser_metavar_length2cCs|jddd�dS)NzA...r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�!test_nargs_parser_metavar_length3Fsz8TestAddArgumentMetavar.test_nargs_parser_metavar_length3cCs|jddd�dS)NrEr�)r�r�)r�)rr	r	r
�test_nargs_1_metavar_stringKsz2TestAddArgumentMetavar.test_nargs_1_metavar_stringcCs|jdt�d�dS)NrE)r�r�)r�r�)rr	r	r
�test_nargs_1_metavar_length0Nsz3TestAddArgumentMetavar.test_nargs_1_metavar_length0cCs|jddd�dS)NrEr�)r�r�)r�)r�)rr	r	r
�test_nargs_1_metavar_length1Qsz3TestAddArgumentMetavar.test_nargs_1_metavar_length1cCs|jddd�dS)NrEr�r�)r�r�)r�r�)r�)rr	r	r
�test_nargs_1_metavar_length2Tsz3TestAddArgumentMetavar.test_nargs_1_metavar_length2cCs|jddd�dS)NrEr�r�r�)r�r�)r�r�r�)r�)rr	r	r
�test_nargs_1_metavar_length3Wsz3TestAddArgumentMetavar.test_nargs_1_metavar_length3cCs|jddd�dS)Nr�r�)r�r�)r�)rr	r	r
�test_nargs_2_metavar_string\sz2TestAddArgumentMetavar.test_nargs_2_metavar_stringcCs|jdt�d�dS)Nr�)r�r�)r�r�)rr	r	r
�test_nargs_2_metavar_length0_sz3TestAddArgumentMetavar.test_nargs_2_metavar_length0cCs|jddd�dS)Nr�r�)r�r�)r�)r�)rr	r	r
�test_nargs_2_metavar_length1bsz3TestAddArgumentMetavar.test_nargs_2_metavar_length1cCs|jddd�dS)Nr�r�r�)r�r�)r�r�)r�)rr	r	r
�test_nargs_2_metavar_length2esz3TestAddArgumentMetavar.test_nargs_2_metavar_length2cCs|jddd�dS)Nr�r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�test_nargs_2_metavar_length3hsz3TestAddArgumentMetavar.test_nargs_2_metavar_length3cCs|jddd�dS)Nr�r�)r�r�)r�)rr	r	r
�test_nargs_3_metavar_stringmsz2TestAddArgumentMetavar.test_nargs_3_metavar_stringcCs|jdt�d�dS)Nr�)r�r�)r�r�)rr	r	r
�test_nargs_3_metavar_length0psz3TestAddArgumentMetavar.test_nargs_3_metavar_length0cCs|jddd�dS)Nr�r�)r�r�)r�)r�)rr	r	r
�test_nargs_3_metavar_length1ssz3TestAddArgumentMetavar.test_nargs_3_metavar_length1cCs|jddd�dS)Nr�r�r�)r�r�)r�r�)r�)rr	r	r
�test_nargs_3_metavar_length2vsz3TestAddArgumentMetavar.test_nargs_3_metavar_length2cCs|jddd�dS)Nr�r�r�r�)r�r�)r�r�r�)r�)rr	r	r
�test_nargs_3_metavar_length3ysz3TestAddArgumentMetavar.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�rrrrrrrrrr	r
rrr	r	r	r
r��s`r�c@seZdZdd�Zdd�ZdS)�TestImportStarcCs$xtjD]}|jtt|��qWdS)N)r�__all__r�r�)rr%r	r	r
rp�szTestImportStar.testcCs0dd�tt�j�D�}|jt|�ttj��dS)NcSs0g|](\}}|jd�p|dkstj|�s|�qS)rl�ngettext)�
startswith�inspectZismodule)r5r%rgr	r	r
r7�szJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>)r<rr9r�r8r)rr9r	r	r
�'test_all_exports_everything_but_modules�sz6TestImportStar.test_all_exports_everything_but_modulesN)rrrrprr	r	r	r
r
�sr
c@seZdZdd�Zdd�ZdS)�TestWrappingMetavarcCs"td�|_d}|jjd|d�dS)NZ9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxy)r�)rSr^r])rr�r	r	r
r�szTestWrappingMetavar.setUpcCs |jj�}|j|tjd��dS)Na(            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            optional arguments:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r^r�r�r�r�)r�	help_textr	r	r
�test_help_with_metavar�s

z*TestWrappingMetavar.test_help_with_metavarN)rrrrrr	r	r	r
r�s	rcCstjt�it_t�t_dS)N)rZrun_unittestrrHrJrrUr	r	r	r
�	test_main�s
r�__main__)�r�rrr!rrHr�rZunittestr�iorrprrrrr�rr.r2r@r?rRrnrSr:rYr�rZr�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
rrrrrrrrrr r"r.r5rErPr[Z	eq_stderrrHrMrQrSrUZskipIfr�rYrZr\r]rcrfrirkrqr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr*r.r/r0r2r3r7r9r:r;r>r?r@rArBrCrDrErGrHrIrJrKrLrMrNrOrPrQrZr]r_rarbrcrdrorrr�r�r�r�r�r�r�r�r�r�r�r�r�r
rrrr	r	r	r
�<module>s�
 q











##
CD'4&0#+!$-*(-	


^R$7/4(6,$&"$.
10(+"~-LG%=1*,

Youez - 2016 - github.com/yon3zu
LinuXploit