Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/test/__pycache__/test_argparse.cpython-39.opt-2.pyc

a

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

zTempDirMixin.setUpcCs^t�|j�tj|jdd�D].\}}}|D]}t�tj�|j|�tj	�q*qt
�|jd�dS)NF)�topdownT)r+r.r-�walkr*�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�namerrr�tearDown7s
zTempDirMixin.tearDowncCsHtj�|j|�}t|d��}|�|�Wd�n1s:0Y|S)N�w)r+r2r3r*�open�write)r�filenameZ	file_path�filerrr�create_writable_file>s(z!TempDirMixin.create_writable_filecCst�|�|�tj�dSr')r+r1rBr4�S_IREAD)rr@rrr�create_readonly_fileDsz!TempDirMixin.create_readonly_fileN)rrrr%r<rBrDrrrrr&0sr&c@seZdZdd�ZdS)�SigcOs||_||_dSr')�args�kwargs�rrFrGrrrrIszSig.__init__N�rrrrrrrrrEGsrEc@s$eZdZdd�Zdd�Zdd�ZdS)�NScKs|j�|�dSr')�__dict__�update)rrGrrrrPszNS.__init__cCs4t|j���}d�dd�|D��}dt|�j|fS)Nz, cSsg|]}d|�qS)z%s=%rr)�.0�tuprrr�
<listcomp>U�zNS.__repr__.<locals>.<listcomp>z%s(%s))�sortedrK�itemsr3�typer)rZsorted_itemsZ	kwarg_strrrr�__repr__SszNS.__repr__cCst|�t|�kSr')�vars�r�otherrrr�__eq__Xsz	NS.__eq__N)rrrrrTrXrrrrrJNsrJc@seZdZddd�ZdS)�ArgumentParserErrorNcCs,t�||||�||_||_||_||_dSr')�	Exceptionr�message�stdout�stderr�
error_code)rr[r\r]r^rrrr^s
zArgumentParserError.__init__)NNNrIrrrrrY\srYc
Osjttjt�sttjt�r&||i|��Stj}tj}t�t_t�t_�zz�||i|��}tt|��D]�}t||�}|tjur�t|||�qb|tjj	ur�t||t|dt
��qb|tjur�t|||�qb|tjj	urbt||t|dt��qb|WW|t_|t_St�yF}z6|j
}	tj��}
tj��}td|
||	�d�WYd}~n
d}~00W|t_|t_n|t_|t_0dS)Nr�
SystemExit)�
isinstance�sysr]rr\�listrU�getattr�setattrr�BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELr_�coderrY)�
parse_argsrFrGZ
old_stdoutZ
old_stderr�result�key�attr�ergr\r]rrr�stderr_to_parser_errorfsH


�

���rmcs4eZdZ�fdd�Z�fdd�Z�fdd�Z�ZS)�ErrorRaisingArgumentParsercs"tt|�j}t|g|�Ri|��Sr')r
rnrhrm)rrFrGrhrrrrh�sz%ErrorRaisingArgumentParser.parse_argscs"tt|�j}t|g|�Ri|��Sr')r
rn�exitrm)rrFrGrorrrro�szErrorRaisingArgumentParser.exitcs"tt|�j}t|g|�Ri|��Sr')r
rn�errorrm)rrFrGrprrrrp�sz ErrorRaisingArgumentParser.error)rrrrhrorprrrrrrn�srnc@seZdZdd�ZdS)�ParserTesterMetaclasscCs�|dkrdSt|d�st�|_t|d�s.t|_dd�}dd�}dd	�}d
d�}dd
�}Gdd�dt�}	|||fD]}
||fD]}|	||
|�q|qpdS)N�ParserTestCase�parser_signature�parser_classcSs"|D]}|j|ji|j��qdSr')�add_argumentrFrG)�parser�argument_signatures�sigrrr�	no_groups�sz1ParserTesterMetaclass.__init__.<locals>.no_groupscSs,|�d�}|D]}|j|ji|j��qdS)N�foo)�add_argument_grouprurFrG)rvrw�grouprxrrr�	one_group�s
z1ParserTesterMetaclass.__init__.<locals>.one_groupcSs8t|�D]*\}}|�d|�}|j|ji|j��qdS)Nzfoo:%i)�	enumerater{rurFrG)rvrw�irxr|rrr�many_groups�sz3ParserTesterMetaclass.__init__.<locals>.many_groupscSs
|�|�Sr')rh)rvrFrrr�listargs�sz0ParserTesterMetaclass.__init__.<locals>.listargscSs4tj}|dg|t_z|��W|t_S|t_0dS)Nr)ra�argvrh)rvrFZold_sys_argvrrr�sysargs�s�z/ParserTesterMetaclass.__init__.<locals>.sysargsc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
z0ParserTesterMetaclass.__init__.<locals>.AddTestsc	Ss�||_||_|jj}|jj}|j|jfD]T}|j}|||f}d�|�}	|fdd�}
z
|	|
_WntynYn0t||	|
�q(dS)N�_cSs||�dSr'r�r�	test_funcrrr�wrapper�szJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper)�_add_arguments�_parse_argsr�
test_failures�test_successesr3�	TypeErrorrd)rZ
tester_cls�
add_argumentsrhZadd_arguments_nameZparse_args_namer��	func_name�names�	test_namer�rrrr�s


z9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__cSs2|jj}|jj}|j|i|��}|�||j�|Sr')rsrFrGrtr�rw)r�testerrFrGrvrrr�_get_parser�s
z<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parserc	SsZ|�|�}|jD]D}|��}|jt|d��|�|�Wd�q1sJ0YqdS)N)�msg)r��failures�split�assertRaisesrYrh)rr�rv�args_strrFrrrr��s


z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failurescSsH|�|�}|jD]2\}}t|t�r*|��}|�||�}|�||�qdSr')r��	successesr`�strr�r��assertEqual)rr�rvrF�expected_nsZ	result_nsrrrr��s

z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successesN)rrrrr�r�r�rrrr�AddTests�sr�)�hasattrrErsrnrt�object)�clsr;�bases�bodydictryr}r�r�r�r�r�rhrrrr�s

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


��r�c@sheZdZedddddd�gZgd�Zded	d
�fdedd
�fdedd
�fdedd
�fdedd
�fgZdS)
�TestOptionalsShortLong�-vz	--verbosez-nz--noisyr�r�)z
--x --verbosez-Nr�z-v xrF)�verboseTNr�rrrrr��s��r�c@sbeZdZed�eddd�gZdgZdeddd	�fd
eddd	�fded
dd	�fdeddd	�fgZdS)�TestOptionalsDestz	--foo-bar�--baz�zabbazr�r�z--foo-bar fr�N)Zfoo_barrz--baz g�gz--foo-bar h --baz i�hrz--baz j --foo-bar k�k�jr�rrrrr
s�rc@sTeZdZed�eddd�gZdgZdeddd�fd	ed
dd�fdeddd�fgZdS)
�TestOptionalsDefaultr�r�r���defaultr�rN�r�r�z-xxr�z-yyr�r�rrrrrs�rc@s:eZdZed�gZddgZdedd�fdedd�fgZdS)�TestOptionalsNargsDefaultr�r�rNr�r�r�rrrrr&s

�rc@s@eZdZeddd�gZddgZdedd�fdedgd�fgZdS)	�TestOptionalsNargs1r����nargsr�rNr�r�r�rrrrr
1s
�r
c@sBeZdZeddd�gZgd�Zdedd�fdegd	�d�fgZdS)
�TestOptionalsNargs3r��r)r�r�r��-x a b�a -x�a -x brNr�z-x a b c�r��b�cr�rrrrr<s
�rc@s�eZdZeddd�edddd�edddd	�ed
deddd
�gZdgZdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fdeddddd�fd
eddddd�fdeddddd�fg	ZdS)�TestOptionalsNargsOptionalr��?rr�r�)rr�r��spam�rr
r��42Z84)rrSr�r
�2rN�T�r=r�r�r�z-w 2z-x 2z-y 2z-z 2��	rrrrE�intrwr�rJr�rrrrrGs 
��rc@s�eZdZeddd�edddd�gZdgZded	dd
�fdegdd
�fdedgdd
�fdedd
gdd
�fded	gd
�fded	dgd
�fded	dd
gd
�fgZd	S)�TestOptionalsNargsZeroOrMorer��*rr�rrr�rNrr�rr�-y a�-y a br�rrrrr$^s
��r$c	@s�eZdZeddd�edddd�gZgd�Zded	dd
�fdedgdd
�fd
eddgdd
�fded	dgd
�fded	ddgd
�fgZd	S)�TestOptionalsNargsOneOrMorer��+rr�rr)r�r�r�rza -y brNrr�r�rrr&r'r�rrrrr(qs
��r(c
@s�eZdZeddd�edeed�d�gZgd�Zded	d	d
�fdedd	d
�fd
edd	d
�fded	dd
�fded	dd
�fdeddd
�fgZ	d	S)�TestOptionalsChoicesr��abc��choicesz-g��rSr-)r�z-f dz-fadz-gaz-g 6rN)r�rr�r�z-f crz-g 0rz-g 03rz-fb -g4r��
rrrrEr#�rangerwr�rJr�rrrrr*�s
��r*c@s@eZdZededd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsRequiredr�T�rS�requiredr�r�-x 1rr�z-x42r�Nr"rrrrr3�s��r3c@s>eZdZeddd�gZddgZdedd�fd	ed
d�fgZdS)�TestOptionalsActionStorer��storer�r�rrNr�z-xfoorzr�rrrrr7�s
�r7c@s>eZdZedded�gZdgZdedd�fdeed�fgZdS)�TestOptionalsActionStoreConstr�r�r�r�rN�r�)	rrrrEr�rwr�rJr�rrrrr9�s
�r9c@s>eZdZeddd�gZgd�Zdedd�fdedd�fgZd	S)
�TestOptionalsActionStoreFalser��store_falser�)r�r�r�rT)r�FNr�rrrrr;�s
�r;c@s>eZdZeddd�gZgd�Zdedd�fdedd�fgZd	S)
�TestOptionalsActionStoreTruez--appler�r�)r�z	--apple=bz	--apple brF)ZappleTNr�rrrrr=�s
�r=c@sleZdZedejd�gZddgZdedd�fdedd�fd	ed
d�fded
d�fdedd�fgZ	d
d�Z
dS)�TestBooleanOptionalActionr�r�z	--foo barz	--foo=barrNr�T�--no-fooFz--foo --no-fooz--no-foo --foocCsZt��}|�t��"}|jddtjd�Wd�n1s:0Y|�dt|j��dS)Nr�T�r�r�z*got an unexpected keyword argument 'const')	�argparse�ArgumentParserr�r�ru�BooleanOptionalAction�assertInr��	exception�rrv�cmrrr�
test_const�s0z$TestBooleanOptionalAction.test_const)rrrrErArCrwr�rJr�rHrrrrr>�s�r>c@s@eZdZeddejd�gZdgZdedd�fdedd�fgZ	dS)	�!TestBooleanOptionalActionRequiredr�T)r5r�rr�r?FN)
rrrrErArCrwr�rJr�rrrrrI�s��rIc@sPeZdZeddd�gZgd�Zdedd�fded	gd�fd
ed	dgd�fgZdS)�TestOptionalsActionAppendr�appendr��r�r�a --baz�	--baz a brN�r��--baz ar��--baz a --baz brr�rrrrrJ�s�rJc@sXeZdZedddgd�gZgd�Zdedgd�fdedd	gd�fd
egd�d�fgZdS)
�$TestOptionalsActionAppendWithDefaultrrKr��r�r
rLrrOrPr�rQ)r�r�rNr�rrrrrR�s�rRc@sbeZdZedded�edddd�gZgd�Zd	ed
d�fdeegd�fdeed
edgd�fgZd
S)�TestOptionalsActionAppendConst�-b�append_constr��-crKr�r�r��r�rWza -cz-bxz-b xrN�r�-b -cx -b -cyzr��yz�	rrrrErZrwr�rJr�rrrrrTs��rTc	@sleZdZeddedgd�edddd�gZgd	�Zd
edgd�fdedegd�fdeded
edgd�fgZdS)�)TestOptionalsActionAppendConstWithDefaultrUrVr�)r�r�r
rWrKrrXrYrrZr[r�r\Nr]rrrrr^s��r^c@s>eZdZeddd�gZgd�Zdedd�fdedd�fgZdS)	�TestOptionalsActionCountr��countr�)r�r�z-x bz	-x a -x brNr�rr�rrrrr_"s
�r_c	@sreZdZed�ed�eddd�gZddgZded	d	d
d�fded
d	d
d�fded	dd
d�fdedd	dd�fgZd	S)�"TestOptionalsAllowLongAbbreviationr�z--foobazz--foobler�r�z--foob 5z--foobrNF)rzZfoobazZfooblez--foo 7�7z	--fooba ar�z--foobl --foo grTr�rrrrra-s
��rac@sleZdZedd�Zed�eddd�ed�gZgd�Zd	ed
dd
d�fded
dd
d�fdedddd�fgZd
S)�%TestOptionalsDisallowLongAbbreviationF��allow_abbrevr�z--foodler�r�z--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rN�rzZfoodleZfoonlyz--foo 3�3z--foonly 7 --foodle --foo 2rTrbr�rrrrrc>s

��rcc@sneZdZeddd�Zed�eddd�ed�gZgd	�Zd
edddd�fd
edddd�fdedddd�fgZdS)�0TestOptionalsDisallowLongAbbreviationPrefixCharsr)F�r�rez++fooz++foodler�r�z++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNrfz++foo 3rgz++foonly 7 ++foodle ++foo 2rTrbr�rrrrrhOs
��rhc
@s�eZdZedd�Zed�eddd�gZddgZded	d	d
�fdedd	d
�fd
edd	d
�fded	dd
�fdeddd
�fdeddd
�fgZd	S)�/TestDisallowLongAbbreviationAllowsShortGroupingFrdz-rrWr`r�z-c -rrN��rrz-rar�z-rcc�ccz-ccr!z-cc -raz-ccrccr�rrrrrj`s

