Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_argparse.cpython-311.opt-2.pyc
�

�Ke6���r�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddl	mZGd�dej��ZGd�de	j��Ze
jGd�d	e����ZGd
�de��ZGd�d
e��ZGd�de��Zd�ZGd�de
j��ZGd�de��ZefZedei��ZGd�de��Z Gd�de��Z!Gd�de��Z"Gd�de��Z#Gd�de��Z$Gd �d!e��Z%Gd"�d#e��Z&Gd$�d%e��Z'Gd&�d'e��Z(Gd(�d)e��Z)Gd*�d+e��Z*Gd,�d-e��Z+Gd.�d/e��Z,Gd0�d1e��Z-Gd2�d3e��Z.Gd4�d5e��Z/Gd6�d7e��Z0Gd8�d9e��Z1Gd:�d;e��Z2Gd<�d=e��Z3Gd>�d?e��Z4Gd@�dAe��Z5GdB�dCe��Z6GdD�dEe��Z7GdF�dGe��Z8GdH�dIe��Z9GdJ�dKe��Z:GdL�dMe��Z;GdN�dOe��Z<GdP�dQe��Z=GdR�dSe��Z>GdT�dUe��Z?GdV�dWe��Z@GdX�dYe��ZAGdZ�d[e��ZBGd\�d]e��ZCGd^�d_e��ZDGd`�dae��ZEGdb�dce��ZFGdd�dee��ZGGdf�dge��ZHGdh�die��ZIGdj�dke��ZJGdl�dme��ZKGdn�doe��ZLGdp�dqe��ZMGdr�dse��ZNGdt�due��ZOGdv�dwe��ZPGdx�dye��ZQGdz�d{e��ZRGd|�d}e��ZSGd~�de��ZTGd��d�e��ZUGd��d�e��ZVGd��d�e��ZWGd��d�e��ZXGd��d�e��ZYGd��d�e��ZZGd��d�e��Z[Gd��d�e��Z\Gd��d�e��Z]Gd��d�e��Z^Gd��d�e��Z_Gd��d�e��Z`Gd��d�e��ZaGd��d�e��ZbGd��d�e��ZcGd��d�e��ZdGd��d�e��ZeGd��d�e��ZfGd��d�e��ZgGd��d�e��ZhGd��d�e��ZiGd��d�e��ZjGd��d�e��ZkGd��d�e��ZlGd��d�e��ZmGd��d�e��ZnGd��d�e��ZoGd��d�e��ZpGd��d�e��ZqGd��d�e��ZrGd��d�e��ZsGd��d�ee��ZtGd��d�ee��ZuGd„d�e��Zve��Zwe��ZxGdĄdŦ�ZyeydƦ�ZzeydǦ�Z{eydȦ�Z|eydɦ�Z}eydʦ�Z~eyd˦�ZGd̄d�e��Z�Gd΄d�ee��Z�GdЄd�ee��Z�Gd҄d�ee��Z�GdԄd�e��Z�e
j�Gdքd�ee����Z�e
j�Gd؄d�ee����Z�e
j�Gdڄd�ee����Z�e
j�Gd܄d�e�����Z�Gdބd�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e��Z�Gd��d�e��Z�Gd��d�e��Z�Gd��d�e�e��Z�Gd��d�e�e��Z�Gd��d�e�e��Z�G�d��de�e��Z�G�d��de�e��Z�G�d��de�e��Z�G�d��de�e��Z�G�d��d	e�e��Z�G�d
��de�e��Z�G�d��d
e��Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de�e���Z�G�d��de��Z�G�d ��d!e��Z�G�d"��d#e��Z�G�d$��d%e��Z�efZe��d&ei��Z�G�d'��d(e���Z�G�d)��d*e���Z�G�d+��d,e���Z�G�d-��d.e���Z�G�d/��d0e���Z�G�d1��d2e���Z�G�d3��d4e���Z�G�d5��d6e���Z�G�d7��d8e���Z�G�d9��d:e���Z�G�d;��d<e���Z�G�d=��d>e���Z�G�d?��d@e���Z�G�dA��dBe���Z�G�dC��dDe���Z�G�dE��dFe���Z�G�dG��dHe���Z�G�dI��dJe���Z�G�dK��dLe���Z�G�dM��dNe���Z�G�dO��dPe���Z�G�dQ��dRe���Z�G�dS��dTe���Z�G�dU��dVe���Z�G�dW��dXe���Z�G�dY��dZe���Z�G�d[��d\e���Z�G�d]��d^e���Z�G�d_��d`e���Z�G�da��dbe���Z�G�dc��dde���Z�G�de��dfe���Z�G�dg��dhe���Z�G�di��dje���Z�G�dk��dle���Z�G�dm��dne���Z�G�do��dpe���Z�G�dq��dre���Z�G�ds��dte��Z�G�du��dve��Z�G�dw��dxe��Z�G�dy��dze��Z�G�d{��d|e��Z�G�d}��d~e��Z�G�d��d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�G�d���d�e��Z�d��Z�e�d�kre	j���dSdS(��N)�	os_helper)�mockc�(��eZdZ	d�fd�	Zd�Z�xZS)�StdIOBuffer��
c����|�d��}t���tjtj|����d|���dS)N�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�self�
initial_valuer�	__class__s   ��</usr/local/apps/python3/lib/python3.11/test/test_argparse.pyrzStdIOBuffer.__init__s]���%�,�,�W�5�5�
�
������*�2�:�m�+D�+D�E�E� �'�	�	3�	3�	3�	3�	3�c��|���|jj����d��S)Nr
)�flush�buffer�raw�getvalue�decode�rs rrzStdIOBuffer.getvalue!s3���
�
�����{��'�'�)�)�0�0��9�9�9r)rr)�__name__�
__module__�__qualname__rr�
__classcell__�rs@rrrsQ��������3�3�3�3�3�3�
:�:�:�:�:�:�:rrc��eZdZd�ZdS)�TestCasec�\�|�tj����}d|d<dS)N�80�COLUMNS)�enterContextr�EnvironmentVarGuard�r�envs  r�setUpzTestCase.setUp(s-�����	� =� ?� ?�@�@����I���rN)rrr r,�rrr$r$&s#����������rr$c�&�eZdZd�Zd�Zd�Zd�ZdS)�TempDirMixinc��tj��|_tj��|_tj|j��dS�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirrs rr,zTempDirMixin.setUp3s7�� �(�*�*��
��y�{�{���
��������rc�>�tj|j��tj|jd���D]M\}}}|D]D}tjtj�|j|��tj	���E�Ntj|jd��dS)NF)�topdownT)r5r8r7�walkr4�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�names     r�tearDownzTempDirMixin.tearDown8s���
�������!#�����!F�!F�!F�	K�	K��D�$���
K�
K��������d�m�T�:�:�D�M�J�J�J�J�
K��
�d�m�T�*�*�*�*�*rc���tj�|j|��}t	|dd���5}|�|��ddd��n#1swxYwY|S)N�wr
��encoding)r5r=r>r4�open�write)r�filename�	file_path�files    r�create_writable_filez!TempDirMixin.create_writable_file?s����G�L�L����9�9�	�
�)�S�7�
3�
3�
3�	!�t��J�J�x� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!��s�A�A�!Ac�j�tj|�|��tj��dSr1)r5r<rQr?�S_IREAD)rrNs  r�create_readonly_filez!TempDirMixin.create_readonly_fileEs*��
���*�*�8�4�4�d�l�C�C�C�C�CrN)rrr r,rGrQrTr-rrr/r/0sU������ � � �
+�+�+����D�D�D�D�Drr/c��eZdZd�ZdS)�Sigc�"�||_||_dSr1)�args�kwargs�rrXrYs   rrzSig.__init__Js����	�����rN�rrr rr-rrrVrVHs#����������rrVc� �eZdZd�Zd�Zd�ZdS)�NSc�:�|j�|��dSr1)�__dict__�update)rrYs  rrzNS.__init__Qs���
���V�$�$�$�$�$rc��t|j�����}d�d�|D����}t	|��j�d|�d�S)Nz, c��g|]}d|z��S)z%s=%rr-)�.0�tups  r�
<listcomp>zNS.__repr__.<locals>.<listcomp>Vs��E�E�E��w��}�E�E�Er�(�))�sortedr_�itemsr>�typer)r�sorted_items�	kwarg_strs   r�__repr__zNS.__repr__Ts[���d�m�1�1�3�3�4�4���I�I�E�E��E�E�E�F�F�	���:�:�.�.�.�	�	�	�:�:rc�B�t|��t|��kSr1)�vars�r�others  r�__eq__z	NS.__eq__Ys���D�z�z�T�%�[�[�(�(rN)rrr rrmrrr-rrr]r]OsA������%�%�%�;�;�;�
)�)�)�)�)rr]c��eZdZdd�ZdS)�ArgumentParserErrorNc�x�t�||||��||_||_||_||_dSr1)�	Exceptionr�message�stdout�stderr�
error_code)rrwrxryrzs     rrzArgumentParserError.__init___s<�����4��&�&�9�9�9����������$����r)NNNr[r-rrrtrt]s(������%�%�%�%�%�%rrtc
�0�ttjt��sttjt��r||i|��Stj}tj}t��t_t��t_		||i|��}tt
|����D]�}t||��}|tjurt|||���2|tjj	ur&t||t|dt�����k|tjurt|||����|tjj	ur%t||t|dt������||t_|t_S#t$r[}|j
}	tj���}
tj���}td|
||	��d�d}~wwxYw#|t_|t_wxYw)Nr�
SystemExit)�
isinstance�sysryrrx�listro�getattr�setattrr�BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELr|�coderrt)�
parse_argsrXrY�
old_stdout�
old_stderr�result�key�attr�er�rxrys            r�stderr_to_parser_errorr�gs����#�*�k�*�*�+�j���[�.Q�.Q�+��z�4�*�6�*�*�*���J���J����C�J����C�J� �	>��Z��0��0�0�F��D��L�L�)�)�	
]�	
]���v�s�+�+���3�:�%�%��F�C��4�4�4�4��S�Z�.�.�.��F�C���X�GZ�)[�)[�\�\�\�\��S�Z�'�'��F�C��4�4�4�4��S�Z�.�.�.��F�C���X�GZ�)[�)[�\�\�\��� ��
���
�
���	>�	>�	>��6�D��Z�(�(�*�*�F��Z�(�(�*�*�F�%��f�f�d�4�4�9=�
>�����		>����� ��
���
����s&�C)F�
G8�AG3�3G8�8G;�;Hc�2��eZdZ�fd�Z�fd�Z�fd�Z�xZS)�ErrorRaisingArgumentParserc�X��tt|��j}t|g|�Ri|��Sr1)r
r�r�r�)rrXrYr�rs    �rr�z%ErrorRaisingArgumentParser.parse_args�s4����5�t�<�<�G�
�%�j�B�4�B�B�B�6�B�B�Brc�X��tt|��j}t|g|�Ri|��Sr1)r
r��exitr�)rrXrYr�rs    �rr�zErrorRaisingArgumentParser.exit�s4����/��6�6�;��%�d�<�T�<�<�<�V�<�<�<rc�X��tt|��j}t|g|�Ri|��Sr1)r
r��errorr�)rrXrYr�rs    �rr�z ErrorRaisingArgumentParser.error�s4����0�$�7�7�=��%�e�=�d�=�=�=�f�=�=�=r)rrr r�r�r�r!r"s@rr�r��so�������C�C�C�C�C�=�=�=�=�=�>�>�>�>�>�>�>�>�>rr�c��eZdZ	d�ZdS)�ParserTesterMetaclassc��|dkrdSt|d��st��|_t|d��st|_d�}d�}d�}d�}d�}Gd	�d
t
��}	|||fD]}
||fD]}|	||
|����dS)N�ParserTestCase�parser_signature�parser_classc�@�	|D]}|j|ji|j���dSr1)�add_argumentrXrY)�parser�argument_signatures�sigs   r�	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groups�s=��:�*�
=�
=��#��#�S�X�<���<�<�<�<�
=�
=rc�j�	|�d��}|D]}|j|ji|j���dS)N�foo)�add_argument_groupr�rXrY)r�r��groupr�s    r�	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_group�sP��F��-�-�e�4�4�E�*�
<�
<��"��"�C�H�;��
�;�;�;�;�
<�
<rc��	t|��D]4\}}|�d|z��}|j|ji|j���5dS)Nzfoo:%i)�	enumerater�r�rXrY)r�r��ir�r�s     r�many_groupsz3ParserTesterMetaclass.__init__.<locals>.many_groups�sa��B�#�$7�8�8�
<�
<���3��1�1�(�Q�,�?�?��"��"�C�H�;��
�;�;�;�;�
<�
<rc�.�	|�|��Sr1)r�)r�rXs  r�listargsz0ParserTesterMetaclass.__init__.<locals>.listargs�s��5��$�$�T�*�*�*rc��	tj}|dg|zt_	|���|t_S#|t_wxYw)Nr)r~�argvr�)r�rX�old_sys_argvs   r�sysargsz/ParserTesterMetaclass.__init__.<locals>.sysargs�sO��:��8�L�$�Q��(�4�/�C�H�
(��(�(�*�*�'�����<���'�'�'�'s�A�Ac�&�eZdZd�Zd�Zd�Zd�ZdS)�0ParserTesterMetaclass.__init__.<locals>.AddTestsc��||_||_|jj}|jj}|j|jfD]R}|j}|||f}d�|��}	|fd�}
	|	|
_n#t$rYnwxYwt||	|
���SdS)N�_c��||��dSr1r-�r�	test_funcs  r�wrapperzJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper����!�	�$�����r)�_add_arguments�_parse_argsr�
test_failures�test_successesr>�	TypeErrorr�)r�
tester_cls�
add_argumentsr��add_arguments_name�parse_args_namer��	func_name�names�	test_namer�s           rrz9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__�s���&3��#�#-�� �%)�%8�%A�"�"&�"2�";��"&�"4�d�6I�!J�<�<�I� )� 2�I�%�'9�?�J�E� #������I�09�(�(�(�(��+4��(�(��$�����������J�	�7�;�;�;�;�<�<s�A&�&
A3�2A3c��|jj}|jj}|j|i|��}|�||j��|Sr1)r�rXrYr�r�r�)r�testerrXrYr�s     r�_get_parserz<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parser�sM���.�3���0�7��,��,�d�=�f�=�=���#�#�F�F�,F�G�G�G��
rc��|�|��}|jD]_}|���}|�t|���5|�|��ddd��n#1swxYwY�`dS)N)�msg)r��failures�split�assertRaisesrtr�)rr�r��args_strrXs     rr�z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failures�s����)�)�&�1�1�� &��0�0�H�#�>�>�+�+�D��,�,�-@�d�,�K�K�0�0��)�)�$�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��0�0s�A1�1A5	�8A5	c���|�|��}|jD]Z\}}t|t��r|���}|�||��}|�||���[dSr1)r��	successesr}�strr�r��assertEqual)rr�r�rX�expected_ns�	result_nss      rr�z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes�s����)�)�&�1�1��)/�)9�?�?�%�D�+�!�$��,�,�,�#�z�z�|�|�� $� 0� 0��� >� >�I��&�&�{�I�>�>�>�>�	?�?rN)rrr rr�r�r�r-rr�AddTestsr��sP������
<�
<�
<�&
�
�
�
0�
0�
0�
?�
?�
?�
?�
?rr�)�hasattrrVr�r�r��object)�clsrF�bases�bodydictr�r�r�r�r�r�r�r�s            rrzParserTesterMetaclass.__init__�s���#�#�#��F��s�.�/�/�	)�#&�5�5�C� ��s�N�+�+�	:�9�C��
	=�	=�	=�
	<�	<�	<�	<�	<�	<�	+�	+�	+�	(�	(�	(�)	?�)	?�)	?�)	?�)	?�v�)	?�)	?�)	?�Z(��K�@�	9�	9�M�'��1�
9�
9�
����m�Z�8�8�8�8�
9�	9�	9rNr[r-rrr�r��s-������
�_9�_9�_9�_9�_9rr�r�c��eZdZ	ed��gZgd�Zded���fded���fded���fd	ed
���fded
���fgZdS)�TestOptionalsSingleDash�-x)r��a�--foo�-x --fooz-x -yrN��x�-x ar��-xaz-x -1�-1z-x-1�rrr rVr�r�r]r�r-rrr�r�s�������;��3�t�9�9�+��8�8�8�H�	�R�R�$�Z�Z�Z��	���c�����	���S�	�	�	��	�"�"�t�*�*�*��	���d������I�I�Irr�c���eZdZ	edd���eddd���ed��gZgd	�Zd
eddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��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-xyzaz-x=rFN)r��yyy�zT�-zar��-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar�r-rrr�r�"s�������;�	��D��&�&�&���F�=��3�3�3���D�	�	���
C�C�C�H�
�R�R�%�T�T�
*�
*�
*�+�	
�r�r�D�d�d�+�+�+�,�	���U���,�,�,�-�	���e���-�-�-�.�	���d���,�,�,�-�	�"�"�t���-�-�-�.�	�2�2��$�#�.�.�.�/�	�B�B��4�3�/�/�/�0�	
�r�r�E�r�T�*�*�*�+�	���e��t�,�,�,�-�	���T�r�S�1�1�1�2�	���d��c�2�2�2�3�
�I�I�Irr�c��eZdZ	ed��gZgd�Zded���fded���fded	���fd
ed���fded���fgZdS)�TestOptionalsSingleDashLong�-foo)r�r�r�z
-foo --fooz-foo -y�-fooarN�r�z-foo ar�z-foo -1r�z-fo a�-f ar�r-rrr�r�<s�������K��3�v�;�;�-��G�G�G�H�	�R�R�D�\�\�\��	�2�2�#�;�;�;��	�B�B�4�L�L�L�!�	�"�"��+�+�+��	���������I�I�Irr�c�.�eZdZ	ed��ed��ed��gZgd�Zdeddd���fded	dd���fd
ed	dd���fdeddd���fd
eddd���fdedd	d���fdeddd	���fgZdS)�&TestOptionalsSingleDashSubsetAmbiguous�-f�-foobar�-foorab)r�r��-fo�-foo bz-foobz-foobaz-foorarN)�f�foobar�foorabr�r��-fa�-foa�oar��ooa�	-foobar a�	-foorab ar�r-rrr�r�Js�������G��3�t�9�9�c�c�)�n�n�c�c�)�n�n�E��K�K�K�H�	�R�R�$�t�D�
1�
1�
1�2�	���c�$�t�4�4�4�5�	���S��d�3�3�3�4�	���d�4��5�5�5�6�	�"�"�u�T�$�7�7�7�8�	�b�b�4��D�9�9�9�:�	�b�b�4��S�9�9�9�:��I�I�Irr�c��eZdZ	ed��ed��gZgd�Zdedd���fdedd���fd	edd���fd
edd���fdedd���fdedd���fd
edd���fgZdS)� TestOptionalsSingleDashAmbiguousr�r�)r�r�rrr�r�rrN)rrz-foob ar�z-foor az-fooba az-foora arr	r�r-rrrrZs�������A��3�y�>�>�3�3�y�>�>�:��E�E�E�H�	�R�R�t�D�
)�
)�
)�*�	�B�B�c�$�/�/�/�0�	�B�B�d�3�/�/�/�0�	�R�R�s�4�0�0�0�1�	�R�R�t�C�0�0�0�1�	�b�b��D�1�1�1�2�	�b�b��S�1�1�1�2��I�I�Irrc��eZdZ	edd���gZgd�Zded���fded	���fd
ed	���fded���fgZdS)
�TestOptionalsNumericr��one��dest)r�r�z-1 --fooz-1 -yz-1 -1z-1 -2rN)rz-1 ar�z-1az-1-2�-2r�r-rrr
r
js�������2��3�t�%�0�0�0�1��A�A�A�H�	�R�R�D�\�\�\��	��������	���s�����	��������	�I�I�Irr
c��eZdZ	ed��gZgd�Zded���fded���fded���fd	ed
���fded
���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�r-rrrrws�������;��3�w�<�<�.��F�F�F�H�	�R�R�D�\�\�\��	�B�B�3�K�K�K� �	�B�B�3�K�K�K� �	�r�r�f�~�~�~�&�	�r�r�f�~�~�~�&��I�I�Irrc
���eZdZ	edd���ed��gZgd�Zdedd�	��fd
edd�	��fded
d�	��fded
d�	��fded
d�	��fded
d�	��fgZdS)�#TestOptionalsDoubleDashPartialMatch�--badgerr�r�z--bat)�--bar�--b�--ba�--b=2z--ba=4�	--badge 5rFN)�badger�batz--bat X�X�--badT�--badg�--badger�r-rrrr�s�������A�	��J�|�,�,�,���G�����H�G�G�H�	�R�R�u�$�
'�
'�
'�(�	�B�B�e��-�-�-�.�	�"�"�D�d�+�+�+�,�	�2�2�T�t�,�,�,�-�	�B�B�d��-�-�-�.�	�R�R�t��.�.�.�/�
�I�I�Irrc��eZdZ	edd���ed��gZgd�Zdedd�	��fd
edd�	��fdedd�	��fd
edd�	��fdedd�	��fdedd�	��fdedd�	��fgZdS)�"TestOptionalsDoubleDashPrefixMatchrr�r�r)rrrrrrFN)r�baz--ba Xrz--ba=XrTr r!r�r-rrr#r#�s�������I�	��J�|�,�,�,���F�����>�=�=�H�	�R�R�u��
&�
&�
&�'�	�2�2�U�s�+�+�+�,�	�2�2�U�s�+�+�+�,�	�"�"�D�T�*�*�*�+�	�2�2�T�d�+�+�+�,�	�B�B�d�t�,�,�,�-�	�R�R�t��-�-�-�.��I�I�Irr#c��eZdZ	edd���ed��eddd���gZgd	�Zd
eddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��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�r-rrr&r&�s�������F�	��D��&�&�&���G�����F�=��3�3�3���
A�@�@�H�	�R�R�%�T�t�
,�
,�
,�-�	
�r�r�D�d��-�-�-�.�	�2�2��3�D�1�1�1�2�	�r�r�D�c�t�4�4�4�5�	�"�"�t��2�.�.�.�/�	�2�2��$�B�/�/�/�0�
�I�I�Irr&c�4�eZdZ	edd���Zedd���ed��edd	d
���gZgd�Zd
eddd���fdeddd���fdeddd���fdeddd���fdeddd
���fdeddd
���fgZdS)�!TestOptionalsAlternatePrefixChars�+:/F��prefix_chars�add_help�+fr�r��::bar�/bazr�r�r�)rr(r)r*r��--bar Br'�-h�--helpz+hz::helpz/helprNr+T�::ba Br*�
+f ::bar B�+f /b�/ba +f�	rrr rVr�r�r�r]r�r-rrr/r/�s
������C��s���>�>�>����D��&�&�&���G�����F�=��3�3�3���
q�p�p�H�	�R�R�%�T�t�
,�
,�
,�-�	
�r�r�D�d��-�-�-�.�	�2�2��3�D�1�1�1�2�	�r�r�D�c�t�4�4�4�5�	�"�"�t��2�.�.�.�/�	�2�2��$�B�/�/�/�0�
�I�I�Irr/c�4�eZdZ	edd���Zedd���ed��edd	d
���gZgd�Zd
eddd���fdeddd���fdeddd���fdeddd���fdeddd
���fdeddd
���fgZdS)�*TestOptionalsAlternatePrefixCharsAddedHelpr0Tr1r4r�r�r5r6r�r�r�)rr(r)r*r�r7r'rFNr+r:r*r;r<r=r>r-rrr@r@�s������+��s���=�=�=����D��&�&�&���G�����F�=��3�3�3���
H�G�G�H�	�R�R�%�T�t�
,�
,�
,�-�	
�r�r�D�d��-�-�-�.�	�2�2��3�D�1�1�1�2�	�r�r�D�c�t�4�4�4�5�	�"�"�t��2�.�.�.�/�	�2�2��$�B�/�/�/�0�
�I�I�Irr@c	��eZdZ	edd���Zedd���edd���edd���gZgd	�Zd
eddd���fdeddd���fd
eddd���fdeddd���fgZdS)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-Fr1r�r�r�z+yz+z)�-wz-xyzz+xr�z+xyzr�r��yr�Tz+y -xz+yz -xNr>r-rrrBrB�s�������J��s��u�=�=�=����D��&�&�&���D��&�&�&���D��&�&�&���
���H�
�R�R�%�5�E�
*�
*�
*�+�	
�r�r�D�E�U�+�+�+�,�	�"�"�t�t�u�-�-�-�.�	�2�2����-�-�-�.�	�I�I�IrrBc��eZdZ	eddddd���gZgd�Zded	�
��fded�
��fded�
��fded�
��fded�
��fgZdS)
�TestOptionalsShortLong�-vz	--verbosez-nz--noisyr�r�)z
--x --verbosez-Nr�z-v xrF)�verboseTNr�r-rrrGrG�s�������F�	��D�+�t�Y�|�D�D�D���4�3�3�H�	�R�R��
�
�
��	
�r�r�$���� �	�b�b��&�&�&�'�	
�r�r�$���� �	�B�B�t�$�$�$�%��I�I�IrrGc��eZdZ	ed��edd���gZdgZdedd�	��fd
edd�	��fded
d�	��fdedd�	��fgZdS)�TestOptionalsDestz	--foo-bar�--baz�zabbazrr�z--foo-bar frN)�foo_barrMz--baz g�gz--foo-bar h --baz i�hr�z--baz j --foo-bar k�k�jr�r-rrrKrKs�������4��3�{�+�+�S�S��x�-H�-H�-H�I���u�H�	���3�t�4�4�4�5�	�B�B�t�C�0�0�0�1�	���3�s� ;� ;� ;�<�	���3�s� ;� ;� ;�<�	�I�I�IrrKc��eZdZ	ed��edd���gZdgZdedd���fd	ed
d���fdedd���fgZdS)
�TestOptionalsDefaultr�r�r���defaultr�rN�r�rEz-xxr�z-yyrEr�r-rrrTrTs�������4��3�t�9�9�c�c�$��&;�&;�&;�<���u�H�	�R�R�$�"�
�
�
��	���S�B���� �	���T�S�!�!�!�"��I�I�IrrTc�h�eZdZ	ed��gZddgZded���fded���fgZdS)�TestOptionalsNargsDefaultr�r�rNr�r�r�r-rrrYrY'sU������A��3�t�9�9�+���T�{�H�	�R�R�$�Z�Z�Z��	���c������I�I�IrrYc�n�eZdZ	edd���gZddgZded���fdedg���fgZdS)	�TestOptionalsNargs1r����nargsr�rNr�r�r�r-rrr[r[2s_������0��3�t�1�-�-�-�.���T�{�H�	�R�R�$�Z�Z�Z��	���s�e������I�I�Irr[c�p�eZdZ	edd���gZgd�Zded���fdegd	����fgZdS)
�TestOptionalsNargs3r��r])r�r�r��-x a b�a -x�a -x brNr�z-x a b c�r��b�cr�r-rrr`r`=sf������1��3�t�1�-�-�-�.��>�>�>�H�	�R�R�$�Z�Z�Z��	�R�R�/�/�/�*�*�*�+��I�I�Irr`c��eZdZ	edd���eddd���eddd�	��ed
dedd�
��gZdgZdedddd���fdedddd���fdedddd���fdedddd���fdedddd���fdedddd���fdedddd���fd
edddd���fdedddd���fg	ZdS)�TestOptionalsNargsOptionalrC�?r]r�r�)r^r�r��spam�r^rVr��42�84)r^rjr�rV�2rN�T�rIr�rEr�z-w 2z-x 2z-y 2z-z 2��	rrr rV�intr�r�r]r�r-rrririHsp������:�	��D�������D��2�&�&�&���D��V�,�,�,���D��#�T�4�@�@�@�	���u�H�	�R�R�$�$�&�B�
/�
/�
/�0�	
�r�r�D�D�F�b�1�1�1�2�	���c�T�V�r�2�2�2�3�	
�r�r�D�B�&�B�/�/�/�0�	���d�c�V�r�2�2�2�3�	
�r�r�D�D�D�B�/�/�/�0�	���d�d�c�R�0�0�0�1�	
�r�r�D�D�F�b�1�1�1�2�	���d�d�f��2�2�2�3�
�I�I�Irric� �eZdZ	edd���eddd���gZdgZded	d�
��fdegd�
��fdedgd�
��fdedd
gd�
��fded	g�
��fded	dg�
��fded	dd
g�
��fgZd	S)�TestOptionalsNargsZeroOrMorer��*r]r�rkrlr�rNrWr�rbrf�-y a�-y a br�r-rrrvrv_s�������I�	��D�������D��V�,�,�,����u�H�	�R�R�$�&�
!�
!�
!�"�	
�r�r�B�&�!�!�!�"�	���s�e�v�&�&�&�'�	�2�2��c�
�f�-�-�-�.�	
�r�r�D�B���� �	���d�s�e�$�$�$�%�	�2�2���c�
�+�+�+�,��I�I�Irrvc
���eZdZ	edd���eddd���gZgd�Zded	d�
��fdedgd�
��fd
eddgd�
��fded	dg�
��fded	ddg�
��fgZd	S)�TestOptionalsNargsOneOrMorer��+r]r�rkrl)r�r�r�rcza -y brNrWr�r�rbrfrxryr�r-rrr{r{rs�������H�	��D�������D��V�,�,�,���3�2�2�H�	�R�R�$�&�
!�
!�
!�"�	���s�e�v�&�&�&�'�	�2�2��c�
�f�-�-�-�.�	���d�s�e�$�$�$�%�	�2�2���c�
�+�+�+�,��I�I�Irr{c
��eZdZ	edd���edeed�����gZgd�Zded	d	�
��fdedd	�
��fd
edd	�
��fded	d�
��fded	d�
��fdedd�
��fgZ	d	S)�TestOptionalsChoicesr��abc��choicesz-g��rjr�)r�z-f dz-fadz-gaz-g 6rN)rrOr�r�z-f crgz-g 0rz-g 03raz-fb -g4rf��
rrr rVrt�ranger�r�r]r�r-rrr~r~�s�������6�	��D�%� � � ���D�s�E�E�!�H�H�-�-�-�/��4�3�3�H�	�R�R�$�$�
�
�
� �	���c�T�"�"�"�#�	���c�T�"�"�"�#�	���d�a����!�	�"�"�t�q�/�/�/�"�	�B�B���N�N�N�#�
�I�I�Irr~c�n�eZdZ	eded���gZddgZded���fd	ed
���fgZdS)�TestOptionalsRequiredr�T�rj�requiredr�r�-x 1r\r�z-x42r�Nrsr-rrr�r��se������3�	��D�s�T�*�*�*����R�y�H�	���a�����	���b������I�I�Irr�c�l�eZdZ	edd���gZddgZded���fd	ed
���fgZdS)�TestOptionalsActionStorer��storer�r�rcrNr�z-xfoor�r�r-rrr�r��s]������0��3�t�G�4�4�4�5���V�}�H�	�R�R�$�Z�Z�Z��	�"�"�u�+�+�+���I�I�Irr�c�l�eZdZ	edde���gZdgZded���fdee���fgZdS)�TestOptionalsActionStoreConstr�r�r�r�rN�rE)	rrr rVr�r�r�r]r�r-rrr�r��s]������6��3�t�M��H�H�H�I���u�H�	�R�R�$�Z�Z�Z��	
�r�r�F�|�|�|���I�I�Irr�c�l�eZdZ	edd���gZgd�Zded���fded���fgZd	S)
�TestOptionalsActionStoreFalser��store_falser�)r�r�r�rT)r�FNr�r-rrr�r��s_������6��3�t�M�:�:�:�;��#�#�#�H�	�R�R�$�Z�Z�Z��	
�r�r�E�{�{�{���I�I�Irr�c�l�eZdZ	edd���gZgd�Zded���fded���fgZd	S)
�TestOptionalsActionStoreTruez--appler�r�)r�z	--apple=bz	--apple brF)�appleTNr�r-rrr�r��s_������5��3�y��>�>�>�?��.�.�.�H�	�R�R�e�_�_�_��	�B�B�T�N�N�N�#��I�I�Irr�c���eZdZ	edej���gZddgZded���fded���fd	ed
���fded
���fded���fgZ	d
�Z
dS)�TestBooleanOptionalActionr�r��	--foo bar�	--foo=barrNr�T�--no-fooFz--foo --no-fooz--no-foo --fooc�$�tj��}|�t��5}|�ddtj���ddd��n#1swxYwY|�dt|j����dS)Nr�T�r�r�z*got an unexpected keyword argument 'const')	�argparse�ArgumentParserr�r�r��BooleanOptionalAction�assertInr��	exception�rr��cms   r�
test_constz$TestBooleanOptionalAction.test_const�s����(�*�*��
�
�
�y�
)�
)�	\�R�����t�H�<Z��[�[�[�	\�	\�	\�	\�	\�	\�	\�	\�	\�	\�	\����	\�	\�	\�	\�	
�
�
�B�C���DU�DU�V�V�V�V�Vs�#A�A!�$A!)rrr rVr�r�r�r�r]r�r�r-rrr�r��s�������%��3�w�x�/M�N�N�N�O���[�)�H�	�R�R�D�\�\�\��	�"�"��,�,�,��	�R�R�E�]�]�]�#�	�2�2�%�=�=�=�)�	�2�2�$�<�<�<�(��I�W�W�W�W�Wrr�c�v�eZdZ	eddej���gZdgZded���fded���fgZ	dS)	�!TestBooleanOptionalActionRequiredr�T)r�r�rr�r�FN)
rrr rVr�r�r�r�r]r�r-rrr�r��sf������.�	��G�d�8�+I�J�J�J����t�H�	�"�"��,�,�,��	�R�R�E�]�]�]�#��I�I�Irr�c��eZdZ	edd���gZgd�Zded���fded	g���fd
ed	dg���fgZdS)�TestOptionalsActionAppendrL�appendr��r�rL�a --baz�	--baz a brN�r-�--baz ar��--baz a --baz brfr�r-rrr�r��sz������1��3�w�x�8�8�8�9��5�5�5�H�	�R�R�D�\�\�\��	�B�B�C�5�M�M�M�"�	�B�B�C��:�.�.�.�/��I�I�Irr�c��eZdZ	edddg���gZgd�Zdedg���fdedd	g���fd
egd����fgZdS)
�$TestOptionalsActionAppendWithDefaultrLr�r�r�rVr�rr�r�r�r�)rr�rfNr�r-rrr�r��s�������1��3�w�x�#��G�G�G�H��5�5�5�H�	�R�R�S�E�]�]�]��	�B�B�C��:�&�&�&�'�	�B�B�?�?�?�3�3�3�4��I�I�Irr�c�$�eZdZ	edd���edd���edd���edd���gZgd�Zd	ed
d
d
d
���fded
gd
d
d
���fded
d
gd
d
���fded
d
d
d
���fded
d
d
d
���fgZd
S)�!TestConstActionsMissingConstKwargr��append_constr�r��-br�r)z-f vr�r�rN)rr�rfr,r�r-rrr�r�s������G�	��D��(�(�(���G�N�+�+�+���D��'�'�'���G�M�*�*�*�	��2�1�1�H�	�R�R�$�D�D�d�
3�
3�
3�4�	
�r�r�T�F���$�7�7�7�8�	�"�"�t�$��4�T�:�:�:�;�	
�r�r�D�d�d��5�5�5�6�	�"�"�t���4�8�8�8�9��I�I�Irr�c	��eZdZ	edde���eddd���gZgd�Zd	ed
���fdeeg���fdeed
edg���fgZd
S)�TestOptionalsActionAppendConstr�r�r��-cr�rf�r�r�r�r�za -cz-bxz-b xrN�rf�-b -cx -b -cyzr��yz�	rrr rVrvr�r�r]r�r-rrr�r�s�������7�	��D��y�9�9�9���D���,�,�,���2�1�1�H�	�R�R�$�Z�Z�Z��	
�r�r�Y�K� � � �!�	�2�2��C��D� A�B�B�B�C��I�I�Irr�c
��eZdZ	eddedg���eddd���gZgd	�Zd
edg���fdedeg���fdeded
edg���fgZdS)�)TestOptionalsActionAppendConstWithDefaultr�r�r)r�r�rVr�r�rfr�r�rr�r�r�r�Nr�r-rrr�r�'s�������7�	��D��y�3�%�H�H�H���D���,�,�,���2�1�1�H�	�R�R�3�%�[�[�[��	
�r�r�S�)�$�%�%�%�&�	�2�2��i��i�� F�G�G�G�H��I�I�Irr�c�l�eZdZ	edd���gZgd�Zded���fded���fgZdS)	�TestOptionalsActionCountr��countr�)r�r�z-x bz	-x a -x brNr�r\r�r-rrr�r�6s^������0��3�t�G�4�4�4�5��1�1�1�H�	�R�R�$�Z�Z�Z��	
�r�r�A�w�w�w���I�I�Irr�c	���eZdZ	ed��ed��edd���gZddgZded	d	d
���fded
d	d
���fded	dd
���fdedd	d���fgZd	S)�"TestOptionalsAllowLongAbbreviationr�z--foobazz--foobler�r�z--foob 5z--foobrNF)r��foobaz�fooblez--foo 7�7z	--fooba ar�z--foobl --foo grOTr�r-rrr�r�As�������<�	��G�����J�����J�|�,�,�,���
�H�%�H�	�R�R�D��e�
4�
4�
4�5�	�B�B�3�t�E�:�:�:�;�	�b�b�T�#�e�<�<�<�=�	�B�B�3�t�D�A�A�A�B�	�I�I�Irr�c���eZdZ	ed���Zed��edd���ed��gZgd�Zd	ed
dd
���fded
dd
���fdeddd���fgZd
S)�%TestOptionalsDisallowLongAbbreviationF��allow_abbrevr�z--foodler�r�z--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rN�r��foodle�foonlyz--foo 3�3z--foonly 7 --foodle --foo 2roTr�r>r-rrr�r�Rs�������;��s��.�.�.����G�����J�|�,�,�,���J�����
C�B�B�H�	�R�R�D��t�
4�
4�
4�5�	�B�B�3�u�T�:�:�:�;�	&���s�4��(L�(L�(L�M��I�I�Irr�c���eZdZ	edd���Zed��edd���ed��gZgd	�Zd
eddd���fd
eddd���fdeddd���fgZdS)�0TestOptionalsDisallowLongAbbreviationPrefixCharsr|F�r2r�z++fooz++foodler�r�z++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNr�z++foo 3r�z++foonly 7 ++foodle ++foo 2roTr�r>r-rrr�r�cs�������L��s��%�@�@�@����G�����J�|�,�,�,���J�����
C�B�B�H�	�R�R�D��t�
4�
4�
4�5�	�B�B�3�u�T�:�:�:�;�	&���s�4��(L�(L�(L�M��I�I�Irr�c
��eZdZ	ed���Zed��edd���gZddgZded	d	�
��fdedd	�
��fd
edd	�
��fded	d�
��fdedd�
��fdedd�
��fgZd	S)�/TestDisallowLongAbbreviationAllowsShortGroupingFr�z-rr�r�r�z-c -rrN��rrgz-rar�z-rcc�ccz-ccrrz-cc -raz-ccrccr>r-rrr�r�ts�������;��s��.�.�.����D�	�	���D��!�!�!����g��H�	�R�R�$�$�
�
�
� �	���S�D�!�!�!�"�	���d�d�#�#�#�$�	���T�Q���� �	�B�B���N�N�N�#�	�2�2���?�?�?�#�
�I�I�Irr�c
��eZdZ	edd���Zed��edd���gZddgZd	ed
d
���fded
d
���fdedd
���fded
d���fded
d���fdedd���fgZd
S)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr|Fr�z+rz+cr�r�z+c +rrNr�z+rar�z+rccr�z+ccrrz+cc +raz+ccrccr>r-rrr�r��s�������O��s��%�@�@�@����D�	�	���D��!�!�!����g��H�	�R�R�$�$�
�
�
� �	���S�D�!�!�!�"�	���d�d�#�#�#�$�	���T�Q���� �	�B�B���N�N�N�#�	�2�2���?�?�?�#�
�I�I�Irr�c�N�eZdZ	ed��gZgd�Zded���fgZdS)�TestPositionalsNargsNoner��rr��a br�r�Nr�r-rrr�r��sE������6��3�u�:�:�,�� � � �H�	�b�b�S�k�k�k���I�I�Irr�c�T�eZdZ	edd���gZgd�Zdedg���fgZdS)�TestPositionalsNargs1r�r\r]r�r�r�Nr�r-rrr�r��sO������8��3�u�A�.�.�.�/�� � � �H�	�b�b�c�U�m�m�m���I�I�Irr�c�V�eZdZ	edd���gZgd�Zdeddg���fgZd	S)
�TestPositionalsNargs2r�rrr])rr�r��a b cr�r�rfr�Nr�r-rrr�r��sT������8��3�u�A�.�.�.�/��'�'�'�H�	����S�z�"�"�"�#��I�I�Irr�c��eZdZ	edd���gZdgZdeg���fdedg���fdedd	g���fgZd
S)�TestPositionalsNargsZeroOrMorer�rwr]r�rr�r�r�rfNr�r-rrr�r��sv������:��3�u�C�0�0�0�1���v�H�	�R�R�B�Z�Z�Z��	�b�b�c�U�m�m�m��	����S�z�"�"�"�#��I�I�Irr�c��eZdZ	eddd���gZdgZded���fdedg���fd	edd
g���fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultr�rwr,rlr�rr�r�r�rfNr�r-rrr�r��sx������H��3�u�C��?�?�?�@���v�H�	�R�R�E�]�]�]��	�b�b�c�U�m�m�m��	����S�z�"�"�"�#��I�I�Irr�c�r�eZdZ	edd���gZddgZdedg���fdedd	g���fgZd
S)�TestPositionalsNargsOneOrMorer�r|r]rr�r�r�r�rfNr�r-rrr�r��sf������<��3�u�C�0�0�0�1���D�z�H�	�b�b�c�U�m�m�m��	����S�z�"�"�"�#��I�I�Irr�c�l�eZdZ	edd���gZddgZded���fd	ed	���fgZdS)
�TestPositionalsNargsOptionalr�rjr]r�r�rNr�r�r�r-rrr�r��s]������&��3�u�C�0�0�0�1���e�}�H�	�R�R�D�\�\�\��	�b�b�S�k�k�k���I�I�Irr�c�n�eZdZ	eddd���gZddgZded���fd	ed	���fgZd
S)�#TestPositionalsNargsOptionalDefaultr�rjr�rlr�r�rr�r�Nr�r-rrr�r��s_������;��3�u�C��<�<�<�=���e�}�H�	�R�R�B�Z�Z�Z��	�b�b�S�k�k�k���I�I�Irr�c�p�eZdZ	edded���gZgd�Zded���fd	ed
���fgZdS)�,TestPositionalsNargsOptionalConvertedDefaultr�rjrm)r^rjrV)r�r��1 2rr�r��1r\Nrsr-rrr�r��sk�������
	��E��3��5�5�5���$�#�#�H�	�R�R�B�Z�Z�Z��	�b�b�Q�i�i�i���I�I�Irr�c�d�eZdZ	ed��ed��gZgd�Zdedd���fgZdS)	�TestPositionalsNargsNoneNoner�r,)rr�r�r�r�r�rf�r�r,Nr�r-rrr�r�sU������7��3�u�:�:�s�s�5�z�z�2��'�'�'�H�	���s��$�$�$�%��I�I�Irr�c�j�eZdZ	ed��edd���gZgd�Zdeddg�	��fgZd
S)�TestPositionalsNargsNone1r�r,r\r])rr�r�r�r�r�rfr�Nr�r-rrr�r�s^������@��3�u�:�:�s�s�5��':�':�':�;��*�*�*�H�	���s���&�&�&�'��I�I�Irr�c�l�eZdZ	edd���ed��gZgd�Zdeddgd	�
��fgZdS)�TestPositionalsNargs2Noner�rrr]r,�rr�r�r��a b c dr�r�rfrgr�Nr�r-rrr�r�s`������B��3�u�A�.�.�.���E�
�
�;��3�3�3�H�	�"�"�#�s���-�-�-�.��I�I�Irr�c��eZdZ	ed��edd���gZddgZdedg���fd	edd
g���fdedd
dg���fgZd
S)�"TestPositionalsNargsNoneZeroOrMorer�r,rwr]rr�r�r�r�rfr�rgNr�r-rrr�r�"s�������H��3�u�:�:�s�s�5��'<�'<�'<�=���G�}�H�	�b�b�S�b�!�!�!�"�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.��I�I�Irr�c��eZdZ	ed��edd���gZgd�Zdeddg�	��fd
edddg�	��fgZdS)
�!TestPositionalsNargsNoneOneOrMorer�r,r|r]�rr�r�r�r�rfr�r�rgNr�r-rrrr.sy������J��3�u�:�:�s�s�5��'<�'<�'<�=��!�!�!�H�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.��I�I�Irrc��eZdZ	ed��edd���gZgd�Zdedd���fd	edd
���fgZdS)� TestPositionalsNargsNoneOptionalr�r,rjr]�rr�r�r�Nr�r�rfr�r-rrrr9ss������J��3�u�:�:�s�s�5��'<�'<�'<�=��%�%�%�H�	�b�b�S�d�#�#�#�$�	���s��$�$�$�%��I�I�Irrc��eZdZ	edd���ed��gZddgZdegd���fd	edgd
���fdedd
gd���fgZd
S)�"TestPositionalsNargsZeroOrMoreNoner�rwr]r,rr�r�r�r�rfr�rgNr�r-rrrrDs�������J��3�u�C�0�0�0�#�#�e�*�*�=���G�}�H�	�b�b�R�S�!�!�!�"�	����u�#�&�&�&�'�	�"�"�#�s���-�-�-�.��I�I�Irrc��eZdZ	edd���ed��gZgd�Zdedgd�	��fd
eddgd�	��fgZdS)
�!TestPositionalsNargsOneOrMoreNoner�r|r]r,rr�r�rfr�r�rgNr�r-rrr	r	Psy������L��3�u�C�0�0�0�#�#�e�*�*�=��!�!�!�H�	����u�#�&�&�&�'�	�"�"�#�s���-�-�-�.��I�I�Irr	c��eZdZ	eddd���ed��gZgd�Zdedd���fd	edd
���fgZdS)� TestPositionalsNargsOptionalNoner�rjr�rlr,rr�r�r�rfNr�r-rrrr[su������L��3�u�C��<�<�<�c�c�%�j�j�I��%�%�%�H�	�b�b�R�S�!�!�!�"�	���s��$�$�$�%��I�I�Irrc��eZdZ	edd���edd���gZgd�Zdedd	gg�
��fdedd	gdg�
��fgZd
S)�TestPositionalsNargs2ZeroOrMorer�rrr]r,rwrr�r�rfr�r�rgNr�r-rrr
r
fs�������G��3�u�A�.�.�.���E��0E�0E�0E�F��!�!�!�H�	����S�z�r�*�*�*�+�	�"�"�#�s��#��/�/�/�0��I�I�Irr
c�r�eZdZ	edd���edd���gZgd�Zdedd	gd
g���fgZdS)
�TestPositionalsNargs2OneOrMorer�rrr]r,r|)rr�r�r�r�r�rfrgr�Nr�r-rrrrqsi������I��3�u�A�.�.�.���E��0E�0E�0E�F��(�(�(�H�	�"�"�#�s��#��/�/�/�0��I�I�Irrc��eZdZ	edd���edd���gZgd�Zdedd	gd
���fdedd	gd
���fgZd
S)�TestPositionalsNargs2Optionalr�rrr]r,rj)rr�r�r�r�r�rfNr�r�rgr�r-rrrr{s�������A��3�u�A�.�.�.���E��0E�0E�0E�F��,�,�,�H�	����S�z�t�,�,�,�-�	�"�"�#�s���-�-�-�.��I�I�Irrc��eZdZ	edd���edd���gZddgZdegdg�	��fd
edgdg�	��fdeddgd
g�	��fgZdS)�TestPositionalsNargsZeroOrMore1r�rwr]r,r\rr�r�r�r�rfr�rgNr�r-rrrr�s�������G��3�u�C�0�0�0�#�#�e�1�2E�2E�2E�F���G��H�	�b�b�R�c�U�#�#�#�$�	����u�3�%�(�(�(�)�	�"�"�#�s��#��/�/�/�0��I�I�Irrc��eZdZ	edd���edd���gZgd�Zdedgd	g�
��fdedd	gdg�
��fgZd
S)�TestPositionalsNargsOneOrMore1r�r|r]r,r\rr�r�rfr�r�rgNr�r-rrrr�s�������I��3�u�C�0�0�0�#�#�e�1�2E�2E�2E�F��!�!�!�H�	����u�3�%�(�(�(�)�	�"�"�#�s��#��/�/�/�0��I�I�Irrc��eZdZ	edd���edd���gZgd�Zdeddg�	��fd
eddg�	��fgZdS)�TestPositionalsNargsOptional1r�rjr]r,r\rr�Nr�r�rfr�r-rrrr�s~������I��3�u�C�0�0�0�#�#�e�1�2E�2E�2E�F��%�%�%�H�	�b�b�T��u�%�%�%�&�	���s���&�&�&�'��I�I�Irrc��eZdZ	ed��edd���edd���gZgd�Zded	gd
g���fded	d
gd
g���fgZdS)�#TestPositionalsNargsNoneZeroOrMore1r�r,rwr]r-r\rr�r�rf�r�r,r-r�rgNr�r-rrrr�s�������G�	��E�
�
���E�������E�������
"�!�!�H�	���s����.�.�.�/�	�"�"��3�%�c�U�3�3�3�4��I�I�Irrc��eZdZ	ed��edd���edd���gZgd�Zded	d
gdg���fd
ed	d
dgdg���fgZdS)�"TestPositionalsNargsNoneOneOrMore1r�r,r|r]r-r\)rr�r�rfr�r�rfrgrr��dNr�r-rrrr�s�������I�	��E�
�
���E�������E�������
'�&�&�H�	�"�"��3�%�c�U�3�3�3�4�	�B�B�3�S�#�J�S�E�:�:�:�;��I�I�Irrc��eZdZ	ed��eddd���edd���gZgd	�Zd
edddg�
��fdedddg�
��fgZdS)�!TestPositionalsNargsNoneOptional1r�r,rj��?rlr-r\r]rr�r�rfrr�rgNr�r-rrrr�s�������E�	��E�
�
���E��e�,�,�,���E�������
"�!�!�H�	���s��C�5�1�1�1�2�	�"�"��#�C�5�1�1�1�2��I�I�Irrc��eZdZ	edd���eddd���gZddgZd	ed
d���fdedd���fd
edd���fgZd
S)�$TestPositionalsNargsOptionalOptionalr�rjr]r,r�rlr�r�rNr�r�r�rfr�r-rrr"r"�s�������!�	��E�������E��b�)�)�)�����!�H�	�R�R�D�b�
!�
!�
!�"�	�b�b�S�b�!�!�!�"�	���s��$�$�$�%��I�I�Irr"c	���eZdZ	edd���edd���gZdgZdedg�	��fd
ed
g�	��fded
dg�	��fd
ed
ddg�	��fgZdS)�&TestPositionalsNargsOptionalZeroOrMorer�rjr]r,rwr�rNr�r�r�rfr�rgr�r-rrr$r$�s�������;��3�u�C�0�0�0�#�#�e�3�2G�2G�2G�H���y�H�	�R�R�D�b�
!�
!�
!�"�	�b�b�S�b�!�!�!�"�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.�	�I�I�Irr$c��eZdZ	edd���edd���gZddgZded	dg�
��fdeddg�
��fd
edddg�
��fgZd	S)�%TestPositionalsNargsOptionalOneOrMorer�rjr]r,r|rr�r�Nr�r�rfr�rgr�r-rrr&r&�s�������=��3�u�C�0�0�0�#�#�e�3�2G�2G�2G�H���G�}�H�	�b�b�T��u�%�%�%�&�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.��I�I�Irr&c�~�eZdZ	eded�����gZgd�Zded���fded���fgZdS)	�TestPositionalsChoicesStringrk�abcdefgr��rr�rPrm�efr��rkrON)	rrr rV�setr�r�r]r�r-rrr(r(�sg������0��3�v�s�s�9�~�~�>�>�>�?��-�-�-�H�	�b�b�c�l�l�l��	�b�b�c�l�l�l���I�I�Irr(c��eZdZ	edeed�����gZgd�Zded���fded	���fgZ	d
S)�TestPositionalsChoicesIntrk�r�r*�4r�r,�15�Nr�r-rrr/r/si������'��3�v�C���r���C�C�C�D��-�-�-�H�	�b�b�a�j�j�j��	
�r�r�r�{�{�{���I�I�Irr/c�t�eZdZ	edd���eddd���gZgd�Zdedd	d
gg���fgZdS)
�TestPositionalsActionAppendrkr�r�rr)r�r^r�r�r�rfrgr,Nr�r-rrr5r5ss������"�	��F�8�$�$�$���F�8�1�-�-�-���4�3�3�H�	�"�"�3��c�
�+�,�,�,�-��I�I�Irr5c���eZdZ	edd���eddd���gZdd	gZd
edd�
��fdedd�
��fdedd�
��fdedd�
��fgZdS)�"TestOptionalsNumericAndPositionalsr�rjr]z-4rEr��rr�rz-315rNFrWr�Tz-4 ar�r-rrr7r7#s�������E�	��C�s������D�s�<�0�0�0����f�~�H�	�R�R�$�%�
 �
 �
 �!�	�b�b�3�%� � � �!�	