��rjc
@s�eZdZeddd�Zed�eddd�gZddgZd	ed
d
d�fded
d
d�fdedd
d�fded
dd�fded
dd�fdeddd�fgZd
S)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr)Friz+rz+cr`r�z+c +rrNrkz+rar�z+rccrmz+ccr!z+cc +raz+ccrccr�rrrrrnss
��rnc@s.eZdZed�gZgd�Zdedd�fgZdS)�TestPositionalsNargsNonerz�rr��a br�r�Nr�rrrrro�s
�roc@s4eZdZeddd�gZgd�Zdedgd�fgZdS)�TestPositionalsNargs1rzrrrpr�r�Nr�rrrrrr�s�rrc@s6eZdZeddd�gZgd�Zdeddgd�fgZd	S)
�TestPositionalsNargs2rzr!r)rr�r��a b crqr�rr�Nr�rrrrrs�s�rsc@sNeZdZeddd�gZdgZdegd�fdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsZeroOrMorerzr%rr�rr�r�rqrNr�rrrrru�s�ruc@sPeZdZedddd�gZdgZdedd�fdedgd�fd	edd
gd�fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultrzr%r�rr�rr�r�rqrNr�rrrrrv�s�rvc@sDeZdZeddd�gZddgZdedgd�fdedd	gd�fgZd
S)�TestPositionalsNargsOneOrMorerzr)rrr�r�r�rqrNr�rrrrrw�s
�rwc@s>eZdZeddd�gZddgZdedd�fd	ed	d�fgZdS)
�TestPositionalsNargsOptionalrzrrr�rqrNr�r�r�rrrrrx�s
�rxc@s@eZdZedddd�gZddgZdedd�fd	ed	d�fgZd
S)�#TestPositionalsNargsOptionalDefaultrzrr�rr�rqrr�r�Nr�rrrrry�s
�ryc@sBeZdZeddedd�gZgd�Zdedd�fd	ed
d�fgZdS)�,TestPositionalsNargsOptionalConvertedDefaultrzrr)rrSr
)r�rq�1 2rr�r��1rNr"rrrrrz�s��rzc@s6eZdZed�ed�gZgd�Zdeddd�fgZdS)	�TestPositionalsNargsNoneNonerzr�)rr�r�rtrqr�r�rzr�Nr�rrrrr}�s�r}c@s<eZdZed�eddd�gZgd�Zdeddgd	�fgZd
S)�TestPositionalsNargsNone1rzr�rr)rr�r�rtrqr�rr~Nr�rrrrr�s�rc@s>eZdZeddd�ed�gZgd�Zdeddgd	d
�fgZdS)�TestPositionalsNargs2Nonerzr!rr��rr�r�rq�a b c drtr�rrr~Nr�rrrrr�s�r�c@s\eZdZed�eddd�gZddgZdedgd�fd	edd
gd�fdedd
dgd�fgZd
S)�"TestPositionalsNargsNoneZeroOrMorerzr�r%rrr�r�r~rqrrtrNr�rrrrr�s�r�c@sNeZdZed�eddd�gZgd�Zdeddgd	�fd
edddgd	�fgZdS)
�!TestPositionalsNargsNoneOneOrMorerzr�r)r�rr�r�rqr�rr~rtrNr�rrrrr�s
�r�c@sHeZdZed�eddd�gZgd�Zdeddd�fd	edd
d�fgZdS)� TestPositionalsNargsNoneOptionalrzr�rr�rr�rtr�Nr~rqrr�rrrrr�%s
�r�c@s\eZdZeddd�ed�gZddgZdegdd�fd	edgd
d�fdedd
gdd�fgZd
S)�"TestPositionalsNargsZeroOrMoreNonerzr%rr�rr�r�r~rqrrtrNr�rrrrr�0s�r�c@sNeZdZeddd�ed�gZgd�Zdedgdd	�fd
eddgdd	�fgZdS)
�!TestPositionalsNargsOneOrMoreNonerzr)rr�r�rqr�rr~rtrNr�rrrrr�<s
�r�c@sJeZdZedddd�ed�gZgd�Zdeddd�fd	edd
d�fgZdS)� TestPositionalsNargsOptionalNonerzrr�rr�r�r�r~rqrNr�rrrrr�Gs
�r�c@sVeZdZeddd�eddd�gZgd�Zdedd	ggd
�fdedd	gdgd
�fgZd
S)�TestPositionalsNargs2ZeroOrMorerzr!rr�r%r�rqr�rr~rtrNr�rrrrr�Rs
�r�c@sDeZdZeddd�eddd�gZgd�Zdedd	gd
gd�fgZdS)
�TestPositionalsNargs2OneOrMorerzr!rr�r))rr�r�rqrtr�rrr~Nr�rrrrr�]s�r�c@sTeZdZeddd�eddd�gZgd�Zdedd	gd
d�fdedd	gd
d�fgZd
S)�TestPositionalsNargs2Optionalrzr!rr�r)rr�r�r�rqr�rNr~rtrr�rrrrr�gs
�r�c@sfeZdZeddd�eddd�gZddgZdegdgd	�fd
edgdgd	�fdeddgd
gd	�fgZdS)�TestPositionalsNargsZeroOrMore1rzr%rr�rrr�r�r~rqrrtrNr�rrrrr�rs�r�c@sVeZdZeddd�eddd�gZgd�Zdedgd	gd
�fdedd	gdgd
�fgZd
S)�TestPositionalsNargsOneOrMore1rzr)rr�rr�rqr�rr~rtrNr�rrrrr�~s
�r�c@sPeZdZeddd�eddd�gZgd�Zdeddgd	�fd
eddgd	�fgZdS)�TestPositionalsNargsOptional1rzrrr�rr�r�Nr~rqrr�rrrrr��s
�r�c@s\eZdZed�eddd�eddd�gZgd�Zded	gd
gd�fded	d
gd
gd�fgZdS)�#TestPositionalsNargsNoneZeroOrMore1rzr�r%rr�rr�rqr�r�rzr�r�rtrNr�rrrrr��s

��r�c@s`eZdZed�eddd�eddd�gZgd�Zded	d
gdgd�fd
ed	d
dgdgd�fgZdS)�"TestPositionalsNargsNoneOneOrMore1rzr�r)rr�r)rr�r�rrtr�rrr�r��dNr�rrrrr��s

��r�c@s\eZdZed�edddd�eddd�gZgd	�Zd
edddgd
�fdedddgd
�fgZdS)�!TestPositionalsNargsNoneOptional1rzr�r��?rr�rrr�rqr�rr�rtrNr�rrrrr��s
��r�c@s\eZdZeddd�edddd�gZddgZd	ed
dd�fdeddd�fd
eddd�fgZd
S)�$TestPositionalsNargsOptionalOptionalrzrrr�r�rr�rtrNr~r�rqrr�rrrrr��s
��r�c@sleZdZeddd�eddd�gZdgZdedgd	�fd
ed
gd	�fded
dgd	�fd
ed
ddgd	�fgZdS)�&TestPositionalsNargsOptionalZeroOrMorerzrrr�r%r�rNr~r�rqrrtrr�rrrrr��s�r�c@sbeZdZeddd�eddd�gZddgZded	dgd
�fdeddgd
�fd
edddgd
�fgZd	S)�%TestPositionalsNargsOptionalOneOrMorerzrrr�r)rr�r�Nr~rqrrtrr�rrrrr��s�r�c@sBeZdZeded�d�gZgd�Zdedd�fdedd�fgZdS)	�TestPositionalsChoicesStringrZabcdefgr,�rr�rrZefr��rrN)	rrrrE�setrwr�rJr�rrrrr��s
�r�c@sDeZdZedeed�d�gZgd�Zdedd�fded	d�fgZ	d
S)�TestPositionalsChoicesIntr�r/r��4r0r��15�Nr1rrrrr��s
�r�c@sFeZdZeddd�edddd�gZgd�Zdedd	d
ggd�fgZdS)
�TestPositionalsActionAppendrrKr�r!)r�rr�rtr�rrr�Nr�rrrrr��s
��r�c@sjeZdZeddd�edddd�gZdd	gZd
eddd
�fdeddd
�fdeddd
�fdeddd
�fgZdS)�"TestOptionalsNumericAndPositionalsr�rrz-4r�r��r�r�r�z-315rNFrr�Tz-4 ar�rrrrr�s
��r�c	@sveZdZeddd�edddd�gZdgZd	ed
dd�fd
ed
dd�fdeddd�fded
dd�fdeddd�fgZd
S)�(TestOptionalsAlmostNumericAndPositionalsr�rrz-k4r�r�r�z-k3rNFrr�r�Tz-k4 ar�rrrrr�s
��r�c@s�eZdZeddd�edddd�gZdgZdgedd	d
�fdgedd	d
�fdgedd	d
�fddged	dd
�fddged	dd
�fddged	dd
�fd
ged	dd
�fdged	dd
�fgZd	S)�$TestEmptyAndSpaceContainingArgumentsr�rrr�z--yyyr�r�rNrza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�rrrrr�0s
��r�c@s�eZdZedd�Zeddddd�edd	ed
d�edd
dd�gZddgZdedd
dd�fdedd
dd�fdedd
dd�fdedddd�fdedd
dd�fdedd
dd�fgZ	dS)� TestPrefixCharacterOnlyArgumentsz-+�r��-r�rr�)r�rr�r)r�r�)r�rSr
z-+-r�r�r�r�z+ -rNFr�z- Xr�z+ -3���Tz- ===z===)
rrrrErsr#rwr�rJr�rrrrr�Cs
��r�c@s�eZdZeddd�eddd�gZgZdedgd�fdeggd�fded	ggd�fd
ed	gdgd�fd	edd	gd�fdegd	gd�fd
edgd	gd�fgZdS)�TestNargsZeroOrMorer�r%rr�rNrr�r�z	-x a -- brrrr�rrrrr�Vs�r�c	@szeZdZed�eddd�ed�gZgd�Zdedgdd	�fd
edgdd	�fdedgd
�dd	�fdedddgdd	�fgZdS)�TestNargsRemainderr�r��...rr�)rr�z-z Zr�Nr�z-z Z X�Z�
X A B -z Z)�Ar�r�r�z	X Y --foo�Yr�r�rrrrr�fs�r�c@s�eZdZeded�ededd�eddd�gZgd	�Zd
eddgd�fd
eddgd�fdedddgd�fdeddgd�fdeddgd�fdeddgd�fdedddgd�fdedddgd�fdedddgd�fdedddgd�fdedddgd�fgZdS)�TestOptionLiker��rSz-3r�)rSr�r�r%r)
r�z-y2.5r�z-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z	-x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 arNr�z-x 2.5�@z-x 2.5 ar�z-3.5��?z-3-.5g�z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 a)	rrrrE�floatrwr�rJr�rrrrr�ss"

��r�c@s�eZdZeddejd�eddejd�eddejd�gZd	gZd
e�fdedd�fd
eddgd�fdedd�fdeddd�fdeddgdd�fgZ	dS)�TestDefaultSuppressrzrrr�r%rr�rSr�rr�r�rqrr~TrOrM�rzr�rNr�N)
rrrrErA�SUPPRESSrwr�rJr�rrrrr��s��r�c@s�eZdZeejd�Zeddd�eddd�eddd	�gZd
gZde	�fde	dd
�fde	ddgd�fde	dd�fde	ddd�fde	ddgdd�fgZ
dS)�TestParserDefaultSuppress��argument_defaultrzrrr�r%rr�r�r�rr�r�rqrr~TrOrMr�rNr�N)rrrrErAr�rsrwr�rJr�rrrrr��s


��r�c@s�eZdZedd�Zedddd�eddd	�ed
dd	�edd
d�gZdgZdeddddd�fdeddddd�fdeddgddd�fdeddddd�fdeddddd�fdeddgddd�fgZdS)�TestParserDefault42r�r��	--version�version�1.0�r�r�rzrrr�r%rr�r�r�r)rzr�r�r�r�rqrTrMrNNr�rrrrr��s



��r�cs�eZdZ�fdd�Zedd�Zed�ed�eddd	�gZgd
�Zdedd
dgd�fdedd
ddgd�fdeddd
gd�fdedd
dgd�fdeddddgd�fdedd
ddgd�fgd�edd
dgd�fgZ	�Z
S)�TestArgumentsFromFilec	s\tt|���gd�}|D]<\}}t|d��}|�|�Wd�q1sL0YqdS)N)��helloz
hello world!
)�	recursivez-a
A
@hello)�invalidz@no-such-path
r=)r
r�r%r>r?�rZ
file_textsr2�textrArrrr%�s
zTestArgumentsFromFile.setUp�@��fromfile_prefix_chars�-ar�r�r)r)rrUr�z@invalidz@missingzX YNr�r�)r�r�r�z
X -a A Y Zr�r��@hello Xzhello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br�)r�rr�r�r)rrrr%rErsrwr�rJr�rrrrrr��s

��r�cs`eZdZ�fdd�ZGdd�de�ZeZedd�Zeddd	�gZ	gZ
d
egd�d�fgZ�Z
S)
�TestArgumentsFromFileConverterc	sZtt|���dg}|D]<\}}t|d��}|�|�Wd�q1sJ0YqdS)Nr�r=)r
r�r%r>r?r�rrrr%�s�z$TestArgumentsFromFileConverter.setUpc@seZdZdd�ZdS)z>TestArgumentsFromFileConverter.FromFileConverterArgumentParserccs"|��D]}|��sq|VqdSr')r��strip)r�arg_line�argrrr�convert_arg_line_to_args�szWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argsN)rrrr�rrrr�FromFileConverterArgumentParser�sr�r�r�r�r)rr�)r�zworld!r�r:)rrrr%rnr�rtrErsrwr�rJr�rrrrrr��s	

��r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestFileTypeReprcCst�d�}|�dt|��dS)Nrlz
FileType('r')�rA�FileTyper��repr�rrSrrr�test_rs
zTestFileTypeRepr.test_rcCs t�dd�}|�dt|��dS)N�wbrzFileType('wb', 1)r�r�rrr�	test_wb_1szTestFileTypeRepr.test_wb_1cCs"tjddd�}|�dt|��dS)Nrl�latin_1��encodingz!FileType('r', encoding='latin_1')r�r�rrr�test_r_latinszTestFileTypeRepr.test_r_latincCs$tjdddd�}|�dt|��dS)Nr=�big5�ignore)r��errorsz/FileType('w', encoding='big5', errors='ignore')r�r�rrr�test_w_big5_ignores�z#TestFileTypeRepr.test_w_big5_ignorecCs$tjdddd�}|�dt|��dS)Nrlr�replace�r�z"FileType('r', 1, errors='replace')r�r�rrr�test_r_1_replace!sz!TestFileTypeRepr.test_r_1_replaceN)rrrr�r�r�r�r�rrrrr�s
r�c@seZdZdd�Zdd�ZdS)�StdStreamComparercCs8t�|�|_|dkrt|_n|dkr,t|_nt�|_dS)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterrcre�
backupattrrfr�)rrkrrrr+szStdStreamComparer.__init__cCs2z||�t�kWSty,||jkYS0dSr')rcra�AttributeErrorr�rVrrrrX9szStdStreamComparer.__eq__N�rrrrrXrrrrr�*sr��stdinr\r]zstdin.bufferr�r�c@s eZdZiZdd�Zdd�ZdS)�RFilecCs
||_dSr'�r;�rr;rrrrKszRFile.__init__cCs`||jvr|j|}n|��}|j|<|��t|t�sD|�d�}|j|jkoZ|kSS)N�ascii)�seen�read�closer`r�rr;�rrWr�rrrrXNs


zRFile.__eq__N)rrrr�rrXrrrrr�Hsr�c	s�eZdZ�fdd�Zede��d�ede�d�d�gZgd�Zde	d	e
d�d
�fde	e
d�e
d�d
�fd
e	e
d�e
d�d
�fde	eed
�fde	d	e
d�d
�fgZ�Z
S)�
TestFileTypeRc	sftt|���dD]D}ttj�|j|�d��}|�|�Wd�q1sL0Yq|�	d�dS)Nr~r=�readonly)
r
r�r%r>r+r2r3r*r?rD�r�	file_namerArrrr%\s
*zTestFileTypeR.setUpr�r�rrl)r�rznon-existent-file.txtrzN�r�r�
-x foo barr��
bar -x foo�-x - -r�)rrrr%rErAr�rwr�rJr��eq_stdinr�rrrrrr�Ys��r�csLeZdZ�fdd�Zede�d�dd�gZdgZde	e
d	�d
�fgZ�ZS)�TestFileTypeDefaultscs:tt|���ttj�|jd�d�}|�d�|�	�dS)N�goodr=)
r
rr%r>r+r2r3r*r?r�)rrArrrr%rs
zTestFileTypeDefaults.setUprWrlzno-file.txt�rSr
rz-c goodr)r)
rrrr%rErAr�rwr�rJr�r�rrrrrrps
�rcs�eZdZ�fdd�Zede�d�d�ede�d�d�gZddgZde	d	e
d�d
�fde	e
d�e
d�d
�fd
e	e
d�e
d�d
�fde	eed
�fgZ�Z
S)�TestFileTypeRBc	s\tt|���dD]D}ttj�|j|�d��}|�|�Wd�q1sL0YqdS)Nr~r=)	r
rr%r>r+r2r3r*r?r�rrrr%�szTestFileTypeRB.setUpr��rbr�rrrzNr�r�r�r�r)rrrr%rErAr�rwr�rJr��	eq_bstdinr�rrrrrr�s��rc@s"eZdZe�Zdd�Zdd�ZdS)�WFilecCs
||_dSr'r�r�rrrr�szWFile.__init__cCsL||jvr@d}d|jvr"|�d�}|�|�|��|j�|�|j|jkS)NzCheck that file is writable.rr�)r��moder	r?r��addr;r�rrrrX�s



zWFile.__eq__N)rrrr�r�rrXrrrrr�sr�geteuidznon-root user requiredc	s�eZdZ�fdd�Zede�d�d�ede�d�d�gZgd�Zde	d	e
d�d
�fde	d	e
d�d
�fde	e
d�e
d
�d
�fde	e
d�e
d
�d
�fde	eed
�fgZ�Z
S)�
TestFileTypeWcs"t���|�d�|�d�dS�Nr��writable�r
r%rDrBrrrrr%�s

zTestFileTypeW.setUpr�r=r�r)r�rr�rzNr�rr�r�r�r�rrrr%rErAr�rwr�rJr�	eq_stdoutr�rrrrrr�s��rcspeZdZ�fdd�Zede�d�d�ede�d�d�gZgd�Zde	e
d	�e
d
�d�fde	eed�fgZ�Z
S)
�
TestFileTypeXcs"t���|�d�|�d�dSr
rrrrrr%�s

zTestFileTypeX.setUpr�r�r�r)r�rr�rr�rzr�r�rrrrrrr�s��rc@s�eZdZede�d�d�ede�d�d�gZddgZdede	d�d�fd	ee	d�e	d
�d�fdee	d�e	d
�d�fdee
e
d�fgZdS)
�TestFileTypeWBr�r�r�rrrzNr�r�r�r�r)rrrrErAr�rwr�rJr�
eq_bstdoutr�rrrrr�s��rc@sXeZdZede�d�d�ede�d�d�gZdeed�ed�d�fd	ee	e	d�fgZ
d
S)�TestFileTypeXBr��xbr�rr�rzr�r�rN)rrrrErAr�rwrJrrr�rrrrr�s��rc@seZdZdd�ZdS)�TestFileTypeOpenArgsc	Cs�tj}|d�df|dd�df|ddd�df|d	d
d�df|dd
dd�dfg}t�d��8}|D]"\}}|d�|jdg|�R�q\Wd�n1s�0YdS)Nr)r���NNr=r)r=rNNr�r�)r=rNr�r�r�r�)r�rr�Nr�l1�strict)r=rrrz
builtins.openrz)rAr�rZpatchZassert_called_with)rZFTZcases�mrSrFrrr�test_open_args�s
�z#TestFileTypeOpenArgs.test_open_argsN)rrrrrrrrr�src@seZdZdd�ZdS)�!TestFileTypeMissingInitializationcCs`t��}|�t�� }|jdtjd�Wd�n1s80Y|�dtjft|j��dS)Nr�r�z<%r is a FileType class object, instance of it must be passed)	rArBr��
ValueErrorrur�r�r�rErFrrr�test
s.��z&TestFileTypeMissingInitialization.testN�rrrrrrrrrsrc@sZeZdZeded�eded�gZgd�Zdeddd�fd	ed
dd�fded
dd�fgZ	d
S)�TestTypeCallablez--eggsr�r)r�Z42jz--eggs az	--eggs 2iz--eggs=42 42r�gE@)�eggsrz--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
rrrrE�complexr�rwr�rJr�rrrrr!s

��r!c@sheZdZGdd�de�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZ	d
S)�TestTypeUserDefinedc@seZdZdd�Zdd�ZdS)zTestTypeUserDefined.MyTypecCs
||_dSr'��value�rr'rrrr-sz#TestTypeUserDefined.MyType.__init__cCst|�|jft|�|jfkSr'�rSr'rVrrrrX0sz!TestTypeUserDefined.MyType.__eq__Nr�rrrr�MyType+sr*r�r�rrrr�r��-xf gr�rN)
rrrrr*rErwr�rJr�rrrrr%(s	

��r%c@sfeZdZGdd�d�Zeded�eded�gZgZdeed�ed�d	�fd
eed�ed�d	�fgZd
S)�TestTypeClassicClassc@seZdZdd�Zdd�ZdS)zTestTypeClassicClass.CcCs
||_dSr'r&r(rrrrCszTestTypeClassicClass.C.__init__cCst|�|jft|�|jfkSr'r)rVrrrrXFszTestTypeClassicClass.C.__eq__Nr�rrrr�CAsr-r�r�rrrr�r�r+r�rN)	rrrr-rErwr�rJr�rrrrr,>s	

��r,c@seZdZdd�ZdS)�TestTypeRegistrationcCszdd�}t��}|�dd|�|jddd�|jddd�|�|�d���tdd	d
��|�|�d���td	dd
��dS)
NcSsd|S)Nzmy_type{%s}r��stringrrr�get_my_typeYsz.TestTypeRegistration.test.<locals>.get_my_typerSZmy_typer�r�r�r|z
my_type{1}rz-x 1 42zmy_type{42})rArB�registerrur�rhr�rJ)rr1rvrrrrWs
�
�zTestTypeRegistration.testNr rrrrr.Tsr.c@s�eZdZGdd�dej�ZGdd�dej�Zeddeedd�ed	ee	d
dd�gZ
gZd
eddd�fdeddd�fdeddd�fdeddd�fgZ
dS)�TestActionUserDefinedc@seZdZddd�ZdS)z$TestActionUserDefined.OptionalActionNc
Cs|z:tdd�}|dvrd|_n|dvr,d|_ntd|��Wn0tyj}ztd|��WYd}~n
d}~00t|d	|�dS)
N��?r�)��?r�r!)�@r�	value: %szopt_action failed: %sr)rJr��AssertionErrorrYrd�rrv�	namespacer'�
option_stringr�rlrrr�__call__ps
"z-TestActionUserDefined.OptionalAction.__call__)N�rrrr<rrrr�OptionalActionnsr>c@seZdZddd�ZdS)z&TestActionUserDefined.PositionalActionNc
Cs�zJtdd�}|dvrd|_n,|dvr,d|_n|dvr<d|_ntd	|��Wn0tyz}ztd
|��WYd}~n
d}~00t|d|�dS)Nr!�r�)r�rr4)rr�)r!r5r7zarg_action failed: %sr�)rJrr8rYrdr9rrrr<�s
"z/TestActionUserDefined.PositionalAction.__call__)Nr=rrrr�PositionalAction�sr@z-srr4)r�r�rSr
r�rr!)r�rSrr
z-s0.125r5)rr�rr�z
-s 0.625 1r�rz84 -s2r6rN)rrrrA�Actionr>r@rEr�r#rwr�rJr�rrrrr3ks����r3c@s&eZdZGdd�dej�Zdd�ZdS)�TestActionRegistrationc@seZdZddd�ZdS)zTestActionRegistration.MyActionNcCst||jd|�dS)Nzfoo[%s])rdr�)rrvr:�valuesr;rrrr<�sz(TestActionRegistration.MyAction.__call__)Nr=rrrr�MyAction�srDcCs^t��}|�dd|j�|jddd�|�|�dg�tdd��|�|�dg�td	d��dS)
Nr�Z	my_actionr�r�r|zfoo[1]r?rzfoo[42])rArBr2rDrur�rhrJ�rrvrrrr�s
zTestActionRegistration.testN)rrrrArArDrrrrrrB�srBc@s6eZdZeddded�gZdZdegd�d�fgZd	S)
�TestActionExtendr��extendr))r�rrSrz--foo f1 --foo f2 f3 f4)�f1�f2Zf3Zf4r�N)	rrrrEr�rwr�rJr�rrrrrF�s
��rFcs�eZdZdd�Zd9dd�Z�fdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z�ZS):�TestAddSubparserscOs|jtg|�Ri|��dSr'�r�rYrHrrr�assertArgumentParserError�sz+TestAddSubparsers.assertArgumentParserErrorFNc
Cs�|r0tdd|d�}|j|dddddd	�ntddd
�}|jdddd	�|jdtd
d�ddi}|rzd|d<d|d<nd|d<|jfi|��}|�|j�tdd�}|r�d|d<|r�ddg|d<|jd7i|��}|jdtdd�|jd d!d"d#�td$d�}	|�rd%|	d<|jd8i|	��}
|
jd'd(d)d#�|
jd*td+d,d-�td.d�}|�rVd/|d<|jd9i|��}|jd1td2d�|jd3d4d5d6�|S):N�PROG�main description)�prog�descriptionr�rr!rzr��foo help�r��help�rOrPr�r��bar help�rSrSr5FZCOMMAND�metavar�commands�title�command helprSz
1 description�rPz1 helpZ1alias1Z1alias2�aliasesr|r�zw helpr�r+�x help�r-rSz
2 descriptionz2 helprr�Z123�y helpr�r%zz help)rSrrSz
3 descriptionz3 helprg�tzt help�ur�zu help�rrS)r|)r)rg)	rnrur��add_subparsersrL�dict�
add_parserr#r$)
r�subparser_helpr�r\rvZsubparsers_kwargs�
subparsersZparser1_kwargs�parser1Zparser2_kwargs�parser2Zparser3_kwargsZparser3rrrr��sX�����



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

zTestAddSubparsers.setUpcCs&dD]}|��}|�|jj|�qdS)N)rr�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�rLrvrh)rr�rFrrr�test_parse_args_failures
sz*TestAddSubparsers.test_parse_args_failuresc	Cs�|�|j�d���tddddd��|�|j�d���tdd	d
ddgd
��|�|j�d���tddddd��|�|j�d���tdddgd�d��dS)N�0.5 1 b -w 7Fr��r�rzr�r=r�z0.25 --foo 2 -y 2 3j -- -1jTr4ry@y��)rzr�r�r�z--foo 0.125 1 cr5rz-1.5 3 11 -- a --foo 7 -- br#�)r�r�rb�--r)rzr�r`ra)r�rvrhr�rJrrrr�test_parse_argss ����z!TestAddSubparsers.test_parse_argsc	Cs�|�|j�d���tddddd�gf�|�|j�d���tddddd�dgf�|�|j�d	���tddddd�dgf�|�|j�d
���tddddd�ddgf�|�|j�d
���tddddd�gd�f�dS)NrlFr�rmrrnz0.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 Z)z-Wz-Xr�r�)r�rv�parse_known_argsr�rJrrrr�test_parse_known_args's(�����z'TestAddSubparsers.test_parse_known_argscCsXt�}|jddd�|jdd�}|�d�}|�d�|�tddd	d
�|�d����dS)Nr�r�r�r�r�r|r�Frr�r{)rnrurcrer�rJrhr�)rrvrgrhrrr�	test_dest=s

�zTestAddSubparsers.test_destcCs,|�dg�}|�|jd�|�|jd�dS)N�runr)rhr��commandrL)rrv�retrrr�_test_required_subparsersFsz+TestAddSubparsers._test_required_subparserscCs0t�}|jdd�}d|_|�d�|�|�dS)Nrvr�Tru)rnrcr5rerx�rrvrgrrr�&test_required_subparsers_via_attributeNs