�r�r�D�D�!�!�!�"�	���c�T�"�"�"�#�	�I�I�Irr7c	���eZdZ	edd���eddd���gZdgZd	ed
d���fd
ed
d���fdedd���fded
d���fdedd���fgZd
S)�(TestOptionalsAlmostNumericAndPositionalsr�rjr]z-k4rEr�r8z-k3rNFrWrr�Tz-k4 ar�r-rrr:r:3s�������L�	��C�s������E��L�1�1�1����w�H�	�R�R�$�%�
 �
 �
 �!�	
�r�r�D�E�"�"�"�#�	�b�b�3�%� � � �!�	���T�T�"�"�"�#�	�"�"�s�d�#�#�#�$��I�I�Irr:c�D�eZdZedd���eddd���gZdgZdgedd	�
��fdgedd	�
��fdgedd	�
��fddged	d�
��fddged	d�
��fddged	d�
��fd
ged	d�
��fdged	d�
��fgZd	S)�$TestEmptyAndSpaceContainingArgumentsr�rjr]r�z--yyyrErrNrWza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�r-rrr<r<Ds ������	��C�s������D�'��$�$�$����v�H�
��r�r�B�$���� �
��r�r�J�$�/�/�/�0�
����[�D�1�1�1�2�
���R�R�$�"�%�%�%�&�
�
�	�R�R�$�*�5�5�5�6�
��	�b�b�4�;�7�7�7�8�
�	�R�R�$�*�5�5�5�6�
�	�b�b�4�;�7�7�7�8�	�I�I�Irr<c�<�eZdZed���Zedddd���edd	ed
���edd
d���gZddgZdedd
d���fdedd
d���fdedd
d���fdeddd���fdedd
d���fdedd
d���fgZ	dS)� TestPrefixCharacterOnlyArgumentsz-+�r2�-r�rjr)rr^r�r|rEr�)rrjrVz-+-r�r�r8r�z+ -rNFrDz- Xrz+ -3���Tz- ===z===)
rrr rVr�rtr�r�r]r�r-rrr>r>Ws�������s��-�-�-����C�c��H�5�5�5���C�c��R�0�0�0���E��L�1�1�1���
�e�}�H�	�R�R�$�"��
&�
&�
&�'�	�b�b�8�r�U�+�+�+�,�	���S�B�%�(�(�(�)�	���d�b�E�*�*�*�+�	���T�R�4�(�(�(�)�	�"�"�u��e�,�,�,�-�
�I�I�Irr>c��eZdZ	edd���edd���gZgZdedg���fdegg���fded	gg���fd
ed	gdg���fd	edd	g���fdegd	g���fd
edgd	g���fgZdS)�TestNargsZeroOrMorer�rwr]rErNrWr�r�z	-x a -- brfrcrdr�r-rrrCrCjs�������I��3�t�3�/�/�/���S��1D�1D�1D�E���H�	�R�R�$�"�
�
�
��	
�r�r�B�"�~�~�~��	���s�e�r�"�"�"�#�	�b�b�C�5�S�E�*�*�*�+�	�b�b�4�C�5�!�!�!�"�	���b�S�E�"�"�"�#�	�2�2���#��'�'�'�(��I�I�IrrCc	���eZdZ	ed��edd���ed��gZgd�Zdedgd�	��fd
edgd�	��fdedgd
�d�	��fdedddgd�	��fgZdS)�TestNargsRemainderr�rE�...r]r�)rr�z-z ZrNrDz-z Z X�Z�
X A B -z Z)�Ar*r�rGz	X Y --foo�Yr�r�r-rrrErEzs�������<��3�s�8�8�S�S��E�%:�%:�%:�C�C��I�I�F��!�!�!�H�	�b�b�3�"��%�%�%�&�	�2�2��r�S�)�)�)�*�	�r�r�C�#8�#8�#8�D�A�A�A�B�	�b�b�3�3��.�D�9�9�9�:�	�I�I�IrrEc��eZdZ	ede���eded���edd���gZgd	�Zd
eddg���fd
eddg���fdedddg���fdeddg���fdeddg���fdeddg���fdedddg���fdedddg���fdedddg���fdedddg���fdedddg���fgZdS)�TestOptionLiker��rjz-3rE)rjrr�rwr])
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 arNrDz-x 2.5�@z-x 2.5 ar�z-3.5��?z-3-.5g�z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 a)	rrr rV�floatr�r�r]r�r-rrrLrL�s�������8�	��D�u������D�u�3�'�'�'���C�s������
0�0�0�H�

�R�R�$�$�"�
%�
%�
%�&�	�2�2��t�r�*�*�*�+�	�R�R�#��#��/�/�/�0�	���d�c�R�(�(�(�)�	�"�"�t�t�r�*�*�*�+�	�"�"�t�s�b�)�)�)�*�	�2�2����u�-�-�-�.�	�b�b�4�4�C�5�)�)�)�*�	�2�2��t��u�-�-�-�.�	�2�2��t��u�-�-�-�.�	�2�2����u�-�-�-�.��I�I�IrrLc�.�eZdZ	eddej���eddej���eddej���gZd	gZd
e��fded���fd
eddg���fded���fdedd���fdeddgd���fgZ	dS)�TestDefaultSuppressr�rjrlr,rwrLr�r�r�rr�r�r�rfr�Tr�r��r�r-r�rN)
rrr rVr��SUPPRESSr�r�r]r�r-rrrRrR�s�������/�	��E��h�&7�8�8�8���E��h�&7�8�8�8���G�L�(�2C�D�D�D���
�v�H�	�R�R�T�T�
�	�b�b�S�k�k�k��	���s���&�&�&�'�	�"�"��,�,�,��	�B�B�3�D�)�)�)�*�	�b�b�S�s�e��6�6�6�7�
�I�I�IrrRc�,�eZdZ	eej���Zedd���edd���edd�	��gZd
gZde	��fde	d�
��fde	ddg���fde	d���fde	dd���fde	ddgd���fgZ
dS)�TestParserDefaultSuppress��argument_defaultr�rjr]r,rwrLr�r�r�rr�r�r�rfr�Tr�r�rSr�rN)rrr rVr�rTr�r�r�r]r�r-rrrVrV�s�������>��s�H�,=�>�>�>����E�������E�������G�L�)�)�)���
�v�H�	�R�R�T�T�
�	�b�b�S�k�k�k��	���s���&�&�&�'�	�"�"��,�,�,��	�B�B�3�D�)�)�)�*�	�b�b�S�s�e��6�6�6�7�
�I�I�IrrVc�\�eZdZ	ed���Zeddd���edd�	��ed
d�	��edd
���gZdgZdedddd���fdedddd���fdeddgdd���fdedddd���fdedddd���fdeddgdd���fgZdS)�TestParserDefault42r�rW�	--version�version�1.0�r�r\r�rjr]r,rwrLr�r�r�r)r�r,r-r\r�r�rfTr�r�Nr>r-rrrZrZ�s,������8��s�B�/�/�/����K�	�5�9�9�9���E�������E�������G�L�)�)�)�	���v�H�	�R�R�B�B�B��
3�
3�
3�4�	�b�b�S�b�b�"�5�5�5�6�	���s���2�r�:�:�:�;�	�"�"����r�:�:�:�;�	�B�B�3�B�D�"�=�=�=�>�	�b�b�S�s�e��r�B�B�B�C�
�I�I�IrrZc�r��eZdZ	�fd�Zed���Zed��ed��edd���gZgd	�Zd
eddd
g���fdeddd
dg���fdedddg���fdedddg���fdeddd
dg���fdeddddg���fgd�eddd
g���fgZ	�xZ
S)�TestArgumentsFromFilec����tt|�����gd�}|D]D\}}t|dd���5}|�|��ddd��n#1swxYwY�EdS)N)��helloz
hello world!
)�	recursivez-a
A
@hello)�invalidz@no-such-path
rIr
rJ)r
r`r,rLrM�r�
file_textsr=�textrPrs     �rr,zTestArgumentsFromFile.setUp�s����
�#�T�*�*�0�0�2�2�2�
�
�
�
�%�	!�	!�J�D�$��d�C�'�2�2�2�
!�d��
�
�4� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!��	!�	!s�A(�(A,	�/A,	�@��fromfile_prefix_chars�-ar�rEr|r])rr�rz@invalidz@missingzX YNrrJ)r�r�rEz
X -a A Y ZrIrG�@hello Xzhello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a Br*)rlrrrJr)rrr r,rVr�r�r�r]r�r!r"s@rr`r`�sS�������,�!�!�!�!�!��s��5�5�5����D�	�	���C�����C�s������
7�6�6�H�	���T�S�S�E�*�*�*�+�	�r�r�C�3�3��*�5�5�5�6�	�R�R�$�.�S�E�:�:�:�;�	�R�R�$�#�.�)9�:�:�:�;�	���S�N�s�C�j� I� I� I�J�	���S�C�N�C�3H� I� I� I�J�	�	�	�r�r�B�#�#��7�7�7�8��I�I�I�I�Irr`c���eZdZ	�fd�ZGd�de��ZeZed���Zedd���gZ	gZ
d	egd
����fgZ�xZ
S)�TestArgumentsFromFileConverterc����tt|�����dg}|D]D\}}t|dd���5}|�|��ddd��n#1swxYwY�EdS)NrbrIr
rJ)r
ror,rLrMrfs     �rr,z$TestArgumentsFromFileConverter.setUps����
�,�d�3�3�9�9�;�;�;�'�
�
�%�	!�	!�J�D�$��d�C�'�2�2�2�
!�d��
�
�4� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!��	!�	!s�A'�'A+	�.A+	c��eZdZd�ZdS)�>TestArgumentsFromFileConverter.FromFileConverterArgumentParserc#�jK�|���D]}|���s�|V��dSr1)r��strip)r�arg_line�args   r�convert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argssG�����~�~�'�'�
�
���y�y�{�{����	�	�	�	�
�
rN)rrr rwr-rr�FromFileConverterArgumentParserrrs#������	�	�	�	�	rrxrirjrEr|r]rm)rczworld!rr�)rrr r,r�rxr�rVr�r�r�r]r�r!r"s@rroros��������,�!�!�!�!�!������*D����3�L��s��5�5�5����C�s�������H�	�R�R�2�2�2�3�3�3�4��I�I�I�I�Irroc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestFileTypeReprc�t�tjd��}|�dt|����dS)Nr�z
FileType('r')�r��FileTyper��repr�rrjs  r�test_rzTestFileTypeRepr.test_r$s4��� ��%�%������$�t�*�*�5�5�5�5�5rc�v�tjdd��}|�dt|����dS)N�wbr\zFileType('wb', 1)r|rs  r�	test_wb_1zTestFileTypeRepr.test_wb_1(s7��� ��q�)�)�����,�d�4�j�j�9�9�9�9�9rc�x�tjdd���}|�dt|����dS)Nr��latin_1rJz!FileType('r', encoding='latin_1')r|rs  r�test_r_latinzTestFileTypeRepr.test_r_latin,s:��� ��y�9�9�9�����<�d�4�j�j�I�I�I�I�Irc�z�tjddd���}|�dt|����dS)NrI�big5�ignore)rK�errorsz/FileType('w', encoding='big5', errors='ignore')r|rs  r�test_w_big5_ignorez#TestFileTypeRepr.test_w_big5_ignore0sG��� ��v�h�G�G�G�����J��d���	%�	%�	%�	%�	%rc�z�tjddd���}|�dt|����dS)Nr�r\�replace�r�z"FileType('r', 1, errors='replace')r|rs  r�test_r_1_replacez!TestFileTypeRepr.test_r_1_replace5s<��� ��a�	�:�:�:�����=�t�D�z�z�J�J�J�J�JrN)rrr r�r�r�r�r�r-rrrzrz"sg������6�6�6�:�:�:�J�J�J�%�%�%�
K�K�K�K�Krrzc��eZdZd�Zd�ZdS)�StdStreamComparerc��tj|��|_|dkrt|_dS|dkrt
|_dSt
��|_dS)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterr�r��
backupattrr�r�)rr�s  rrzStdStreamComparer.__init__?sQ�� �*�4�0�0����?�"�"�1�D�O�O�O�
�_�
$�
$�1�D�O�O�O�$�h�h�D�O�O�Orc�v�	||�t��kS#t$r||jkcYSwxYwr1)r�r~�AttributeErrorr�rps  rrrzStdStreamComparer.__eq__MsL��	,��D�L�L��-�-�-�-���	,�	,�	,��D�O�+�+�+�+�	,���s� �8�8N�rrr rrrr-rrr�r�>s2������'�'�'�,�,�,�,�,rr��stdinrxryzstdin.bufferr�r�c��eZdZiZd�Zd�ZdS)�RFilec��||_dSr1�rF�rrFs  rrzRFile.__init___�
����	�	�	rc��||jvr|j|}n2|���x}|j|<|���t|t��s|�d��}|j|jcxko|kncS)N�ascii)�seen�read�closer}r�rrF�rrqrhs   rrrzRFile.__eq__bs����D�I����9�U�#�D�D�&+�j�j�l�l�2�D�4�9�U�#��K�K�M�M�M��$��$�$�	(��;�;�w�'�'�D��y�E�J�.�.�.�.�$�.�.�.�.�.rN)rrr r�rrrr-rrr�r�\s7������
�D����/�/�/�/�/rr�c���eZdZ	�fd�Zedej�����edejd�����gZgd�Zde	de
d���	��fd
e	e
d��e
d���	��fde	e
d��e
d���	��fd
e	ee�	��fde	de
d���	��fgZ�xZ
S)�
TestFileTypeRc�N��tt|�����dD]d}ttj�|j|��dd���5}|�|��ddd��n#1swxYwY�e|�	d��dS)Nr�rIr
rJ�readonly)
r
r�r,rLr5r=r>r4rMrT�r�	file_namerPrs   �rr,zTestFileTypeR.setUpps����
�m�T�"�"�(�(�*�*�*�'�	&�	&�I��b�g�l�l�4�=�)�<�<��G�-�-�-�
&�04��
�
�9�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	
�!�!�*�-�-�-�-�-��"B�B	�B	r�rMrkr�)r�rznon-existent-file.txtr�N�r�rk�
-x foo barr,�
bar -x foo�-x - -r�)rrr r,rVr�r}r�r�r]r��eq_stdinr�r!r"s@rr�r�ms0�������B�.�.�.�.�.�	��D�(�x�(�*�*�+�+�+���F�*��*�3�/�/�0�0�0���3�2�2�H�	���T���e���-�-�-�.�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2��x�0�0�0�1�	�R�R�$�U�U�:�%6�%6�7�7�7�8��I�I�I�I�Irr�c���eZdZ	�fd�Zedejd��d���gZdgZde	e
d���	��fgZ�xZS)
�TestFileTypeDefaultsc���tt|�����ttj�|jd��dd���}|�d��|�	��dS)N�goodrIr
rJ)
r
r�r,rLr5r=r>r4rMr�)rrPrs  �rr,zTestFileTypeDefaults.setUp�si���
�"�D�)�)�/�/�1�1�1��B�G�L�L����7�7��w�O�O�O���
�
�6�����
�
�����rr�r�zno-file.txt�rjrVrz-c goodr�)rg)
rrr r,rVr�r}r�r�r]r�r�r!r"s@rr�r��s��������F������	��D�(�x�(��-�-�}�E�E�E����t�H��R�R�%�%��-�-�0�0�0�1�2�I�I�I�I�Irr�c	�b��eZdZ	�fd�Zedejd�����edejd�����gZddgZde	de
d���	��fd
e	e
d��e
d���	��fde	e
d��e
d���	��fd
e	ee�	��fgZ�xZ
S)�TestFileTypeRBc�$��tt|�����dD]d}ttj�|j|��dd���5}|�|��ddd��n#1swxYwY�edS)Nr�rIr
rJ)	r
r�r,rLr5r=r>r4rMr�s   �rr,zTestFileTypeRB.setUp�s����
�n�d�#�#�)�)�+�+�+�'�	&�	&�I��b�g�l�l�4�=�)�<�<��G�-�-�-�
&�04��
�
�9�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	&�	&r�r��rbrMrkrr�Nr�r�r,r�r�)rrr r,rVr�r}r�r�r]r��	eq_bstdinr�r!r"s@rr�r��s�������B�&�&�&�&�&�	��D�(�x�(��.�.�/�/�/���F�*��*�4�0�0�1�1�1����b�z�H�	���T���e���-�-�-�.�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�	�	�2�2�2�3�	�I�I�I�I�Irr�c�.�eZdZe��Zd�Zd�ZdS)�WFilec��||_dSr1r�r�s  rrzWFile.__init__�r�rc��||jvrcd}d|jvr|�d��}|�|��|���|j�|��|j|jkS)NzCheck that file is writable.rfr�)r��moderrMr��addrFr�s   rrrzWFile.__eq__�st����	�!�!�1�D��e�j� � ��{�{�7�+�+���K�K������K�K�M�M�M��I�M�M�%� � � ��y�E�J�&�&rN)rrr r-r�rrrr-rrr�r��s=�������3�5�5�D����'�'�'�'�'rr�c
���eZdZ	�fd�Zedejd�����edejd�����gZgd�Zde	de
d���	��fd
e	de
d
���	��fde	e
d��e
d���	��fd
e	e
d��e
d���	��fde	ee�	��fgZ�xZ
S)�
TestFileTypeWc���t�����|�d��|�d��dS�Nr��writable�r
r,rTrQ�rrs �rr,zTestFileTypeW.setUp��B���
���
�
�����!�!�*�-�-�-��!�!�*�-�-�-�-�-rr�rIrMrk)r�rr�r�Nr�r�r�r,r�r��rrr r,rVr�r}r�r�r]r��	eq_stdoutr�r!r"s@rr�r��s2�������B�.�.�.�.�.�	��D�(�x�(��-�-�.�.�.���F�*��*�3�/�/�0�0�0���&�%�%�H�	���T���e���-�-�-�.�	�R�R�$�U�U�:�%6�%6�7�7�7�8�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�	�	�2�2�2�3��I�I�I�I�Irr�c����eZdZ	�fd�Zedejd�����edejd�����gZgd�Zde	e
d��e
d	���
��fde	ee�
��fgZ�xZ
S)�
TestFileTypeXc���t�����|�d��|�d��dSr�r�r�s �rr,zTestFileTypeX.setUp�r�rr�r�rMrk)r�rr�r�r�r�r,r�r�r�r"s@rr�r��s��������K�.�.�.�.�.�	��D�(�x�(��-�-�.�.�.���F�*��*�3�/�/�0�0�0���2�1�1�H�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�	�	�2�2�2�3��I�I�I�I�Irr�c	�R�eZdZ	edejd�����edejd�����gZddgZdede	d�����fd	ee	d��e	d
�����fdee	d��e	d
�����fdee
e
���fgZdS)
�TestFileTypeWBr�r�rMrkrr�Nr�r�r,r�r�)rrr rVr�r}r�r�r]r��
eq_bstdoutr�r-rrr�r��s�������I�	��D�(�x�(��.�.�/�/�/���F�*��*�4�0�0�1�1�1����b�z�H�	���T���e���-�-�-�.�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�
��4�4�4�5�	�I�I�Irr�c���eZdZ	edejd�����edejd�����gZdeed��ed�����fd	ee	e	���fgZ
d
S)�TestFileTypeXBr��xbrMrkr�r�r,r�r�N)rrr rVr�r}r�r]r�r�r�r-rrr�r��s�������N�	��D�(�x�(��.�.�/�/�/���F�*��*�4�0�0�1�1�1���

�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�
��4�4�4�5��I�I�Irr�c��eZdZ	d�ZdS)�TestFileTypeOpenArgsc
�H�tj}|d��df|dd��df|dd���df|d	d
���df|dd
dd��dfg}tjd��5}|D]\}}|d��|jdg|�R��	ddd��dS#1swxYwYdS)Nr�)r����NNrIr\)rIr\NNr�r�)rIr�Nr�r�r�rJ)r�r�r�Nr�l1�strict)rIrr�r�z
builtins.openr�)r�r}r�patch�assert_called_with)r�FT�cases�mrjrXs      r�test_open_argsz#TestFileTypeOpenArgs.test_open_argss4��
�
��
�R��X�X�-�.�
�R��Q�Z�Z�-�.�
�R��I�
&�
&�
&�(B�C�
�R��v�
&�
&�
&�(@�A�
�R��Q��h�
'�
'�)A�B�
���Z��
(�
(�	3�A�#�
3�
3�
��d���U����$��$�U�2�T�2�2�2�2�2�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�'"B�B�BN)rrr r�r-rrr�r�s&������:�3�3�3�3�3rr�c��eZdZ	d�ZdS)�!TestFileTypeMissingInitializationc�<�tj��}|�t��5}|�dtj���ddd��n#1swxYwY|�tj�d�t|j����dS)Nr�rMz: is a FileType class object, instance of it must be passed)	r�r�r��
ValueErrorr�r}r�r�r�r�s   r�testz&TestFileTypeMissingInitialization.test s����(�*�*��
�
�
�z�
*�
*�	>�b�����8�+<��=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	
���� � � �
#������	
�	
�	
�	
�	
s�"A�A �#A N�rrr r�r-rrr�r�s(�������
	
�	
�	
�	
�	
rr�c��eZdZ	ede���ede���gZgd�Zdedd���fd	ed
d���fded
d���fgZ	d
S)�TestTypeCallablez--eggsrMrk)r��42jz--eggs az	--eggs 2iz--eggs=42 42r�gE@)�eggsrkz--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
rrr rV�complexrPr�r�r]r�r-rrr�r�,s�������6�	��H�7�#�#�#���F�������5�4�4�H�	����$�/�/�/�0�	�b�b�b�t�4�4�4�5�	�R�R�T��1�1�1�2��I�I�Irr�c���eZdZ	Gd�de��Zede���ede���gZgZdeed��ed���	��fd
eed��ed���	��fgZ	d
S)�TestTypeUserDefinedc��eZdZd�Zd�ZdS)�TestTypeUserDefined.MyTypec��||_dSr1��value�rr�s  rrz#TestTypeUserDefined.MyType.__init__@�
���D�J�J�Jrc�^�t|��|jft|��|jfkSr1�rjr�rps  rrrz!TestTypeUserDefined.MyType.__eq__C�'����J�J��
�+��U���U�[�/I�I�IrNr�r-rr�MyTyper�>�7������	�	�	�	J�	J�	J�	J�	Jrr�r�rMrkrdrfr�r��-xf grrON)
rrr r$r�rVr�r�r]r�r-rrr�r�;s�������2�J�J�J�J�J��J�J�J�	��D�v������F�� � � ����H�	�2�2���s���&�&��+�+�6�6�6�7�	�"�"�v�v�c�{�{������5�5�5�6��I�I�Irr�c���eZdZ	Gd�d��Zede���ede���gZgZdeed��ed���	��fd
eed��ed���	��fgZd
S)�TestTypeClassicClassc��eZdZd�Zd�ZdS)�TestTypeClassicClass.Cc��||_dSr1r�r�s  rrzTestTypeClassicClass.C.__init__Vr�rc�^�t|��|jft|��|jfkSr1r�rps  rrrzTestTypeClassicClass.C.__eq__Yr�rNr�r-rr�CrTr�rrr�rMrkrdrfr�r�r�rrON)	rrr rrVr�r�r]r�r-rrr�r�Qs�������#�J�J�J�J�J�J�J�J�	��D�q������F��������H�	�2�2���#���Q�Q�s�V�V�,�,�,�-�	�"�"�q�q��v�v�A�A�c�F�F�+�+�+�,��I�I�Irr�c��eZdZ	d�ZdS)�TestTypeRegistrationc���d�}tj��}|�dd|��|�dd���|�dd���|�|�d�����tdd�	����|�|�d
�����tdd�	����dS)Nc��d|zS)Nzmy_type{%s}r-��strings r�get_my_typez.TestTypeRegistration.test.<locals>.get_my_typels
�� �6�)�)rrj�my_typer�rMrEr�z
my_type{1}rWz-x 1 42zmy_type{42})r�r��registerr�r�r�r�r])rrr�s   rr�zTestTypeRegistration.testjs���	*�	*�	*��(�*�*������	�;�7�7�7����D�y��1�1�1����C�i��0�0�0�����*�*�3�9�9�;�;�7�7��d�l�3�3�3�	5�	5�	5�����*�*�9�?�?�+<�+<�=�=��l�m�<�<�<�	>�	>�	>�	>�	>rNr�r-rrrrgs&������4�
>�
>�
>�
>�
>rrc��eZdZ	Gd�dej��ZGd�dej��Zeddeed���ed	ee	d
d���gZ
gZd
edd���fdedd���fdedd���fdedd���fgZ
dS)�TestActionUserDefinedc��eZdZdd�ZdS)�$TestActionUserDefined.OptionalActionNc���	td���}|dvrd|_n|dvrd|_ntd|z���n$#t$r}td|z���d}~wwxYwt	|d	|��dS)
N��?r,)��?r rr)�@rp�	value: %szopt_action failed: %srk)r]r�AssertionErrorrtr��rr��	namespacer��
option_stringr�r�s       r�__call__z-TestActionUserDefined.OptionalAction.__call__�s���
G�!�d�m�m�m���N�*�*�)*�K�&�&��e�^�^�)+�K�&�&�(��u�)<�=�=�=���"�
G�
G�
G�)�*A�A�*E�F�F�F�����
G�����I�v�u�-�-�-�-�-s�:=�
A�A�Ar1�rrr rr-rr�OptionalActionr�s(������	.�	.�	.�	.�	.�	.rrc��eZdZdd�ZdS)�&TestActionUserDefined.PositionalActionNc��	td���}|dvrd|_n*|dvrd|_n|dvrd|_ntd	|z���n$#t$r}td
|z���d}~wwxYwt	|d|��dS)Nrr�r)r�rpr)r\r )rrrrzarg_action failed: %sr)r]rkrrtr�rs       rrz/TestActionUserDefined.PositionalAction.__call__�s���
G�!��l�l�l���H�$�$�'+�K�$�$��c�\�\�',�K�$�$��c�\�\�',�K�$�$�(��u�)<�=�=�=���"�
G�
G�
G�)�*A�A�*E�F�F�F�����
G�����I�x��/�/�/�/�/s�AA	�	
A*�A%�%A*r1rr-rr�PositionalActionr�s(������	0�	0�	0�	0�	0�	0rr"z-srkr)rr�rjrVrrjrr)r�rjr^rVz-s0.125r)rkrrmr�z
-s 0.625 1r r\z84 -s2rrpN)rrr r��Actionrr"rVrPrtr�r�r]r�r-rrrr~s������4�.�.�.�.�.���.�.�.�,0�0�0�0�0�8�?�0�0�0�4	��D�v�n���	&�	&�	&���H�-��C��	,�	,�	,����H�	�B�B�E�!�,�,�,�-�	
�r�r�t�B�'�'�'�(�	�r�r�u�Q�/�/�/�0�	�2�2�3�r�*�*�*�+�	�I�I�Irrc�<�eZdZ	Gd�dej��Zd�ZdS)�TestActionRegistrationc��eZdZdd�ZdS)�TestActionRegistration.MyActionNc�8�t||jd|z��dS)Nzfoo[%s])r�r)rr�r�valuesrs     rrz(TestActionRegistration.MyAction.__call__�s!���I�t�y�)�f�*<�=�=�=�=�=rr1rr-rr�MyActionr'�s(������	>�	>�	>�	>�	>�	>rr*c�r�tj��}|�dd|j��|�dd���|�|�dg��td�����|�|�dg��td	�����dS)
Nr��	my_actionrr�r�zfoo[1]r!rmzfoo[42])r�r�r
r*r�r�r�r]�rr�s  rr�zTestActionRegistration.test�s����(�*�*������+�t�}�=�=�=����H�[��9�9�9�����*�*�C�5�1�1�2�X�3F�3F�3F�G�G�G�����*�*�D�6�2�2�B�i�4H�4H�4H�I�I�I�I�IrN)rrr r�r#r*r�r-rrr%r%�sW������?�>�>�>�>�>�8�?�>�>�>�
J�J�J�J�Jrr%c�T�eZdZeddde���gZdZdegd����fgZd	S)
�TestActionExtendr��extendr|)r�r^rjr-z--foo f1 --foo f2 f3 f4)�f1�f2�f3�f4r�N)	rrr rVr�r�r�r]r�r-rrr/r/�sV��������G�H�C�c�:�:�:����H�	"�B�B�+C�+C�+C�$D�$D�$D�E��I�I�Irr/c����eZdZ	d�Z		dd�Z�fd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z�xZS)�TestAddSubparsersc�2�|jtg|�Ri|��dSr1�r�rtrZs   r�assertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError��,�����-�?��?�?�?��?�?�?�?�?rFNc��|r7tdd|���}|�|ddzdzdd�	��n)tdd�
��}|�ddd�	��|�dtd
���ddi}|rd|d<d|d<nd|d<|jd7i|��}|�|j��td���}|rd|d<|rddg|d<|jd8i|��}|�dtd���|�d d!d"�#��td$���}	|rd%|	d<|jd9i|	��}
|
�d'd(d)�#��|
�d*td+d,�-��td.���}|rd/|d<|jd:i|��}|�d1td2���|�d3d4d5�6��|S);N�PROG�main description)�prog�descriptionr2rrrr�r��foo help�r��help�r>r?r�r,�bar help�rjrBr�F�COMMAND�metavar�commands�title�command helprBz
1 description�r?z1 help�1alias1�1alias2�aliasesr�rCzw helpr�r�x help�r�rBz
2 descriptionz2 helpror��123�y helpr�rwzz help)rjr^rBz
3 descriptionz3 helpr��tzt help�urFzu help�r^rBr-�r�)ro)r�)	r�r�rP�add_subparsersr9�dict�
add_parserrtr�)
r�subparser_helpr2rNr��subparsers_kwargs�
subparsers�parser1_kwargs�parser1�parser2_kwargs�parser2�parser3_kwargs�parser3s
             rr�zTestAddSubparsers._get_parser�s����		?�/��);�,�X�X�X�F�����Q��!�#�e�+�L�z�
 �
S�
S�
S�
S�0��);�=�=�=�F������:�
 �
?�
?�
?������J�	�	0�	0�	0�(��/���	7�+4��i�(�)3��g�&�&�(6��f�%�*�V�*�?�?�->�?�?�
��&�&�v�'<�=�=�=��/�:�:�:���	.�%-�N�6�"��	?�)2�I�(>�N�9�%�'�*�'�>�>�~�>�>�����T��(��;�;�;����S�%�h��?�?�?��/�:�:�:���	.�%-�N�6�"�'�*�'�>�>�~�>�>�����T�5�x��@�@�@����S�w�c���I�I�I��/�:�:�:���	.�%-�N�6�"�'�*�'�>�>�~�>�>�����S�s���:�:�:����S��H��=�=�=��
rc���t�����|���|_|�d���|_dS)NT)rZ)r
r,r�r��command_help_parserr�s �rr,zTestAddSubparsers.setUpsF���
���
�
�����&�&�(�(���#'�#3�#3�4�#3�#H�#H�� � � rc�x�dD]6}|���}|�|jj|���7dS)N)rr�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�r9r�r�)rr�rXs   r�test_parse_args_failuresz*TestAddSubparsers.test_parse_args_failures sN��1�	I�	I�H��>�>�#�#�D��*�*�4�;�+A�4�H�H�H�H�	I�	Irc
��|�|j�d�����t	dddd�����|�|j�d�����t	dd	d
ddg�
����|�|j�d�����t	dddd�����|�|j�d�����t	dddgd������dS)N�0.5 1 b -w 7FrO�rf�r�r,rIr�z0.25 --foo 2 -y 2 3j -- -1jTrroy@y��)r�r,rEr�z--foo 0.125 1 crrgz-1.5 3 11 -- a --foo 7 -- br��)r�r�r��--rf)r�r,rSrT)r�r�r�r�r]rs r�test_parse_argsz!TestAddSubparsers.test_parse_args'sL������K�"�"�>�#7�#7�#9�#9�:�:��5�c�Q�#�.�.�.�	
�	
�	
�	
����K�"�"�#@�#F�#F�#H�#H�I�I��4�T�S�R��I�6�6�6�	
�	
�	
�	
����K�"�"�#4�#:�#:�#<�#<�=�=��4�U�d�c�2�2�2�	
�	
�	
�	
����K�"�"�#@�#F�#F�#H�#H�I�I��5�d�b�,J�,J�,J�K�K�K�	
�	
�	
�	
�	
rc	�P�|�|j�d�����t	dddd���gf��|�|j�d�����t	dddd���dgf��|�|j�d	�����t	dddd���dgf��|�|j�d
�����t	dddd���ddgf��|�|j�d
�����t	dddd���gd�f��dS)NrhFrOrirfrjz0.5 -p 1 b -w 7�-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-XrJrG)r�r��parse_known_argsr�r]rs r�test_parse_known_argsz'TestAddSubparsers.test_parse_known_args:s�������K�(�(��)=�)=�)?�)?�@�@�
�E�s�a�3�
/�
/�
/��4�	
�	
�	
�	
����K�(�(�):�)@�)@�)B�)B�C�C�
�E�s�a�3�
/�
/�
/�$��8�	
�	
�	
�	
����K�(�(�):�)@�)@�)B�)B�C�C�
�E�s�a�3�
/�
/�
/�$��8�	
�	
�	
�	
����K�(�(�)>�)D�)D�)F�)F�G�G�
�E�s�a�3�
/�
/�
/�$���?�	
�	
�	
�	
����K�(�(�)A�)G�)G�)I�)I�J�J�
�E�s�a�3�
/�
/�
/�1G�1G�1G�H�	
�	
�	
�	
�	
rc�f�t��}|�dd���|�d���}|�d��}|�d��|�tddd	�
��|�d�������dS)Nr�r�r�r,rr�r-Frorr�)r�r�rWrYr�r]r�r�)rr�r\r^s    r�	test_destzTestAddSubparsers.test_destPs���+�-�-�����G�L��9�9�9��*�*��*�6�6�
��'�'��,�,�����U�#�#�#������3�C�8�8�8��*�*�5�;�;�=�=�9�9�	;�	;�	;�	;�	;rc��|�dg��}|�|jd��|�|jd��dS)N�runr-)r�r��commandr9)rr��rets   r�_test_required_subparsersz+TestAddSubparsers._test_required_subparsersYsP�������(�(�������e�,�,�,�	
�&�&�v�'8�"�=�=�=�=�=rc��t��}|�d���}d|_|�d��|�|��dS)NrvrTru)r�rWr�rYrx�rr�r\s   r�&test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attributeasY��+�-�-���*�*�	�*�:�:�
�"�
�����e�$�$�$��&�&�v�.�.�.�.�.rc��t��}|�dd���}|�d��|�|��dS)NrvT�rr�ru)r�rWrYrxrzs   r�"test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwarghsS��+�-�-���*�*�	�D�*�I�I�
����e�$�$�$��&�&�v�.�.�.�.�.rc���t��}|�d���}|�d��|�d��}|�|j��dS)Nrvrrur-�r�rWrYr��assertIsNonerv�rr�r\rws    r� test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_defaultnsf��+�-�-���*�*�	�*�:�:�
����e�$�$�$�����#�#�����#�+�&�&�&�&�&rc�p�t��}|�d���}|�d��|�d��|�t��5}|�d��ddd��n#1swxYwY|�|jjd��dS)NT�r�r�r,r-z8error: the following arguments are required: {foo,bar}
$�	r�rWrYr�rtr��assertRegexr�ry�rr�r\�excinfos    r�-test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_errorvs���+�-�-���*�*�D�*�9�9�
����e�$�$�$����e�$�$�$�
�
�
�2�
3�
3�	"�w����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"������$�G�	
�	
�	
�	
�	
��)B�B�Bc�p�t��}|�d���}|�d��|�d��|�t��5}|�d��ddd��n#1swxYwY|�|jjd��dS)NTr�r�r,r�zPerror: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$r�r�s    r�3test_wrong_argument_subparsers_no_destination_errorzETestAddSubparsers.test_wrong_argument_subparsers_no_destination_error�s���+�-�-���*�*�D�*�9�9�
����e�$�$�$����e�$�$�$�
�
�
�2�
3�
3�	(�w����h�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(������$�_�	
�	
�	
�	
�	
r�c���t��}|�dd���}|�d��|�d��}|�|j��dS)NrvFr}rur-r�r�s    r�test_optional_subparsersz*TestAddSubparsers.test_optional_subparsers�sh��+�-�-���*�*�	�E�*�J�J�
����e�$�$�$�����#�#�����#�+�&�&�&�&�&rc���|�|j���d��|�|j���t	jd����dS)N�)usage: PROG [-h] [--foo] bar {1,2,3} ...
a?            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�r��format_usage�format_help�textwrap�dedentrs r�	test_helpzTestAddSubparsers.test_help�sv�������1�1�3�3�E�	G�	G�	G������0�0�2�2�H�O�E�5�5�	�	�	�	�	rc��|�d���}|�|���d��|�|���t	jd����dS)Nz+:-r?z)usage: PROG [-h] [++foo] bar {1,2,3} ...
a?            usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            �r�r�r�r�r�r�r-s  r�test_help_extra_prefix_charsz.TestAddSubparsers.test_help_extra_prefix_chars�s����!�!�u�!�5�5������,�,�.�.�E�	G�	G�	G�����+�+�-�-�x��@�0�0�	�	�	�	�	rc���tdd���}|�ddd���|�|���t	jd����dS)	Nr<r=rCz--non-breakingr�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesrAu7            usage: PROG [-h] [--non-breaking]

            main description

            options:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        �r�r�r�r�r�r�r-s  r�test_help_non_breaking_spacesz/TestAddSubparsers.test_help_non_breaking_spaces�s���+��%7�9�9�9������]�;�	�	<�	<�	<�	
����+�+�-�-�x��	@�	0
�	0
�		�		�		�		�		rc��tdd���}|�dd���|�|���t	jd����tdd���}|�dgd�	��|�|���t	jd
����dS)Nr<r=rCr�z    �rBz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

            options:
              -h, --help  show this help message and exit
        z%(choices)srPz�            usage: PROG [-h] {}

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r�r-s  r�test_help_blankz!TestAddSubparsers.test_help_blank�s��+��%7�9�9�9�������	�	�	�	�	
����+�+�-�-�x��	@�	0
�	0
�		�		�		�,��%7�9�9�9������2��	�	 �	 �	 �	
����+�+�-�-�x��	@�	0
�	0
�		�		�		�		�		rc��|�d���}|�|���d��|�|���t	jd����dS)Nr0r?z)usage: PROG [+h] [++foo] bar {1,2,3} ...
a?            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

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

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r�r-s  r� test_help_alternate_prefix_charsz2TestAddSubparsers.test_help_alternate_prefix_chars�s����!�!�u�!�5�5������,�,�.�.�E�	G�	G�	G�����+�+�-�-�x��@�0�0�	�	�	�	�	rc���|�|j���d��|�|j���t	jd����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

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�rdr�r�r�r�rs r�test_parser_command_helpz*TestAddSubparsers.test_parser_command_help	sx������1�>�>�@�@�E�	G�	G�	G�����1�=�=�?�?�!��*���	�	�	�	�	rc���tdd���}|�ddd���|�dd	�
��|�ddd
���}|�d��}|�d��}|�|���d��|�|���tjd����dS)Nr<r=rCr�r�r@rAr,rDr��subcommandsrJzadditional text)rIr?rBr�roz'usage: PROG [-h] [--foo] bar {1,2} ...
av            usage: PROG [-h] [--foo] bar {1,2} ...

            main description

            positional arguments:
              bar         bar help

            options:
              -h, --help  show this help message and exit
              --foo       foo help

            subcommands:
              command help

              {1,2}       additional text
            )	r�r�rWrYr�r�r�r�r�)rr�r\r^r`s     r�test_subparser_title_helpz+TestAddSubparsers.test_subparser_title_help	s��+��8J�L�L�L�����G�L�z��J�J�J����E�
��3�3�3��*�*��7E�0A�+�C�C�
��'�'��,�,���'�'��,�,������,�,�.�.�C�	E�	E�	E�����+�+�-�-�x��@�0�0�	�	�	�	�	rc��|�t��5}|j�|�����ddd��n#1swxYwY|�||jj��dSr1)r�rtr�r�r�r�r�rx)rr��
expected_helpr�s    r�_test_subparser_helpz&TestAddSubparsers._test_subparser_help3	s���
�
�
�2�
3�
3�	5�r��K�"�"�8�>�>�#3�#3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�������(;�<�<�<�<�<s�-A�A�Ac�V�|�dtjd����dS)Nz5.0 1 -ha            usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

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

            options:
              -h, --help  show this help message and exit
              -w W        w help
            �r�r�r�rs r�test_subparser1_helpz&TestAddSubparsers.test_subparser1_help8	�9���!�!�*�h�o�?�/�/�	�	�	�	�	rc�V�|�dtjd����dS)Nz5.0 2 -ha            usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...]

            2 description

            positional arguments:
              z           z help

            options:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            r�rs r�test_subparser2_helpz&TestAddSubparsers.test_subparser2_helpF	r�rc	�j�|�d���}|�|�d�����t	dddd���gf��|�|�d�����t	dddd���gf��dS)	NT�rNz
0.5 1alias1 bFrOrfrjz
0.5 1alias2 b)r�r�rpr�r]r-s  r�test_alias_invocationz'TestAddSubparsers.test_alias_invocationT	s����!�!�$�!�/�/������#�#�O�$9�$9�$;�$;�<�<�
�E�s�d�c�
2�
2�
2�B�7�	
�	
�	
�	
����#�#�O�$9�$9�$;�$;�<�<�
�E�s�d�c�
2�
2�
2�B�7�	
�	
�	
�	
�	
rc��|�d���}|�|jd�����dS)NTr�z
0.5 1alias3 b)r�r9r�r�r-s  r�test_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocation_	sS���!�!�$�!�/�/���&�&�v�'8�'6�'<�'<�'>�'>�	@�	@�	@�	@�	@rc��|�dd���}d|_|�|���t	jd����dS)NT)rNrZa	            usage: PROG [-h] [--foo] bar COMMAND ...

            main description

            positional arguments:
              bar                   bar help

            options:
              -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��maxDiffr�r�r�r�r-s  r�test_alias_helpz!TestAddSubparsers.test_alias_helpd	se���!�!�$�t�!�D�D���������+�+�-�-�x��@�0�0�	�	�	�	�	r)FNF)rrr r9r�r,rfrmrqrsrxr{r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r"s@rr6r6�s��������(�@�@�@�>B�!�5�5�5�5�nI�I�I�I�I�
I�I�I�
�
�
�&
�
�
�,;�;�;�>�>�>�/�/�/�/�/�/�'�'�'�

�

�

�

�

�

�'�'�'����"���&���$ � � �D���$���*���<=�=�=�
������	
�	
�	
�@�@�@�
������rr6c�"�eZdZ	d�Zd�Zd�ZdS)�TestPositionalsGroupsc�h�t��}|�d��|�d��}|�d��|�d��tddd���}|�d	�����}|�||��dS)
Nr�rOr,r-r�ror�r�1 2 3)r�r�r�r]r�r�r��rr�r��expectedr�s     r�test_nongroup_firstz)TestPositionalsGroups.test_nongroup_first�	s���+�-�-�����E�"�"�"��)�)�#�.�.��
���5�!�!�!����E�"�"�"��#�3�C�0�0�0���"�"�7�=�=�?�?�3�3������6�*�*�*�*�*rc�h�t��}|�d��}|�d��|�d��|�d��tddd���}|�d	�����}|�||��dS)
N�xxxr�r,r-r�ror�rr��r�r�r�r]r�r�r�r�s     r�test_group_firstz&TestPositionalsGroups.test_group_first�	s���+�-�-���)�)�%�0�0��
���5�!�!�!����E�"�"�"����E�"�"�"��#�3�C�0�0�0���"�"�7�=�=�?�?�3�3������6�*�*�*�*�*rc��t��}|�d��}|�d��|�d��|�d��|�d��}|�d��tddd	d
���}|�d�����}|�||��dS)
Nr�r�r,r-r��frellr�ror�r1)r�r,r-r�z1 2 3 4r�r�s     r�test_interleaved_groupsz-TestPositionalsGroups.test_interleaved_groups�	s���+�-�-���)�)�%�0�0�����E�"�"�"�
���5�!�!�!����E�"�"�"��)�)�%�0�0��
���7�#�#�#��#�3�C�s�;�;�;���"�"�9�?�?�#4�#4�5�5������6�*�*�*�*�*rN)rrr r�r�r�r-rrr�r�	sD������J�+�+�+�+�+�+�
+�
+�
+�
+�
+rr�c�t��eZdZ	d�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Z�xZS)�TestParentParsersc�2�|jtg|�Ri|��dSr1r8rZs   rr9z+TestParentParsers.assertArgumentParserError�	r:rc���t�����td���|_|j�d��|j�d��}|�d��|j�d��td���|_|j�d��|j�d��|j�d	��}|�d
��td���|_|j�d��td���|_|j�d��td���|_	|j	�
��}|�dd�
��|�dd�
��tj�
tjd��|_dS)NF�r3z--wr�r�r�r�r�rgz--drlr�r�r)r
r,r��wxyz_parentr�r��abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_groupr5r=�basenamer~r��main_program)r�x_group�c_groupr�rs    �rr,zTestParentParsers.setUp�	s����
���
�
����5�u�E�E�E�����%�%�e�,�,�,��"�5�5�c�:�:�����T�"�"�"���%�%�c�*�*�*�5�u�E�E�E�����%�%�c�*�*�*���%�%�d�+�+�+��"�5�5�c�:�:�����U�#�#�#�2�E�B�B�B��
��
�"�"�5�)�)�)�2�E�B�B�B��
��
�"�"�3�'�'�'� :�5�I�I�I����$�A�A�C�C��
���4���5�5�5�
���4���5�5�5��G�,�,�S�X�a�[�9�9����rc���t|jg���}|�|�d�����tddd�����dS)N��parentsz-y 1 2 --w 3r�r�ro�rIrEr�)r�r�r�r�r�r]r-s  r�test_single_parentz$TestParentParsers.test_single_parent�	sh��+�T�5E�4F�G�G�G������*�*�>�+?�+?�+A�+A�B�B��c�S�C�0�0�0�	2�	2�	2�	2�	2rc��|�|jj��t|jg���}|�|j��dS�Nr�)�_test_mutex_abr�r�r�r-s  r�test_single_parent_mutexz*TestParentParsers.test_single_parent_mutex�	sO�����D�0�;�<�<�<�+�T�5I�4J�K�K�K�����F�-�.�.�.�.�.rc��|jg}td|���}t|g���}|�|j��dS)NF)r3r�r�)r�r�r�r��rr�r�s   r�test_single_granparent_mutexz.TestParentParsers.test_single_granparent_mutex�	sN���'�(��+�U�G�L�L�L��+�V�H�=�=�=�����F�-�.�.�.�.�.rc��|�|g��tdd�����|�|dg��tdd�����|�|dg��tdd�����|�|ddg��|�|ddg��|�|dg��|�|ddg��|�|ddg��dS)NF�r�rfrlTr�r�)r�r]r9)rr�s  rr�z TestParentParsers._test_mutex_ab�	s�������B����e�u�)=�)=�)=�>�>�>������T�F�+�+�R�$�%�-@�-@�-@�A�A�A������T�F�+�+�R�%�4�-@�-@�-@�A�A�A��&�&�z�D�$�<�@�@�@��&�&�z�D�$�<�@�@�@��&�&�z�D�6�:�:�:��&�&�z�D�$�<�@�@�@��&�&�z�D�$�<�@�@�@�@�@rc���|j|jg}t|���}|�|�d�����t
dddddd�����dS)Nr�z--d 1 --w 2 3 4r�r�ror1)r�rfrrIrEr�)r�r�r�r�r�r�r]r�s   r�test_multiple_parentsz'TestParentParsers.test_multiple_parents�	s~���#�T�%5�6��+�G�<�<�<������*�*�+<�+B�+B�+D�+D�E�E��c�T�S�C�4�3�G�G�G�	I�	I�	I�	I�	Irc
��|j|jg}t|���}|�|�d�����t
ddddd�����|�|jd�����|�|jd	�����dS)
Nr�z
-a --w 2 3TFror�)r�rfrIrEr�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�r�r�r�r�r]r9r�s   r�test_multiple_parents_mutexz-TestParentParsers.test_multiple_parents_mutex�	s����'��)9�:��+�G�<�<�<������*�*�<�+=�+=�+?�+?�@�@��d�e�s�d�c�B�B�B�	D�	D�	D��&�&����4�4�6�6�	8�	8�	8��&�&����4�4�6�6�	8�	8�	8�	8�	8rc�v�|�tjtj|j|jg���dSr�)r�r��
ArgumentErrorr�r�r�rs r�test_conflicting_parentsz*TestParentParsers.test_conflicting_parents�	sB������"��#��]�D�$4�5�	�	7�	7�	7�	7�	7rc�v�|�tjtj|j|jg���dSr�)r�r�r�r�r�r�rs r�test_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutex�	sC������"��#��%�t�';�<�	�	>�	>�	>�	>�	>rc���|j|jg}t|���}|�|�d�����t
ddd�����dS)Nr�r�ror�)r�r�r�r�r�r�r]r�s   r�test_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parents�	sm���#�T�]�3��+�G�<�<�<������*�*�5�;�;�=�=�9�9��d�d�c�2�2�2�	4�	4�	4�	4�	4rc	�F�t��}|���}|�d|jg���}|�d��|�|�d�����tdddd�	����dS)
Nr,r�r�zbar -b 1 --d 2 3 4r�r�ror1)r�rfrr�)	r�rWrYr�r�r�r�r�r])rr�r\�abcde_parsers    r�test_subparser_parentsz(TestParentParsers.test_subparser_parents
s���+�-�-���*�*�,�,�
�!�,�,�U�T�=M�<N�,�O�O���!�!�#�&�&�&�����*�*�+?�+E�+E�+G�+G�H�H��c�S�C�3�7�7�7�	9�	9�	9�	9�	9rc�6�t��}|���}|jg}|�d|���}|�d��}|�d��|j|jg}|�d|���}|�d��|�|�d�	����tdd	d
�����|�|�d�	����td	dd
ddd
�����|�|jd�	����|�|jd�	����dS)Nr�r�r�rgr,r�zfoo -a 4TFr1rezbar -b  --w 2 3 4ror�)r�rfrIrEr�r�zfoo -a -b 4zbar -b -a 4)r�rWr�rYr�r�r�r�r�r�r]r9)rr�r\r��
abc_parserr��wxyzabe_parsers       r�test_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutex
s���+�-�-���*�*�,�,�
��'�(���*�*�5�'�*�B�B�
��/�/�	�:�:�����S�!�!�!��#�T�%9�:��#�.�.�u�g�.�F�F���#�#�C�(�(�(�����*�*�:�+;�+;�+=�+=�>�>��d�e�s�3�3�3�	5�	5�	5�����*�*�+>�+D�+D�+F�+F�G�G��e�t�s�d�c�S�I�I�I�	K�	K�	K��&�&���}�2�2�4�4�	6�	6�	6��&�&���}�2�2�4�4�	6�	6�	6�	6�	6rc	��|j|jg}t|���}|���}|j}|�|t
jd�||rdnd������dS)Nr�aG            usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

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

            c:
              --d D

            x:
              -y Y
        � r)	r�r�r�r�r�r�r�r��format)rr�r��parser_help�prognames     r�test_parent_helpz"TestParentParsers.test_parent_help
s����#�T�%5�6��+�G�<�<�<���(�(�*�*���$������h�o�7�"
�F�8�H�4�S�S�"�6�6�#'8�'8�	9�	9�	9�	9�	9rc	�B�td���}|�dd���}|�d��|�d��|���}|�d��|�d	��t|g�
��}|�t
|jgd���|���}|j}|�	|tjd�||rd
nd������dS)NFr�rO�gd�rIr?rCr�r�r�r�)r�rJr�rGz�            usage: {}{}[-h] [-w W] [-x X] [-y Y | -z Z]

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

            g:
              gd

              -w W
              -x X
        r�r)
r�r�r�r�r�rtr�r�r�r�r�r�r�)r�parentrOr�r�r�r�s       r�test_groups_parentsz%TestParentParsers.test_groups_parents7
s*��+�U�;�;�;���%�%�C�T�%�B�B��	���t����	���t�����/�/�1�1��	���t����	���t����+�V�H�=�=�=�����-�v�/@�"�"�"�	$�	$�	$��(�(�*�*���$������h�o�
7�
�F�8�H�4�S�S�"�6�6�
'8�
'8�
	9�
	9�
	9�
	9�
	9r)rrr r9r,r�r�r�r�r�r�r�r�r�r�r�r�r�r!r"s@rr�r��	s�������?�@�@�@�:�:�:�:�:�82�2�2�
/�/�/�
/�/�/�A�A�A�I�I�I�8�8�8�7�7�7�>�>�>�4�4�4�9�9�9�6�6�6�&9�9�9�09�9�9�9�9�9�9rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)� TestMutuallyExclusiveGroupErrorsc�`�t��}|j}|t|jd���dS)Nr�)rI)r�r�r�r�)rr��raisess   r�test_invalid_add_argument_groupz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group[
s5��+�-�-���"����y�&�=�U�K�K�K�K�K�Krc�>�t��}|���}|j}|j}|t|dd���|t|d��|t|dd���|t|dd���|t|dt
j���dS)Nr�Tr�r,r|r]r\)r�r�r�r�r�r��PARSER)rr�r�r�rs     r�test_invalid_add_argumentz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument`
s���+�-�-���3�3�5�5���)���"����z�<��4�@�@�@�@���z�<��/�/�/���z�<��c�:�:�:�:���z�<��a�8�8�8�8���z�<��h�o�F�F�F�F�F�Frc��td���}|���}|�dd���|�dd���|���}|�dd���|�d	d���d
}|�|���tj|����dS)Nr<�r>r�r�r�rr�z--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            options:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              )r�r�r�r�r�r�r�)rr��group1�group2r�s     rr�z*TestMutuallyExclusiveGroupErrors.test_helpk
s���+��8�8�8���4�4�6�6�����G�L��9�9�9����G�M��:�:�:��4�4�6�6�����H�\��:�:�:����H�]��;�;�;�	��	
����+�+�-�-�x��x�/H�/H�I�I�I�I�Irc���tj��}|���}|�t��5|�dg��ddd��dS#1swxYwYdS)Nr8)r�r�r�r�r�r��rr�r�s   r�test_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group
s����(�*�*���3�3�5�5��
�
�
�z�
*�
*�	&�	&����t�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�A&�&A*�-A*N)rrr rrr�rr-rrrrY
sY������L�L�L�
	G�	G�	G�J�J�J�(&�&�&�&�&rrc�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�MEMixinc��|�d���j}t}|jD]+}|�|||������,dS�NFr���
get_parserr�rtr�r�r��rr�r��args_strings    r�test_failures_when_not_requiredz'MEMixin.test_failures_when_not_required�
sc���_�_�e�_�4�4�?�
�#���=�	F�	F�K����e�Z��1B�1B�1D�1D�E�E�E�E�	F�	Frc��|�d���j}t}|jdgzD]+}|�|||������,dS)NTr�rrrs    r�test_failures_when_requiredz#MEMixin.test_failures_when_required�
sj���_�_�d�_�3�3�>�
�#���=�B�4�/�	F�	F�K����e�Z��1B�1B�1D�1D�E�E�E�E�	F�	Frc���|�d���j}|j|jz}|D]8\}}||�����}|�||���9dSr)rr�r��successes_when_not_requiredr�r�)rr�r�rr��	actual_nss      r� test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required�
sy���_�_�e�_�4�4�?�
��N�T�%E�E�	�(1�	5�	5�$�K��"�
�;�#4�#4�#6�#6�7�7�I����Y��4�4�4�4�	5�	5rc��|�d���j}|jD]8\}}||�����}|�||���9dS�NTr�)rr�r�r�r�)rr�rr�rs     r�test_successes_when_requiredz$MEMixin.test_successes_when_required�
sl���_�_�d�_�3�3�>�
�(,��	5�	5�$�K��"�
�;�#4�#4�#6�#6�7�7�I����Y��4�4�4�4�	5�	5rc��|�d���j}|j}|�|��t	j|����dSr)rr��usage_when_not_requiredr�r�r��rr��expected_usages   r�test_usage_when_not_requiredz$MEMixin.test_usage_when_not_required�
sL�������6�6�C���5������������)H�)H�I�I�I�I�Irc��|�d���j}|j}|�|��t	j|����dSr)rr��usage_when_requiredr�r�r�r#s   r�test_usage_when_requiredz MEMixin.test_usage_when_required�
sL�������5�5�B���1������������)H�)H�I�I�I�I�Irc��|�d���j}|j|jz}|�|��tj|����dSr)rr�r"rBr�r�r��rr�rBs   r�test_help_when_not_requiredz#MEMixin.test_help_when_not_required�
sS���o�o�u�o�5�5�A���+�d�i�7������������(=�(=�>�>�>�>�>rc��|�d���j}|j|jz}|�|��tj|����dSr)rr�r'rBr�r�r�r*s   r�test_help_when_requiredzMEMixin.test_help_when_required�
sS���o�o�t�o�4�4�@���'�$�)�3������������(=�(=�>�>�>�>�>rN)rrr rrrr r%r(r+r-r-rrrr�
s�������F�F�F�F�F�F�5�5�5�5�5�5�J�J�J�
J�J�J�
?�?�?�
?�?�?�?�?rrc��eZdZdd�ZddgZdedd���fded	d���fd
edd���fdedd	���fgZd
edd���fgZdZdZ	dZ
dS)�TestMutuallyExclusiveSimpleNc��td���}|�|���}|�dd���|�ddd	d
���|S)Nr<r	r�rrDr�rLrjrG�baz help)r^r�rB�r�r�r��rr�r�r�s    rrz&TestMutuallyExclusiveSimple.get_parser�
sc��+��8�8�8���3�3�X�3�F�F��
���7���4�4�4�
���7�#�S�z��J�J�J��
r�--bar X --baz Yz
--bar X --baz�--bar Xr�r,r-z--bar X --bar ZrG�--baz YrJrLrz;        usage: PROG [-h] [--bar BAR | --baz [BAZ]]
        z;        usage: PROG [-h] (--bar BAR | --baz [BAZ])
        z�
        options:
          -h, --help   show this help message and exit
          --bar BAR    bar help
          --baz [BAZ]  baz help
        r1�rrr rr�r]r�rr"r'rBr-rrr/r/�
s�����������"�?�3�H�	�B�B�3�D�)�)�)�*�	�B�B�3�D�1�1�1�2�	�B�B�4�S�)�)�)�*�	�"�"��3�'�'�'�(�	�I�
�R�R�D�d�
#�
#�
#�$�#�������D�D�Drr/c
���eZdZdd�ZdgZdedddd���fdedddd���fd	edddd���fd
edddd���fgZdedddd���fgZdZd
Z	dZ
dS)�TestMutuallyExclusiveLongNc�
�td���}|�dd���|�dd���|�|���}|�d	d
���|�dd���|S)
Nr<r	z--abcdez
abcde helpr�z--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�r�r�r�r3s    rrz$TestMutuallyExclusiveLong.get_parser�
s���+��8�8�8�����I�L��9�9�9����I�L��9�9�9��3�3�X�3�F�F��
���9�<��8�8�8�
���9�<��8�8�8��
rz--klmno X --pqrst Yz	--klmno Xr)�abcde�fghij�klmno�pqrstz--abcde Y --klmno XrJz	--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�
    options:
      -h, --help     show this help message and exit
      --abcde ABCDE  abcde help
      --fghij FGHIJ  fghij help
      --klmno KLMNO  klmno help
      --pqrst PQRST  pqrst help
    r1r8r-rrr:r:�
s�����������&�&�H�	�b�b�t�4�s�$�G�G�G�H�	��B�S��C�t�<�<�<�	>�	�b�b�t�4�t�3�G�G�G�H�	��B�T��D��<�<�<�	>��I�
�R�R�d�$�d�$�
?�
?�
?�@�#�������D�D�Drr:c��eZdZd�ZdgZdedd���fdedd���fd	ed
d���fgZded
d���fgZd
ZdZ	dZ
d
S)�$TestMutuallyExclusiveFirstSuppressedc���td���}|�|���}|�dtj���|�ddd�	��|S)
Nr<r	r�r�r�r�r�rRrA�r�r�r�r�rTr3s    rrz/TestMutuallyExclusiveFirstSuppressed.get_parsersd��+��8�8�8���3�3�X�3�F�F��
���4�h�&7��8�8�8�
���4�
�H��E�E�E��
rz-x X -yz-x XrTrWz	-x X -x YrJr�NFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r8r-rrrBrBs�����������{�H�	���c�T�"�"�"�#�	�b�b�3�$�'�'�'�(�	
�r�r�D�E�"�"�"�#��I�
�R�R�$�$�
�
�
� �#�������D�D�DrrBc	���eZdZd�Zgd�Zdeddd���fdeddd���fd	eddd
���fdeddd���fgZdeddd���fgZd
xZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedc���td���}|�|���}|j}|ddtj���|ddtj���|d	tj�
��|S)Nr<r	r��--spamr�rArr�z	--bladderr�rD)rr�r�r�r�s     rrz.TestMutuallyExclusiveManySuppressed.get_parser's���+��8�8�8���3�3�X�3�F�F��� ����H�\��0A�B�B�B�B���J�}�8�3D�E�E�E�E���K�h�/�0�0�0�0��
r)z--spam --badgerz--badger --bladder Bz--bladder B --spamrHTN)rkr�bladderrFz--bladder Br*z
--spam --spamrz!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        �rrr rr�r]r�rr'r"rBr-rrrFrF%s�������������H�
�2�2�4��d�;�;�;�<�	�R�R�U�5�$�?�?�?�@�	����d�C�@�@�@�A�	�"�"�$�t�T�B�B�B�C�	�I�
�R�R�U�4��
6�
6�
6�7�#��5���1��D�D�DrrFc
���eZdZd�Zgd�Zdeddd���fded	d
d���fded	ddg���fded	dgd����fgZd
ed	dd���fgZdZdZ	dZ
dS)�*TestMutuallyExclusiveOptionalAndPositionalc���td���}|�|���}|�ddd���|�dd	�
��|�ddd
d���|S)Nr<r	r�r�r��FOOrArH�SPAMr�rrwr�BADGER�r^rVrBr2r3s    rrz5TestMutuallyExclusiveOptionalAndPositional.get_parserKs~��+��8�8�8���3�3�X�3�F�F��
���7�<�e��D�D�D�
���8�&��1�1�1�
���8�3��(��K�K�K��
r)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr)r�rkrz--spam SF�SzX Y Z)rrJrGrzD        usage: PROG [-h] [--foo | --spam SPAM | badger ...]
        zD        usage: PROG [-h] (--foo | --spam SPAM | badger ...)
        z�
        positional arguments:
          badger       BADGER

        options:
          -h, --help   show this help message and exit
          --foo        FOO
          --spam SPAM  SPAM
        r8r-rrrMrMIs�������������H�
�"�"��D��5�5�5�6�	�R�R�E��C�8�8�8�9�	�b�b�U��s�e�4�4�4�5�	�"�"��T�/�/�/�B�B�B�C�	�I�
�R�R�E��S�
1�
1�
1�2�#������	�D�D�DrrMc
�b�eZdZd�Zgd�Zdeddddd���fdeddddd���fdeddddd���fd	eddddd���fd
eddddd���fdeddddd���fgZdeddddd���fd
eddddd���fdeddddd���fgZdxZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedc�B�td���}|�ddd���|�|���}|�ddd	���|�d
dd���|�ddd
���|�ddd���|S)Nr<r	r�r�rOrAr�rl�a helpr��b helpr�rRr��c helpr<r3s    rrz.TestMutuallyExclusiveOptionalsMixed.get_parserxs���+��8�8�8�����D��H��E�E�E��3�3�X�3�F�F��
���4��8��D�D�D�
���4��8��D�D�D����D��H��E�E�E�
���4��8��D�D�D��
r)z-a -b�-b -cz-a -cz-a -b -crlTF�r�rfrgr�rEr�r�z-a -xz-y -bz-x -y -crr�r�z:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z�
        options:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        NrKr-rrrUrUvsW���������7�6�6�H�	
�r�r�D�E�U�e�u�=�=�=�>�	
�r�r�E�T�U�e�u�=�=�=�>�	
�r�r�E�U�d�e�u�=�=�=�>�	�"�"�t�u����?�?�?�@�	�"�"�u����$�?�?�?�@�	�R�R�%�5�D�D�D�A�A�A�B�
�I�
�R�R�%�5�E�U�e�
<�
<�
<�=�	
�r�r�E�U�e�t�u�=�=�=�>�	
�r�r�E�U�e�u��=�=�=�>�#��5���1�	�D�D�DrrUc��eZdZdd�ZddgZdedd���fdedd	���fgZd
edd���fgZdZdZ	d
Z
dS)�TestMutuallyExclusiveInGroupNc���td���}|�dd���}|�|���}|�dd�	��|�d
d�	��|S)Nr<r	zTitled groupzGroup descriptionr�r�rrDr�rLr1)r�r�r�r�)rr�r��titled_group�mutex_groups     rrz'TestMutuallyExclusiveInGroup.get_parser�s���+��8�8�8���0�0� �.A�1�C�C��
�5�5�x�5�H�H�	�� � ��z� �:�:�:�� � ��z� �:�:�:��
rr4z--baz X --bar Yr5rr6r7rJrz9        usage: PROG [-h] [--bar BAR | --baz BAZ]
        z9        usage: PROG [-h] (--bar BAR | --baz BAZ)
        z�
        options:
          -h, --help  show this help message and exit

        Titled group:
          Group description

          --bar BAR   bar help
          --baz BAZ   baz help
        r1r8r-rrr]r]�s�����������"�#4�5�H�	�B�B�3�D�)�)�)�*�	�B�B�4�S�)�)�)�*��I�

�R�R�D�d�
#�
#�
#�$�#������
�D�D�Drr]c��eZdZd�Zgd�Zdeddddd���fded	d
ddd���fded	dd
dd���fdeddddd
���fd
ed	d
ddd
���fgZded	dddd���fded	dddd
���fgZdxZZ	dZ
d	S)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedc�@�td���}|�dd���|�ddd�	��|�|�
��}|�ddd
���|�ddd�	��|�ddd�	��|S)Nr<r	r�rOr�r�r�rRrAr�r�rjrWrUr�rXr�rYr<r3s    rrz<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parser�s���+��8�8�8�����C�h��/�/�/����D��H��E�E�E��3�3�X�3�F�F��
���3�c���9�9�9�
���4��8��D�D�D�
���4��8��D�D�D��
r)zX A -brZz-c X AzX ArIFrr[zX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a
        positional arguments:
          x           x help
          a           a help

        options:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        rKr-rrrbrb�s���������-�,�,�H�	���S�E�U�c�U�;�;�;�<�	���d�d�e�s�e�<�<�<�=�	���d�e�t�s�e�<�<�<�=�	�2�2��u����=�=�=�>�	�B�B����#��>�>�>�?��I�

�b�b�4�5�E�S�E�:�:�:�;�	���d�e�u��t�<�<�<�=�#��
5���1��D�D�Drrbc�0�eZdZd�ZdZdZdZdZdZdZ	dZ
dS)�TestMutuallyExclusiveNestedc��td���}|�|���}|�d��|�d��tj��5tjdt��|�|���}ddd��n#1swxYwY|�d��|�d��tj��5tjdt��|�|���}ddd��n#1swxYwY|�d	��|�d
��|S)Nr<r	r�rlr�r�r�z-dz-er�)r�r�r��warnings�catch_warnings�simplefilter�DeprecationWarning)rr�r�r�r�group3s      rrz&TestMutuallyExclusiveNested.get_parser�s���+��8�8�8���3�3�X�3�F�F��
���4� � � �
���4� � � �
�
$�
&�
&�	K�	K��!�(�,>�?�?�?��7�7��7�J�J�F�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	���D�!�!�!����D�!�!�!�
�
$�
&�
&�	L�	L��!�(�,>�?�?�?��8�8�(�8�K�K�F�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	���D�!�!�!����D�!�!�!��
s$�$1B!�!B%�(B%�)1D&�&D*�-D*zO        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�
        options:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)rrr rr"r'rBrrrr r-rrrere�sP���������"����
�D�'+�#�"&��'+�$�#'� � � rrec� ��eZdZd�fd�	Z�xZS)�MEPBaseNc���tt|���|���}t|jd|g���}|S)Nr�F)r>r3r�)r
rmrr�r>)rr�r�r�rs    �rrzMEPBase.get_parser(sJ����w��%�%�0�0�(�0�C�C��+���u�v�h�@�@�@���
rr1)rrr rr!r"s@rrmrm&s=����������������rrmc��eZdZdS)�&TestMutuallyExclusiveGroupErrorsParentN�rrr r-rrrprp/��������Drrpc��eZdZdS)�!TestMutuallyExclusiveSimpleParentNrqr-rrrtrt4rrrrtc��eZdZdS)�TestMutuallyExclusiveLongParentNrqr-rrrvrv9rrrrvc��eZdZdS)�*TestMutuallyExclusiveFirstSuppressedParentNrqr-rrrxrx>rrrrxc��eZdZdS)�)TestMutuallyExclusiveManySuppressedParentNrqr-rrrzrzCrrrrzc��eZdZdS)�0TestMutuallyExclusiveOptionalAndPositionalParentNrqr-rrr|r|Hrrrr|c��eZdZdS)�)TestMutuallyExclusiveOptionalsMixedParentNrqr-rrr~r~Mrrrr~c��eZdZdS)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNrqr-rrr�r�Rrrrr�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestSetDefaultsc
��t��}|�d���|�dd���|�tddd���|�g����|�tddd���|�gt������|�tddd���|�gtd�������|�tddd���|�gtdd�	������dS)
Nr�r�r,r\)rEr�rDr-rr)r�r��r��set_defaultsr�r]r�r-s  r�test_set_defaults_no_argsz)TestSetDefaults.test_set_defaults_no_args\sS��+�-�-�����e��$�$�$����e�q��)�)�)�����e�u��2�2�2��*�*�2�.�.�	0�	0�	0�����e�u��2�2�2��*�*�2�r�t�t�4�4�	6�	6�	6�����e�u��2�2�2��*�*�2�r�E�{�{�{�;�;�	=�	=�	=�����e�u��2�2�2��*�*�2�r�E�Q�/?�/?�/?�@�@�	B�	B�	B�	B�	Brc	��t��}|�dd���|�dd���|�t	dd���|�g����|�t	dd���|�gt	������|�t	dd���|�gt	d�������|�t	d	d���|�d
�������|�t	d	d���|�d
���t	������|�t	d	d���|�d
���t	d�������dS)Nr�r,rWr��xfooxrUr-r�r�r�)r�r�r�r�r]r�r�r-s  r�test_set_defaults_with_argsz+TestSetDefaults.test_set_defaults_with_argsis���+�-�-�����e�u��-�-�-����D�'��2�2�2�����g��/�/�/��*�*�2�.�.�	0�	0�	0�����g��/�/�/��*�*�2�r�t�t�4�4�	6�	6�	6�����e�u�-�-�-��*�*�2�r�E�{�{�{�;�;�	=�	=�	=�����c�U�+�+�+��*�*�6�<�<�>�>�:�:�	<�	<�	<�����c�U�+�+�+��*�*�6�<�<�>�>�2�4�4�@�@�	B�	B�	B�����c�U�+�+�+��*�*�6�<�<�>�>�2��;�;�;�G�G�	I�	I�	I�	I�	Irc�`�t��}|�d���|���}|�d��}|�d���|�tdd���|�d�������dS)Nr�r�r�r,r�rW)r�r�rWrYr�r]r�r�)rr�r\�parser_as    r�test_set_defaults_subparsersz,TestSetDefaults.test_set_defaults_subparserszs���+�-�-�����e��$�$�$��*�*�,�,�
��(�(��-�-�������&�&�&�����e�u�-�-�-��*�*�3�9�9�;�;�7�7�	9�	9�	9�	9�	9rc���td���}|�d���t|g���}|�td���|�g����dS)NFr�r�r�r�r�)rr�r�s   r�test_set_defaults_parentsz)TestSetDefaults.test_set_defaults_parents�sm��+�U�;�;�;�����e��$�$�$�+�V�H�=�=�=������e����f�&7�&7��&;�&;�<�<�<�<�<rc�B�tj��}|����d��}|�d���|�d���|�t
d���|�dg����dS)Nrr\r�rr)r�r�rWrYr�r�r]r�)rr��xparsers   r�)test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparser�s����(�*�*���'�'�)�)�4�4�S�9�9�������"�"�"������#�#�#���������F�$5�$5�s�e�$<�$<�=�=�=�=�=rc�$�t��}|�dddd���|�d��|�dd�	��|�d
d���|�d
dd���|�t	dddd���|�g����|�dddd���|�t	dddd���|�g����dS)N�WrrJrGrqrCr��XXrUrErjr]r��ZZrl�WW�YY)r�r�r�r�r]r�r-s  r�&test_set_defaults_same_as_add_argumentz6TestSetDefaults.test_set_defaults_same_as_add_argument�s.��+�-�-�����c�S�C�3��7�7�7����D�!�!�!����D�$��/�/�/����C�s��+�+�+����C�s�D��9�9�9�	
����c�T�S�D�9�9�9��*�*�2�.�.�	0�	0�	0�	���d�c�T�S��9�9�9�����d�c�T�S�9�9�9��*�*�2�.�.�	0�	0�	0�	0�	0rc�N�t��}|�dddd���|�d��}|�d��|�dd	�
��|�dd�
��|�ddd���|�tdd	dd���|�g����|�dddd���|�tdddd���|�g����dS)Nr�rrJrGrqr�rCr�r�rUrErjr]r�r�rlr�r�)r�r�r�r�r�r]r�r
s   r�,test_set_defaults_same_as_add_argument_groupz<TestSetDefaults.test_set_defaults_same_as_add_argument_group�sA��+�-�-�����c�S�C�3��7�7�7��)�)�%�0�0��
���4� � � �
���4���.�.�.�
���3�c��*�*�*�
���3�c�4��8�8�8�	
����c�T�S�D�9�9�9��*�*�2�.�.�	0�	0�	0�	���d�c�T�S��9�9�9�����d�c�T�S�9�9�9��*�*�2�.�.�	0�	0�	0�	0�	0rN)
rrr r�r�r�r�r�r�r�r-rrr�r�Zs�������B�B�B�I�I�I�"9�9�9�=�=�=�>�>�>�0�0�0�"0�0�0�0�0rr�c��eZdZd�ZdS)�TestGetDefaultc�8�t��}|�|�d����|�|�d����|�d��|�|�d����|�|�d����|�dtd���|�|�d����|�d|�d����|�d���|�d|�d����|�d|�d����dS)	Nr�r,r�rr�r�rr�)r�r��get_defaultr�rtr�r�r-s  r�test_get_defaultzTestGetDefault.test_get_default�so��+�-�-�����&�,�,�U�3�3�4�4�4����&�,�,�U�3�3�4�4�4����G�$�$�$����&�,�,�U�3�3�4�4�4����&�,�,�U�3�3�4�4�4����G�#�r��:�:�:����&�,�,�U�3�3�4�4�4�����V�/�/��6�6�7�7�7������)�)�)�����6�#5�#5�e�#<�#<�=�=�=�����V�/�/��6�6�7�7�7�7�7rN)rrr r�r-rrr�r��s#������8�8�8�8�8rr�c��eZdZd�Zd�ZdS)�TestNamespaceContainsSimplec��tj��}|�d|��|�d|��dS)Nrr�)r��	Namespace�assertNotIn�r�nss  r�
test_emptyz&TestNamespaceContainsSimple.test_empty�sB��
�
�
!�
!������R� � � �����b�!�!�!�!�!rc��tjdd���}|�d|��|�d|��|�d|��|�d|��|�d|��dS)	Nr\rrrWrr�rE�xxr�)r�r�r�r�r�s  r�test_non_emptyz*TestNamespaceContainsSimple.test_non_empty�s���
�
�!�q�
)�
)�
)������R� � � ��
�
�c�2�����
�
�c�2��������r�"�"�"�����b�!�!�!�!�!rN)rrr r�r�r-rrr�r��s2������"�"�"�
"�"�"�"�"rr�c��eZdZd�ZdS)�TestHelpFormattingMetaclassc�f�|dkrdSGd�dt��}dD]\}}||||���dS)N�HelpTestCasec�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc���||_||_|j|j|jfD]=}|j�d|��}|fd�}	||_n#t$rYnwxYwt|||���>dS)Nr�c��||��dSr1r-r�s  r�test_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper�r�r)�func_suffix�std_name�test_format�
test_print�test_print_filerr�r�)r�
test_classr�r�r�r�r�s       rrz?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__�s���#.�� � (��
�"&�"2�"&�/�"&�"6�"8�A�A�I�,5�+=�+=�+=�{�{� K�I�5>�(�(�(�(��09��-�-��$�����������J�	�<�@�@�@�@�A�As�?�
A�Ac���tj|jji|jj��}t|dg��D]}|j|ji|j���t|dg��}|D]8\}}|j|ji|j��}|D]}|j|ji|j����9t|dg��}|r0|���}	|D]}
|	j	|
ji|
j���|S)Nr��argument_group_signatures�subparsers_signatures)
r�r�r�rXrYr�r�r�rWrY)rr�r��argument_sig�
group_sigs�	group_sig�
argument_sigsr��subparsers_sigsr\�
subparser_sigs           rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parser�s���!�0��,�1�6��-�4�6�6��%,�F�4I�2�$N�$N�?�?�L�'�F�'��):�?�*6�*=�?�?�?�?�$�V�-H�"�M�M�
�0:�B�B�,�I�}�5�F�5�y�~�J�8A�8H�J�J�E�(5�B�B��*��*�L�,=�B�-9�-@�B�B�B�B�B�#*�&�2I�2�"N�"N��"�G�!'�!6�!6�!8�!8�J�)8�G�G�
�-�
�-�}�/A�G�1>�1E�G�G�G�G��
rc��t||j��}tj|��}d|_|�||��dSr1)r�r�r�r�r�r�)rr��parser_text�
expected_texts    r�_testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._test
sF�� '���0@� A� A�
� (��
� >� >�
�!%����"�"�=�+�>�>�>�>�>rc��|�|��}t|d|jz��}|�||����dS)Nz	format_%s)r�r�r�r�)rr�r�r�s    rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_format
sL���)�)�&�1�1�� ���t�7G�)G�H�H���
�
�6�6�6�8�8�,�,�,�,�,rc���|�|��}t|d|jz��}tt|j��}tt|jt
����	|��tt|j�����}tt|j|��n #tt|j|��wxYw|�||��dS�Nzprint_%s)	r�r�r�r~r�r�rrr�)rr�r��print_�
old_streamr�s      rr�zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print
s����)�)�&�1�1�� ���d�6F�)F�G�G��$�S�$�-�8�8�
���T�]�K�M�M�:�:�:�<��F�H�H�H�")�#�t�}�"=�"=�"F�"F�"H�"H�K��C���
�;�;�;�;��G�C���
�;�;�;�;�����
�
�6�;�/�/�/�/�/s�06C�Cc���|�|��}t|d|jz��}t��}||��|���}|�||��dSr�)r�r�r�rrr�)rr�r�r��sfiler�s      rr�zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file(
sk���)�)�&�1�1�� ���d�6F�)F�G�G��#�
�
����u�
�
�
�#�n�n�.�.���
�
�6�;�/�/�/�/�/rN)	rrr rr�r�r�r�r�r-rrr�r��sq������
A�
A�
A�"
�
�
�,
?�
?�
?�
-�
-�
-�


0�

0�

0�
0�
0�
0�
0�
0rr�))�usagerx)rBrx)r�)r�rFr�r�r�r�r�s       rrz$TestHelpFormattingMetaclass.__init__�s|���>�!�!��F�F	0�F	0�F	0�F	0�F	0�v�F	0�F	0�F	0�R&:�	1�	1�!�K���H�S�+�x�0�0�0�0�	1�	1rNr[r-rrr�r��s(������O1�O1�O1�O1�O1rr�r�c���eZdZ	eddd���Zedddd�	��ed
dd�
��edd���edd���edd���gZgZdZedzZdZ	dS)�TestHelpBiggerOptionalsr<�DESCRIPTION�EPILOG�r>r?�epilogrHr[r\�0.1r^r�r��X HELPrA�--y�Y HELPr�r��FOO HELPr,�BAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        aW
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        EPILOG
    �        0.1
        N�
rrr rVr�r�r�r�rBr\r-rrr�r�9
s�������E��s��M�"*�,�,�,��	��D�+�i��?�?�?���D��H�5�5�5���E��!�!�!���E�
�#�#�#���E�
�#�#�#���!#��
�E����D� �G�G�Grr�c�\�eZdZ	d�ZejZejZejZdZedzZ	ej
Z
dS)�TestShortColumnsc�~�|�tj����}|�dd��dS)Nr'r2)r(rr)r-r*s  rr,zTestShortColumns.setUpc
s8�����	� =� ?� ?�@�@�����	�4� � � � � rz�        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a�
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

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

        EPILOG
    N)rrr r,r�r�r�r�r�rBr\r-rrr�r�]
sa�������
!�!�!�#:�"J��"9�"M��"9�"S��
�E����D�:#:�"A�G�G�Grr�c��eZdZ	eddd���Zedddd�	��ed
dd�
��edd���edd���edd���gZedd���edd���eddd���gfgZdZedzZd Z	d!S)"�TestHelpBiggerOptionalGroupsr<r�r�r�rHr[r\r�r^r�r�r�rAr�r�r�r�r�r,r�zGROUP TITLEzGROUP DESCRIPTIONrKr-zBAZ HELPr�r|zZ HELPrUzN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a�
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        GROUP TITLE:
          GROUP DESCRIPTION

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

        EPILOG
    r�Nr�r-rrr�r��
s������E��s��M�"*�,�,�,��	��D�+�i��?�?�?���D��H�5�5�5���E��!�!�!���E�
�#�#�#���E�
�#�#�#���

��]�(;�	<�	<�	<��C��J�'�'�'��C��C�h�/�/�/�?1�	2�!��

�E����D�,�G�G�Grr�c��eZdZ	edd���Zeddd���edd	�
��edd�
��ed
d�
��gZgZdZedzZdZ	dS)�TestHelpBiggerPositionals�USAGEr��r�r?r�r�r�rAr�r�r��ekiekiekifekangzEKI HELPr,r��        usage: USAGE
        a
        DESCRIPTION

        positional arguments:
          ekiekiekifekang  EKI HELP
          bar              BAR HELP

        options:
          -h, --help       show this help message and exit
          -x               X HELP
          --y Y            Y HELP
        rNr�r-rrr�r��
s�������>��s��m�D�D�D����D��H�5�5�5���E��!�!�!����J�/�/�/���E�
�#�#�#�	��!#��
�E����D��G�G�Grr�c��eZdZ	edd���Zeddd���edd	d
���gZedd�
��eddd���gfgZdZedzZdZ	dS)�TestHelpReformattingr<ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrCr�r�zoddly
    formatted -x help�rGrBrEr�z
normal y helprIz'
    oddly formatted group

descriptionrKrlr�z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesrA�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

        options:
          -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
        rNr�r-rrr�r��
s�������H��s�
�)�*�*�*��	��D�$�&=�	>�	>�	>���C��_�5�5�5���

��W�#0�
1�
1�
1��#�d�<�$�%�%�%�
&�		'�
!��
�E����D�(�G�G�Grr�c��eZdZ	edd���Zeddd���edd	d
���gZed��edd
d���gfgZdZedzZdZ	dS)�TestHelpWrappingShortNamesr<zZD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DrCr�r�zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXr�rEr��dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASrlr�zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHArAr�a�
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

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

        options:
          -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
        rNr�r-rrr�r�s�������H��s��[�A�A�A����D�$�]�3�3�3���C��\�2�2�2���


��X����C��\��@�@�@�B�	C�!��
�E����D�,�G�G�Grr�c���eZdZ	edd���Zedddd���ed	d
d���ed
dd���gZed��eddd���eddd���gfgZdZedzZdZ	dS)�TestHelpWrappingLongNamesr�zZD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD Dr�rHr[r\zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr^r��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHr�rE�yyyyyyyyyyyyyyyyyyyyyyyyyr�r�rl�AAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHr��zzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHr�ag
        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

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

        ALPHAS:
          -a AAAAAAAAAAAAAAAAAAAAAAAAA
                                AH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH
                                AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH
          zzzzzzzzzzzzzzzzzzzzzzzzz
                                ZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH
                                ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZH
        zs        V VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV
        VV VV VV VV V
        Nr�r-rrr�r�=s�������F��s��z�B�B�B����D�+�i��D�D�D���D�(��6�6�6���C���5�5�5���

��X����C��h�\�:�:�:��C��X�L�9�9�9�;�	<�!��

�E����D�<�G�G�Grr�c���eZdZ	ed���Zeddd���eddd	���ed
d
���eddd
���eddd���eddej���edddej���edddej���edejejd���g	Zed��ed dd!���ed"d#d$���ed%d%d���ed&d&d���gfgZ	d'Z
e
d(zZd)Zd*S)+�
TestHelpUsager<r	rCr|rIrUr�rwr�r�r�rfrr)rBr^rgrjr�zWhether to foo)rBr�rzWhether to barT)rBrVr�r�z--foobarz--barfoor�z--bazzzBazz!)r�rVrBr�r�rEr�rar�rr�a/        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 ...]
        az
        positional arguments:
          a                     a
          b                     b
          c                     c

        options:
          -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
          -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)
rrr rVr�r�r�rTr�r�r�rBr\r-rrr�r�ss�������#��s��'�'�'����D��#�&�&�&���D��#�&�&�&���C�c������C�c��#�#�#���C�c��%�%�%���G�*�8�3Q�R�R�R���G�*�D�$�:�	<�	<�	<���D�*�j��1O�P�P�P���H�X�;�&�/�g�	?�	?�	?���

��W����C��C�c�*�*�*��C��A�C�(�(�(��C��#�S�)�)�)��C��#�S�)�)�)�	
�	�!��
�E����D�,�G�G�Grr�c�n�eZdZed���Zedd���eddd���gZd	Zed
zZdZdS)
�TestHelpUsageWithParenthesesr<r	�
positionalz(example) positional�rGroz
--optionalz{1 (option A), 2 (option B)}zX        usage: PROG [-h] [-p {1 (option A), 2 (option B)}] (example) positional
        z�
        positional arguments:
          (example) positional

        options:
          -h, --help            show this help message and exit
          -p {1 (option A), 2 (option B)}, --optional {1 (option A), 2 (option B)}
        rN)	rrr rVr�r�r�rBr\r-rrr�r��sp�������s��'�'�'����L�"8�9�9�9���D�,�(F�G�G�G���

�E����D��G�G�Grr�c���eZdZ	edd���ZgZed��edd���edd���gfed	��ed
d
���edd���gfgZd
ZedzZdZ	dS)�TestHelpOnlyUserGroupsr<F�r>r3�xxxxr�r�r�r��yyyyrfr�rEz.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        rNr�r-rrr�r��s�������#��s���7�7�7����	��V����C��3�����C��#����
�	�

��V����C��#�����C��3����
�	�	!��
�E��	�	�D��G�G�Grr�c��eZdZ	ed���Zedd���edd���ed��ed	��gZgZd
ZedzZdZ	d
S)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr	rCr�r�r�rr�rfzz        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w W] [-x X] a b
        z�
        positional arguments:
          a
          b

        options:
          -h, --help  show this help message and exit
          -w W
          -x X
        rNr�r-rrrr�s�������4��s��)�)�)����D�#������D�#������C�����C���	��!#��
�E��
�
�D��G�G�Grrc���eZdZ	ed���Zedd���edd���edd	���ed
d���ed��ed
��gZgZdZedzZdZ	dS)� TestHelpUsageLongProgOptionsWraprr	rC�WWWWWWWWWWWWWWWWWWWWWWWWWr�r�r�r��YYYYYYYYYYYYYYYYYYYYYYYYYr��ZZZZZZZZZZZZZZZZZZZZZZZZZr�rfa        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
               [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
               a b
        a-
        positional arguments:
          a
          b

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNr�r-rrrr�s�������K��s��)�)�)����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���C�����C���
��!#��
�E����D��G�G�Grrc��eZdZ	edd���Zed��ed��ed��gZgZdZedzZd	Z	d
S)�$TestHelpUsageLongProgPositionalsWraprFr��aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNr�r-rrr
r
"sv������M��s��5�9�9�9����H�
�
���H�
�
���H�
�
���
!#��
�E�
���D��G�G�Grr
c	���eZdZ	ed���Zedd���edd���edd	���ed
d���ed��ed
��ed��gZgZdZedzZdZ	dS)�TestHelpUsageOptionalsWrapr<r	rCrr�r�r�r�rr�rr�rfrgz�        usage: PROG [-h] [-w WWWWWWWWWWWWWWWWWWWWWWWWW] [-x XXXXXXXXXXXXXXXXXXXXXXXXX]
                    [-y YYYYYYYYYYYYYYYYYYYYYYYYY] [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    a b c
        a9
        positional arguments:
          a
          b
          c

        options:
          -h, --help            show this help message and exit
          -w WWWWWWWWWWWWWWWWWWWWWWWWW
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNr�r-rrrr;s�������6��s��'�'�'����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���C�����C�����C�����!#��
�E��
�
�D��G�G�Grrc��eZdZ	ed���Zed��ed��ed��ed��ed��ed��gZgZd	Zed
zZdZ	dS)
�TestHelpUsagePositionalsWrapr<r	r�r�r�rrr
z�        usage: PROG [-h] [-x X] [-y Y] [-z Z]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        a
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x X
          -y Y
          -z Z
        rNr�r-rrrras�������8��s��'�'�'����D�	�	���D�	�	���D�	�	���H�
�
���H�
�
���H�
�
�
��!#��
�E�
���D��G�G�Grrc���eZdZ	ed���Zedd���edd���edd	���ed
��ed��ed��gZgZd
ZedzZdZ	dS)�%TestHelpUsageOptionalsPositionalsWrapr<r	r�r�r�r�rr�rrrr
a        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
                    aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        aZ
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc

        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNr�r-rrrr�s�������F��s��'�'�'����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���H�
�
���H�
�
���H�
�
�
��!#��
�E����D��G�G�Grrc��eZdZ	ed���Zedd���edd���edd	���gZgZd
ZedzZdZ	d
S)�TestHelpUsageOptionalsOnlyWrapr<r	r�r�r�r�rr�rz�        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
        z�
        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        rNr�r-rrrr�s�������J��s��'�'�'����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���
!#��
�E�
���D��G�G�Grrc��eZdZ	edd���Zed��ed��ed��gZgZdZedzZd	Z	d
S)� TestHelpUsagePositionalsOnlyWrapr<Fr�rrr
z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        rrNr�r-rrrr�sv������L��s���7�7�7����H�
�
���H�
�
���H�
�
���
!#��
�E����D��G�G�Grrc
�2�eZdZ	ed���Zeded���edddd	d
���edd
d���eddddgdd���edd���eddd���gZed��edd ���ed!d"d#���gfgZd$Zed%zZ	d&Z
d'S)(�TestHelpVariableExpansionr<r	r�z"x %(prog)s %(default)s %(type)s %%rEr�r�r��XXXz y %(prog)s %(default)s %(const)s)r�rVr�rBr�rz$foo %(prog)s %(default)s %(choices)srPrr-r\rr�BBBz!bar %(prog)s %(default)s %(dest)s)rVr�rGrBrkzspam %(prog)s %(default)sr�rrOzbadger %(prog)s %(default)s)rVrBr�rlza %(prog)s %(default)sr�r�zb %(prog)s %(default)szw        usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
                    spam badger
        a�
        positional arguments:
          spam           spam PROG None
          badger         badger PROG 0.5

        options:
          -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)rrr rVr�rtr�r�r�rBr\r-rrrr�s2������D��s��'�'�'����D�s�5�	7�	7�	7���D���%�3�	5�	5�	5���G�U�7�	9�	9�	9���G�U�Q��F�E�4�	6�	6�	6���F�4�5�5�5���H�c�(E�F�F�F���

��W����C��3�4�4�4��C��b�'?�@�@�@�
�	�!���E����D�"�G�G�Grrc�D�eZdZ	edd���ZgZgZdZedzZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedr<z%(prog)s FOO�r>r�z         usage: PROG FOO
        rJrNr�r-rrrrsQ������J��s��n�=�=�=���� "���E����D�
�G�G�Grrc�>�eZdZ	edd���ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsr<Fr�z        usage: PROG
        rNr�r-rrr!r!sE������E��s���7�7�7���� "���E��D��G�G�Grr!c�x�eZdZ	edej���Zedd���edd���gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsager<rr�r@r�rk�	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrr rVr�rTr�r�r�rBr�r\r-rrr#r#%sp������=��s��h�.?�@�@�@����G�*�%�%�%���F��%�%�%���!#���D�
�E��G�G�Grr#c�~�eZdZ	edd���Zedej���edd���gZgZdZ	e	d	zZ
d
ZdS)�TestHelpSuppressOptionalr<Fr�r�r�rkr$z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN�rrr rVr�r�rTr�r�r�rBr\r-rrr&r&:s|������I��s���7�7�7����G�(�+�,�,�,���F��%�%�%���!#��
�E����D�
�G�G�Grr&c��eZdZ	ed���Zedd���edd���gZed��ed	ej���gfgZd
Z	e	dzZ
dZd
S)�TestHelpSuppressOptionalGroupr<r	r�r@r�rkr$r�r�2        usage: PROG [-h] [--foo FOO] spam
        ��
        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrr rVr�r�r�rTr�r�rBr\r-rrr)r)Ns�������F��s��'�'�'����G�*�%�%�%���F��%�%�%���


��W�����G�(�*;�<�<�<�=�>�!��
�E����D��G�G�Grr)c�|�eZdZ	ed���Zedd���edej���gZgZdZ	e	dzZ
d	Zd
S)�TestHelpSuppressPositionalr<r	r�r@r�rkz-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNr'r-rrr-r-hsz������K��s��'�'�'����G�*�%�%�%���F��*�+�+�+���!#��
�E����D��G�G�Grr-c�\�eZdZ	ed���Zeddd���gZgZdZedzZd	Z	d
S)�TestHelpRequiredOptionalr<r	r�Tr@)r�rBz+        usage: PROG [-h] --foo FOO
        r.rNr�r-rrr0r0}sg������8��s��'�'�'����G�d��4�4�4���!#��
�E����D��G�G�Grr0c�z�eZdZ	eddd���Zeddd���ed	d
d���gZgZd
ZedzZdZ	dS)�TestHelpAlternatePrefixCharsr<z^;F)r>r2r3z^^foor�r@rAz;bz;;barrDr�z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNr�r-rrr2r2�s������D��s��T�E�J�J�J����G�L�z�:�:�:���D�'�
�+�+�+���!#��
�E����D��G�G�Grr2c�t�eZdZ	edd���Zedd���edd���gZgZd	Zed
zZdZ	dS)
�TestHelpNoHelpOptionalr<Fr�r�r@r�rkr$z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        rNr�r-rrr4r4�sy������G��s���7�7�7����G�*�%�%�%���F��%�%�%���!#��
�E����D��G�G�Grr4c�j�eZdZ	ed���Zed��ed��gZgZdZedzZdZ	dS)	�TestHelpNoner<r	r�rkr*z�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rNr�r-rrr6r6�si������;��s��'�'�'����G�����F�����!#��
�E����D��G�G�Grr6c	��eZdZ	ed���Zedddd���edd	d
d���edd
dd���edddd���gZgZdZedzZdZ	dS)�TestHelpTupleMetavarr<r	rCrIr|)�W1�W2)rBr^rGr�r�rw)�X1�X2r�rEra)�Y1�Y2�Y3r�r�rj)�Z1z]        usage: PROG [-h] [-w W1 [W2 ...]] [-x [X1 [X2 ...]]] [-y Y1 Y2 Y3] [-z [Z1]]
        z�
        options:
          -h, --help        show this help message and exit
          -w W1 [W2 ...]    w
          -x [X1 [X2 ...]]  x
          -y Y1 Y2 Y3       y
          -z [Z1]           z
        rNr�r-rrr8r8�s�������,��s��'�'�'����D�s�#�|�<�<�<���D�s�#�|�<�<�<���D�s�!�-?�@�@�@���D�s�#�x�8�8�8�	��!#��
�E����D��G�G�Grr8c��eZdZ	edejd���Zedd���edd���gZed	d
���edd
���gfgZdZ	e	dzZ
dZdS)�TestHelpRawTextr<�7Keep the formatting
    exactly as it is written

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

        here

        positional arguments:
          spam        spam help

        options:
          -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)rrr rVr��RawTextHelpFormatterr�r�r�r�rBr\r-rrrBrB�s�������'��s�
�X�%B������	��G�1�	2�	2�	2���F��%�%�%���

��W�#B�
C�
C�
C��#�g�J�
'�
'�
'�	(�	*�!��
�E����D�,�G�G�GrrBc��eZdZ	edejd���Zedd���edd���gZed	d
���edd
���gfgZdZ	e	dzZ
dZdS)�TestHelpRawDescriptionr<rCrDr�z4  foo help should not
    retain this odd formattingr�rkr$rIrFrKrrDrGa�
        Keep the formatting
            exactly as it is written

        here

        positional arguments:
          spam        spam help

        options:
          -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)rrr rVr��RawDescriptionHelpFormatterr�r�r�r�rBr\r-rrrJrJ!s�������'��s�
�X�%I������	��G�;�	<�	<�	<���F��%�%�%���

��W�#B�
C�
C�
C��#�g�J�
'�
'�
'�	(�	*�!��
�E����D�*�G�G�GrrJc�^�eZdZ	edejd���Zedd���eddd	�
��edejdd
���edejdej���eddd���edd���edddd���gZ	edd���ede
dd� ��gfgZd!Zed"zZ
d#Zd$S)%�TestHelpArgumentDefaultsr<r?rDr�z)foo help - oh and by the way, %(default)sr�rr�rDrAz--tazzWhether to taz itT)r�rBrVz--corgezWhether to corge itz--quuxzSet the quuxr�)rBrVrkr$rrj�woodenzbadger helprRrIrKrLr1)rjrVrBz�        usage: PROG [-h] [--foo FOO] [--bar] [--taz | --no-taz] [--corge | --no-corge]
                    [--quux QUUX] [--baz BAZ]
                    spam [badger]
        ay
        description

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

        options:
          -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)
          --corge, --no-corge  Whether to corge it
          --quux QUUX          Set the quux (default: 42)

        title:
          description

          --baz BAZ            baz help (default: 42)
        rN)rrr rVr��ArgumentDefaultsHelpFormatterr�r�rTr�rtr�r�rBr\r-rrrMrMQs@������0��s�
�X�%K�!�#�#�#��
	��G�E�F�F�F���G�L�z�:�:�:���G�H�:�$�d�	4�	4�	4���I�h�<�&��0A�	C�	C�	C���H�>�2�6�6�6���F��%�%�%���H�C��
�F�F�F�
��

��W�-�	0�	0�	0�

�#�g�C��*�
=�
=�
=�	>�	@�!��
�E�
���D�*�G�G�GrrMc�`�eZdZ	edd���Zedddd���gZgZd	Zed
zZdZ	dS)
�TestHelpVersionActionr<r?rC�-Vr[r\z3.6r^z&        usage: PROG [-h] [-V]
        z�
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        rNr�r-rrrQrQ�sg������6��s��M�B�B�B���3�t�[��E�R�R�R�S�� "��
�E����D��G�G�GrrQc��eZdZ	ed���Zeddddej���edd	�
��edd�
��gZgZd
Z	e	dzZ
dS)�TestHelpVersionActionSuppressr<r	rHr[r\r])r�r\rBr�r@r�rkr$r*r+N)rrr rVr�r�rTr�r�r�rBr-rrrTrT�s�������M��s��'�'�'����D�+�i���"�	$�	$�	$���G�*�%�%�%���F��%�%�%�	��!#��
�E����D�D�DrrTc�t�eZdZ	edd���Zedddd���gZd	�d
D��ZdZedzZd
Z	dS)�TestHelpSubparsersOrderingr<�display some subcommandsrCrHr[r\r�r^c�.�g|]}t|�����S)r��rV)rcrFs  rrez%TestHelpSubparsersOrdering.<listcomp>�s6��D�D�D�!%�!�d�^�^�^�D�D�Dr)r�rfrgrr��6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z�
        display some subcommands

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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r�N)
rrr rVr�r�r�r�rBr\r-rrrVrV�s�������?��s��'A�C�C�C���3�t�[��E�R�R�R�S��D�D�)B�D�D�D��
�E��
�
�D��G�G�GrrVc�x�eZdZ	edd���Zedddd���gZd	Zd
�eD��ZdZedzZ	d
Z
dS)�"TestHelpSubparsersWithHelpOrderingr<rWrCrHr[r\r�r^))r�za subcommand help)rfzb subcommand help)rgzc subcommand help)rzd subcommand help)r�ze subcommand helpc�6�g|]\}}t||�����S))rFrBrY)rcrFrBs   rrez-TestHelpSubparsersWithHelpOrdering.<listcomp>�s?��@�@�@�!+��t�!�d��6�6�6�@�@�@rrZa�
        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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r�N)rrr rVr�r��subcommand_datar�r�rBr\r-rrr\r\�s�������?��s��'A�C�C�C���3�t�[��E�R�R�R�S���O�@�@�/>�@�@�@��
�E����D�"�G�G�Grr\c��eZdZd�Zeddej���Zede���ede���ede	d	�
��gZ
gZdZedzZ
d
ZdS)�TestHelpMetavarTypeFormatterc��|Sr1r-r	s r�custom_typez(TestHelpMetavarTypeFormatter.custom_type�s���
rr<r?)r>r?rEr�rMr�r�z
SOME FLOAT)rjrGzF        usage: PROG [-h] [-b custom_type] [-c SOME FLOAT] int
        z�
        description

        positional arguments:
          int

        options:
          -h, --help      show this help message and exit
          -b custom_type
          -c SOME FLOAT
        rN)rrr rbrVr��MetavarTypeHelpFormatterr�rtrPr�r�r�rBr\r-rrr`r`�s�����������s��M�+3�+L�N�N�N���3�s��-�-�-��3�t�+�6�6�6��3�t�%��F�F�F�H��!#��
�E����D��G�G�Grr`c�j�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�ZdS)�TestInvalidArgumentConstructorsc�d�tj��}|jt|jg|�Ri|��dSr1)r�r�r�r�r��rrXrYr�s    r�assertTypeErrorz/TestInvalidArgumentConstructors.assertTypeErrorsR���(�*�*�����)�V�%8�	+��	+�	+�	+�#)�	+�	+�	+�	+�	+rc�d�tj��}|jt|jg|�Ri|��dSr1)r�r�r�r�r�rgs    r�assertValueErrorz0TestInvalidArgumentConstructors.assertValueError!sR���(�*�*�����*�f�&9�	+��	+�	+�	+�#)�	+�	+�	+�	+�	+rc��|�dd���|�dd���|�dd���|�di���dS)	Nr�)r,r�r�)�callbackr-)�
callback_args)�callback_kwargs�rhrs r�test_invalid_keyword_argumentsz>TestInvalidArgumentConstructors.test_invalid_keyword_arguments&sl�����T�t��,�,�,����T�E��2�2�2����T���4�4�4����T�2��6�6�6�6�6rc�d�|���dD]}|�|����dS)N)r�r�r�ro�rr�s  r�test_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destination,sG��������)�	0�	0�F�� � �� �/�/�/�/�	0�	0rc�Z�|�d��|�d��dS)Nrlz---�rjrs r�test_invalid_option_stringsz;TestInvalidArgumentConstructors.test_invalid_option_strings1s0�����d�#�#�#����e�$�$�$�$�$rc�z�|�dd���|�dttf���dS)Nr�rtrM)rjrtrPrs r�test_invalid_typez1TestInvalidArgumentConstructors.test_invalid_type5s>�����g�E��2�2�2����g�S�%�L��9�9�9�9�9rc��|�dd���|�dd���|�dd���tj��}|�t��5}|�dd���ddd��n#1swxYwY|�dt|j����dS)	Nr�r�r�r-r��r�r�z
store-truezunknown action)	rjr�r�r�r�r�r�r�r�r�s   r�test_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_action9s�����d�5��1�1�1����e�E��2�2�2����g�.A��B�B�B��(�*�*��
�
�
�z�
*�
*�	>�b�������=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>��
�
�&��B�L�(9�(9�:�:�:�:�:s�3B�B�Bc�:�tj��}|�d���|�t��5}|�dd���ddd��n#1swxYwY|�dt
|j����dS)Nr�rr,r-z+dest supplied twice for positional argument)r�r�r�r�r�r�r�r�r�s   r�test_multiple_destz2TestInvalidArgumentConstructors.test_multiple_destBs����(�*�*�������'�'�'�
�
�
�z�
*�
*�	3�b�����E��2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��
�
�C��"�,�'�'�	)�	)�	)�	)�	)s�A(�(A,�/A,c��dD]H}tt���td���td���fD]}|jd	d|i|����IdS)
N)r�r�r�r�r�rMr|r]�abr�r�r�)r�)rXrtrh)rr��attrss   r�test_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actionsJs~��0�	C�	C�F��C�.�.�.�$�S�/�/�/��t�,�,�,�.�
C�
C��$��$�B�B�&�B�E�B�B�B�B�
C�	C�	Crc�p�dD]2}|�dd|���|�dd|����3dS)N)r�r�r�r�r�r�rw�r^r�rorrs  r�!test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actionsQs\��<�	A�	A�F�
� � ��U�6� �B�B�B�
� � ��S�� �@�@�@�@�
	A�	Arc���dD]i}|�dd|���|�dd|���dD]4}|�dd||���|�dd||����5�jdS)	Nrzr�rr�rk)r\rwr|r�)r�r^r�ru)rr�r^s   r�#test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actions[s���)�	B�	B�F�
�!�!�$�a��!�?�?�?��!�!�&��&�!�A�A�A�'�
B�
B���%�%�d�%�,1�&�&�B�B�B��%�%�f�E�,1�&�&�B�B�B�B�
B�	B�	Brc�@�dD]}|�dd|����dS)N)r�r�r�r|r�rorrs  r�test_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actionsis?��5�	A�	A�F�
� � ��S�� �@�@�@�@�	A�	Arc��|�dd���|�ddd���|�ddtj���dS)Nrv�parsersr�r<)r�r>)r�r�)rhr�r�rs r�"test_parsers_action_missing_paramszBTestInvalidArgumentConstructors.test_parsers_action_missing_paramsosl�����Y�y��9�9�9����Y�y�v��F�F�F����Y�y�*2�*A�	�	C�	C�	C�	C�	Crc�4�|�dd���dS)Nr�Tr�rors r�test_required_positionalz8TestInvalidArgumentConstructors.test_required_positionalus!�����U�T��2�2�2�2�2rc���Gd�dt���G�fd�dt��}tj��}|��|jd|�����|��|jd|�����dS)Nc��eZdZdS)�ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNrqr-rr�Successr�zs�������Drr�c�$��eZdZ	d�fd�	Zd�ZdS)�HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFc�@��|dkr|�ur|�ur����dSdSdS)Nrkr-)r�option_stringsrr�rVr�r�s      �rrzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__sB����6�>�>���'�'�"�g�-�-�")�'�)�)�O�"�>�'�'�-�-rc��dSr1r-rZs   rrzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__�s���rN)F)rrr rr)r�s�rr#r�}sG�������#(�	
,�	
,�	
,�	
,�	
,�	
,�
�
�
�
�
rr#rH)r�rVr�rk)rvr�r�r�r�r�)rr#r�r�s   @r�test_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_actionxs����	�	�	�	�	�i�	�	�	�	�	�	�	�	�	�	�V�	�	�	� �(�*�*�����'�6�#6��!'���	�	I�	I�	I����'�6�#6��!'���	�	I�	I�	I�	I�	IrN)rrr rhrjrprsrvrxr{r}r�r�r�r�r�r�r�r-rrreres������7�+�+�+�
+�+�+�
7�7�7�0�0�0�
%�%�%�:�:�:�;�;�;�)�)�)�C�C�C�A�A�A�B�B�B�A�A�A�C�C�C�3�3�3�I�I�I�I�Irrec��eZdZd�Zd�ZdS)�TestActionsReturnedc�P�tj��}|�d��}|�|jd��|�dd��}|�|jd��|�dd��}|�|jd��dS)	Nr�r�r�rr,r�r�r�)r�r�r�r�r�rr�r�s   rrszTestActionsReturned.test_dest�s����(�*�*���$�$�W�-�-�������e�,�,�,��$�$�T�7�3�3�������e�,�,�,��$�$�T�4�0�0�������c�*�*�*�*�*rc�4�tj��}|�ddddtddgddd	�
�	�	}|�|jd��|�|jd��|�|jd��|�|jt��|�|j	ddg��|�|j
d��|�|jd��|�|jd	��dS)Nr�rjr�rpr\rrrO�BARr-)r^r�rVrjr�rBrGr)
r�r�r�rtr�r^r�rVrjr�rBrGrr�s   r�	test_misczTestActionsReturned.test_misc�s���(�*�*���$�$�W�C�r�-/�c�A�q�6�*/��U�%�L�L��	
�����s�+�+�+������r�*�*�*�������,�,�,������c�*�*�*������!�Q��0�0�0������e�,�,�,�������/�/�/������e�,�,�,�,�,rN)rrr rsr�r-rrr�r��s2������+�+�+�-�-�-�-�-rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestConflictHandlingc�T�|�ttjd���dS)Nr�)�conflict_handler)r�r�r�r�rs r�
test_bad_typez"TestConflictHandling.test_bad_type�s3�����*�h�&=�+0�	�	2�	2�	2�	2�	2rc��tj��}|�d��|�tj|jd��|�d��|�tj|jd��dS)Nr�rH)r�r�r�r�r�r-s  r�test_conflict_errorz(TestConflictHandling.test_conflict_error�s����(�*�*�����D�!�!�!����(�0� �-�t�	5�	5�	5����H�%�%�%����(�0� �-�x�	9�	9�	9�	9�	9rc���tj}|dd���}|�dd���|�dd���|�|���tjd����|�d	d
���|�d	d���|�|���tjd
����dS)Nr<�resolve)r>r�r�zOLD Xr�zNEW Xz�            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            rH�OLD_SPAMr��NEW_SPAMz�            usage: PROG [-h] [-x X] [--spam NEW_SPAM]

            options:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )r�r�r�r�r�r�r�)rrr�s   r�test_resolve_errorz'TestConflictHandling.test_resolve_error�s���,�
����)�D�D�D�����D�w��/�/�/����D�w��/�/�/�����+�+�-�-�x��@�0�0�	�	�	�	���H�j��9�9�9����H�j��9�9�9�����+�+�-�-�x��@�0�0�	�	�	�	�	rc��tj��}|���}|�ddg���|�tj|jd��|�tj|jd��|�tj|jddg���|�tj|jddg���dS)N�fullname�aliasr�rq)r�r�rWrYr�r�)rr��sps   r�test_subparser_conflictz,TestConflictHandling.test_subparser_conflict�s����(�*�*��
�
"�
"�
$�
$��
�
�
�j�7�)�
�4�4�4����(�0��-��	5�	5�	5����(�0��-��	2�	2�	2����(�0��-��:�,�	�	H�	H�	H����(�0��-��7�)�	�	E�	E�	E�	E�	ErN)rrr r�r�r�r�r-rrr�r��sU������2�2�2�9�9�9����2E�E�E�E�Err�c�F�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�TestOptionalsHelpVersionActionsc��|�t��5}|�|�����ddd��n#1swxYwY|�|���|jj��dSr1)r�rtr�r�r�r�r�rx)rr�r�r�s    r�assertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExit�s���
�
�
�2�
3�
3�	0�r����h�n�n�.�.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�����+�+�-�-�r�|�/B�C�C�C�C�Cs�(A�A�Ac�H�|�t|j|��dSr1)r�rtr��rr�rXs   rr9z9TestOptionalsHelpVersionActions.assertArgumentParserError�s$�����-�v�/@�$�G�G�G�G�Grc���t��}|�dddd���|�|d��|�|d��|�tt
|d��dS)	NrHr[r\r]r^r8r9�format_version�r�r�r�r�r�r�r-s  r�test_versionz,TestOptionalsHelpVersionActions.test_version�sw��+�-�-�����D�+�i���O�O�O�� � ���.�.�.�� � ���2�2�2����.�'�6�;K�L�L�L�L�Lrc�(�td���}|�dddd���|�t��5}|�dg��ddd��n#1swxYwY|�d|jj��dS)	N�PPPr	rHr[r\z%(prog)s 3.5r^zPPP 3.5
�r�r�r�rtr�r�r�rxr�s   r�test_version_formatz3TestOptionalsHelpVersionActions.test_version_formats���+��7�7�7�����D�+�i���X�X�X�
�
�
�2�
3�
3�	&�r����t�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�����b�l�&9�:�:�:�:�:s�A'�'A+�.A+c���td���}|�dddd���|�|d��|�|d	��|�tt
|d
��dS)NFr�rHr[r\r]r^r8r9r�)r�r�r9r�r�r�r-s  r�test_version_no_helpz4TestOptionalsHelpVersionActions.test_version_no_helps|��+�U�;�;�;�����D�+�i���O�O�O��&�&�v�t�4�4�4��&�&�v�x�8�8�8����.�'�6�;K�L�L�L�L�Lrc�&�td���}|�ddd���|�t��5}|�dg��ddd��n#1swxYwY|�d|jj��dS)Nrr	rRr\z%(prog)s 3.7r^zXXX 3.7
r�r�s   r�test_version_actionz3TestOptionalsHelpVersionActions.test_version_actions���+��7�7�7�����D��N��K�K�K�
�
�
�2�
3�
3�	&�r����t�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�����b�l�&9�:�:�:�:�:s�A&�&A*�-A*c���td���}|�|d��|�|d��|�|d��|�|d��dS)NFr�r8r9rHr[)r�r9r-s  r�test_no_helpz,TestOptionalsHelpVersionActions.test_no_helpsp��+�U�;�;�;���&�&�v�t�4�4�4��&�&�v�x�8�8�8��&�&�v�t�4�4�4��&�&�v�{�;�;�;�;�;rc�F�t��}|�dd���|�dd���|�|d��|�|d��|�|d��|�t
t|d��dS)	Nr�rBr�r�r\rHr[r�)r�r�r�r9r�r�r�r-s  r�test_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_versions���+�-�-�����D���0�0�0����D���3�3�3�� � ���.�.�.��&�&�v�t�4�4�4��&�&�v�{�;�;�;����.�'�6�;K�L�L�L�L�Lrc��t��}|�ddd���|�dd���|�d��gd	�}|d
dgz}|D]b}|D]	}|�d|��}�
|�||d
z��|�||dz��|�tt
|d���cdS)Nr[r\r]r^r�r�r�rE)rr�r�z-x barzbaz -xz--bad-optionzfoo bar bazz %s r8r9r�r�)rr��valid_prefixes�valid_suffixes�prefix�suffixr�s       r�!test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_arguments&s��+�-�-�����K�	�5��I�I�I����D���6�6�6����C� � � �?�>�>��'�>�=�*I�I��$�	Q�	Q�F�(�
8�
8��(.�����7����$�$�V�V�d�]�;�;�;��$�$�V�V�h�->�?�?�?����n�g�v�?O�P�P�P�P�	Q�	QrN)rrr r�r9r�r�r�r�r�r�r�r-rrr�r��s�������+�D�D�D�
H�H�H�M�M�M�;�;�;�M�M�M�;�;�;�<�<�<�M�M�M�Q�Q�Q�Q�Qrr�c�@�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�TestStringsc�f�ttfD]!}|�||��|���"dSr1)r�r~r�)r�obj�
result_string�funcs    r�assertStringEqualzTestStrings.assertStringEqual>s@���$�K�	7�	7�D����T�T�#�Y�Y�
�6�6�6�6�	7�	7rc�x�tjgd�ddddgd�ddd	�
�	�	}d}|�||��dS)N)r�rlr�rfrtr|r��r\rrraF�HELP�METAVAR�	r�rrjr^rVr�r�rBrGz�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'))r�r#r�)r�optionr
s   r�
test_optionalzTestStrings.test_optionalBsf����0�0�0������I�I����	�	�	��
Q�	�	
���v�v�.�.�.�.�.rc��tjgdtddgd�ddd��	�	}d	tz}|�||��dS)
Nr�rjrN)rOg�?rNTzH 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'))r�r#rPr�)r�argumentr
s   r�
test_argumentzTestStrings.test_argumentSsi���?������#�O�O����	 �	 �	 ��
@�BG�
H�	�	
���x��0�0�0�0�0rc�b�tjdd���}d}|�||��dS)Nr�rkr�zNamespace(foo=42, bar='spam')�r�r�r��rr�r
s   r�test_namespacezTestStrings.test_namespaceds8��
�
�B�F�
3�
3�
3��0�����r�6�*�*�*�*�*rc�\�tjdiddi��}d}|�||��dS)N�"�quotezNamespace(**{'"': 'quote'})r-r�r�s   r�'test_namespace_starkwargs_notidentifierz3TestStrings.test_namespace_starkwargs_notidentifieris=��
�
�
1�
1�3��.�
1�
1��2�����r�6�*�*�*�*�*rc�`�tjdddiddi��}d}|�||��dS)Nr�r\r�r�z Namespace(a=1, **{'"': 'quote'})r-r�r�s   r�2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifiernsB��
�
�
6�
6�!�
6��W�~�
6�
6��7�����r�6�*�*�*�*�*rc�\�tjdiddi��}d}|�||��dS)N�validTzNamespace(valid=True)r-r�r�s   r�$test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifierss=��
�
�
2�
2�7�D�/�
2�
2��(�����r�6�*�*�*�*�*rc�z�tjd���}dtjz}|�||��dS)Nr<r	zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r�r��
HelpFormatterr�)rr�r
s   r�test_parserzTestStrings.test_parserxsH���(�f�5�5�5��
�'�5�
6�	�	
���v�v�.�.�.�.�.rN)rrr r�r�r�r�r�r�r�r�r-rrr�r�;s�������=�7�7�7�/�/�/�"1�1�1�"+�+�+�
+�+�+�
+�+�+�
+�+�+�
/�/�/�/�/rr�c� �eZdZd�Zd�Zd�ZdS)�
TestNamespacec��tj��}|�tt|d��tjdd���}|�|jd��|�|jd��dS)Nr�r�rkr�)r�r�r�r�r�r�r�rfr�s  r�test_constructorzTestNamespace.test_constructor�su��
�
�
!�
!�����.�'�2�s�;�;�;�
�
�"��
/�
/�
/�������r�"�"�"������v�&�&�&�&�&rc�V�tjdd���}tjdd���}tjd���}tjd���}|�||��|�||��|�||��|�||��|�||��|�||k��|�||k��|�||k��|�||k��dS)Nr\rrr�)rfr�)r�r�)r�r�r��assertNotEqual�
assertTrue)r�ns1�ns2�ns3�ns4s     r�
test_equalityzTestNamespace.test_equality�s��� �1��*�*�*��� �1��*�*�*��� �1�%�%�%��� �1�%�%�%������c�"�"�"����C��%�%�%����C��%�%�%����C��%�%�%����C��%�%�%�����s�
�#�#�#�����s�
�#�#�#�����s�
�#�#�#�����s�
�#�#�#�#�#rc���tjdd���}|�|�d��t��|�|�d��t��dS)Nr\rrr�)r�r��assertIsrr�NotImplemented�__ne__r�s  r�$test_equality_returns_notimplementedz2TestNamespace.test_equality_returns_notimplemented�sY��
�
�!�q�
)�
)�
)���
�
�b�i�i��o�o�~�6�6�6��
�
�b�i�i��o�o�~�6�6�6�6�6rN)rrr r�r�r�r-rrr�r��sA������'�'�'�$�$�$� 7�7�7�7�7rr�c� �eZdZd�Zd�Zd�ZdS)�TestEncodingc���tj�|��\}}|dz
}t|dd���5}|���ddd��dS#1swxYwYdS)Nz.pyr�r
rJ)r5r=�splitextrLr�)rr=r�rs    r�_test_module_encodingz"TestEncoding._test_module_encoding�s����'�"�"�4�(�(���a���
��
�$��g�
.�
.�
.�	�!�
�F�F�H�H�H�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A �#A c�D�|�tj��dSr1)rr��__file__rs r�test_argparse_module_encodingz*TestEncoding.test_argparse_module_encoding�s���"�"�8�#4�5�5�5�5�5rc�:�|�t��dSr1)rrrs r�"test_test_argparse_module_encodingz/TestEncoding.test_test_argparse_module_encoding�s���"�"�8�,�,�,�,�,rN)rrr rrrr-rrr�r��sA���������6�6�6�-�-�-�-�-rr�c��eZdZd�ZdS)�TestArgumentErrorc�z�d}tjd|��}|�t|��|��dS)Nz
my error here)r�r�r�r�)rr�r�s   r�test_argument_errorz%TestArgumentError.test_argument_error�s;�����&�t�S�1�1������U���S�)�)�)�)�)rN)rrr rr-rrr	r	�s#������*�*�*�*�*rr	c��eZdZd�ZdS)�TestArgumentTypeErrorc�,�d�}tdd���}|�d|���|�t��5}|�dg��ddd��n#1swxYwY|�d|jj��dS)	Nc�*�tjd���)N�spam!)r��ArgumentTypeErrorr	s rrkz<TestArgumentTypeError.test_argument_type_error.<locals>.spam�s���,�W�5�5�5rr<Fr�r�rMrz-usage: PROG x
PROG: error: argument x: spam!
)r�r�r�rtr�r�r�ry)rrkr�r�s    r�test_argument_type_errorz.TestArgumentTypeError.test_argument_type_error�s���	6�	6�	6�,��%�H�H�H�����C�d��+�+�+�
�
�
�2�
3�
3�	'�r����u�g�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'����J���,�	.�	.�	.�	.�	.s�A)�)A-�0A-N)rrr rr-rrr
r
�s#������
.�
.�
.�
.�
.rr
c� �eZdZd�Zd�Zd�ZdS)�TestMessageContentErrorc��tdd���}|�dt���|�dtd���|�d	td
���|�t
��5}|�g��ddd��n#1swxYwYt|j��}|�|d��|�|d��|�|d	��|�t
��5}|�d
g��ddd��n#1swxYwYt|j��}|�	|d��|�|d��|�|d	��|�t
��5}|�d
dg��ddd��n#1swxYwYt|j��}|�	|d��|�	|d��|�|d	��dS)Nr<rr�req_posrM�-req_optTr��need_oner|)rjr^�req_opt�myXargumentz
-req_opt=1)
r�r�r�rtr�rtr�r�r�r��rr�r�r�s    r�%test_missing_argument_name_in_messagez=TestMessageContentError.test_missing_argument_name_in_message�s���+��r�B�B�B�����I�C��0�0�0����J�S�4��@�@�@����J�S���<�<�<�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����i�(�(�(�����j�)�)�)�
�
�
�2�
3�
3�	/�r����}�o�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��"�,��������i�(�(�(�����i�(�(�(�����j�)�)�)�
�
�
�2�
3�
3�	=�r����}�l�;�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��"�,��������i�(�(�(�����i�(�(�(�����j�)�)�)�)�)s6�B$�$B(�+B(�E�E�	E�=G!�!G%�(G%c�L�tdd���}|�dt���|�dtd���|�d	td
d���|�t��5}|�g��ddd��n#1swxYwYt|j��}|�	|d��|�	|d��|�
|d
��|�t��5}|�dg��ddd��n#1swxYwYt|j��}|�	|d��|�
|d��|�
|d
��dS)Nr<rrrrMz	--req_optTr�z	--opt_optrj)rjr^rVr�opt_optz--req_opt=1)r�r�r�rt�boolr�rtr�r�r�r�rs    r�%test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_message�s��+��r�B�B�B�����I�C��0�0�0����K�c�D��A�A�A����K�d�#�$(�	�	*�	*�	*�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����i�(�(�(�����i�(�(�(�
�
�
�2�
3�
3�	/�r����}�o�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��"�,��������i�(�(�(�����i�(�(�(�����i�(�(�(�(�(s$�B%�%B)�,B)� E�E�
Ec��tdd���}|�d��|�ddd���|�t��5}|�g��ddd��n#1swxYwYt|j��}|�|d��|�|d��dS)	Nr<rrr�optional_positionalrjr�rl)	r�r�r�rtr�r�r�r�r�rs    r�'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_messages��+��r�B�B�B�����I�&�&�&����1��f��M�M�M�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����3�4�4�4�4�4s�A;�;A?�A?N)rrr rr r#r-rrrr�sA������*�*�*�2)�)�)�&5�5�5�5�5rrc��eZdZd�ZdS)�TestTypeFunctionCallOnlyOncec����fd�}tj��}|�d|d���|�d�����}��t
d���|��dS)Nc�4����|d��dS)Nr�
foo_converted�r�)�string_to_convertrs �rrkzLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spams������.��8�8�8�"�?rr�r,r�z--foo spam!r(r�)r�r�r�r�r�r�r]�rrkr�rXs`   r�!test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_onces����	#�	#�	#�	#�	#��(�*�*�����G�$���>�>�>�� � ��!4�!4�!6�!6�7�7�������0�0�0�$�7�7�7�7�7rN)rrr r,r-rrr%r%s#������8�8�8�8�8rr%c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestTypeFunctionCalledOnDefaultc�����fd�}tj��}|�d|d���|�g��}��td���|��dS)Nc�4����|d��dS)Nrr(r))�int_to_convertrs �rrkz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam(s������^�Q�/�/�/�"�?rr�rr�r��r�r�r�r�r�r]r+s`   r�/test_type_function_call_with_non_string_defaultzOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default's~���	#�	#�	#�	#�	#��(�*�*�����G�$���:�:�:�� � ��$�$����������D�)�)�)�)�)rc���d�}tj��}|�d|d���|�g��}|�td���|��dS)Nc��dS)Nr(r-)r1s rrkzYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam3s��"�?rr��0r�r(r�r2r+s    r�+test_type_function_call_with_string_defaultzKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default2sv��	#�	#�	#��(�*�*�����G�$���<�<�<�� � ��$�$�������0�0�0�$�7�7�7�7�7rc���d�}tj��}|�d|d���|�g��}|�td���|��dS)Nc��|dzS)Nrwr-)�str_to_converts rr0zYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend=s
��!�C�'�'r�--testrwr�z**)r�r2)rr0r�rXs    r�)test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default<su��	(�	(�	(��(�*�*�����H�6�3��?�?�?�� � ��$�$��	
���������-�-�-�-�-rc���tj��}|�ddtgd���|�g��}|�|jg��dS)Nr;r�r�)rrjrVr�)r�r�r�r�r�r�r�r�s   r�test_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906Hsk���(�*�*�����H�6��$&�x�	�	9�	9�	9�� � ��$�$�������B�'�'�'�'�'rN)rrr r3r7r<r>r-rrr.r.%sP������	*�	*�	*�8�8�8�
.�
.�
.�(�(�(�(�(rr.c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestParseKnownArgsc�V�tj��}|�d��dS)Nr-�r�r�r�r-s  r�test_arguments_tuplez'TestParseKnownArgs.test_arguments_tupleX�*���(�*�*�����"�����rc�V�tj��}|�g��dSr1rBr-s  r�test_arguments_listz&TestParseKnownArgs.test_arguments_list\rDrc��tj��}|�d��|�d��dS)Nr�r��r�r�r�r�r-s  r�test_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positional`s>���(�*�*�����C� � � ����&�!�!�!�!�!rc��tj��}|�d��|�dg��dS)Nr�rHr-s  r�test_arguments_list_positionalz1TestParseKnownArgs.test_arguments_list_positionales@���(�*�*�����C� � � ����3�%� � � � � rc�"�tj��}|�d��|�d�����\}}|�t
d���|��|�ddg|��dS)Nr�z--foo F --bar --baz�Fr�rrL)r�r�r�rpr�r�r])rr�rX�extrass    r�test_optionalsz!TestParseKnownArgs.test_optionalsjs����(�*�*�����G�$�$�$��.�.�/D�/J�/J�/L�/L�M�M���f���������d�+�+�+����'�7�+�V�4�4�4�4�4rc�t�tj��}|�dddt���|�dd���|�d��gd	�}|�|��\}}|�t
d
dd�
��|��|�gd�|��dS)NrHrjr\)r^r�rjrHr�r�r)r*rr�rHr�r1raTr*)�vrkr)rr�r1)r�r�r�rtrpr�r])rr�r�rXrNs     r�
test_mixedzTestParseKnownArgs.test_mixedqs����(�*�*�����D��1�3��?�?�?����H�]��;�;�;����H�%�%�%�2�2�2���.�.�t�4�4���f�����a�d�3�7�7�7��>�>�>����,�,�,�f�5�5�5�5�5rN)	rrr rCrFrIrKrOrRr-rrr@r@Vsn������������"�"�"�
!�!�!�
5�5�5�	6�	6�	6�	6�	6rr@c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestIntermixedArgsc	��tjd���}|�dd���|�ddd�	��}|�d
��|�ddt�
��d���}|�|��}|�tdd
dgd����|��|�|��\}}|�tdd
dg���|��|�gd�|��d���}|�	|��\}}|�tdd
ddg���|��|�gd�|��|�
|j��|�|jd��dS)Nr<r	r�r�rrr,Tr}�cmd�restrw)r^rjzcmd --foo x 1 --bar y 2 3rEr�r�)r,rVr�rW�r�ror�z!cmd --foo x 1 --error 2 --bar y 3r\)z--errorror�)
r�r�r�rtr��parse_intermixed_argsr�r]rp�parse_known_intermixed_argsr�r�r�)rr�r,r�rXrNs      r�
test_basiczTestIntermixedArgs.test_basic�s����(�f�5�5�5�����G�%��0�0�0��!�!�'���!�E�E�����E�"�"�"����F�#�C��8�8�8�*�0�0�2�2���+�+�D�1�1��������C�i�i�i�H�H�H�$�O�O�O��.�.�t�4�4���f�������C�b�A�A�A�4�H�H�H�������&�1�1�1�2�8�8�:�:���9�9�$�?�?���f�������C�q�c�B�B�B�D�I�I�I����.�.�.��7�7�7�	
���&�,�'�'�'������t�,�,�,�,�,rc��td���}|�d��|�d��|�dd���d���}|�t��5}|�|��ddd��n#1swxYwY|�t|j��d	��dS)
Nr<r	r�r�rErFr]rHz\.\.\.)	r�r�r�r�r�rYr�r�r�)rr�r�r�s    r�test_remainderz!TestIntermixedArgs.test_remainder�s��+��8�8�8�����D�!�!�!����C� � � ����C�u��-�-�-��!�!�#�#���
�
�y�
)�
)�	/�R��(�(��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�����R�\�*�*�I�6�6�6�6�6s�B"�"B&�)B&c��td���}|�d���}|�ddd���|�d	d
���|�dd
dd���|�d�����}|�t
ddgdd���|��|�t|jd�����|�|j	d��dS)Nr<r	Tr�r�r�rOrArHrPr�rrwrrQrRz	1 --foo 2r�ro)rr�rkr�)
r�r�r�rYr�r�r]r�rtr�)rr�r�rXs    r�test_exclusivez!TestIntermixedArgs.test_exclusive�s��+��8�8�8���3�3�T�3�B�B��
���7�<�e��D�D�D�
���8�&��1�1�1����H�C��8��L�L�L��+�+�K�,=�,=�,?�,?�@�@������C��:�4�d�C�C�C�T�J�J�J����-�v�/K�U�[�[�]�]�[�[�[�������.�.�.�.�.rc�Z�td���}|�d���}|�ddd���|�d	d
���|�dd
dd���|�t|jg��|�|jd��dS)Nr<r	Tr�r�r�rOrArHrPr�rrwrrQrR)r�r�r�r�r�rYr�r�r
s   r�test_exclusive_incompatiblez.TestIntermixedArgs.test_exclusive_incompatible�s���+��8�8�8���3�3�T�3�B�B��
���7�<�e��D�D�D�
���8�&��1�1�1�
���8�3��(��K�K�K����)�V�%A�2�F�F�F�������.�.�.�.�.rN)rrr r[r]r_rar-rrrTrT�sP������-�-�-�67�7�7�
/�
/�
/�/�/�/�/�/rrTc��eZdZd�ZdS)�!TestIntermixedMessageContentErrorc��tdd���}|�dt���|�dtd���|�t
��5}|�g��ddd��n#1swxYwYt|j��}|�|d��|�|d	��|�t
��5}|�	g��ddd��n#1swxYwYt|j��}|�
|d��|�|d	��dS)
Nr<rrrrMrTr�r)r�r�r�rtr�rtr�r�r�rY�assertNotRegexrs    rrzGTestIntermixedMessageContentError.test_missing_argument_name_in_message�s���+��r�B�B�B�����I�C��0�0�0����J�S�4��@�@�@�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����i�(�(�(�
�
�
�2�
3�
3�	-�r��(�(��,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��"�,�������C��+�+�+�����i�(�(�(�(�(s$�%B�B�B�,D�D�DN)rrr rr-rrrcrc�s#������)�)�)�)�)rrcc�,�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1S)2�TestAddArgumentMetavarz,length of metavar tuple does not match nargsc�\�tj��}|�d||���dS)Nr��r^rG)r�r�r�)rr^rGr�s    r�do_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exception�s1���(�*�*�����G�5�'��B�B�B�B�Brc��tj��}|�t��5}|�d||���ddd��n#1swxYwY|�|jjd|j��dS)Nr�rir)	r�r�r�r�r�r�r�rX�EXPECTED_MESSAGE)rr^rGr�r�s     r�do_test_exceptionz(TestAddArgumentMetavar.do_test_exception�s����(�*�*��
�
�
�z�
*�
*�	G�b�����u�g��F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G������*�1�-�t�/D�E�E�E�E�Es�A�A�Ac�4�|�dd���dS)Nr�ri�rjrs r�test_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_string�s!���!�!��c�!�:�:�:�:�:rc�L�|�dt�����dS)Nri�rm�tuplers r�test_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0�s%�����T�5�7�7��;�;�;�;�;rc�4�|�dd���dS)NrVrirors r�test_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1�s!���!�!��f�!�=�=�=�=�=rc�4�|�dd���dS)N�r�rori�rmrs r�test_nargs_None_metavar_length2z6TestAddArgumentMetavar.test_nargs_None_metavar_length2�s!�����T�:��>�>�>�>�>rc�4�|�dd���dS)NrXriryrs r�test_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3�s!�����T�?��C�C�C�C�Crc�4�|�dd���dS)Nrjr�rirors r�"test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_string��!���!�!��S�!�9�9�9�9�9rc�L�|�dt�����dS)Nrjrirrrs r�#test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0��%�����S�%�'�'��:�:�:�:�:rc�4�|�dd���dS)NrjrVrirors r�#test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1��!���!�!��V�!�<�<�<�<�<rc�4�|�dd���dS)Nrjrxriryrs r�#test_nargs_optional_metavar_length2z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2s!�����S�*��=�=�=�=�=rc�4�|�dd���dS)NrjrXriryrs r�#test_nargs_optional_metavar_length3z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3�!�����S�/��B�B�B�B�Brc�4�|�dd���dS)Nrwr�rirors r�$test_nargs_zeroormore_metavar_stringz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_string	rrc�L�|�dt�����dS)Nrwrirrrs r�%test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0r�rc�4�|�dd���dS)NrwrVrirors r�%test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1r�rc�4�|�dd���dS)Nrwrxrirors r�%test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2�!���!�!��Z�!�@�@�@�@�@rc�4�|�dd���dS)NrwrXriryrs r�%test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3r�rc�4�|�dd���dS)Nr|r�rirors r�#test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_stringrrc�L�|�dt�����dS)Nr|rirrrs r�$test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0r�rc�4�|�dd���dS)Nr|rVriryrs r�$test_nargs_oneormore_metavar_length1z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1 s!�����S�&��9�9�9�9�9rc�4�|�dd���dS)Nr|rxrirors r�$test_nargs_oneormore_metavar_length2z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2#r�rc�4�|�dd���dS)Nr|rXriryrs r�$test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3&r�rc�4�|�dd���dS)NrFr�rirors r�#test_nargs_remainder_metavar_stringz:TestAddArgumentMetavar.test_nargs_remainder_metavar_string+s!���!�!��s�!�;�;�;�;�;rc�L�|�dt�����dS)NrFri)rjrsrs r�$test_nargs_remainder_metavar_length0z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0.s%���!�!��u�w�w�!�?�?�?�?�?rc�4�|�dd���dS)NrFrVrirors r�$test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length11s!���!�!��v�!�>�>�>�>�>rc�4�|�dd���dS)NrFrxrirors r�$test_nargs_remainder_metavar_length2z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length24s!���!�!��z�!�B�B�B�B�Brc�4�|�dd���dS)NrFrXrirors r�$test_nargs_remainder_metavar_length3z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length37s!���!�!���!�G�G�G�G�Grc�4�|�dd���dS)N�A...r�rirors r� test_nargs_parser_metavar_stringz7TestAddArgumentMetavar.test_nargs_parser_metavar_string<s!���!�!���!�<�<�<�<�<rc�L�|�dt�����dS)Nr�rirrrs r�!test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0?s%�����V�U�W�W��=�=�=�=�=rc�4�|�dd���dS)Nr�rVrirors r�!test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1Bs!���!�!���!�?�?�?�?�?rc�4�|�dd���dS)Nr�rxriryrs r�!test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2Es!�����V�Z��@�@�@�@�@rc�4�|�dd���dS)Nr�rXriryrs r�!test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3Hs!�����V�_��E�E�E�E�Erc�4�|�dd���dS)Nr\r�rirors r�test_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_stringM�!���!�!��3�!�7�7�7�7�7rc�L�|�dt�����dS)Nr\rirrrs r�test_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0P�%�����Q�����8�8�8�8�8rc�4�|�dd���dS)Nr\rVrirors r�test_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1Ss!���!�!��6�!�:�:�:�:�:rc�4�|�dd���dS)Nr\rxriryrs r�test_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2V�!�����Q�
��;�;�;�;�;rc�4�|�dd���dS)Nr\rXriryrs r�test_nargs_1_metavar_length3z3TestAddArgumentMetavar.test_nargs_1_metavar_length3Y�!�����Q���@�@�@�@�@rc�4�|�dd���dS)Nrrr�rirors r�test_nargs_2_metavar_stringz2TestAddArgumentMetavar.test_nargs_2_metavar_string^r�rc�L�|�dt�����dS)Nrrrirrrs r�test_nargs_2_metavar_length0z3TestAddArgumentMetavar.test_nargs_2_metavar_length0ar�rc�4�|�dd���dS)NrrrVriryrs r�test_nargs_2_metavar_length1z3TestAddArgumentMetavar.test_nargs_2_metavar_length1d�!�����Q���7�7�7�7�7rc�4�|�dd���dS)Nrrrxrirors r�test_nargs_2_metavar_length2z3TestAddArgumentMetavar.test_nargs_2_metavar_length2gs!���!�!��:�!�>�>�>�>�>rc�4�|�dd���dS)NrrrXriryrs r�test_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3jr�rc�4�|�dd���dS)Nrar�rirors r�test_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_stringor�rc�L�|�dt�����dS)Nrarirrrs r�test_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0rr�rc�4�|�dd���dS)NrarVriryrs r�test_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1ur�rc�4�|�dd���dS)Nrarxriryrs r�test_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2xr�rc�4�|�dd���dS)NrarXrirors r�test_nargs_3_metavar_length3z3TestAddArgumentMetavar.test_nargs_3_metavar_length3{s!���!�!��?�!�C�C�C�C�CrN)3rrr rlrjrmrprtrvrzr|r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r-rrrgrg�s������E��C�C�C�F�F�F�;�;�;�<�<�<�>�>�>�?�?�?�D�D�D�
:�:�:�;�;�;�=�=�=�>�>�>�C�C�C�
:�:�:�;�;�;�=�=�=�A�A�A�C�C�C�
:�:�:�;�;�;�:�:�:�A�A�A�C�C�C�
<�<�<�@�@�@�?�?�?�C�C�C�H�H�H�
=�=�=�>�>�>�@�@�@�A�A�A�F�F�F�
8�8�8�9�9�9�;�;�;�<�<�<�A�A�A�
8�8�8�9�9�9�8�8�8�?�?�?�A�A�A�
8�8�8�9�9�9�8�8�8�<�<�<�D�D�D�D�Drrgc�.�eZdZdZdZd�Zd�Zd�Zd�ZdS)�TestInvalidNargszinvalid nargs valuez�nargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatec��tj��}|�t��5}|�d|���ddd��n#1swxYwY|�|jjd|j��dS�Nr�r]r)	r�r�r�r�r�r�r�rX�EXPECTED_RANGE_MESSAGE�rr^r�r�s    r�do_test_range_exceptionz(TestInvalidNargs.do_test_range_exception�s����(�*�*��
�
�
�z�
*�
*�	6�b�����u��5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6������*�1�-�t�/J�K�K�K�K�K��A�A�Ac��tj��}|�t��5}|�d|���ddd��n#1swxYwY|�|jjd|j��dSr�)	r�r�r�r�r�r�r�rX�EXPECTED_INVALID_MESSAGEr�s    r�do_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exception�s����(�*�*��
�
�
�z�
*�
*�	6�b�����u��5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6������*�1�-�t�/L�M�M�M�M�Mr�c�^�|�d���|�d���dS)Nr�r]�abcd)r�rs r�test_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetic�s6���&�&�S�&�1�1�1��&�&�V�&�4�4�4�4�4rc�2�|�d���dS)Nrr])r�rs r�test_nargs_zeroz TestInvalidNargs.test_nargs_zero�s���$�$�1�$�-�-�-�-�-rN)	rrr r�r�r�r�r�r�r-rrr�r�se������4��L��L�L�L�N�N�N�5�5�5�.�.�.�.�.rr�c��eZdZd�Zd�ZdS)�TestImportStarc�t�tjD]*}|�tt|�����+dSr1)r��__all__r�r�r�s  rr�zTestImportStar.test�s=���$�	5�	5�D��O�O�G�H�d�3�3�4�4�4�4�	5�	5rc���d�tt�����D��}|�t	|��t	tj����dS)Nc�v�g|]6\}}|�d��s|dk� tj|���4|��7S)r��ngettext)�
startswith�inspect�ismodule)rcrFr�s   rrezJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>�sZ��
�
�
���e��O�O�C�(�(�
�-1�J�,>�,>��#�E�*�*�-?�
�,>�,>�,>r)ror�rir�rhr�)rris  r�'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modules�sa��
�
�#�H�~�~�3�3�5�5�
�
�
��	
��������x�/?�(@�(@�A�A�A�A�ArN)rrr r�r�r-rrr�r��s7������5�5�5�B�B�B�B�Brr�c�$��eZdZ�fd�Zd�Z�xZS)�TestWrappingMetavarc���t�����td��|_d}|j�d|���dS)N�9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyr�)r
r,r�r�r�)rrGrs  �rr,zTestWrappingMetavar.setUp�sP���
���
�
����0�G�
�
���
-���� � ��G� �<�<�<�<�<rc��|j���}|�|tjd����dS)Na            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            options:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r�r�r�r�r�)r�	help_texts  r�test_help_with_metavarz*TestWrappingMetavar.test_help_with_metavar�sL���K�+�+�-�-�	�����H�O�5�%�%�	�	�	�	�	r)rrr r,r�r!r"s@rr�r��sG�������=�=�=�=�=�	�	�	�	�	�	�	rr�c� �eZdZd�Zd�Zd�ZdS)�TestExitOnErrorc�~�tjd���|_|j�ddt���dS)NF)�
exit_on_errorz
--integers�N)rGrj)r�r�r�r�rtrs rr,zTestExitOnError.setUp�s:���-�E�B�B�B����� � ��s�� �E�E�E�E�Erc��|j�d�����}|�|t	jd�����dS)Nz--integers 4r�)�integers)r�r�r�r�r�r�r�s  r�!test_exit_on_error_with_good_argsz1TestExitOnError.test_exit_on_error_with_good_args�sM��
�[�
#�
#�N�$8�$8�$:�$:�
;�
;������X�/��;�;�;�<�<�<�<�<rc���|�tj��5|j�d�����ddd��dS#1swxYwYdS)Nz--integers a)r�r�r�r�r�r�rs r� test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_args�s���
�
�
�x�5�
6�
6�	;�	;��K�"�"�>�#7�#7�#9�#9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�-A�A�!AN)rrr r,rrr-rrr�r��sD������F�F�F�=�=�=�;�;�;�;�;rr�c�N�it_t��t_dSr1)r�r�r-r�r-rr�tearDownModuler�s���E�J����E�J�J�Jr�__main__)�r�rr�r5rAr?r~r�r2�unittestr�rg�test.supportrr�
TextIOWrapperrr$�skip_unless_working_chmodr�r/rVr]rvrtr�r�r�rjr�r�r�r�r�r�r�rr
rrr#r&r/r@rBrGrKrTrYr[r`rirvr{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�rrrr	rr
rrrrrrrrr"r$r&r(r/r5r7r:r<r>rCrErLrRrVrZr`rorzr�r�r�r�r��	eq_stderrr�r��
eq_bstderrr�r�r�r�r��skip_if_dac_overrider�r�r�r�r�r�r�r�r�rrr%r/r6r�r�rrr/r:rBrFrMrUr]rbrermrprtrvrxrzr|r~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrrrrr!r#r&r)r-r0r2r4r6r8rBrJrMrQrTrVr\r`rer�r�r�r�r�r�r	r
rr%r.r@rTrcrgr�r�r�r�rr�mainr-rr�<module>rs�#������	�	�	�	�����	�	�	�	�
�
�
�
�����
�
�
�
���������������������"�"�"�"�"�"�������:�:�:�:�:�"�"�:�:�:�$�����x� �����$�D�D�D�D�D�6�D�D�%�$�D�.�����&����)�)�)�)�)��)�)�)�%�%�%�%�%�)�%�%�%�# �# �# �L>�>�>�>�>��!8�>�>�>�o9�o9�o9�o9�o9�D�o9�o9�o9�b	�	��&�&�'7���C�C�������n���������n����4�����.����
�
�
�
�
�^�
�
�
� 
�
�
�
�
�~�
�
�
� 
�
�
�
�
�>�
�
�
������n���������.����$���������&�����N����&���������(���������,���������.
�
�
�
�
�^�
�
�
� 
�
�
�
�
��
�
�
�	�	�	�	�	�>�	�	�	���������������.���������.�������������.�����>����&�����.����"�����>����"
�
�
�
�
�N�
�
�
������~���������N���������N���������>����W�W�W�W�W��W�W�W�*
�
�
�
�
��
�
�
�	�	�	�	�	��	�	�	�	�	�	�	�	�>�	�	�	����������&�����^������������������~�������������"�����N����"�����~����"�����n����&�����N����.�����~���������N���������N����	�	�	�	�	�^�	�	�	�	�	�	�	�	�N�	�	�	������N���������>���������.���������>���������>����������������������	�	�	�	�	��	�	�	���������������~����	�	�	�	�	��	�	�	���������������~���������n���������^���������N����	�	�	�	�	�n�	�	�	������^���������N���������.���������������������������>����
�
�
�
�
�^�
�
�
�	�	�	�	�	�N�	�	�	������>�������������
�
�
�
�
�.�
�
�
� 
�
�
�
�
��
�
�
� �����~����"�����>����&�����~����&
�
�
�
�
�.�
�
�
� 
�
�
�
�
��
�
�
������^����6�����.����&���������(�����.����*�����L�.����D�����\�>����DK�K�K�K�K�x�K�K�K�0�f�h�h���f�h�h��,�,�,�,�,�,�,�,�,��W�%�%����h�'�'�	���h�'�'�	���n�-�-�	�
�
��
/�
/�
�
�
��
/�
/�
�/�/�/�/�/�F�/�/�/�"�����L�.����03�3�3�3�3�<��3�3�3�"�����\�>����.'�'�'�'�'�F�'�'�'�"�������L�.��� ���,�������L�.��� ���&��
�
�
�
�
�\�>�
�
� ��
� ��
�
�
�
�
�]�
�
� ��
�3�3�3�3�3�8�3�3�3�$
�
�
�
�
��
�
�
�$�����~���������.����,�����>����,>�>�>�>�>�8�>�>�>�.>�>�>�>�>�N�>�>�>�BJ�J�J�J�J�X�J�J�J�$�����~����[�[�[�[�[��[�[�[�B
!+�!+�!+�!+�!+�H�!+�!+�!+�Nm9�m9�m9�m9�m9��m9�m9�m9�f+&�+&�+&�+&�+&�x�+&�+&�+&�Z-?�-?�-?�-?�-?�f�-?�-?�-?�` � � � � �'�8� � � �F(�(�(�(�(���(�(�(�V�����7�H����B!�!�!�!�!�'�8�!�!�!�H*�*�*�*�*��(�*�*�*�Z'�'�'�'�'�'�8�'�'�'�T%�%�%�%�%�7�H�%�%�%�P'�'�'�'�'���'�'�'�R/(�/(�/(�/(�/(�'�8�/(�/(�/(�j�����f����	�	�	�	�	��
-�	�	�	�
	�	�	�	�	��
(�	�	�	�
	�	�	�	�	��
&�	�	�	�
	�	�	�	�	��
1�	�	�	�
	�	�	�	�	��
0�	�	�	�
	�	�	�	�	��
7�	�	�	�
	�	�	�	�	��
0�	�	�	�
	�	�	�	�	��
>�	�	�	�X0�X0�X0�X0�X0�h�X0�X0�X0�|8�8�8�8�8�X�8�8�8�.
"�
"�
"�
"�
"�(�
"�
"�
"�&Q1�Q1�Q1�Q1�Q1�$�Q1�Q1�Q1�f	�	��*�*�>�5�"�E�E��"�"�"�"�"�l�"�"�"�H3B�3B�3B�3B�3B�|�3B�3B�3B�l,�,�,�,�,�<�,�,�,�^���������>1�1�1�1�1�<�1�1�1�h%�%�%�%�%��%�%�%�P3�3�3�3�3��3�3�3�l6�6�6�6�6�L�6�6�6�r�����<����,�����\����>�����L����:!�!�!�!�!�|�!�!�!�H�����<����2#�#�#�#�#��#�#�#�L�����<����D!�!�!�!�!�L�!�!�!�H�����\����4�����|����0+�+�+�+�+��+�+�+�\�����\����"
�
�
�
�
�<�
�
�
������L����*�����|����(�����L����4���������*�����|����(�����<����*�����\����.�����<����0�����<����6.�.�.�.�.�l�.�.�.�b-�-�-�-�-�\�-�-�-�`0�0�0�0�0�|�0�0�0�d�����L����(�����L����2���������:'�'�'�'�'��'�'�'�V�����<����BxI�xI�xI�xI�xI�h�xI�xI�xI�|-�-�-�-�-�(�-�-�-�<3E�3E�3E�3E�3E�8�3E�3E�3E�tEQ�EQ�EQ�EQ�EQ�h�EQ�EQ�EQ�XC/�C/�C/�C/�C/�(�C/�C/�C/�R7�7�7�7�7�H�7�7�7�J-�-�-�-�-�8�-�-�-�$*�*�*�*�*��*�*�*�.�.�.�.�.�H�.�.�.�$65�65�65�65�65�h�65�65�65�z
8�
8�
8�
8�
8�8�
8�
8�
8� +(�+(�+(�+(�+(�h�+(�+(�+(�b$6�$6�$6�$6�$6��$6�$6�$6�T=/�=/�=/�=/�=/��=/�=/�=/�~)�)�)�)�)��)�)�)�0eD�eD�eD�eD�eD�X�eD�eD�eD�P.�.�.�.�.�x�.�.�.�@
B�
B�
B�
B�
B�X�
B�
B�
B� �����(����0;�;�;�;�;�h�;�;�;�����z����H�M�O�O�O�O�O��r