z8TestAddSubparsers.test_required_subparsers_via_attributecCs,t�}|jddd�}|�d�|�|�dS)NrvT�r�r5ru)rnrcrerxryrrr�"test_required_subparsers_via_kwargUs
z4TestAddSubparsers.test_required_subparsers_via_kwargcCs6t�}|jdd�}|�d�|�d�}|�|j�dS)Nrvr�rur�rnrcrerh�assertIsNonerv�rrvrgrwrrr� test_required_subparsers_default[s


z2TestAddSubparsers.test_required_subparsers_defaultcCsnt�}|jdd�}|�d�|�d�|�t��}|�d�Wd�n1sP0Y|�|jjd�dS)NT�r5rzr�rz8error: the following arguments are required: {foo,bar}
$�	rnrcrer�rYrh�assertRegexrEr]�rrvrg�excinforrr�-test_required_subparsers_no_destination_errorcs

(�z?TestAddSubparsers.test_required_subparsers_no_destination_errorcCsnt�}|jdd�}|�d�|�d�|�t��}|�d�Wd�n1sP0Y|�|jjd�dS)NTr�rzr�rOzPerror: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$r�r�rrr�3test_wrong_argument_subparsers_no_destination_erroros

(�zETestAddSubparsers.test_wrong_argument_subparsers_no_destination_errorcCs8t�}|jddd�}|�d�|�d�}|�|j�dS)NrvFr{rurr}rrrr�test_optional_subparsers{s


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

            main description

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

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

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              ++foo       foo help
            �r�r�r�r�r�r�rErrr�test_help_extra_prefix_chars�s

�z.TestAddSubparsers.test_help_extra_prefix_charscCs6tddd�}|jdddd�|�|��t�d��dS)	NrMrNrTz--non-breakingr<uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesrRuB            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
        �rnrur�r�r�r�rErrr�test_help_non_breaking_spaces�s��z/TestAddSubparsers.test_help_non_breaking_spacescCsftddd�}|jddd�|�|��t�d��tddd�}|jdgdd	�|�|��t�d
��dS)NrMrNrTrzz    �rSz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

            optional arguments:
              -h, --help  show this help message and exit
        r�rErrr�test_help_blank�s ��
��z!TestAddSubparsers.test_help_blankcCs6|jdd�}|�|��d�|�|��t�d��dS)Nr�r�z)usage: PROG [+h] [++foo] bar {1,2,3} ...
aJ            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r�rErrr� test_help_alternate_prefix_chars�s

�z2TestAddSubparsers.test_help_alternate_prefix_charscCs.|�|j��d�|�|j��t�d��dS)Nr�a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            optional arguments:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�rjr�r�r�r�rrrr�test_parser_command_help�s��z*TestAddSubparsers.test_parser_command_helpcCsxtddd�}|jdddd�|jdd	d
�|jddd
d�}|�d�}|�d�}|�|��d�|�|��t�d��dS)NrMrNrTr�r�rQrRr�rUr��subcommandsrZzadditional text)rYrPrSr|rz'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
            )	rnrurcrer�r�r�r�r�)rrvrgrhrirrr�test_subparser_title_help	s��


�z+TestAddSubparsers.test_subparser_title_helpcCsN|�t�� }|j�|���Wd�n1s00Y|�||jj�dSr')r�rYrvrhr�r�rEr\)rr�Z
expected_helprGrrr�_test_subparser_help$	s.z&TestAddSubparsers._test_subparser_helpcCs|�dt�d��dS)Nz5.0 1 -ha            usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

            positional arguments:
              {a,b,c}     x help

            optional arguments:
              -h, --help  show this help message and exit
              -w W        w help
            �r�r�r�rrrr�test_subparser1_help)	sz&TestAddSubparsers.test_subparser1_helpcCs|�dt�d��dS)Nz5.0 2 -ha            usage: PROG bar 2 [-h] [-y {1,2,3}] [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�rrrr�test_subparser2_help7	sz&TestAddSubparsers.test_subparser2_helpc	Cs\|jdd�}|�|�d���tddddd�gf�|�|�d���tddddd�gf�dS)	NT�r\z
0.5 1alias1 bFr�rrnz
0.5 1alias2 b)r�r�rrr�rJrErrr�test_alias_invocationE	s��z'TestAddSubparsers.test_alias_invocationcCs"|jdd�}|�|jd���dS)NTr�z
0.5 1alias3 b)r�rLrhr�rErrr�test_error_alias_invocationP	s�z-TestAddSubparsers.test_error_alias_invocationcCs.|jddd�}d|_|�|��t�d��dS)NT)r\rfa            usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

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

            commands:
              COMMAND
                1 (1alias1, 1alias2)
                                    1 help
                2                   2 help
                3                   3 help
            )r�ZmaxDiffr�r�r�r�rErrr�test_alias_helpU	sz!TestAddSubparsers.test_alias_help)FNF)rrrrLr�r%rkrqrsrtrxrzr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrJ�s:�
7	&rJc@s$eZdZdd�Zdd�Zdd�ZdS)�TestPositionalsGroupscCsZt�}|�d�|�d�}|�d�|�d�tdddd�}|�d	���}|�||�dS)
Nrzrr�r�r|rrgr��1 2 3)rnrur{rJrhr�r��rrvr|�expectedrirrr�test_nongroup_firsts	s



z)TestPositionalsGroups.test_nongroup_firstcCsZt�}|�d�}|�d�|�d�|�d�tdddd�}|�d	���}|�||�dS)
N�xxxrzr�r�r|rrgr�r��rnr{rurJrhr�r�r�rrr�test_group_first}	s



z&TestPositionalsGroups.test_group_firstcCspt�}|�d�}|�d�|�d�|�d�|�d�}|�d�tddd	d
d�}|�d���}|�||�dS)
Nr�rzr�r�r��frellr|rrgr�)rzr�r�r�z1 2 3 4r�r�rrr�test_interleaved_groups�	s





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

r�cs�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|jtg|�Ri|��dSr'rKrHrrrrL�	sz+TestParentParsers.assertArgumentParserErrorcs�t���tdd�|_|j�d�|j�d�}|�d�|j�d�tdd�|_|j�d�|j�d�|j�d	�}|�d
�tdd�|_|j�d�tdd�|_|j�d�tdd�|_	|j	�
�}|jddd
�|jddd
�tj�
tjd�|_dS)NF�r�z--wr�r�r�r�rUrz--dr�r�r�r)r
r%rn�wxyz_parentrur{�abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_groupr+r2�basenamerar��main_program)rZx_group�c_groupr|rrrr%�	s(



zTestParentParsers.setUpcCs2t|jgd�}|�|�d���tdddd��dS)N��parentsz-y 1 2 --w 3rgr|r�r=r�r�)rnr�r�rhr�rJrErrr�test_single_parent�	s�z$TestParentParsers.test_single_parentcCs,|�|jj�t|jgd�}|�|j�dS�Nr�)�_test_mutex_abr�rhrnrErrr�test_single_parent_mutex�	sz*TestParentParsers.test_single_parent_mutexcCs0|jg}td|d�}t|gd�}|�|j�dS)NF)r�r�r�)r�rnr�rh�rr�rvrrr�test_single_granparent_mutex�	sz.TestParentParsers.test_single_granparent_mutexcCs�|�|g�tddd��|�|dg�tddd��|�|dg�tddd��|�|ddg�|�|ddg�|�|dg�|�|ddg�|�|ddg�dS)NF�r�rr�TrUrW)r�rJrL)rrhrrrr��	sz TestParentParsers._test_mutex_abcCs@|j|jg}t|d�}|�|�d���tddddddd��dS)Nr�z--d 1 --w 2 3 4rgr|rr�)r�rr�r=r�r�)r�r�rnr�rhr�rJr�rrr�test_multiple_parents�	s

�z'TestParentParsers.test_multiple_parentsc
Csb|j|jg}t|d�}|�|�d���tdddddd��|�|jd���|�|jd	���dS)
Nr�z
-a --w 2 3TFrrg)r�rr=r�r�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�rnr�rhr�rJrLr�rrr�test_multiple_parents_mutex�	s
�
�
�z-TestParentParsers.test_multiple_parents_mutexcCs |jtjtj|j|jgd�dSr�)r�rA�
ArgumentErrorrBr�r�rrrr�test_conflicting_parents�	s

�z*TestParentParsers.test_conflicting_parentscCs |jtjtj|j|jgd�dSr�)r�rAr�rBr�r�rrrr�test_conflicting_parents_mutex�	s

�z0TestParentParsers.test_conflicting_parents_mutexcCs:|j|jg}t|d�}|�|�d���tdddd��dS)Nr�r{rr�)r�r�rnr�rhr�rJr�rrr�test_same_argument_name_parents�	s

�z1TestParentParsers.test_same_argument_name_parentsc	CsPt�}|��}|jd|jgd�}|�d�|�|�d���tddddd	��dS)
Nr�r�rlzbar -b 1 --d 2 3 4rgr|rr�)r�rr�rl)	rnrcrer�rur�rhr�rJ)rrvrgZabcde_parserrrr�test_subparser_parents�	s
�z(TestParentParsers.test_subparser_parentscCs�t�}|��}|jg}|jd|d�}|�d�}|�d�|j|jg}|jd|d�}|�d�|�|�d�	��t
dd	d
d��|�|�d�	��t
d	dd
ddd
d��|�|jd�	��|�|jd�	��dS)Nrzr�r�rr�rlzfoo -a 4TFr�rzbar -b  --w 2 3 4rrg)r�rr=r�r�rlzfoo -a -b 4zbar -b -a 4)rnrcr�rer{rur�r�rhr�rJrL)rrvrgr�Z
abc_parserr�Zwxyzabe_parserrrr�test_subparser_parents_mutex�	s*

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

            positional arguments:
              a
              z

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

            c:
              --d D

            x:
              -y Y
        � r)	r�r�rnr�r�r�r�r��format)rr�rv�parser_help�prognamerrr�test_parent_help
s
�z"TestParentParsers.test_parent_helpc	Cs�tdd�}|jddd�}|�d�|�d�|��}|�d�|�d	�t|gd
�}|�t|jgd��|��}|j}|�	|t
�d�||r�d
nd���dS)NFr�r�gd�rYrPr�r�r�r�r�)r�r�r�r�a	            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

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

            g:
              gd

              -w W
              -x X
        r�r)
rnr{rur�r�rYrhr�r�r�r�r�r�)r�parentrrrvr�r�rrr�test_groups_parents(
s 





�
�z%TestParentParsers.test_groups_parents)rrrrLr%r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr��	s

r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
� TestMutuallyExclusiveGroupErrorscCs t�}|j}|t|jdd�dS)Nrz)rY)rnr�r�r�)rrv�raisesrrr�test_invalid_add_argument_groupL
sz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_groupcCslt�}|��}|j}|j}|t|ddd�|t|d�|t|ddd�|t|ddd�|t|dtjd�dS)Nr�Tr�r�r)rr)rnr�rur�rrA�PARSER)rrvr|rur�rrr�test_invalid_add_argumentQ
sz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argumentcCsptdd�}|��}|jddd�|jddd�|��}|jddd�|jd	dd�d
}|�|��t�|��dS)NrM�rOr�r�r�r�r<z--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            optional arguments:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )rnr�rur�r�r�r�)rrvZgroup1�group2r�rrrr�\
s

z*TestMutuallyExclusiveGroupErrors.test_helpcCsJt��}|��}|�t��|�dg�Wd�n1s<0YdS)Nr�)rArBr�r�rrh�rrvr|rrr�test_empty_groupp
sz1TestMutuallyExclusiveGroupErrors.test_empty_groupN)rrrr�r�r�r�rrrrr�J
sr�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�MEMixincCs4|jdd�j}t}|jD]}|�|||���qdS�NFr���
get_parserrhrYr�r�r��rrhrp�args_stringrrr�test_failures_when_not_requiredy
s
z'MEMixin.test_failures_when_not_requiredcCs:|jdd�j}t}|jdgD]}|�|||���qdS)NTr�rr�r�rrr�test_failures_when_required
sz#MEMixin.test_failures_when_requiredcCsD|jdd�j}|j|j}|D] \}}||���}|�||�qdSr�)r�rhr��successes_when_not_requiredr�r�)rrhr�r�r��	actual_nsrrr� test_successes_when_not_required�
s
z(MEMixin.test_successes_when_not_requiredcCs:|jdd�j}|jD] \}}||���}|�||�qdS�NTr�)r�rhr�r�r�)rrhr�r�r�rrr�test_successes_when_required�
sz$MEMixin.test_successes_when_requiredcCs,|jdd�j}|j}|�|�t�|��dSr�)r�r��usage_when_not_requiredr�r�r��rr�Zexpected_usagerrr�test_usage_when_not_required�
sz$MEMixin.test_usage_when_not_requiredcCs,|jdd�j}|j}|�|�t�|��dSr�)r�r��usage_when_requiredr�r�r�r�rrr�test_usage_when_required�
sz MEMixin.test_usage_when_requiredcCs2|jdd�j}|j|j}|�|�t�|��dSr�)r�r�r�rSr�r�r��rr�rSrrr�test_help_when_not_required�
sz#MEMixin.test_help_when_not_requiredcCs2|jdd�j}|j|j}|�|�t�|��dSr�)r�r�r�rSr�r�r�r�rrr�test_help_when_required�
szMEMixin.test_help_when_requiredN)rrrr�r�r�r�r�r�r�r�rrrrr�w
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)NrMr�r�r�rUr�rrr��baz help)rr�rS�rnr�ru�rr5rvr|rrrr��
s

z&TestMutuallyExclusiveSimple.get_parser�--bar X --baz Yz
--bar X --baz�--bar Xr��r�r�z--bar X --bar Zr��--baz Yr�rrz;        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
        z;        usage: PROG [-h] (--bar BAR | --baz [BAZ])
        z�
        optional arguments:
          -h, --help   show this help message and exit
          --bar BAR    bar help
          --baz [BAZ]  baz help
        )N�rrrr�r�rJr�r�r�r�rSrrrrr��
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)
NrMr�z--abcdez
abcde helpr�z--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�rnrur�r�rrrr��
s
z$TestMutuallyExclusiveLong.get_parserz--klmno X --pqrst Yz	--klmno Xr�)ZabcdeZfghijZklmnoZpqrstz--abcde Y --klmno Xr�z	--pqrst Xz--pqrst X --fghij Yrzi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                [--klmno KLMNO | --pqrst PQRST]
    zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                (--klmno KLMNO | --pqrst PQRST)
    z�
    optional arguments:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    )Nr�rrrrr��
s 
	���	�r�c@sfeZdZdd�ZdgZdeddd�fded	dd�fd
eddd�fgZd
eddd�fgZdZdZ	dZ
dS)�$TestMutuallyExclusiveFirstSuppressedcCs:tdd�}|j|d�}|jdtjd�|jdddd	�|S)
NrMr�r�r�r�r�r<r_rR�rnr�rurAr�r�rrrr��
s

z/TestMutuallyExclusiveFirstSuppressed.get_parserz-x X -yz-x Xr�Trz	-x X -x Yr�r�NFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zx
        optional arguments:
          -h, --help  show this help message and exit
          -y          y help
        r�rrrrr��
s��r�c	@s�eZdZdd�Zgd�Zdedddd�fded	d	dd�fd
ed	ddd�fdedddd�fgZd
ed	ddd�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedcCsNtdd�}|j|d�}|j}|ddtjd�|ddtjd�|d	tjd
�|S)NrMr�r��--spamr�rRr�r<z	--bladderr�r�)rr5rvr|r
rrrr�s
z.TestMutuallyExclusiveManySuppressed.get_parser)z--spam --badgerz--badger --bladder Bz--bladder B --spamr�TN)rr�Zbladderr�Fz--bladder Br�z
--spam --spamrz!        usage: PROG [-h]
        �[
        optional arguments:
          -h, --help  show this help message and exit
        �rrrr�r�rJr�r�r�r�rSrrrrr�s	��r�c	@s�eZdZdd�Zgd�Zdedddd�fd	ed
ddd�fded
ddgd�fded
dgd
�d�fgZded
ddd�fgZdZdZ	dZ
dS)�*TestMutuallyExclusiveOptionalAndPositionalcCsJtdd�}|j|d�}|jdddd�|jdd	d
�|jddd
dd�|S)NrMr�r�r�r��FOOrRr��SPAMr�r�r%r��BADGER�rr
rSr�r�rrrr�<s
z5TestMutuallyExclusiveOptionalAndPositional.get_parser)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr�)rzrr�z--spam SF�SzX Y Z)r�r�r�rzD        usage: PROG [-h] [--foo | --spam SPAM | badger ...]
        zD        usage: PROG [-h] (--foo | --spam SPAM | badger ...)
        z�
        positional arguments:
          badger       BADGER

        optional arguments:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        r�rrrrr:s��rc
@s�eZdZdd�Zgd�Zdedddddd�fdedddddd�fd	edddddd�fd
edddddd�fdedddddd�fdedddddd�fgZd
edddddd�fdedddddd�fdedddddd�fgZdZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedcCsjtdd�}|jdddd�|j|d�}|jddd	d�|jd
ddd�|jddd
d�|jdddd�|S)NrMr�r�r�r]rRr�r��a helprU�b helpr�r_rW�c helpr�r�rrrr�is
z.TestMutuallyExclusiveOptionalsMixed.get_parser)z-a -b�-b -cz-a -cz-a -b -cr�TF�r�rrr�r�rUrWz-a -xz-y -bz-x -y -crr�r�z:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z�
        optional arguments:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        Nr�rrrrrgs
�	�rc@s\eZdZddd�ZddgZdeddd�fd	edd
d�fgZdeddd�fgZdZd
Z	dZ
dS)�TestMutuallyExclusiveInGroupNcCsDtdd�}|jddd�}|j|d�}|jddd	�|jd
dd	�|S)NrMr�zTitled groupzGroup descriptionr�r�r�rUr�rr�)rnr{r�ru)rr5rvZtitled_group�mutex_grouprrrr��s
�
�z'TestMutuallyExclusiveInGroup.get_parserr�z--baz X --bar Yr�r�r�r�r�rz9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z�
        optional arguments:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        )Nr�rrrrr�s

��rc@s�eZdZdd�Zgd�Zdedddddd�fd	ed
ddddd�fded
ddddd�fd
edddddd�fded
ddddd�fgZded
ddddd�fded
ddddd�fgZdZZ	dZ
d
S)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedcCshtdd�}|jddd�|jdddd	�|j|d
�}|jddd
d�|jdddd	�|jdddd	�|S)NrMr�r�r]r�r�r�r_rRr�r�rrrbrUrrWr	r�r�rrrr��s
z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parser)zX A -br
z-c X AzX Ar�Fr�rzX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a
        positional arguments:
          x           x help
          a           a help

        optional arguments:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        r�rrrrr�s
��rc@s0eZdZdd�ZdZdZdZdZdZdZ	dZ
dS)�TestMutuallyExclusiveNestedcCsntdd�}|j|d�}|�d�|�d�|j|d�}|�d�|�d�|j|d�}|�d�|�d	�|S)
NrMr�r�r�rUrWz-dz-er�r�)rr5rvr|r�Zgroup3rrrr��s






z&TestMutuallyExclusiveNested.get_parserzO        usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
        zO        usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
        z�
        optional arguments:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)rrrr�r�r�rSr�r�r�r�rrrrr�s

rcseZdZd�fdd�	Z�ZS)�MEPBaseNcs(tt|�j|d�}t|jd|gd�}|S)Nr�F)rOr�r�)r
rr�rnrO)rr5r�rvrrrr�s

�zMEPBase.get_parser)N)rrrr�rrrrrrsrc@seZdZdS)�&TestMutuallyExclusiveGroupErrorsParentN�rrrrrrrrsrc@seZdZdS)�!TestMutuallyExclusiveSimpleParentNrrrrrrsrc@seZdZdS)�TestMutuallyExclusiveLongParentNrrrrrr!src@seZdZdS)�*TestMutuallyExclusiveFirstSuppressedParentNrrrrrr&src@seZdZdS)�)TestMutuallyExclusiveManySuppressedParentNrrrrrr+src@seZdZdS)�0TestMutuallyExclusiveOptionalAndPositionalParentNrrrrrr0src@seZdZdS)�)TestMutuallyExclusiveOptionalsMixedParentNrrrrrr5src@seZdZdS)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNrrrrrr:src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestSetDefaultsc
Cs�t�}|jdd�|jddd�|�tdddd�|�g��|�tdddd�|�gt���|�tdddd�|�gtdd���|�tdddd�|�gtddd	���dS)
Nrzr�r�r)r�r�r�r�r!)r�r��rn�set_defaultsr�rJrhrErrr�test_set_defaults_no_argsDs����z)TestSetDefaults.test_set_defaults_no_argsc	Cs�t�}|jddd�|jddd�|�tddd�|�g��|�tddd�|�gt���|�tddd�|�gtdd���|�td	dd�|�d
����|�td	dd�|�d
��t���|�td	dd�|�d
��tdd���dS)Nrzr�rr�Zxfooxr	r�r�r|r6)rnrrur�rJrhr�rErrr�test_set_defaults_with_argsQs*������z+TestSetDefaults.test_set_defaults_with_argscCsRt�}|jdd�|��}|�d�}|jdd�|�tddd�|�d����dS)Nrzr�r�r�r:r)rnrrcrer�rJrhr�)rrvrgZparser_arrr�test_set_defaults_subparsersbs
�z,TestSetDefaults.test_set_defaults_subparserscCs>tdd�}|jdd�t|gd�}|�tdd�|�g��dS)NFr�rzr�r�r)rr�rvrrr�test_set_defaults_parentsks
z)TestSetDefaults.test_set_defaults_parentscCsLt��}|���d�}|jdd�|jdd�|�tdd�|�dg��dS)Nr�rr�r!)rArBrcrerr�rJrh)rrvZxparserrrr�)test_set_defaults_on_parent_and_subparserqs
z9TestSetDefaults.test_set_defaults_on_parent_and_subparsercCs�t�}|jddddd�|�d�|jddd	�|jd
dd�|jd
ddd�|�tddddd�|�g��|jddddd�|�tddddd�|�g��dS)N�Wr�r�r�r r�r��XXr	r�rrr��ZZr�WW�YY)rnrrur�rJrhrErrr�&test_set_defaults_same_as_add_argumentxs
��z6TestSetDefaults.test_set_defaults_same_as_add_argumentcCs�t�}|jddddd�|�d�}|�d�|jdd	d
�|jddd
�|jdddd�|�tdd	ddd�|�g��|jddddd�|�tddddd�|�g��dS)Nr"r�r�r�r rzr�r�r#r	r�rrr�r$rr%r&)rnrr{rur�rJrhr�rrr�,test_set_defaults_same_as_add_argument_group�s

��z<TestSetDefaults.test_set_defaults_same_as_add_argument_groupN)
rrrrrrr r!r'r(rrrrrBs
	rc@seZdZdd�ZdS)�TestGetDefaultcCs�t�}|�|�d��|�|�d��|�d�|�|�d��|�|�d��|jdtdd�|�|�d��|�d|�d��|jdd�|�d|�d��|�d|�d��dS)	Nrzr�r�r�r�rr�r�)rnr~�get_defaultrur#r�rrErrr�test_get_default�s
zTestGetDefault.test_get_defaultN)rrrr+rrrrr)�sr)c@seZdZdd�Zdd�ZdS)�TestNamespaceContainsSimplecCs$t��}|�d|�|�d|�dS)Nrr�)rA�	Namespace�assertNotIn�r�nsrrr�
test_empty�sz&TestNamespaceContainsSimple.test_emptycCsNtjddd�}|�d|�|�d|�|�d|�|�d|�|�d|�dS)	Nrr!rrr�r��xxr�)rAr-r.rDr/rrr�test_non_empty�sz*TestNamespaceContainsSimple.test_non_emptyN)rrrr1r3rrrrr,�sr,c@seZdZdd�ZdS)�TestHelpFormattingMetaclasscCs:|dkrdSGdd�dt�}dD]\}}||||�q dS)N�HelpTestCasec@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)z6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc	Ssj||_||_|j|j|jfD]H}d|j|f}|fdd�}z
||_WntyVYn0t|||�qdS)Nz%s_%scSs||�dSr'rr�rrr�test_wrapper�szUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper)�func_suffix�std_name�test_format�
test_print�test_print_filerr�rd)rZ
test_classr7r8r�r�r6rrrr�s�
z?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__cSs�tj|jji|jj��}t|dg�D]}|j|ji|j��q$t|dg�}|D]:\}}|j|ji|j��}|D]}|j|ji|j��qnqNt|dg�}|r�|��}	|D]}
|	j	|
ji|
j��q�|S)Nrw�argument_group_signatures�subparsers_signatures)
rArBrsrFrGrcrur{rcre)rr�rvZargument_sigZ
group_sigsZ	group_sigZ
argument_sigsr|Zsubparsers_sigsrgZ
subparser_sigrrrr��s4��
�
�
�

�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parsercSs&t||j�}t�|�}|�||�dSr')rcr7r�r�r�)rr��parser_textZ
expected_textrrr�_test�s
z<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testcSs,|�|�}t|d|j�}|�||��dS)Nz	format_%s)r�rcr7r?)rr�rvr�rrrr9�s
zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatc
Ss�|�|�}t|d|j�}tt|j�}tt|jt��z(|�tt|j���}Wtt|j|�ntt|j|�0|�||�dS�Nzprint_%s)	r�rcr7rar8rdrrr?)rr�rv�print_Z
old_streamr>rrrr:
s
 zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printcSs@|�|�}t|d|j�}t�}||�|��}|�||�dSr@)r�rcr7rrr?)rr�rvrAZsfiler>rrrr;
s
zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_fileN)	rrrrr�r?r9r:r;rrrrr��sr�))�usager\)rSr\)r�)r�r;r�r�r�r7r8rrrr�s
Hz$TestHelpFormattingMetaclass.__init__NrIrrrrr4�sr4r5c@sjeZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZgZdZedZdZ	dS)�TestHelpBiggerOptionalsrM�DESCRIPTION�EPILOG�rOrP�epilogr�r�r��0.1r�r�r��X HELPrR�--y�Y HELPr�rz�FOO HELPr��BAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        ab
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        EPILOG
    �        0.1
        N�
rrrrErsrwr<rBrSr�rrrrrC 
s�


�rCc@s8eZdZdd�ZejZejZejZdZedZ	ej
Z
dS)�TestShortColumnscCs$t��}|�dd�|�|j�dS)Nrr�)rr r�r!r"r#rrrr%J
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)rrrr%rCrsrwr<rBrSr�rrrrrPD
s	rPc@s�eZdZedddd�Zeddddd	�ed
ddd
�eddd�eddd�eddd�gZeddd�eddd�edddd�gfgZdZedZd Z	d!S)"�TestHelpBiggerOptionalGroupsrMrDrErFr�r�r�rHr�r�r�rIrRrJrKr�rzrLr�rMzGROUP TITLEzGROUP DESCRIPTIONr[r�zBAZ HELPr�r)zZ HELPrbzN        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
    rNNrOrrrrrQ{
s"�


�

��rQc@sZeZdZeddd�Zedddd�edd	d
�eddd
�ed
dd
�gZgZdZedZdZ	dS)�TestHelpBiggerPositionals�USAGErD�rBrPr�r�rIrRrJrKr�ZekiekiekifekangzEKI HELPr�rM�        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
        rNrOrrrrrR�
s


�rRc@sbeZdZeddd�Zedddd�edd	d
d�gZeddd
�edddd�gfgZdZedZdZ	dS)�TestHelpReformattingrMze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrTr�r#zoddly
    formatted -x help�rWrSr�r�z
normal y helprYz'
    oddly formatted group

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

        positional arguments:
          yyy         normal y help

        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
        rNrOrrrrrV�
s ��
���rVc@s^eZdZeddd�Zedddd�edd	d
d�gZed�edd
dd�gfgZdZedZdZ	dS)�TestHelpWrappingShortNamesrMzZD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DrTr�r#zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrWr�r��dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�r�zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHArRrXa�
        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
        rNrOrrrrrY�
s���rYc@sxeZdZeddd�Zeddddd�ed	d
dd�ed
ddd�gZed�edddd�edddd�gfgZdZedZdZ	dS)�TestHelpWrappingLongNamesrSzZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DrTr�r�r�zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr�r��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrWr�ZyyyyyyyyyyyyyyyyyyyyyyyyyrZr[r�ZAAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr�ZzzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHrUar
        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
        NrOrrrrr\%s���r\c@s�eZdZedd�Zedddd�eddd	d�ed
d
d�eddd
d�edddd�eddejd�edddejd�edddejd�edejejdd�g	Zed�ed dd!d�ed"d#d$d�ed%d%dd�ed&d&dd�gfgZ	d'Z
e
d(Zd)Zd*S)+�
TestHelpUsagerMr�r�r)r=rbr�r%r�r�r�rr!)rSrrrr�zWhether to foo)rSr�r�zWhether to barT)rSr
r�r�z--foobarz--barfoor�z--bazzzBazz!)r�r
rSr|r�r�r�rr�r�rla/        usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo]
                    [--bar | --no-bar]
                    [-f | --foobar | --no-foobar | --barfoo | --no-barfoo]
                    [--bazz | --no-bazz] [-y [Y]] [-z Z Z Z]
                    a b b [c] [d ...] e [e ...]
        a�
        positional arguments:
          a                     a
          b                     b
          c                     c

        optional arguments:
          -h, --help            show this help message and exit
          -w W [W ...]          w
          -x [X ...]            x
          --foo, --no-foo       Whether to foo
          --bar, --no-bar       Whether to bar (default: True)
          -f, --foobar, --no-foobar, --barfoo, --no-barfoo
          --bazz, --no-bazz     Bazz!

        group:
          -y [Y]                y
          -z Z Z Z              z
          d                     d
          e                     e
        rN)
rrrrErsrArCr�rwr<rBrSr�rrrrr^[s2

�����r^c@sleZdZeddd�ZgZed�eddd�eddd�gfed	�ed
d
d�eddd�gfgZd
ZedZdZ	dS)�TestHelpOnlyUserGroupsrMF�rOr�Zxxxxr�r�r�r�Zyyyyrr�r�z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        rNrOrrrrr_�s

�

��

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

        optional arguments:
          -h, --help  show this help message and exit
          -w W
          -x X
        rNrOrrrrra�s


�rac@sbeZdZedd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�gZgZdZedZdZ	dS)� TestHelpUsageLongProgOptionsWraprbr�r��WWWWWWWWWWWWWWWWWWWWWWWWWrcr�r]r��YYYYYYYYYYYYYYYYYYYYYYYYYr��ZZZZZZZZZZZZZZZZZZZZZZZZZr�ra        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a8
        positional arguments:
          a
          b

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




�
rdc@sBeZdZeddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)�$TestHelpUsageLongProgPositionalsWraprbFr`�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNrOrrrrrh�s�rhc@sheZdZedd�Zeddd�eddd�edd	d�ed
dd�ed�ed
�ed�gZgZdZedZdZ	dS)�TestHelpUsageOptionalsWraprMr�r�rercr�r]r�rfr�rgr�rrz�        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        aD
        positional arguments:
          a
          b
          c

        optional arguments:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNrOrrrrrm
s




�	rmc@sReZdZedd�Zed�ed�ed�ed�ed�ed�gZgZd	Zed
ZdZ	dS)
�TestHelpUsagePositionalsWraprMr�r�r�r�rirjrkz�        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
        rNrOrrrrrn3s
�
rnc@s^eZdZedd�Zeddd�eddd�edd	d�ed
�ed�ed�gZgZd
ZedZdZ	dS)�%TestHelpUsageOptionalsPositionalsWraprMr�r�r]rcr�rfr�rgrirjrka        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
        rNrOrrrrroUs



�
roc@sLeZdZedd�Zeddd�eddd�edd	d�gZgZd
ZedZdZ	d
S)�TestHelpUsageOptionalsOnlyWraprMr�r�r]rcr�rfr�rgz�        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
        rNrOrrrrrpys



�rpc@sBeZdZeddd�Zed�ed�ed�gZgZdZedZd	Z	d
S)� TestHelpUsagePositionalsOnlyWraprMFr`rirjrkz~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        rlrNrOrrrrrq�s�rqc
@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)(�TestHelpVariableExpansionrMr�r�z"x %(prog)s %(default)s %(type)s %%rVr�r�r��XXXz y %(prog)s %(default)s %(const)s)r�r
r�rSr�r+z$foo %(prog)s %(default)s %(choices)sr^r�r�rr!ZBBBz!bar %(prog)s %(default)s %(dest)s)r
r-rWrSrzspam %(prog)s %(default)sr�r�r�zbadger %(prog)s %(default)s)r
rSr|r�za %(prog)s %(default)srUrzb %(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
        rN)rrrrErsr#rwr<rBrSr�rrrrrr�s0
�
���
�

��rrc@s0eZdZeddd�ZgZgZdZedZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedrMz%(prog)s FOO�rOrBz         usage: PROG FOO
        r�rNrOrrrrrt�srtc@s,eZdZeddd�ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsrMFr`z        usage: PROG
        rNrOrrrrrv�srvc@sBeZdZedejd�Zeddd�eddd�gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsagerMrur�rQr�r�	spam helpz�        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrrrErAr�rsrwr<rSrBr�rrrrrw�s

�rwc@sFeZdZeddd�Zedejd�eddd�gZgZdZ	e	d	Z
d
ZdS)�TestHelpSuppressOptionalrMFr`r�r�rrxz!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN�rrrrErsrAr�rwr<rBrSr�rrrrrys
�ryc@sXeZdZedd�Zeddd�eddd�gZed�ed	ejd�gfgZd
Z	e	dZ
dZd
S)�TestHelpSuppressOptionalGrouprMr�r�rQr�rrxr|r��2        usage: PROG [-h] [--foo FOO] spam
        ��
        positional arguments:
          spam        spam help

        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrrrErsrwrAr�r<rBrSr�rrrrr{ s


��	r{c@sDeZdZedd�Zeddd�edejd�gZgZdZ	e	dZ
d	Zd
S)�TestHelpSuppressPositionalrMr�r�rQr�rz-        usage: PROG [-h] [--foo FOO]
        �z
        optional arguments:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNrzrrrrr~:s

�r~c@s:eZdZedd�Zedddd�gZgZdZedZd	Z	d
S)�TestHelpRequiredOptionalrMr�r�TrQ)r5rSz+        usage: PROG [-h] --foo FOO
        rrNrOrrrrr�Os
�r�c@sJeZdZedddd�Zedddd�ed	d
dd�gZgZd
ZedZdZ	dS)�TestHelpAlternatePrefixCharsrMz^;F)rOr�r�z^^foor�rQrRz;bz;;barrUr�z-        usage: PROG [^^foo] [;b BAR]
        zq
        optional arguments:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNrOrrrrr�cs�r�c@sDeZdZeddd�Zeddd�eddd�gZgZd	Zed
ZdZ	dS)
�TestHelpNoHelpOptionalrMFr`r�rQr�rrxz-        usage: PROG [--foo FOO] spam
        z�
        positional arguments:
          spam       spam help

        optional arguments:
          --foo FOO  foo help
        rNrOrrrrr�xs

�r�c@s:eZdZedd�Zed�ed�gZgZdZedZdZ	dS)	�TestHelpNonerMr�r�rr|z�
        positional arguments:
          spam

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

here
�rO�formatter_classrPr�z-    foo help should also
appear as given herer�rrxrY�?    This text
  should be indented
    exactly like it is here
r[r�rU�>        usage: PROG [-h] [--foo FOO] [--bar BAR] spam
        a�
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        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
        rN)rrrrErA�RawTextHelpFormatterrsrwr<rBrSr�rrrrr��s�

�
��r�c@s`eZdZedejdd�Zeddd�eddd�gZed	d
d�edd
d�gfgZdZ	e	dZ
dZdS)�TestHelpRawDescriptionrMr�r�r�z4  foo help should not
    retain this odd formattingr�rrxrYr�r[r�rUr�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
        rN)rrrrErA�RawDescriptionHelpFormatterrsrwr<rBrSr�rrrrr��s�

�
��r�c@s�eZdZedejdd�Zeddd�eddd	d
�edejdd
d�edddd�eddd�eddddd�gZeddd�ede	ddd�gfgZ
dZed Zd!Z
d"S)#�TestHelpArgumentDefaultsrMrPr�r�z)foo help - oh and by the way, %(default)sr�r�r�rUrRz--tazzWhether to taz itT)r�rSr
z--quuxzSet the quuxr�)rSr
rrxr�rZwoodenzbadger helprrYr[rr�)rSr
rSz�        usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--quux QUUX]
                    [--baz BAZ]
                    spam [badger]
        a1
        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)
          --taz, --no-taz  Whether to taz it (default: True)
          --quux QUUX      Set the quux (default: 42)

        title:
          description

          --baz BAZ        baz help (default: 42)
        rN)rrrrErA�ArgumentDefaultsHelpFormatterrsrCrwr#r<rBrSr�rrrrr�#s(�
�
�

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

        optional arguments:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        rNrOrrrrr�Rsr�c@sPeZdZedd�Zeddddejd�edd	d
�eddd
�gZgZd
Z	e	dZ
dS)�TestHelpVersionActionSuppressrMr�r�r�r�r�)r�r�rSr�rQr�rrxr|r}N)rrrrErsrAr�rwr<rBrSrrrrr�fs

�

�r�c@sHeZdZeddd�Zeddddd�gZd	d
�dD�ZdZed
ZdZ	dS)�TestHelpSubparsersOrderingrM�display some subcommandsrTr�r�r�rHr�cCsg|]}t|d��qS)r��rE)rMr;rrrrO�s�z%TestHelpSubparsersOrdering.<listcomp>)r�rrr�rl�6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z�
        display some subcommands

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rNN)
rrrrErsrwr=rBrSr�rrrrr�s��r�c@sLeZdZeddd�Zeddddd�gZd	Zd
d�eD�ZdZed
Z	dZ
dS)�"TestHelpSubparsersWithHelpOrderingrMr�rTr�r�r�rHr�))r�za subcommand help)rzb subcommand help)rzc subcommand help)r�zd subcommand help)rlze subcommand helpcCsg|]\}}t||d��qS))r;rSr�)rMr;rSrrrrO�s�z-TestHelpSubparsersWithHelpOrdering.<listcomp>r�a�
        display some subcommands

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

        optional arguments:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rNN)rrrrErsrwZsubcommand_datar=rBrSr�rrrrr��s��r�c@s\eZdZdd�Zeddejd�Zeded�eded�ed	e	d
d�gZ
gZdZed
Z
dZdS)�TestHelpMetavarTypeFormattercCs|Sr'rr/rrr�custom_type�sz(TestHelpMetavarTypeFormatter.custom_typerMrP)rOrPr�r�r�rUrWz
SOME FLOAT)rSrWzF        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
        rN)rrrr�rErA�MetavarTypeHelpFormatterrsr#r�rwr<rBrSr�rrrrr��s�

�r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�ZdS) �TestInvalidArgumentConstructorscOs(t��}|jt|jg|�Ri|��dSr')rArBr�r�ru�rrFrGrvrrr�assertTypeError�s��z/TestInvalidArgumentConstructors.assertTypeErrorcOs(t��}|jt|jg|�Ri|��dSr')rArBr�rrur�rrr�assertValueError�s��z0TestInvalidArgumentConstructors.assertValueErrorcCs<|jddd�|jddd�|jddd�|jdid�dS)	Nr�)r�r�rz)�callbackr)Z
callback_args)Zcallback_kwargs�r�rrrr�test_invalid_keyword_arguments�sz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentscCs"|��dD]}|j|d�qdS)N)rKr8r�r��rr�rrr�test_missing_destination�sz8TestInvalidArgumentConstructors.test_missing_destinationcCs|�d�|�d�dS)Nrpz---�r�rrrr�test_invalid_option_stringss
z;TestInvalidArgumentConstructors.test_invalid_option_stringscCs$|jddd�|jdttfd�dS)Nr�r#r�)r�r#r�rrrr�test_invalid_typesz1TestInvalidArgumentConstructors.test_invalid_typecCs�|jddd�|jddd�|jddd�t��}|�t��}|jddd�Wd�n1s`0Y|�dt|j��dS)	Nr�rzr�r�r��r8rKz
store-truezunknown action)	r�rArBr�rrurDr�rErFrrr�test_invalid_actions,z3TestInvalidArgumentConstructors.test_invalid_actioncCsbt��}|jdd�|�t��}|jddd�Wd�n1sB0Y|�dt|j��dS)Nrzr�r�r�z+dest supplied twice for positional argument)rArBrur�rrDr�rErFrrr�test_multiple_dests,�z2TestInvalidArgumentConstructors.test_multiple_destcCsDdD]:}ttd�tdd�tdd�fD]}|jd	d|i|��q$qdS)
N)r�r�r<rVr`r�r)r�abr,r�r�)r�)rdr#r�)rr��attrsrrr�test_no_argument_actionss
�z8TestInvalidArgumentConstructors.test_no_argument_actionscCs.dD]$}|jdd|d�|jdd|d�qdS)N)r�r<r`r�rzr@r%�rr�r�r�rrr�!test_no_argument_no_const_actions szATestInvalidArgumentConstructors.test_no_argument_no_const_actionscCs\dD]R}|jdd|d�|jdd|d�dD](}|jdd||d�|jdd||d�q,qdS)	Nr�r�rr�r)rr%r)rz)r�rr�r�)rr�rrrr�#test_more_than_one_argument_actions*s��zCTestInvalidArgumentConstructors.test_more_than_one_argument_actionscCsdD]}|jdd|d�qdS)N)r�rVr�r)r�r�r�rrr�test_required_const_actions8sz;TestInvalidArgumentConstructors.test_required_const_actionscCs4|jddd�|jdddd�|jddtjd�dS)Nrv�parsersr�rM)r�rO)r�rt)r�rArBrrrr�"test_parsers_action_missing_params>s
�zBTestInvalidArgumentConstructors.test_parsers_action_missing_paramscCs|jddd�dS)NrzTr�r�rrrr�test_required_positionalDsz8TestInvalidArgumentConstructors.test_required_positionalcs`Gdd�dt��G�fdd�dt�}t��}|j�|jd|��d�|j�|jd|��d�dS)Nc@seZdZdS)zITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNrrrrr�SuccessIsr�cs"eZdZd�fdd�	Zdd�ZdS)zHTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFcs"|dkr|�ur|�ur���dS)Nrr)r�option_stringsr�r�r
r5�r�rrrNszQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__c_sdSr'rrHrrrr<YszQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__N)F)rrrrr<rr�rrrALs�rAr�)r�r
r�r)rZr�rArBr�ru)rrArvrr�r�test_user_defined_actionGs��z8TestInvalidArgumentConstructors.test_user_defined_actionN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr��s	
r�c@seZdZdd�Zdd�ZdS)�TestActionsReturnedcCsXt��}|�d�}|�|jd�|�dd�}|�|jd�|�dd�}|�|jd�dS)	Nr�rzrUr�r�r�r�r�)rArBrur�r��rrvr�rrrrths
zTestActionsReturned.test_destcCs�t��}|jddddtddgddd	d
�	}|�|jd�|�|jd�|�|jd�|�|jt�|�|j	ddg�|�|j
d�|�|jd�|�|jd	�dS)Nr�rr�rrr!rZBARr�)rr�r
rSr-rSrWr�)
rArBrur#r�rr�r
rSr-rSrWr�r�rrr�	test_miscqs

�zTestActionsReturned.test_miscN)rrrrtr�rrrrr�fs	r�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestConflictHandlingcCs|jttjdd�dS)Nrz)�conflict_handler)r�rrArBrrrr�
test_bad_type�s
�z"TestConflictHandling.test_bad_typecCsDt��}|�d�|�tj|jd�|�d�|�tj|jd�dS)Nr�r�)rArBrur�r�rErrr�test_conflict_error�s
�
�z(TestConflictHandling.test_conflict_errorcCsztj}|ddd�}|jddd�|jddd�|�|��t�d��|jd	d
d�|jd	dd�|�|��t�d
��dS)NrM�resolve)rOr�r�zOLD Xr�zNEW Xz�            usage: PROG [-h] [-x X]

            optional arguments:
              -h, --help  show this help message and exit
              -x X        NEW X
            r�ZOLD_SPAMrcZNEW_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
            )rArBrur�r�r�r�)rr�rvrrr�test_resolve_error�sz'TestConflictHandling.test_resolve_errorN)rrrr�r�r�rrrrr��s	r�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestOptionalsHelpVersionActionscCsP|�t��}|�|���Wd�n1s.0Y|�|��|jj�dSr')r�rYrhr�r�r�rEr\)rrvr�rGrrr�assertPrintHelpExit�s,z3TestOptionalsHelpVersionActions.assertPrintHelpExitcGs|�t|j|�dSr')r�rYrh�rrvrFrrrrL�sz9TestOptionalsHelpVersionActions.assertArgumentParserErrorcCsDt�}|jddddd�|�|d�|�|d�|�tt|d�dS)	Nr�r�r�r�r�r�r��format_version�rnrur�r�r�rcrErrr�test_version�s
z,TestOptionalsHelpVersionActions.test_versioncCsftdd�}|jddddd�|�t��}|�dg�Wd�n1sH0Y|�d|jj�dS)	NZPPPr�r�r�r�z%(prog)s 3.5r�zPPP 3.5
�rnrur�rYrhr�rEr\rFrrr�test_version_format�s

*z3TestOptionalsHelpVersionActions.test_version_formatcCsHtdd�}|jddddd�|�|d�|�|d	�|�tt|d
�dS)NFr�r�r�r�r�r�r�r�r�)rnrurLr�r�rcrErrr�test_version_no_help�s

z4TestOptionalsHelpVersionActions.test_version_no_helpcCsdtdd�}|jdddd�|�t��}|�dg�Wd�n1sF0Y|�d|jj�dS)Nrsr�r�r�z%(prog)s 3.7r�zXXX 3.7
r�rFrrr�test_version_action�s

*z3TestOptionalsHelpVersionActions.test_version_actioncCs>tdd�}|�|d�|�|d�|�|d�|�|d�dS)NFr�r�r�r�r�)rnrLrErrr�test_no_help�s

z,TestOptionalsHelpVersionActions.test_no_helpcCsZt�}|jddd�|jddd�|�|d�|�|d�|�|d�|�tt|d�dS)	Nr�rSr�r�r�r�r�r�)rnrur�rLr�r�rcrErrr�test_alternate_help_version�sz;TestOptionalsHelpVersionActions.test_alternate_help_versioncCs�t�}|jdddd�|jddd�|�d�gd	�}|d
dg}|D]J}|D]}d||f}qN|�||d
�|�||d�|�tt|d�qFdS)Nr�r�r�r�r�r�r�r�)rr�rzz-x barzbaz -xz--bad-optionzfoo bar bazz	%s %%s %sr�r�r�r�)rrvZvalid_prefixesZvalid_suffixes�prefix�suffixr�rrr�!test_help_version_extra_arguments�s
zATestOptionalsHelpVersionActions.test_help_version_extra_argumentsN)rrrr�rLr�r�r�r�r�r�r�rrrrr��s	r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dS)�TestStringscCs"ttfD]}|�||�|�qdSr')r�r�r�)r�objZ
result_string�funcrrr�assertStringEqualszTestStrings.assertStringEqualcCs8tjgd�ddddgd�ddd	d
�	}d}|�||�dS)N)r�r�rUrr#r)r��rr!rFZHELPZMETAVAR�	r�r�rSrr
r-r5rSrWz�Action(option_strings=['--foo', '-a', '-b'], dest='b', nargs='+', const=None, default=42, type='int', choices=[1, 2, 3], required=False, help='HELP', metavar='METAVAR'))rArAr�)r�optionr0rrr�
test_optionals��zTestStrings.test_optionalcCs8tjgdtddgd�dddd�	}d	t}|�||�dS)
Nr�rr�)r�g�?r�TzH HH HzMV MV MVr�z�Action(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV'))rArAr�r�)r�argumentr0rrr�
test_arguments ���zTestStrings.test_argumentcCs"tjddd�}d}|�||�dS)Nr�rr~zNamespace(foo=42, bar='spam')�rAr-r��rr0r0rrr�test_namespace&szTestStrings.test_namespacecCs(tjfiddi��}d}|�||�dS)N�"�quotezNamespace(**{'"': 'quote'})r�r�rrr�'test_namespace_starkwargs_notidentifier+sz3TestStrings.test_namespace_starkwargs_notidentifiercCs,tjfddiddi��}d}|�||�dS)Nr�rr�r�z Namespace(a=1, **{'"': 'quote'})r�r�rrr�2test_namespace_kwargs_and_starkwargs_notidentifier0sz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiercCs(tjfiddi��}d}|�||�dS)NZvalidTzNamespace(valid=True)r�r�rrr�$test_namespace_starkwargs_identifier5sz0TestStrings.test_namespace_starkwargs_identifiercCs&tjdd�}dtj}|�||�dS)NrMr�zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))rArB�
HelpFormatterr�)rrvr0rrr�test_parser:s��zTestStrings.test_parserN)rrrr�r�r�r�r�r�r�r�rrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�
TestNamespacecCsFt��}|�tt|d�tjddd�}|�|jd�|�|jd�dS)Nr�r�rr�)rAr-r�r�rcr�r�rr/rrr�test_constructorHs
zTestNamespace.test_constructorcCs�tjddd�}tjddd�}tjdd�}tjdd�}|�||�|�||�|�||�|�||�|�||�|�||k�|�||k�|�||k�|�||k�dS)Nrr!r�)rr�)r�rZ)rAr-r�ZassertNotEqual�
assertTrue)rZns1Zns2Zns3Zns4rrr�
test_equalityPszTestNamespace.test_equalitycCs6tjddd�}|�|�d�t�|�|�d�t�dS)Nrr!r�)rAr-ZassertIsrX�NotImplemented�__ne__r/rrr�$test_equality_returns_notimplemented`sz2TestNamespace.test_equality_returns_notimplementedN)rrrr�r�r�rrrrr�Fsr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestEncodingcCsRtj�|�\}}|d7}t|ddd��}|��Wd�n1sD0YdS)Nz.pyrlrr�)r+r2�splitextr>r�)rr2r�r�rrr�_test_module_encodingmsz"TestEncoding._test_module_encodingcCs|�tj�dSr')r�rA�__file__rrrr�test_argparse_module_encodingssz*TestEncoding.test_argparse_module_encodingcCs|�t�dSr')r�r�rrrr�"test_test_argparse_module_encodingvsz/TestEncoding.test_test_argparse_module_encodingN)rrrr�r�r�rrrrr�ksr�c@seZdZdd�ZdS)�TestArgumentErrorcCs$d}t�d|�}|�t|�|�dS)Nz
my error here)rAr�r�r�)rr�rprrr�test_argument_errorsz%TestArgumentError.test_argument_errorN)rrrr�rrrrr�}sr�c@seZdZdd�ZdS)�TestArgumentTypeErrorcCsldd�}tddd�}|jd|d�|�t��}|�dg�Wd�n1sN0Y|�d	|jj�dS)
NcSst�d��dS)N�spam!)rA�ArgumentTypeErrorr/rrrr�sz<TestArgumentTypeError.test_argument_type_error.<locals>.spamrMFr`r�r�rsz-usage: PROG x
PROG: error: argument x: spam!
)rnrur�rYrhr�rEr])rrrvrGrrr�test_argument_type_error�s*�z.TestArgumentTypeError.test_argument_type_errorN)rrrr�rrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestMessageContentErrorcCsltddd�}|jdtd�|jdtdd�|jd	td
d�|�t��}|�g�Wd�n1sd0Yt|j�}|�|d�|�|d�|�|d	�|�t��}|�d
g�Wd�n1s�0Yt|j�}|�	|d�|�|d�|�|d	�|�t��}|�d
dg�Wd�n1�s00Yt|j�}|�	|d�|�	|d�|�|d	�dS)NrMrru�req_posr��-req_optTr4Zneed_oner))rSr�req_optZmyXargumentz
-req_opt=1)
rnrur�r#r�rYrhrEr�r.�rrvrGr�rrr�%test_missing_argument_name_in_message�s,(
*
.
z=TestMessageContentError.test_missing_argument_name_in_messagecCstddd�}|jdtd�|jdtdd�|jd	td
dd�|�t��}|�g�Wd�n1sf0Yt|j�}|�	|d�|�	|d�|�
|d
�|�t��}|�dg�Wd�n1s�0Yt|j�}|�	|d�|�
|d�|�
|d
�dS)NrMrrur�r�z	--req_optTr4z	--opt_optr)rSrr
r�Zopt_optz--req_opt=1)rnrur�r#�boolr�rYrhrEr�r.r�rrr�%test_optional_optional_not_in_message�s$
�(
*
z=TestMessageContentError.test_optional_optional_not_in_messagecCs�tddd�}|�d�|jdddd�|�t��}|�g�Wd�n1sP0Yt|j�}|�|d�|�|d�dS)	NrMrrur�Zoptional_positionalrr"r)	rnrur�rYrhr�rEr�r.r�rrr�'test_optional_positional_not_in_message�s
(
z?TestMessageContentError.test_optional_positional_not_in_messageN)rrrr�r�r�rrrrr��sr�c@seZdZdd�ZdS)�TestTypeFunctionCallOnlyOncecsH�fdd�}t��}|jd|dd�|�d���}��tdd�|�dS)	Ncs��|d�dS)Nr��
foo_converted�r�)Zstring_to_convertrrrr�szLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamr�r�rz--foo spam!rr�)rArBrurhr�r�rJ�rrrvrFrrr�!test_type_function_call_only_once�s
z>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onceN)rrrrrrrrr�src@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestTypeFunctionCalledOnDefaultcsD�fdd�}t��}|jd|dd�|�g�}��tdd�|�dS)Ncs��|d�dS)Nrrr�Zint_to_convertrrrr�sz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spamr�rrr��rArBrurhr�rJrrrr�/test_type_function_call_with_non_string_default�s

zOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultcCs@dd�}t��}|jd|dd�|�g�}|�tdd�|�dS)NcSsdS)Nrrrrrrr�szYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spamr��0rrr�rrrrr�+test_type_function_call_with_string_default�s

zKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_defaultcCs@dd�}t��}|jd|dd�|�g�}|�tdd�|�dS)NcSs|dS)Nr%r)Zstr_to_convertrrrrG�szYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�--testr%rz**)rr)rrGrvrFrrr�)test_no_double_type_conversion_of_default�s

zITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_defaultcCs8t��}|jddtgdd�|�g�}|�|jg�dS)NrrrK)r�rSr
r�)rArBrur�rhr�rr�rrr�test_issue_15906
s
�
z0TestTypeFunctionCalledOnDefault.test_issue_15906N)rrrrr
rr
rrrrr�s
rc@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestParseKnownArgscCst��}|�d�dS)Nr�rArBrhrErrr�test_arguments_tuplesz'TestParseKnownArgs.test_arguments_tuplecCst��}|�g�dSr'rrErrr�test_arguments_listsz&TestParseKnownArgs.test_arguments_listcCs t��}|�d�|�d�dS)Nr�r��rArBrurhrErrr�test_arguments_tuple_positional"s
z2TestParseKnownArgs.test_arguments_tuple_positionalcCs"t��}|�d�|�dg�dS)Nr�rrErrr�test_arguments_list_positional's
z1TestParseKnownArgs.test_arguments_list_positionalcCsJt��}|�d�|�d���\}}|�tdd�|�|�ddg|�dS)Nr�z--foo F --bar --baz�Fr�r�r)rArBrurrr�r�rJ)rrvrF�extrasrrr�test_optionals,s

z!TestParseKnownArgs.test_optionalscCsrt��}|jdddtd�|jddd�|�d�gd	�}|�|�\}}|�td
ddd
�|�|�gd�|�dS)Nr�rr)rr�rSr�r<r�r�)r�r-r�r�rgr�rTr�)�vrr�)r-r�r�)rArBrur#rrr�rJ)rrvr�rFrrrr�
test_mixed3s
zTestParseKnownArgs.test_mixedN)	rrrrrrrrrrrrrrsrc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestIntermixedArgscCstjdd�}|jddd�|jdddd	�}|�d
�|jddtd
�d��}|�|�}|�tdd
dgd�d�|�|�|�\}}|�tdd
dgd�|�|�gd�|�d��}|�	|�\}}|�tdd
ddgd�|�|�gd�|�|�
|j�|�|jd�dS)NrMr�r�rzr�r�r�Tr{�cmd�restr%)rrSzcmd --foo x 1 --bar y 2 3r�r�r�)r�rrzr�r|rrgz!cmd --foo x 1 --error 2 --bar y 3r)z--errorrrg)
rArBrur#r��parse_intermixed_argsr�rJrr�parse_known_intermixed_argsr~rBr5)rrvr�r�rFrrrr�
test_basicCs"

zTestIntermixedArgs.test_basiccCs~tdd�}|�d�|�d�|jddd�d��}|�t��}|�|�Wd�n1s^0Y|�t|j�d	�dS)
NrMr�r�r�r�r�rr�z\.\.\.)	rnrur�r�r�rr�r�rE)rrvr�rGrrr�test_remainder^s


(z!TestIntermixedArgs.test_remaindercCs�tdd�}|jdd�}|jdddd�|jd	d
d�|jdd
ddd�|�d���}|�tddgddd�|�|�t|jd���|�|j	d�dS)NrMr�Tr�r�r�rrRr�rr�r�r%r�rrz	1 --foo 2r|r)r�rzrr{)
rnr�rurr�r�rJr�rYr5)rrvr|rFrrr�test_exclusiveks
z!TestIntermixedArgs.test_exclusivecCshtdd�}|jdd�}|jdddd�|jd	d
d�|jdd
ddd�|�t|jg�|�|jd�dS)NrMr�Tr�r�r�rrRr�rr�r�r%r�rr)rnr�rur�r�rr�r5r�rrr�test_exclusive_incompatiblews
z.TestIntermixedArgs.test_exclusive_incompatibleN)rrrr r!r"r#rrrrrBs
rc@seZdZdd�ZdS)�!TestIntermixedMessageContentErrorcCs�tddd�}|jdtd�|jdtdd�|�t��}|�g�Wd�n1sT0Yt|j�}|�|d�|�|d	�|�t��}|�	g�Wd�n1s�0Yt|j�}|�
|d�|�|d	�dS)
NrMrrur�r�r�Tr4r�)rnrur�r#r�rYrhrEr�rZassertNotRegexr�rrrr��s(
(
zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageN)rrrr�rrrrr$�sr$c@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Z d<d=�Z!d>d?�Z"d@dA�Z#dBdC�Z$dDdE�Z%dFdG�Z&dHdI�Z'dJdK�Z(dLdM�Z)dNdO�Z*dPdQ�Z+dRdS�Z,dTdU�Z-dVdW�Z.dXdY�Z/dZd[�Z0d\d]�Z1d^d_�Z2d`S)a�TestAddArgumentMetavarz,length of metavar tuple does not match nargscCst��}|jd||d�dS)Nr��rrW)rArBru)rrrWrvrrr�do_test_no_exception�sz+TestAddArgumentMetavar.do_test_no_exceptioncCs\t��}|�t�� }|jd||d�Wd�n1s80Y|�|jjd|j�dS)Nr�r&r)	rArBr�rrur�rErF�EXPECTED_MESSAGE)rrrWrvrGrrr�do_test_exception�s.z(TestAddArgumentMetavar.do_test_exceptioncCs|jddd�dS)Nr|r&�r'rrrr�test_nargs_None_metavar_string�sz5TestAddArgumentMetavar.test_nargs_None_metavar_stringcCs|jdt�d�dS)Nr&�r)�tuplerrrr�test_nargs_None_metavar_length0�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length0cCs|jddd�dS)N�r|r&r*rrrr�test_nargs_None_metavar_length1�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length1cCs|jddd�dS)N�r|rr&�r)rrrr�test_nargs_None_metavar_length2�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length2cCs|jddd�dS)Nrr&r2rrrr�test_nargs_None_metavar_length3�sz6TestAddArgumentMetavar.test_nargs_None_metavar_length3cCs|jddd�dS)Nrr|r&r*rrrr�"test_nargs_optional_metavar_string�sz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringcCs|jdt�d�dS)Nrr&r,rrrr�#test_nargs_optional_metavar_length0�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length0cCs|jddd�dS)Nrr/r&r*rrrr�#test_nargs_optional_metavar_length1�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length1cCs|jddd�dS)Nrr1r&r2rrrr�#test_nargs_optional_metavar_length2�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length2cCs|jddd�dS)Nrrr&r2rrrr�#test_nargs_optional_metavar_length3�sz:TestAddArgumentMetavar.test_nargs_optional_metavar_length3cCs|jddd�dS)Nr%r|r&r*rrrr�$test_nargs_zeroormore_metavar_string�sz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringcCs|jdt�d�dS)Nr%r&r,rrrr�%test_nargs_zeroormore_metavar_length0�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0cCs|jddd�dS)Nr%r/r&r*rrrr�%test_nargs_zeroormore_metavar_length1�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1cCs|jddd�dS)Nr%r1r&r*rrrr�%test_nargs_zeroormore_metavar_length2�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2cCs|jddd�dS)Nr%rr&r2rrrr�%test_nargs_zeroormore_metavar_length3�sz<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3cCs|jddd�dS)Nr)r|r&r*rrrr�#test_nargs_oneormore_metavar_string�sz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringcCs|jdt�d�dS)Nr)r&r,rrrr�$test_nargs_oneormore_metavar_length0�sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0cCs|jddd�dS)Nr)r/r&r2rrrr�$test_nargs_oneormore_metavar_length1�sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1cCs|jddd�dS)Nr)r1r&r*rrrr�$test_nargs_oneormore_metavar_length2�sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2cCs|jddd�dS)Nr)rr&r2rrrr�$test_nargs_oneormore_metavar_length3�sz;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3cCs|jddd�dS)Nr�r|r&r*rrrr�#test_nargs_remainder_metavar_string�sz:TestAddArgumentMetavar.test_nargs_remainder_metavar_stringcCs|jdt�d�dS)Nr�r&)r'r-rrrr�$test_nargs_remainder_metavar_length0�sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0cCs|jddd�dS)Nr�r/r&r*rrrr�$test_nargs_remainder_metavar_length1�sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1cCs|jddd�dS)Nr�r1r&r*rrrr�$test_nargs_remainder_metavar_length2�sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2cCs|jddd�dS)Nr�rr&r*rrrr�$test_nargs_remainder_metavar_length3�sz;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3cCs|jddd�dS)N�A...r|r&r*rrrr� test_nargs_parser_metavar_string�sz7TestAddArgumentMetavar.test_nargs_parser_metavar_stringcCs|jdt�d�dS)NrIr&r,rrrr�!test_nargs_parser_metavar_length0sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length0cCs|jddd�dS)NrIr/r&r*rrrr�!test_nargs_parser_metavar_length1sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length1cCs|jddd�dS)NrIr1r&r2rrrr�!test_nargs_parser_metavar_length2sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length2cCs|jddd�dS)NrIrr&r2rrrr�!test_nargs_parser_metavar_length3
sz8TestAddArgumentMetavar.test_nargs_parser_metavar_length3cCs|jddd�dS)Nrr|r&r*rrrr�test_nargs_1_metavar_stringsz2TestAddArgumentMetavar.test_nargs_1_metavar_stringcCs|jdt�d�dS)Nrr&r,rrrr�test_nargs_1_metavar_length0sz3TestAddArgumentMetavar.test_nargs_1_metavar_length0cCs|jddd�dS)Nrr/r&r*rrrr�test_nargs_1_metavar_length1sz3TestAddArgumentMetavar.test_nargs_1_metavar_length1cCs|jddd�dS)Nrr1r&r2rrrr�test_nargs_1_metavar_length2sz3TestAddArgumentMetavar.test_nargs_1_metavar_length2cCs|jddd�dS)Nrrr&r2rrrr�test_nargs_1_metavar_length3sz3TestAddArgumentMetavar.test_nargs_1_metavar_length3cCs|jddd�dS)Nr!r|r&r*rrrr�test_nargs_2_metavar_string sz2TestAddArgumentMetavar.test_nargs_2_metavar_stringcCs|jdt�d�dS)Nr!r&r,rrrr�test_nargs_2_metavar_length0#sz3TestAddArgumentMetavar.test_nargs_2_metavar_length0cCs|jddd�dS)Nr!r/r&r2rrrr�test_nargs_2_metavar_length1&sz3TestAddArgumentMetavar.test_nargs_2_metavar_length1cCs|jddd�dS)Nr!r1r&r*rrrr�test_nargs_2_metavar_length2)sz3TestAddArgumentMetavar.test_nargs_2_metavar_length2cCs|jddd�dS)Nr!rr&r2rrrr�test_nargs_2_metavar_length3,sz3TestAddArgumentMetavar.test_nargs_2_metavar_length3cCs|jddd�dS)Nrr|r&r*rrrr�test_nargs_3_metavar_string1sz2TestAddArgumentMetavar.test_nargs_3_metavar_stringcCs|jdt�d�dS)Nrr&r,rrrr�test_nargs_3_metavar_length04sz3TestAddArgumentMetavar.test_nargs_3_metavar_length0cCs|jddd�dS)Nrr/r&r2rrrr�test_nargs_3_metavar_length17sz3TestAddArgumentMetavar.test_nargs_3_metavar_length1cCs|jddd�dS)Nrr1r&r2rrrr�test_nargs_3_metavar_length2:sz3TestAddArgumentMetavar.test_nargs_3_metavar_length2cCs|jddd�dS)Nrrr&r*rrrr�test_nargs_3_metavar_length3=sz3TestAddArgumentMetavar.test_nargs_3_metavar_length3N)3rrrr(r'r)r+r.r0r3r4r5r6r7r8r9r:r;r<r=r>r?r@rArBrCrDrErFrGrHrJrKrLrMrNrOrPrQrRrSrTrUrVrWrXrYrZr[r\r]rrrrr%�s`r%c@s4eZdZdZdZdd�Zdd�Zdd�Zd	d
�ZdS)�TestInvalidNargszinvalid nargs valuez�nargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatecCsZt��}|�t��}|jd|d�Wd�n1s60Y|�|jjd|j�dS�Nr�rr)	rArBr�rrur�rErF�EXPECTED_RANGE_MESSAGE�rrrvrGrrr�do_test_range_exceptionHs,z(TestInvalidNargs.do_test_range_exceptioncCsZt��}|�t��}|jd|d�Wd�n1s60Y|�|jjd|j�dSr_)	rArBr�rrur�rErF�EXPECTED_INVALID_MESSAGErarrr�do_test_invalid_exceptionNs,z*TestInvalidNargs.do_test_invalid_exceptioncCs|jdd�|jdd�dS)Nr�rZabcd)rdrrrr�test_nargs_alphabeticVsz&TestInvalidNargs.test_nargs_alphabeticcCs|jdd�dS)Nrr)rbrrrr�test_nargs_zeroZsz TestInvalidNargs.test_nargs_zeroN)	rrrrcr`rbrdrerfrrrrr^Asr^c@seZdZdd�Zdd�ZdS)�TestImportStarcCs tjD]}|�tt|��qdSr')rA�__all__r�r�r�rrrrcs
zTestImportStar.testcCs0dd�tt���D�}|�t|�ttj��dS)NcSs0g|](\}}|�d�s|dkst�|�s|�qS)r��ngettext)�
startswith�inspectZismodule)rMr;r'rrrrOhs
�zJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>)rUrArRr�rQrh)rrRrrr�'test_all_exports_everything_but_modulesgs
�z6TestImportStar.test_all_exports_everything_but_modulesN)rrrrrlrrrrrgasrgcs$eZdZ�fdd�Zdd�Z�ZS)�TestWrappingMetavarcs,t���td�|_d}|jjd|d�dS)NZ9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyrc)r
r%rnrvru)rrWrrrr%ss
�zTestWrappingMetavar.setUpcCs |j��}|�|t�d��dS)Na(            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            optional arguments:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )rvr�r�r�r�)r�	help_textrrr�test_help_with_metavar}s
z*TestWrappingMetavar.test_help_with_metavar)rrrr%rorrrrrrmqs
rmc@s$eZdZdd�Zdd�Zdd�ZdS)�TestExitOnErrorcCs$tjdd�|_|jjddtd�dS)NF)�
exit_on_errorz
--integers�N)rWrS)rArBrvrur#rrrrr%�szTestExitOnError.setUpcCs(|j�d���}|�|tjdd��dS)Nz--integers 4r0)Zintegers)rvrhr�r�rAr-r/rrr�!test_exit_on_error_with_good_args�sz1TestExitOnError.test_exit_on_error_with_good_argscCs@|�tj�� |j�d���Wd�n1s20YdS)Nz--integers a)r�rAr�rvrhr�rrrr� test_exit_on_error_with_bad_args�sz0TestExitOnError.test_exit_on_error_with_bad_argsN)rrrr%rsrtrrrrrp�srpcCsit_t�t_dSr')r�r�r�rrrrr�tearDownModule�sru�__main__)�rkrr�r+r6r4rar�r(ZunittestrArrr�
TextIOWrapperrrr�r&rErJrZrYrmrBrnrSrqr�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrr$r(r*r3r7r9r;r=r>rIrJrRrTr^r_rarcrhrjrnrorrrsrurvrwrxryrzr}rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rerfr�rrZ	eq_stderrrrZ
eq_bstderrr�r�rrrZskipIfr�rrrrrrrr!r%r,r.r3rBrFrJr�r�r�r�r�r�r�r�rrrrrrrrrrrrrrrr)r,r4r5rCrPrQrRrVrYr\r^r_rardrhrmrnrorprqrrrtrvrwryr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr$r%r^rgrmrprur�mainrrrr�<module>s
&q









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

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists