HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //opt/alt/python312/lib64/python3.12/test/__pycache__/test_argparse.cpython-312.opt-2.pyc
�

~h�e�����ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZGd�dej"�ZGd�dej&�ZGd�d	ej&�Zej*Gd
�de��ZGd�d
e�ZGd�de�ZGd�de�Zd�ZGd�dej:�ZGd�de�Z efZ!e de!i�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"�Z0Gd4�d5e"�Z1Gd6�d7e"�Z2Gd8�d9e"�Z3Gd:�d;e"�Z4Gd<�d=e"�Z5Gd>�d?e"�Z6Gd@�dAe"�Z7GdB�dCe"�Z8GdD�dEe"�Z9GdF�dGe"�Z:GdH�dIe"�Z;GdJ�dKe"�Z<GdL�dMe"�Z=GdN�dOe"�Z>GdP�dQe"�Z?GdR�dSe"�Z@GdT�dUe"�ZAGdV�dWe"�ZBGdX�dYe"�ZCGdZ�d[e"�ZDGd\�d]e"�ZEGd^�d_e"�ZFGd`�dae"�ZGGdb�dce"�ZHGdd�dee"�ZIGdf�dge"�ZJGdh�die"�ZKGdj�dke"�ZLGdl�dme"�ZMGdn�doe"�ZNGdp�dqe"�ZOGdr�dse"�ZPGdt�due"�ZQGdv�dwe"�ZRGdx�dye"�ZSGdz�d{e"�ZTGd|�d}e"�ZUGd~�de"�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�e"�ZtGd��d�e"�ZuGd��d�e"�ZvGd��d�ee"�ZwGd„d�ee"�ZxGdĄd�e�Zye�Zze�Z{GdƄdǫZ|e|dȫZ}e|dɫZ~e|dʫZe|d˫Z�e|d̫Z�e|dͫZ�Gd΄d�e�Z�GdЄd�ee"�Z�Gd҄d�ee"�Z�GdԄd�ee"�Z�Gdքd�e�Z�e�jGd؄d�ee"��Z�e�jGdڄd�ee"��Z�e�jGd܄d�ee"��Z�e�jGdބ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�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�e�Z�G�d��de�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 ��d!e�Z�G�d"��d#e�Z�G�d$��d%e�Z�G�d&��d'e�Z�efZ!e��d(e!i�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�G�d���d�e�Z�d��Z�e�d�k(re�j��yy(��N)�	os_helper)�mockc�(��eZdZ	d�fd�	Zd�Z�xZS)�StdIOBufferc���|jd�}t�|�	tjtj
|��d|��y)N�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�self�
initial_valuer	�	__class__s   ��9/opt/alt/python312/lib64/python3.12/test/test_argparse.pyrzStdIOBuffer.__init__s@���%�,�,�W�5�
�
����*�*�2�:�:�m�+D�E� �'�	�	3�c��|j�|jjj�j	d�S)Nr)�flush�buffer�raw�getvalue�decode�rs rrzStdIOBuffer.getvalue#s-���
�
���{�{���'�'�)�0�0��9�9r)��
)�__name__�
__module__�__qualname__rr�
__classcell__�rs@rrrs����3�
:rrc��eZdZd�Zd�Zy)�
StdStreamTestc��tj�}tjd�5t	j
d�5|j
dd��ddd�ddd�y#1swY�xYw#1swYyxYw)N�argparse._sys.exitr�foo)�status�message)�argparse�ArgumentParser�
contextlib�redirect_stderrr�patch�exit�r�parsers  r�test_skip_invalid_stderrz&StdStreamTest.test_skip_invalid_stderr*sg���(�(�*���&�&�t�,�	1��J�J�+�,�	1�
�K�K�q�%�K�0�		1�	1�	1�	1��	1�	1�s#�A1�A%�A1�%A.	�*A1�1A:c�|�tj�}|j|jt	j
|jdg�fD]�}|j|��5tjd�5t�5}tj|�5tjd�5|�|j|j�d�ddd�ddd�ddd�ddd�ddd���y#1swY�,xYw#1swY�0xYw#1swY�4xYw#1swY�8xYw#1swY��xYw)N�-h)�funcr&zusage:)r*r+�print_usage�
print_help�	functools�partial�
parse_args�subTestr,�redirect_stdoutrr-rr.�assertRegexr)rr1r5�
mocked_stderrs    r�test_skip_invalid_stdoutz&StdStreamTest.test_skip_invalid_stdout2s7���(�(�*�����������f�/�/�$��8�
�	F�D����$��'�	
F��*�*�4�0�	
F��
�		
F�"/��*�*�=�9�	
F��
�
�/�0�
	
F���� � ��!7�!7�!9�9�E�	
F�	
F�	
F�	
F�	
F�	
F�	F�
	
F�	
F��	
F�	
F��	
F�	
F��	
F�	
F��	
F�	
F�sl�"D2�8D&�D	�D�/(D
�D�D	�'D&�/D2�D�D�D�D	�D#
�D&�&D/�+D2�2D;	N)rrr r2r?�rrr$r$(s
��1�Frr$c��eZdZd�Zy)�TestCasec�T�|jtj��}d|d<y)N�80�COLUMNS)�enterContextr�EnvironmentVarGuard�r�envs  r�setUpzTestCase.setUpGs&�����	� =� =� ?�@����I�rN)rrr rJr@rrrBrBEs��rrBc�$�eZdZd�Zd�Zd�Zd�Zy)�TempDirMixinc��tj�|_tj�|_tj|j�y�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirrs rrJzTempDirMixin.setUpRs/�� �(�(�*��
��y�y�{���
������rc�|�tj|j�tj|jd��D]Y\}}}|D]N}tj
tjj|j|�tj��P�[tj|jd�y)NF)�topdownT)rRrUrT�walkrQ�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�names     r�tearDownzTempDirMixin.tearDownWs���
�������!#�������!F�	K��D�$���
K����������d�m�m�T�:�D�M�M�J�
K�	K�	�
�
�d�m�m�T�*rc���tjj|j|�}t	|dd��5}|j|�ddd�|S#1swY|SxYw)N�wr��encoding)rRrZr[rQ�open�write)r�filename�	file_path�files    r�create_writable_filez!TempDirMixin.create_writable_file^sP���G�G�L�L�����9�	�
�)�S�7�
3�	!�t��J�J�x� �	!���	!���s�A�Ac�j�tj|j|�tj�yrN)rRrYrnr\�S_IREAD)rrks  r�create_readonly_filez!TempDirMixin.create_readonly_fileds��
����*�*�8�4�d�l�l�CrN)rrr rJrdrnrqr@rrrLrLOs�� �
+��DrrLc��eZdZd�Zy)�Sigc� �||_||_yrN)�args�kwargs�rrurvs   rrzSig.__init__is����	���rN�rrr rr@rrrsrsgs��rrsc��eZdZd�Zd�Zd�Zy)�NSc�:�|jj|�yrN)�__dict__�update)rrvs  rrzNS.__init__ps���
�
���V�$rc���t|jj��}dj|D�cgc]}d|z��	c}�}t	|�j
�d|�d�Scc}w)Nz, z%s=%r�(�))�sortedr|�itemsr[�typer)r�sorted_items�tup�	kwarg_strs    r�__repr__zNS.__repr__ssQ���d�m�m�1�1�3�4���I�I��E��w��}�E�F�	���:�.�.�	�:�:��Fs�A!c�0�t|�t|�k(SrN)�vars�r�others  r�__eq__z	NS.__eq__xs���D�z�T�%�[�(�(rN)rrr rr�r�r@rrrzrzns��%�;�
)rrzc��eZdZdd�Zy)�ArgumentParserErrorNc�l�tj||||�||_||_||_||_yrN)�	Exceptionrr)�stdout�stderr�
error_code)rr)r�r�r�s     rrzArgumentParserError.__init__~s2�����4��&�&�9����������$��r)NNNrxr@rrr�r�|s��%rr�c
��ttjt�sttjt�r||i|��Stj}tj}t�t_t�t_		||i|��}tt
|��D]�}t||�}|tjurt|||��/|tjjurt||t|dt���h|tjurt|||���|tjjus��t||t|dt����||t_|t_S#t$r\}|j}	tjj�}
tjj�}td|
||	�d�d}~wwxYw#|t_|t_wxYw)Nr�
SystemExit)�
isinstance�sysr�rr��listr��getattr�setattrr�BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELr��coderr�)r:rurv�
old_stdout�
old_stderr�result�key�attr�er�r�r�s            r�stderr_to_parser_errorr��s����#�*�*�k�*�j����[�.Q��4�*�6�*�*����J����J���C�J���C�J� �	>���0��0�F��D��L�)�	
]���v�s�+���3�:�:�%��F�C��4��S�Z�Z�.�.�.��F�C���X�GZ�)[�\��S�Z�Z�'��F�C��4��S�Z�Z�.�.�.��F�C���X�GZ�)[�\�	
]�� ��
���
���	>��6�6�D��Z�Z�(�(�*�F��Z�Z�(�(�*�F�%��f�f�d�4�9=�
>��		>�� ��
���
�s,�
CF�F�	G)�
AG$�$G)�)G,�,Hc�2��eZdZ�fd�Z�fd�Z�fd�Z�xZS)�ErrorRaisingArgumentParserc�>��tt|�
}t|g|��i|��SrN)rr�r:r�)rrurvr:rs    �rr:z%ErrorRaisingArgumentParser.parse_args�s%����5�t�G�
�%�j�B�4�B�6�B�Brc�>��tt|�
}t|g|��i|��SrN)rr�r/r�)rrurvr/rs    �rr/zErrorRaisingArgumentParser.exit�s%����/��;��%�d�<�T�<�V�<�<rc�>��tt|�
}t|g|��i|��SrN)rr��errorr�)rrurvr�rs    �rr�z ErrorRaisingArgumentParser.error�s%����0�$�=��%�e�=�d�=�f�=�=r)rrr r:r/r�r!r"s@rr�r��s���C�=�>�>rr�c��eZdZ	d�Zy)�ParserTesterMetaclassc���|dk(ryt|d�st�|_t|d�st|_d�}d�}d�}d�}d�}Gd	�d
t
�}	|||fD]}
||fD]}|	||
|���y)N�ParserTestCase�parser_signature�parser_classc�`�	|D](}|j|ji|j���*yrN)�add_argumentrurv)r1�argument_signatures�sigs   r�	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groups�s1��:�*�
=��#��#�#�S�X�X�<����<�
=rc��	|jd�}|D](}|j|ji|j���*y)Nr')�add_argument_groupr�rurv)r1r��groupr�s    r�	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_group�sA��F��-�-�e�4�E�*�
<��"��"�"�C�H�H�;��
�
�;�
<rc��	t|�D]?\}}|jd|z�}|j|ji|j���Ay)Nzfoo:%i)�	enumerater�r�rurv)r1r��ir�r�s     r�many_groupsz3ParserTesterMetaclass.__init__.<locals>.many_groups�sO��B�#�$7�8�
<���3��1�1�(�Q�,�?��"��"�"�C�H�H�;��
�
�;�
<rc�&�	|j|�SrN)r:)r1rus  r�listargsz0ParserTesterMetaclass.__init__.<locals>.listargs�s��5��$�$�T�*�*rc��	tj}|dg|zt_	|j�|t_S#|t_wxYw)Nr)r��argvr:)r1ru�old_sys_argvs   r�sysargsz/ParserTesterMetaclass.__init__.<locals>.sysargs�sA��:��8�8�L�$�Q��(�4�/�C�H�
(��(�(�*�'����<���s�A�
A
c�$�eZdZd�Zd�Zd�Zd�Zy)�0ParserTesterMetaclass.__init__.<locals>.AddTestsc�H�||_||_|jj}|jj}|j|jfD]>}|j}|||f}dj|�}	|fd�}
	|	|
_t||	|
��@y#t$rY�wxYw)N�_c��||�yrNr@�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           rrz9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__�s���&3��#�#-�� �%)�%8�%8�%A�%A�"�"&�"2�"2�";�";��"&�"4�"4�d�6I�6I�!J�<�I� )� 2� 2�I�%�'9�?�J�E� #�����I�09�(��+4��(��J�	�7�;�<��%����s�>B�	B!� B!c��|jj}|jj}|j|i|��}|j	||j
�|SrN)r�rurvr�r�r�)r�testerrurvr1s     r�_get_parserz<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parsersV���.�.�3�3���0�0�7�7��,��,�,�d�=�f�=���#�#�F�F�,F�,F�G��
rc���|j|�}|jD]C}|j�}|jt|��5|j|�ddd��Ey#1swY�PxYw)N)�msg)r��failures�split�assertRaisesr�r:)rr�r1�args_strrus     rr�z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failuressm���)�)�&�1�� &���0�H�#�>�>�+�D��,�,�-@�d�,�K�0��)�)�$�/�0�0�0�0�0�s�A%�%A.	c���|j|�}|jD]I\}}t|t�r|j	�}|j||�}|j
||��KyrN)r��	successesr��strr�r��assertEqual)rr�r1ru�expected_ns�	result_nss      rr�z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successessc���)�)�&�1��)/�)9�)9�?�%�D�+�!�$��,�#�z�z�|�� $� 0� 0��� >�I��&�&�{�I�>�	?rN)rrr rr�r�r�r@rr�AddTestsr��s��
<�&
�
0�
?rr�)�hasattrrsr�r�r��object)�clsrc�bases�bodydictr�r�r�r�r�r�r�r:s            rrzParserTesterMetaclass.__init__�s����#�#���s�.�/�#&�5�C� ��s�N�+�9�C��
	=�
	<�	<�	+�	(�)	?�v�)	?�Z(��K�@�	9�M�'��1�
9�
���m�Z�8�
9�	9rNrxr@rrr�r��s
��
�_9rr�r�c��eZdZ	ed�gZgd�Zded��fded��fded��fd	ed
��fded
��fgZy)�TestOptionalsSingleDash�-x)r��a�--foo�-x --fooz-x -yrN��x�-x ar��-xaz-x -1�-1z-x-1�rrr rsr�r�rzr�r@rrr�r�3sY��;��t�9�+��8�H�	�R�$�Z��	��c���	��S�	��	�"�t�*��	��d����Irr�c�r�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Zy)�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�As	��;�	�D��&��F�=��3��D�	���
C�H�
�R�%�T�T�
*�+�	
�r�D�d�d�+�,�	��U���,�-�	��e���-�.�	��d���,�-�	�"�t���-�.�	�2��$�#�.�/�	�B��4�3�/�0�	
�r�E�r�T�*�+�	��e��t�,�-�	��T�r�S�1�2�	��d��c�2�3�
�Irr�c��eZdZ	ed�gZgd�Zded��fded��fded	��fd
ed��fded��fgZy)�TestOptionalsSingleDashLong�-foo)rr�r�z
-foo --fooz-foo -y�-fooarN�r'z-foo ar�z-foo -1r�z-fo a�-f ar�r@rrr
r
[sY��K��v�;�-��G�H�	�R�D�\��	�2�#�;��	�B�4�L�!�	�"��+��	������Irr
c���eZdZ	ed�ed�ed�gZgd�Zdeddd��fded	dd��fd
ed	dd��fdeddd��fd
eddd��fdedd	d��fdeddd	��fgZy)�&TestOptionalsSingleDashSubsetAmbiguous�-f�-foobar�-foorab)rr�-fo�-foo bz-foobz-foobaz-foorarN)�f�foobar�foorabrr��-fa�-foa�oar�ooa�	-foobar a�	-foorab ar�r@rrrris���G��t�9�c�)�n�c�)�n�E��K�H�	�R�$�t�D�
1�2�	��c�$�t�4�5�	��S��d�3�4�	��d�4��5�6�	�"�u�T�$�7�8�	�b�4��D�9�:�	�b�4��S�9�:��Irrc���eZdZ	ed�ed�gZgd�Zdedd��fdedd��fd	edd��fd
edd��fdedd��fdedd��fd
edd��fgZy)� TestOptionalsSingleDashAmbiguousrr)rrrrrrrrN)rrz-foob ar�z-foor az-fooba az-foora arrr�r@rrr r ys���A��y�>�3�y�>�:��E�H�	�R�t�D�
)�*�	�B�c�$�/�0�	�B�d�3�/�0�	�R�s�4�0�1�	�R�t�C�0�1�	�b��D�1�2�	�b��S�1�2��Irr c��eZdZ	edd��gZgd�Zded��fded	��fd
ed	��fded��fgZy)
�TestOptionalsNumericr��one��dest)r�r�z-1 --fooz-1 -yz-1 -1z-1 -2rN)r#z-1 ar�z-1az-1-2�-2r�r@rrr"r"�sQ��2��t�%�0�1��A�H�	�R�D�\��	�����	��s���	�����	�Irr"c��eZdZ	ed�gZgd�Zded��fded��fded��fd	ed
��fded
��fgZy)�TestOptionalsDoubleDashr�)r�rrr�z--foo -xz--foo --barrNr
z--foo ar�z--foo=az
--foo -2.5z-2.5z
--foo=-2.5r�r@rrr(r(�sY��;��w�<�.��F�H�	�R�D�\��	�B�3�K� �	�B�3�K� �	�r�f�~�&�	�r�f�~�&��Irr(c
���eZdZ	edd��ed�gZgd�Zdedd�	�fd
edd�	�fded
d�	�fded
d�	�fded
d�	�fded
d�	�fgZy)�#TestOptionalsDoubleDashPartialMatch�--badgerr�r�z--bat)�--bar�--b�--ba�--b=2z--ba=4�	--badge 5rFN)�badger�batz--bat X�X�--badT�--badg�--badger�r@rrr*r*�s���A�	�J�|�,��G����H�H�	�R�u�$�
'�(�	�B�e��-�.�	�"�D�d�+�,�	�2�T�t�,�-�	�B�d��-�.�	�R�t��.�/�
�Irr*c���eZdZ	edd��ed�gZgd�Zdedd�	�fd
edd�	�fdedd�	�fd
edd�	�fdedd�	�fdedd�	�fdedd�	�fgZy)�"TestOptionalsDoubleDashPrefixMatchr+r�r�r.)r,r-r.r/r0rFN)r1�baz--ba Xr3z--ba=Xr4Tr5r6r�r@rrr8r8�s���I�	�J�|�,��F����>�H�	�R�u��
&�'�	�2�U�s�+�,�	�2�U�s�+�,�	�"�D�T�*�+�	�2�T�d�+�,�	�B�d�t�,�-�	�R�t��-�.��Irr8c���eZdZ	edd��ed�eddd��gZgd	�Zd
eddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fgZy)�TestOptionalsSingleDoubleDashrr�r�r,�-bazr�rr)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���
A�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�Irr;c��eZdZ	edd��Zedd��ed�edd	d
��gZgd�Zd
eddd��fdeddd��fdeddd��fdeddd��fdeddd
��fdeddd
��fgZy)�!TestOptionalsAlternatePrefixChars�+:/F��prefix_chars�add_help�+fr�r��::bar�/bazr�rr)r,r=r>r?r�--bar Br<r4�--helpz+hz::helpz/helprNr@T�::ba Br?�
+f ::bar B�+f /b�/ba +f�	rrr rsr�r�r�rzr�r@rrrDrD�s���C����>���D��&��G���F�=��3���
q�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�IrrDc��eZdZ	edd��Zedd��ed�edd	d
��gZgd�Zd
eddd��fdeddd��fdeddd��fdeddd��fdeddd
��fdeddd
��fgZy)�*TestOptionalsAlternatePrefixCharsAddedHelprETrFrIr�r�rJrKr�rr)r,r=r>r?rrLr<rFNr@rNr?rOrPrQrRr@rrrTrT�s���+����=���D��&��G���F�=��3���
H�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�IrrTc	���eZdZ	edd��Zedd��edd��edd��gZgd	�Zd
eddd��fdeddd��fd
eddd��fdeddd��fgZy)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-FrFr�r�r�z+yz+z)�-wz-xyzz+xrz+xyzr�r��yrTz+y -xz+yz -xNrRr@rrrVrVs���J���u�=���D��&��D��&��D��&���
�H�
�R�%�5�E�
*�+�	
�r�D�E�U�+�,�	�"�t�t�u�-�.�	�2����-�.�	�IrrVc��eZdZ	eddddd��gZgd�Zded	�
�fded�
�fded�
�fded�
�fded�
�fgZy)
�TestOptionalsShortLong�-vz	--verbosez-nz--noisyr�r�)z
--x --verbosez-Nr�z-v xrF)�verboseTNr�r@rrr[r[sn��F�	�D�+�t�Y�|�D���4�H�	�R��
��	
�r�$�� �	�b��&�'�	
�r�$�� �	�B�t�$�%��Irr[c��eZdZ	ed�edd��gZdgZdedd�	�fd
edd�	�fded
d�	�fdedd�	�fgZy)�TestOptionalsDestz	--foo-bar�--baz�zabbazr$r�z--foo-bar frN)�foo_barraz--baz g�gz--foo-bar h --baz i�hr�z--baz j --foo-bar k�k�jr�r@rrr_r_-sf��4��{�+�S��x�-H�I���u�H�	��3�t�4�5�	�B�t�C�0�1�	��3�s� ;�<�	��3�s� ;�<�	�Irr_c�~�eZdZ	ed�edd��gZdgZdedd��fd	ed
d��fdedd��fgZy)
�TestOptionalsDefaultr�rr��defaultr�rN�r�rYz-xxr�z-yyrYr�r@rrrhrh:sU��4��t�9�c�$��&;�<���u�H�	�R�$�"�
��	��S�B�� �	��T�S�!�"��Irrhc�T�eZdZ	ed�gZddgZded��fded��fgZy)�TestOptionalsNargsDefaultr�r�rNr�r�r�r@rrrmrmFs9��A��t�9�+���T�{�H�	�R�$�Z��	��c����Irrmc�Z�eZdZ	edd��gZddgZded��fdedg��fgZy)	�TestOptionalsNargs1r����nargsr�rNr�r�r�r@rrroroQs?��0��t�1�-�.���T�{�H�	�R�$�Z��	��s�e����Irroc�\�eZdZ	edd��gZgd�Zded��fdegd	���fgZy)
�TestOptionalsNargs3r��rq)r�r�r��-x a b�a -x�a -x brNr�z-x a b c�r��b�cr�r@rrrtrt\s:��1��t�1�-�.��>�H�	�R�$�Z��	�R�/�*�+��Irrtc�X�eZdZ	edd��eddd��eddd�	�ed
dedd�
�gZdgZdedddd��fdedddd��fdedddd��fdedddd��fdedddd��fdedddd��fdedddd��fd
edddd��fdedddd��fg	Zy)�TestOptionalsNargsOptionalrW�?rqr�r)rrrr�spam�rrrjr�42�84)rrr�rrj�2rN�T�rfr�rYrz-w 2z-x 2z-y 2z-z 2��	rrr rs�intr�r�rzr�r@rrr}r}gs���:�	�D����D��2�&��D��V�,��D��#�T�4�@�	���u�H�	�R�$�$�&�B�
/�0�	
�r�D�D�F�b�1�2�	��c�T�V�r�2�3�	
�r�D�B�&�B�/�0�	��d�c�V�r�2�3�	
�r�D�D�D�B�/�0�	��d�d�c�R�0�1�	
�r�D�D�F�b�1�2�	��d�d�f��2�3�
�Irr}c���eZdZ	edd��eddd��gZdgZded	d�
�fdegd�
�fdedgd�
�fdedd
gd�
�fded	g�
�fded	dg�
�fded	dd
g�
�fgZy	)�TestOptionalsNargsZeroOrMorer��*rqrrr�r�rNrkr�rvrz�-y a�-y a br�r@rrr�r�~s���I�	�D����D��V�,����u�H�	�R�$�&�
!�"�	
�r�B�&�!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	
�r�D�B�� �	��d�s�e�$�%�	�2���c�
�+�,��Irr�c
��eZdZ	edd��eddd��gZgd�Zded	d�
�fdedgd�
�fd
eddgd�
�fded	dg�
�fded	ddg�
�fgZy	)�TestOptionalsNargsOneOrMorer��+rqrrr�)r�r�rrwza -y brNrkr�r�rvrzr�r�r�r@rrr�r��s���H�	�D����D��V�,���3�H�	�R�$�&�
!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	��d�s�e�$�%�	�2���c�
�+�,��Irr�c
���eZdZ	edd��edeed���gZgd�Zded	d	�
�fdedd	�
�fd
edd	�
�fded	d�
�fded	d�
�fdedd�
�fgZ	y	)�TestOptionalsChoicesr�abc��choicesz-g��r�r�)r�z-f dz-fadz-gaz-g 6rN)rrcrr�z-f cr{z-g 0rz-g 03ruz-fb -g4rz��
rrr rsr��ranger�r�rzr�r@rrr�r��s���6�	�D�%� ��D�s�E�!�H�-�/��4�H�	�R�$�$�
� �	��c�T�"�#�	��c�T�"�#�	��d�a��!�	�"�t�q�/�"�	�B���N�#�
�Irr�c�Z�eZdZ	eded��gZddgZded��fd	ed
��fgZy)�TestOptionalsRequiredr�T�r��requiredr�r�-x 1rpr�z-x42rNr�r@rrr�r��sE��3�	�D�s�T�*����R�y�H�	��a���	��b����Irr�c�X�eZdZ	edd��gZddgZded��fd	ed
��fgZy)�TestOptionalsActionStorer��storer�r�rwrNr�z-xfoor'r�r@rrr�r��s=��0��t�G�4�5���V�}�H�	�R�$�Z��	�"�u�+���Irr�c�X�eZdZ	edde��gZdgZded��fdee��fgZy)�TestOptionalsActionStoreConstrr�rr�rN�rY)	rrr rsr�r�r�rzr�r@rrr�r��s=��6��t�M��H�I���u�H�	�R�$�Z��	
�r�F�|���Irr�c�X�eZdZ	edd��gZgd�Zded��fded��fgZy	)
�TestOptionalsActionStoreFalser�store_falser�)r�rrrT)rFNr�r@rrr�r��s9��6��t�M�:�;��#�H�	�R�$�Z��	
�r�E�{���Irr�c�X�eZdZ	edd��gZgd�Zded��fded��fgZy	)
�TestOptionalsActionStoreTruez--appler�r�)r�z	--apple=bz	--apple brF)�appleTNr�r@rrr�r��s9��5��y��>�?��.�H�	�R�e�_��	�B�T�N�#��Irr�c��eZdZ	edej
��gZddgZded��fded��fd	ed
��fded
��fded��fgZ	d
�Z
d�Zy)�TestBooleanOptionalActionr�r��	--foo bar�	--foo=barrNr
T�--no-fooFz--foo --no-fooz--no-foo --fooc��tj�}|jt�5}|j	ddtj
��ddd�|j
dtj��y#1swY�/xYw)Nr�T�rr�z*got an unexpected keyword argument 'const')	r*r+r�r�r��BooleanOptionalAction�assertInr��	exception�rr1�cms   r�
test_constz$TestBooleanOptionalAction.test_const�sn���(�(�*��
�
�
�y�
)�	\�R�����t�H�<Z�<Z��[�	\�	
�
�
�B�C����DU�V�	\�	\�s�#A;�;Bc���tj�}|jt�5|j	dtj
d��ddd�|jt�5|j	dtj
t��ddd�|jt�5|j	dtj
d��ddd�|jt�5|j	dtj
d��ddd�|jt�5|j	dtj
d�	�ddd�|jt�5|j	d
tj
d�	�ddd�y#1swY��OxYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�|xYw#1swYyxYw)N�-a)r�r��-b�-c)r��metavar�-d�d�-e)r�r�rr@)r*r+�assertWarns�DeprecationWarningr�r��boolr0s  r�test_deprecated_init_kwz1TestBooleanOptionalAction.test_deprecated_init_kws����(�(�*��
�
�
�0�
1�	������5�5��
 �
�	��
�
�0�
1�	������5�5��
 �
�	��
�
�0�
1�	������5�5��
 �
�	��
�
�0�
1�	������5�5��
 �
�	��
�
�0�
1�	������5�5��
 �
�	��
�
�0�
1�	������5�5��
 �
�	�	�A	�	��	�	��	�	��	�	��	�	��	�	�sG�#F�*'F'�.#F4�.#G�.#G�.#G�F$�'F1�4F=�G	�G�G!)rrr rsr*r�r�r�rzr�r�r�r@rrr�r��ss��%��w�x�/M�/M�N�O���[�)�H�	�R�D�\��	�"��,��	�R�E�]�#�	�2�%�=�)�	�2�$�<�(��I�W�)rr�c�l�eZdZ	eddej
��gZdgZded��fded��fgZ	y)	�!TestBooleanOptionalActionRequiredr�T)r�r�rr
r�FN)
rrr rsr*r�r�r�rzr�r@rrr�r�+sI��.�	�G�d�8�+I�+I�J����t�H�	�"��,��	�R�E�]�#��Irr�c�r�eZdZ	edd��gZgd�Zded��fded	g��fd
ed	dg��fgZy)�TestOptionalsActionAppendr`�appendr��r�r`�a --baz�	--baz a brN�rB�--baz ar��--baz a --baz brzr�r@rrr�r�7sL��1��w�x�8�9��5�H�	�R�D�\��	�B�C�5�M�"�	�B�C��:�.�/��Irr�c�z�eZdZ	edddg��gZgd�Zdedg��fdedd	g��fd
egd���fgZy)
�$TestOptionalsActionAppendWithDefaultr`r�r3�r�rjr�rr�r�r�r�)r3r�rzNr�r@rrr�r�CsQ��1��w�x�#��G�H��5�H�	�R�S�E�]��	�B�C��:�&�'�	�B�?�3�4��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
��fgZy
)�!TestConstActionsMissingConstKwargr�append_constr�r�r�r�r,)z-f vr�r�rN)rr'rzrAr�r@rrr�r�Os���G�	�D��(��G�N�+��D��'��G�M�*�	��2�H�	�R�$�D�D�d�
3�4�	
�r�T�F���$�7�8�	�"�t�$��4�T�:�;�	
�r�D�d�d��5�6�	�"�t���4�8�9��Irr�c	��eZdZ	edde��eddd��gZgd�Zd	ed
��fdeeg��fdeed
edg��fgZy
)�TestOptionalsActionAppendConstr�r�rr�r�rz�r�r%�r�r�za -cz-bxz-b xrN�rz�-b -cx -b -cyzr��yz�	rrr rsr�r�r�rzr�r@rrr�r�bsf��7�	�D��y�9��D���,���2�H�	�R�$�Z��	
�r�Y�K� �!�	�2��C��D� A�B�C��Irr�c
��eZdZ	eddedg��eddd��gZgd	�Zd
edg��fdedeg��fdeded
edg��fgZy)�)TestOptionalsActionAppendConstWithDefaultr�r�r3)r�rrjr�r�rzr�r�rr�r�r�r�Nr�r@rrr�r�qsq��7�	�D��y�3�%�H��D���,���2�H�	�R�3�%�[��	
�r�S�)�$�%�&�	�2��i��i�� F�G�H��Irr�c�X�eZdZ	edd��gZgd�Zded��fded��fgZy)	�TestOptionalsActionCountr��countr�)r�r�z-x bz	-x a -x brNr�rpr�r@rrr�r��s8��0��t�G�4�5��1�H�	�R�$�Z��	
�r�A�w���Irr�c	��eZdZ	ed�ed�edd��gZddgZded	d	d
��fded
d	d
��fded	dd
��fdedd	d��fgZy	)�"TestOptionalsAllowLongAbbreviationr�z--foobazz--foobler�r�z--foob 5z--foobrNF)r'�foobaz�fooblez--foo 7�7z	--fooba ar�z--foobl --foo grcTr�r@rrr�r��s~��<�	�G���J���J�|�,���
�H�%�H�	�R�D��e�
4�5�	�B�3�t�E�:�;�	�b�T�#�e�<�=�	�B�3�t�D�A�B�	�Irr�c��eZdZ	ed��Zed�edd��ed�gZgd�Zd	ed
dd
��fded
dd
��fdeddd��fgZy
)�%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 2r�Tr�rRr@rrr�r��sr��;���.���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr�c��eZdZ	edd��Zed�edd��ed�gZgd	�Zd
eddd��fd
eddd��fdeddd��fgZy)�0TestOptionalsDisallowLongAbbreviationPrefixCharsr�F�rGr�z++fooz++foodler�r�z++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNr�z++foo 3r�z++foonly 7 ++foodle ++foo 2r�Tr�rRr@rrr�r��st��L���%�@���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr�c
���eZdZ	ed��Zed�edd��gZddgZded	d	�
�fdedd	�
�fd
edd	�
�fded	d�
�fdedd�
�fdedd�
�fgZy	)�/TestDisallowLongAbbreviationAllowsShortGroupingFr�z-rr�r�r�z-c -rrN��rr{z-rar�z-rcc�ccz-ccr�z-cc -raz-ccrccrRr@rrr�r��s���;���.���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irr�c
���eZdZ	edd��Zed�edd��gZddgZd	ed
d
��fded
d
��fdedd
��fded
d��fded
d��fdedd��fgZy
)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr�Fr�z+rz+cr�r�z+c +rrNr�z+rar�z+rccr�z+ccr�z+cc +raz+ccrccrRr@rrr�r��s���O���%�@���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irr�c�@�eZdZ	ed�gZgd�Zded��fgZy)�TestPositionalsNargsNoner'�rr��a br�r
Nr�r@rrr�r��s)��6��u�:�,�� �H�	�b�S�k���Irr�c�F�eZdZ	edd��gZgd�Zdedg��fgZy)�TestPositionalsNargs1r'rprqr�r�r
Nr�r@rrr�r��s/��8��u�A�.�/�� �H�	�b�c�U�m���Irr�c�H�eZdZ	edd��gZgd�Zdeddg��fgZy	)
�TestPositionalsNargs2r'r�rq)rr�r��a b cr�r�rzr
Nr�r@rrrr�s2��8��u�A�.�/��'�H�	���S�z�"�#��Irrc�p�eZdZ	edd��gZdgZdeg��fdedg��fdedd	g��fgZy
)�TestPositionalsNargsZeroOrMorer'r�rqr�rr
r�r�rzNr�r@rrrrsN��:��u�C�0�1���v�H�	�R�B�Z��	�b�c�U�m��	���S�z�"�#��Irrc�r�eZdZ	eddd��gZdgZded��fdedg��fd	edd
g��fgZy)�%TestPositionalsNargsZeroOrMoreDefaultr'r�rAr�r�rr
r�r�rzNr�r@rrrrsP��H��u�C��?�@���v�H�	�R�E�]��	�b�c�U�m��	���S�z�"�#��Irrc�^�eZdZ	edd��gZddgZdedg��fdedd	g��fgZy
)�TestPositionalsNargsOneOrMorer'r�rqrr�r�r
r�rzNr�r@rrrrsD��<��u�C�0�1���D�z�H�	�b�c�U�m��	���S�z�"�#��Irrc�X�eZdZ	edd��gZddgZded��fd	ed	��fgZy)
�TestPositionalsNargsOptionalr'r~rqr�r�rNr
r�r�r@rrr
r
)s=��&��u�C�0�1���e�}�H�	�R�D�\��	�b�S�k���Irr
c�Z�eZdZ	eddd��gZddgZded��fd	ed	��fgZy
)�#TestPositionalsNargsOptionalDefaultr'r~rr�r�r�rr
r�Nr�r@rrrr4s?��;��u�C��<�=���e�}�H�	�R�B�Z��	�b�S�k���Irrc�\�eZdZ	edded��gZgd�Zded��fd	ed
��fgZy)�,TestPositionalsNargsOptionalConvertedDefaultr'r~r�)rrr�rj)r�r��1 2rrr
�1rpNr�r@rrrr?sE���
	�E��3��5���$�H�	�R�B�Z��	�b�Q�i���Irrc�P�eZdZ	ed�ed�gZgd�Zdedd��fgZy)	�TestPositionalsNargsNoneNoner'rA)rr�r�rr�r�rz�r'rANr�r@rrrrNs3��7��u�:�s�5�z�2��'�H�	��s��$�%��Irrc�V�eZdZ	ed�edd��gZgd�Zdeddg�	�fgZy
)�TestPositionalsNargsNone1r'rArprq)rr�r�rr�r�rzrNr�r@rrrrXs8��@��u�:�s�5��':�;��*�H�	��s���&�'��Irrc�X�eZdZ	edd��ed�gZgd�Zdeddgd	�
�fgZy)�TestPositionalsNargs2Noner'r�rqrA�rr�r�r��a b c drr�rzr{rNr�r@rrrrbs:��B��u�A�.��E�
�;��3�H�	�"�#�s���-�.��Irrc��eZdZ	ed�edd��gZddgZdedg��fd	edd
g��fdedd
dg��fgZy
)�"TestPositionalsNargsNoneZeroOrMorer'rAr�rqrr�r�rr�rzrr{Nr�r@rrrrls^��H��u�:�s�5��'<�=���G�}�H�	�b�S�b�!�"�	��s���&�'�	�"��3��*�-�.��Irrc�p�eZdZ	ed�edd��gZgd�Zdeddg�	�fd
edddg�	�fgZy)
�!TestPositionalsNargsNoneOneOrMorer'rAr�rq�rr�r�r�r�rzrrr{Nr�r@rrrrxsK��J��u�:�s�5��'<�=��!�H�	��s���&�'�	�"��3��*�-�.��Irrc�j�eZdZ	ed�edd��gZgd�Zdedd��fd	edd
��fgZy)� TestPositionalsNargsNoneOptionalr'rAr~rq�rr�rr�Nrr�rzr�r@rrr r �sE��J��u�:�s�5��'<�=��%�H�	�b�S�d�#�$�	��s��$�%��Irr c��eZdZ	edd��ed�gZddgZdegd��fd	edgd
��fdedd
gd��fgZy
)�"TestPositionalsNargsZeroOrMoreNoner'r�rqrArr�r�rr�rzrr{Nr�r@rrr#r#�s^��J��u�C�0�#�e�*�=���G�}�H�	�b�R�S�!�"�	���u�#�&�'�	�"�#�s���-�.��Irr#c�p�eZdZ	edd��ed�gZgd�Zdedgd�	�fd
eddgd�	�fgZy)
�!TestPositionalsNargsOneOrMoreNoner'r�rqrArr�r�rzrrr{Nr�r@rrr%r%�sK��L��u�C�0�#�e�*�=��!�H�	���u�#�&�'�	�"�#�s���-�.��Irr%c�l�eZdZ	eddd��ed�gZgd�Zdedd��fd	edd
��fgZy)� TestPositionalsNargsOptionalNoner'r~rr�rAr!r�rr�rzNr�r@rrr'r'�sG��L��u�C��<�c�%�j�I��%�H�	�b�R�S�!�"�	��s��$�%��Irr'c�x�eZdZ	edd��edd��gZgd�Zdedd	gg�
�fdedd	gdg�
�fgZy
)�TestPositionalsNargs2ZeroOrMorer'r�rqrAr�rr�r�rzrrr{Nr�r@rrr)r)�sR��G��u�A�.��E��0E�F��!�H�	���S�z�r�*�+�	�"�#�s��#��/�0��Irr)c�^�eZdZ	edd��edd��gZgd�Zdedd	gd
g��fgZy)
�TestPositionalsNargs2OneOrMorer'r�rqrAr�)rr�r�r�rr�rzr{rNr�r@rrr+r+�s?��I��u�A�.��E��0E�F��(�H�	�"�#�s��#��/�0��Irr+c�v�eZdZ	edd��edd��gZgd�Zdedd	gd
��fdedd	gd
��fgZy
)�TestPositionalsNargs2Optionalr'r�rqrAr~)rr�r�rr�r�rzNrrr{r�r@rrr-r-�sP��A��u�A�.��E��0E�F��,�H�	���S�z�t�,�-�	�"�#�s���-�.��Irr-c��eZdZ	edd��edd��gZddgZdegdg�	�fd
edgdg�	�fdeddgd
g�	�fgZy)�TestPositionalsNargsZeroOrMore1r'r�rqrArprr�r�rr�rzrr{Nr�r@rrr/r/�sg��G��u�C�0�#�e�1�2E�F���G��H�	�b�R�c�U�#�$�	���u�3�%�(�)�	�"�#�s��#��/�0��Irr/c�x�eZdZ	edd��edd��gZgd�Zdedgd	g�
�fdedd	gdg�
�fgZy
)�TestPositionalsNargsOneOrMore1r'r�rqrArprr�r�rzrrr{Nr�r@rrr1r1�sR��I��u�C�0�#�e�1�2E�F��!�H�	���u�3�%�(�)�	�"�#�s��#��/�0��Irr1c�r�eZdZ	edd��edd��gZgd�Zdeddg�	�fd
eddg�	�fgZy)�TestPositionalsNargsOptional1r'r~rqrArpr!r�Nrr�rzr�r@rrr3r3�sL��I��u�C�0�#�e�1�2E�F��%�H�	�b�T��u�%�&�	��s���&�'��Irr3c��eZdZ	ed�edd��edd��gZgd�Zded	gd
g��fded	d
gd
g��fgZy)�#TestPositionalsNargsNoneZeroOrMore1r'rAr�rqrBrprr�r�rz�r'rArBrr{Nr�r@rrr5r5�s`��G�	�E�
��E����E�����
"�H�	��s����.�/�	�"��3�%�c�U�3�4��Irr5c��eZdZ	ed�edd��edd��gZgd�Zded	d
gdg��fd
ed	d
dgdg��fgZy)�"TestPositionalsNargsNoneOneOrMore1r'rAr�rqrBrp)rr�r�rzrr�rzr{r6rr�Nr�r@rrr8r8sd��I�	�E�
��E����E�����
'�H�	�"��3�%�c�U�3�4�	�B�3�S�#�J�S�E�:�;��Irr8c��eZdZ	ed�eddd��edd��gZgd	�Zd
edddg�
�fdedddg�
�fgZy)�!TestPositionalsNargsNoneOptional1r'rAr~��?r�rBrprqrr�r�rzr6rr{Nr�r@rrr:r:s`��E�	�E�
��E��e�,��E�����
"�H�	��s��C�5�1�2�	�"��#�C�5�1�2��Irr:c��eZdZ	edd��eddd��gZddgZd	ed
d��fdedd��fd
edd��fgZy
)�$TestPositionalsNargsOptionalOptionalr'r~rqrArr�r�rrNrr�r�rzr�r@rrr=r=se��!�	�E����E��b�)�����!�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s��$�%��Irr=c	��eZdZ	edd��edd��gZdgZdedg�	�fd
ed
g�	�fded
dg�	�fd
ed
ddg�	�fgZy)�&TestPositionalsNargsOptionalZeroOrMorer'r~rqrAr�r�rNrr�r�rzrr{r�r@rrr?r?.sn��;��u�C�0�#�e�3�2G�H���y�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s���&�'�	�"��3��*�-�.�	�Irr?c��eZdZ	edd��edd��gZddgZded	dg�
�fdeddg�
�fd
edddg�
�fgZy	)�%TestPositionalsNargsOptionalOneOrMorer'r~rqrAr�rr�r�Nrr�rzrr{r�r@rrrArA;sc��=��u�C�0�#�e�3�2G�H���G�}�H�	�b�T��u�%�&�	��s���&�'�	�"��3��*�-�.��IrrAc�d�eZdZ	eded���gZgd�Zded��fded��fgZy)	�TestPositionalsChoicesStringr�abcdefgr��rr�rdr��efr��rrcN)	rrr rs�setr�r�rzr�r@rrrCrCGs=��0��v�s�9�~�>�?��-�H�	�b�c�l��	�b�c�l���IrrCc�f�eZdZ	edeed���gZgd�Zded��fded	��fgZ	y
)�TestPositionalsChoicesIntr�r�rE�4r�rG�15�Nr�r@rrrJrJRs?��'��v�C��r��C�D��-�H�	�b�a�j��	
�r�r�{���IrrJc�`�eZdZ	edd��eddd��gZgd�Zdedd	d
gg��fgZy)
�TestPositionalsActionAppendrr�r�r�)r�rrrrr�rzr{rGNr�r@rrrPrP]sI��"�	�F�8�$��F�8�1�-���4�H�	�"�3��c�
�+�,�-��IrrPc��eZdZ	edd��eddd��gZdd	gZd
edd�
�fdedd�
�fdedd�
�fdedd�
�fgZy)�"TestOptionalsNumericAndPositionalsr�r~rqz-4rYr��r%r�r&z-315rNFrkr�Tz-4 ar�r@rrrRrRmss��E�	�C�s���D�s�<�0����f�~�H�	�R�$�%�
 �!�	�b�3�%� �!�	
�r�D�D�!�"�	��c�T�"�#�	�IrrRc	��eZdZ	edd��eddd��gZdgZd	ed
d��fd
ed
d��fdedd��fded
d��fdedd��fgZy
)�(TestOptionalsAlmostNumericAndPositionalsr�r~rqz-k4rYr�rSz-k3rNFrkr&r�Tz-k4 ar�r@rrrUrU}s���L�	�C�s���E��L�1����w�H�	�R�$�%�
 �!�	
�r�D�E�"�#�	�b�3�%� �!�	��T�T�"�#�	�"�s�d�#�$��IrrUc��eZdZedd��eddd��gZdgZdgedd	�
�fdgedd	�
�fdgedd	�
�fddged	d�
�fddged	d�
�fddged	d�
�fd
ged	d�
�fdged	d�
�fgZy	)�$TestEmptyAndSpaceContainingArgumentsr�r~rqrz--yyyrYr$rNrkza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�r@rrrWrW�s���	�C�s���D�'��$����v�H�
��r�B�$�� �
��r�J�$�/�0�
���[�D�1�2�
���R�$�"�%�&�
�
�	�R�$�*�5�6�
��	�b�4�;�7�8�
�	�R�$�*�5�6�
�	�b�4�;�7�8�	�IrrWc��eZdZed��Zedddd��edd	ed
��edd
d��gZddgZdedd
d��fdedd
d��fdedd
d��fdeddd��fdedd
d��fdedd
d��fgZ	y)� TestPrefixCharacterOnlyArgumentsz-+�rG�-r�r~r1)r%rrrr�rYr)r%r�rjz-+-rr�rSrz+ -rNFrXz- Xr3z+ -3���Tz- ===z===)
rrr rsr�r�r�r�rzr�r@rrrYrY�s�����-���C�c��H�5��C�c��R�0��E��L�1���
�e�}�H�	�R�$�"��
&�'�	�b�8�r�U�+�,�	��S�B�%�(�)�	��d�b�E�*�+�	��T�R�4�(�)�	�"�u��e�,�-�
�IrrYc���eZdZ	edd��edd��gZgZdedg��fdegg��fded	gg��fd
ed	gdg��fd	edd	g��fdegd	g��fd
edgd	g��fgZy)�TestNargsZeroOrMorer�r�rqrYrNrkr�r�z	-x a -- brzrwrxr�r@rrr^r^�s���I��t�3�/��S��1D�E���H�	�R�$�"�
��	
�r�B�"�~��	��s�e�r�"�#�	�b�C�5�S�E�*�+�	�b�4�C�5�!�"�	��b�S�E�"�#�	�2���#��'�(��Irr^c	��eZdZ	ed�edd��ed�gZgd�Zdedgd�	�fd
edgd�	�fdedgd
�d�	�fdedddgd�	�fgZy)�TestNargsRemainderr�rY�...rqr)rrz-z Zr3NrXz-z Z X�Z�
X A B -z Z)�Ar?rrbz	X Y --foo�Yr�r�r@rrr`r`�sv��<��s�8�S��E�%:�C��I�F��!�H�	�b�3�"��%�&�	�2��r�S�)�*�	�r�C�#8�D�A�B�	�b�3�3��.�D�9�:�	�Irr`c�j�eZdZ	ede��eded��edd��gZgd	�Zd
eddg��fd
eddg��fdedddg��fdeddg��fdeddg��fdeddg��fdedddg��fdedddg��fdedddg��fdedddg��fdedddg��fgZy)�TestOptionLiker��r�z-3rY)r�r%rr�rq)
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 arNrXz-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 rs�floatr�r�rzr�r@rrrgrg�s��8�	�D�u���D�u�3�'��C�s����
0�H�

�R�$�$�"�
%�&�	�2��t�r�*�+�	�R�#��#��/�0�	��d�c�R�(�)�	�"�t�t�r�*�+�	�"�t�s�b�)�*�	�2����u�-�.�	�b�4�4�C�5�)�*�	�2��t��u�-�.�	�2��t��u�-�.�	�2����u�-�.��Irrgc��eZdZ	eddej
��eddej
��eddej
��gZd	gZd
e�fded��fd
eddg��fded��fdedd��fdeddgd��fgZ	y)�TestDefaultSuppressr'r~r�rAr�r`r�r�r�rr�r
r�rzrTr�r��r'rBr�r6N)
rrr rsr*�SUPPRESSr�r�rzr�r@rrrmrm�s���/�	�E��h�&7�&7�8��E��h�&7�&7�8��G�L�(�2C�2C�D���
�v�H�	�R�T�
�	�b�S�k��	��s���&�'�	�"��,��	�B�3�D�)�*�	�b�S�s�e��6�7�
�Irrmc��eZdZ	eej
��Zedd��edd��edd�	�gZd
gZde	�fde	d�
�fde	ddg��fde	d��fde	dd��fde	ddgd��fgZ
y)�TestParserDefaultSuppress��argument_defaultr'r~rqrAr�r`r�r�r�rr�r
r�rzrTr�r�rnr�r6N)rrr rsr*ror�r�r�rzr�r@rrrqrq�s���>��H�,=�,=�>���E����E����G�L�)���
�v�H�	�R�T�
�	�b�S�k��	��s���&�'�	�"��,��	�B�3�D�)�*�	�b�S�s�e��6�7�
�Irrqc��eZdZ	ed��Zeddd��edd�	�ed
d�	�edd
��gZdgZdedddd��fdedddd��fdeddgdd��fdedddd��fdedddd��fdeddgdd��fgZy)�TestParserDefault42rrr�	--version�version�1.0�r�rwr'r~rqrAr�r`r�r�r�r)r'rArBrwr�r�rzTr�r�NrRr@rrrurus���8��B�/���K�	�5�9��E����E����G�L�)�	���v�H�	�R�B�B�B��
3�4�	�b�S�b�b�"�5�6�	��s���2�r�:�;�	�"����r�:�;�	�B�3�B�D�"�=�>�	�b�S�s�e��r�B�C�
�Irruc�
��eZdZ	�fd�Zed��Zed�ed�edd��gZgd	�Zd
ejzZ
dedd
dg��fdedd
ddg��fdede
d
g��fdedd
e
g��fdede
ddg��fdedd
e
dg��fgd�edd
dg��fgZejrPejjd�Zej"e�Zededed
g��fdedd
eg��fgz
Z�xZSdZ�xZS)�TestArgumentsFromFilec���tt|��dtj|j
�dzfddd|jdzfg}|D]+\}}t|d�5}|j|�ddd��-y#1swY�8xYw)N�hello�
)�	recursives-a
A
@hello)�invalids@no-such-path
�undecodable�wb)	rr{rJrR�fsencoder}r�rirj�r�
file_textsrZ�textrmrs     �rrJzTestArgumentsFromFile.setUp+s����
�#�T�0�2�
�b�k�k�$�*�*�-��5�6�
%�
,�
�D�,�,�u�4�5�

�
�%�	!�J�D�$��d�D�!�
!�T��
�
�4� �
!�
!�	!�
!�
!�s�A<�<B	�@��fromfile_prefix_charsr�r�rYr�rq)rr�r3z@invalidz@missingzhello world!zX YNr3re)r�r�rYz
X -a A Y Zrdrb�@hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a Br?)r�rr3rer�@z@undecodable XzX @undecodabler)rrr rJrsr�r�r�r�FS_NONASCIIr}rzr��TESTFN_UNDECODABLE�lstripr�rR�fsdecode�decoded_undecodabler!r"s@rr{r{(sR���,�!���5���D�	��C���C�s����
7�H��Y�2�2�2�E�	��T�S�S�E�*�+�	�r�C�3�3��*�5�6�	�R�$�%�C�5�1�2�	�R�$�#�%��1�2�	��S�E�c�3�Z� @�A�	��S�C�E�3�<� @�A�	�r�B�#�#��7�8��I��#�#��2�2�9�9�$�?��)�b�k�k�+�6���
�r�D�,?�C�5�I�J�
�r�D�C�4G�3H�I�J�
�	
�	�
�rr{c���eZdZ	�fd�ZGd�de�ZeZed��Zedd��gZ	gZ
d	egd
���fgZ�xZ
S)�TestArgumentsFromFileConverterc���tt|��dg}|D]+\}}t|d�5}|j	|�ddd��-y#1swY�8xYw)N)r}s
hello world!
r�)rr�rJrirjr�s     �rrJz$TestArgumentsFromFileConverter.setUpXsb���
�,�d�9�;�(�
�
�%�	!�J�D�$��d�D�!�
!�T��
�
�4� �
!�
!�	!�
!�
!�s�A�A	c��eZdZd�Zy)�>TestArgumentsFromFileConverter.FromFileConverterArgumentParserc#�`K�|j�D]}|j�s�|���y�wrN)r��strip)r�arg_line�args   r�convert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_argscs-�����~�~�'�
���y�y�{���	�
�s�,.N)rrr r�r@rr�FromFileConverterArgumentParserr�as��	rr�r�r�rYr�rqr�)r}zworld!r3r�)rrr rJr�r�r�rsr�r�r�rzr�r!r"s@rr�r�UsX���,�!��*D��3�L���5���C�s�����H�	�R�2�3�4��Irr�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�TestFileTypeReprc�d�tjd�}|jdt|��y)Nr�z
FileType('r')�r*�FileTyper��repr�rr�s  r�test_rzTestFileTypeRepr.test_rys&��� � ��%������$�t�*�5rc�f�tjdd�}|jdt|��y)Nr�rpzFileType('wb', 1)r�r�s  r�	test_wb_1zTestFileTypeRepr.test_wb_1}s)��� � ��q�)�����,�d�4�j�9rc�h�tjdd��}|jdt|��y)Nr��latin_1rgz!FileType('r', encoding='latin_1')r�r�s  r�test_r_latinzTestFileTypeRepr.test_r_latin�s)��� � ��y�9�����<�d�4�j�Irc�j�tjddd��}|jdt|��y)Nrf�big5�ignore)rh�errorsz/FileType('w', encoding='big5', errors='ignore')r�r�s  r�test_w_big5_ignorez#TestFileTypeRepr.test_w_big5_ignore�s.��� � ��v�h�G�����J��d��	%rc�j�tjddd��}|jdt|��y)Nr�rp�replace�r�z"FileType('r', 1, errors='replace')r�r�s  r�test_r_1_replacez!TestFileTypeRepr.test_r_1_replace�s+��� � ��a�	�:�����=�t�D�z�JrN)rrr r�r�r�r�r�r@rrr�r�ws��6�:�J�%�
Krr�c��eZdZd�Zd�Zy)�StdStreamComparerc��tj|�|_|dk(rt|_y|dk(rt
|_yt
�|_y)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterr�r��
backupattrr�r�)rr�s  rrzStdStreamComparer.__init__�s=�� �*�*�4�0����?�"�1�D�O�
�_�
$�1�D�O�$�h�D�Orc�p�	||jt�k(S#t$r||jk(cYSwxYwrN)r�r��AttributeErrorr�r�s  rr�zStdStreamComparer.__eq__�s9��	,��D�L�L��-�-�-���	,��D�O�O�+�+�	,�s��5�5N�rrr rr�r@rrr�r��s��'�,rr��stdinr�r�zstdin.bufferr�r�c��eZdZiZd�Zd�Zy)�RFilec��||_yrN�rc�rrcs  rrzRFile.__init__��	����	rc�&�||jvr|j|}n/|j�x}|j|<|j�t|t�s|jd�}|j|jcxk(xr|k(ScS)N�ascii)�seen�read�closer�r�rrc�rr�r�s   rr�zRFile.__eq__�st���D�I�I���9�9�U�#�D�&+�j�j�l�2�D�4�9�9�U�#��K�K�M��$��$��;�;�w�'�D��y�y�E�J�J�.�$�.�.�.�.rN)rrr r�rr�r@rrr�r��s��
�D��/rr�c�H��eZdZ	�fd�Zedej���edejd���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���tt|��dD]R}ttj
j
|j|�dd��5}|j|�ddd��T|jd�y#1swY�pxYw)Nrrfrrg�readonly)
rr�rJrirRrZr[rQrjrq�r�	file_namermrs   �rrJzTestFileTypeR.setUp�sz���
�m�T�(�*�'�	&�I��b�g�g�l�l�4�=�=�)�<��G�-�
&�04��
�
�9�%�
&�
&�	&�	
�!�!�*�-�
&�
&�s�A=�=B	r�rhrr�)r�rznon-existent-file.txtr'N�r�r�
-x foo barrA�
bar -x foo�-x - -r�)rrr rJrsr*r�r�r�rzr��eq_stdinr�r!r"s@rr�r��s����B�.�	�D�(�x�(�(�*�+��F�*��*�*�3�/�0���3�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2��x�0�1�	�R�$�U�:�%6�7�8��Irr�c���eZdZ	�fd�Zedejd�d��gZdgZde	e
d��	�fgZ�xZS)
�TestFileTypeDefaultsc����tt|��ttj
j
|jd�dd��}|jd�|j�y)N�goodrfrrg)
rr�rJrirRrZr[rQrjr�)rrmrs  �rrJzTestFileTypeDefaults.setUp�sG���
�"�D�/�1��B�G�G�L�L�����7��w�O���
�
�6���
�
�rr�r�zno-file.txt�r�rjrz-c goodr�)r{)
rrr rJrsr*r�r�r�rzr�r�r!r"s@rr�r��sN���F��	�D�(�x�(�(��-�}�E����t�H��R�%��-�0�1�2�Irr�c	�(��eZdZ	�fd�Zedejd���edejd���gZddgZde	de
d��	�fd
e	e
d�e
d��	�fde	e
d�e
d��	�fd
e	ee�	�fgZ�xZ
S)�TestFileTypeRBc����tt|��dD]R}ttj
j
|j|�dd��5}|j|�ddd��Ty#1swY�_xYw)Nrrfrrg)	rr�rJrirRrZr[rQrjr�s   �rrJzTestFileTypeRB.setUp�sj���
�n�d�)�+�'�	&�I��b�g�g�l�l�4�=�=�)�<��G�-�
&�04��
�
�9�%�
&�
&�	&�
&�
&�s�A,�,A5	r��rbrhrrr'Nr�r�rAr�r�)rrr rJrsr*r�r�r�rzr��	eq_bstdinr�r!r"s@rr�r��s����B�&�	�D�(�x�(�(��.�/��F�*��*�*�4�0�1����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3�	�Irr�c�&�eZdZe�Zd�Zd�Zy)�WFilec��||_yrNr�r�s  rrzWFile.__init__r�rc�
�||jvr]d}d|jvr|jd�}|j|�|j	�|jj|�|j|jk(S)NzCheck that file is writable.rzr�)r��moder
rjr��addrcr�s   rr�zWFile.__eq__se����	�	�!�1�D��e�j�j� ��{�{�7�+���K�K����K�K�M��I�I�M�M�%� ��y�y�E�J�J�&�&rN)rrr rHr�rr�r@rrr�r�s���5�D��'rr�c
�J��eZdZ	�fd�Zedejd���edejd���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�f��t�|��|jd�|jd�y�Nr��writable�rrJrqrn�rrs �rrJzTestFileTypeW.setUp�(���
��
���!�!�*�-��!�!�*�-rr�rfrhr)r�rr�r'Nr�r�r�rAr�r��rrr rJrsr*r�r�r�rzr��	eq_stdoutr�r!r"s@rr�r�s����B�.�	�D�(�x�(�(��-�.��F�*��*�*�3�/�0���&�H�	��T��e��-�.�	�R�$�U�:�%6�7�8�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��Irr�c����eZdZ	�fd�Zedejd���edejd���gZgd�Zde	e
d�e
d	��
�fde	ee�
�fgZ�xZ
S)�
TestFileTypeXc�f��t�|��|jd�|jd�yr�r�r�s �rrJzTestFileTypeX.setUp.r�rr�r�rhr)r�rr�r�r�r'rAr�r�r�r"s@rr�r�*sy���K�.�	�D�(�x�(�(��-�.��F�*��*�*�3�/�0���2�H�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��Irr�c	��eZdZ	edej
d���edej
d���gZddgZdede	d���fd	ee	d�e	d
���fdee	d�e	d
���fdee
e
��fgZy)
�TestFileTypeWBr�r�rhrrr'Nr�r�rAr�r�)rrr rsr*r�r�r�rzr��
eq_bstdoutr�r@rrr�r�>s���I�	�D�(�x�(�(��.�/��F�*��*�*�4�0�1����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�
��4�5�	�Irr�c��eZdZ	edej
d���edej
d���gZdeed�ed���fd	ee	e	��fgZ
y
)�TestFileTypeXBr��xbrhrr�r'rAr�r�N)rrr rsr*r�r�rzr�r�r�r@rrr�r�Osn��N�	�D�(�x�(�(��.�/��F�*��*�*�4�0�1���

�r�E�%�L�u�U�|�<�=�	�2�
��4�5��Irr�c��eZdZ	d�Zy)�TestFileTypeOpenArgsc
�2�tj}|d�df|dd�df|dd��df|d	d
��df|dd
dd�dfg}tjd�5}|D] \}}|d�|jdg|����"	ddd�y#1swYyxYw)Nr�)r����NNrfrp)rfrpNNr�r�)rfr�Nr�r�r�rg)r�r�r�Nr�l1�strict)rfrr�r�z
builtins.openr')r*r�rr.�assert_called_with)r�FT�cases�mr�rus      r�test_open_argsz#TestFileTypeOpenArgs.test_open_args`s���
�
�
��
��X�-�.�
��Q�Z�-�.�
��I�
&�(B�C�
��v�
&�(@�A�
��Q��h�
'�)A�B�
���Z�Z��
(�	3�A�#�
3�
��d��U��$��$�$�U�2�T�2�
3�	3�	3�	3�s�&B
�
BN)rrr rr@rrr�r�]s
��:�3rr�c��eZdZ	d�Zy)�!TestFileTypeMissingInitializationc�.�tj�}|jt�5}|j	dtj
��ddd�|j
tj
�d�tj��y#1swY�@xYw)Nr�rhz: is a FileType class object, instance of it must be passed)	r*r+r��
ValueErrorr�r�r�r�r�r�s   r�testz&TestFileTypeMissingInitialization.testusx���(�(�*��
�
�
�z�
*�	>�b�����8�+<�+<��=�	>�	
���� � �
#������	
�	>�	>�s�"B�BN�rrr rr@rrrros���
	
rrc��eZdZ	ede��ede��gZgd�Zdedd��fd	ed
d��fded
d��fgZ	y
)�TestTypeCallablez--eggsrhr)r��42jz--eggs az	--eggs 2iz--eggs=42 42rgE@)�eggsrz--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
rrr rs�complexrkr�r�rzr�r@rrr
r
�s^��6�	�H�7�#��F�����5�H�	���$�/�0�	�b�b�t�4�5�	�R�T��1�2��Irr
c��eZdZ	Gd�de�Zede��ede��gZgZdeed�ed��	�fd
eed�ed��	�fgZ	y
)�TestTypeUserDefinedc��eZdZd�Zd�Zy)�TestTypeUserDefined.MyTypec��||_yrN��value�rrs  rrz#TestTypeUserDefined.MyType.__init__��	���D�Jrc�`�t|�|jft|�|jfk(SrN�r�rr�s  rr�z!TestTypeUserDefined.MyType.__eq__��'����J��
�
�+��U��U�[�[�/I�I�IrNr�r@rr�MyTyper��
��	�	Jrrr�rhrrxrzr�r��-xf grrcN)
rrr rBrrsr�r�rzr�r@rrrr�sm��2�J��J�	�D�v���F�� ����H�	�2��s��&��+�6�7�	�"�v�c�{����5�6��Irrc��eZdZ	Gd�d�Zede��ede��gZgZdeed�ed��	�fd
eed�ed��	�fgZy
)�TestTypeClassicClassc��eZdZd�Zd�Zy)�TestTypeClassicClass.Cc��||_yrNrrs  rrzTestTypeClassicClass.C.__init__�rrc�`�t|�|jft|�|jfk(SrNrr�s  rr�zTestTypeClassicClass.C.__eq__�rrNr�r@rr�Cr!�rrr$r�rhrrxrzr�r�rrrcN)	rrr r$rsr�r�rzr�r@rrrr�sk��#�J�J�	�D�q���F������H�	�2��#��Q�s�V�,�-�	�"�q��v�A�c�F�+�,��Irrc��eZdZ	d�Zy)�TestTypeRegistrationc��d�}tj�}|jdd|�|jdd��|jdd��|j	|jdj
��tdd�	��|j	|jd
j
��tdd�	��y)Nc��d|zS)Nzmy_type{%s}r@��strings r�get_my_typez.TestTypeRegistration.test.<locals>.get_my_type�s
�� �6�)�)rr��my_typer�rhrYrz
my_type{1}rkz-x 1 42zmy_type{42})r*r+�registerr�r�r:r�rz)rr+r1s   rrzTestTypeRegistration.test�s���	*��(�(�*������	�;�7����D�y��1����C�i��0�����*�*�3�9�9�;�7��d�l�3�	5�����*�*�9�?�?�+<�=��l�m�<�	>rNrr@rrr&r&�s
��4�
>rr&c��eZdZ	Gd�dej�ZGd�dej�Zeddeed��ed	ee	d
d��gZ
gZd
edd��fdedd��fdedd��fdedd��fgZ
y)�TestActionUserDefinedc��eZdZdd�Zy)�$TestActionUserDefined.OptionalActionNc���	td��}|dvrd|_n|dvrd|_ntd|z��t	|d	|�y#t$r}td|z��d}~wwxYw)
N��?rG)��?r;r�)�@r��	value: %szopt_action failed: %sr)rzr1�AssertionErrorr�r��rr1�	namespacer�
option_stringr�r�s       r�__call__z-TestActionUserDefined.OptionalAction.__call__�su��
G�!�d�m���N�*�)*�K�&��e�^�)+�K�&�(��u�)<�=�=�

�I�v�u�-��"�
G�)�*A�A�*E�F�F��
G�s�2A�	A�A�ArN�rrr r;r@rr�OptionalActionr1�s��	.rr=c��eZdZdd�Zy)�&TestActionUserDefined.PositionalActionNc���	td��}|dvrd|_n&|dvrd|_n|dvrd|_ntd	|z��t	|d|�y#t$r}td
|z��d}~wwxYw)Nr��r1)rr�r3)rpr;)r�r4r6zarg_action failed: %sr1)rzrr7r�r�r8s       rr;z/TestActionUserDefined.PositionalAction.__call__�s���
G�!��l���H�$�'+�K�$��c�\�',�K�$��c�\�',�K�$�(��u�)<�=�=�

�I�x��/��"�
G�)�*A�A�*E�F�F��
G�s�>A�	A*�A%�%A*rNr<r@rr�PositionalActionr?�s��	0rrBz-srr3)r%r�r�rjr1r~r�)r�r�rrrjz-s0.125r4)rr1r�rz
-s 0.625 1r;rpz84 -s2r5r�N)rrr r*�Actionr=rBrsrkr�r�r�rzr�r@rrr/r/�s���4�.����.�,0�8�?�?�0�4	�D�v�n���	&��H�-��C��	,����H�	�B�E�!�,�-�	
�r�t�B�'�(�	�r�u�Q�/�0�	�2�3�r�*�+�	�Irr/c�>�eZdZ	Gd�dej�Zd�Zy)�TestActionRegistrationc��eZdZdd�Zy)�TestActionRegistration.MyActionNc�8�t||jd|z�y)Nzfoo[%s])r�r%)rr1r9�valuesr:s     rr;z(TestActionRegistration.MyAction.__call__s���I�t�y�y�)�f�*<�=rrNr<r@rr�MyActionrGs��	>rrJc�<�tj�}|jdd|j�|j	dd��|j|j
dg�td���|j|j
dg�td	���y)
Nr��	my_actionr1r�rzfoo[1]rAr�zfoo[42])r*r+r-rJr�r�r:rzr0s  rrzTestActionRegistration.tests{���(�(�*������+�t�}�}�=����H�[��9�����*�*�C�5�1�2�X�3F�G�����*�*�D�6�2�B�i�4H�IrN)rrr r*rCrJrr@rrrErEs��?�>�8�?�?�>�
JrrEc�F�eZdZeddde��gZdZdegd���fgZy	)
�TestActionExtendr��extendr�)r�rrr�r@z--foo f1 --foo f2 f3 f4)�f1�f2�f3�f4r
N)	rrr rsr�r�r�rzr�r@rrrNrN&s4���G�H�C�c�:����H�	"�B�+C�$D�E��IrrNc����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�8�|jtg|��i|��yrN�r�r�rws   r�assertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError6�������-�?��?��?rc�T�|r,tdd|��}|j|ddzdzdd�	�n!tdd�
�}|jddd�	�|jdtd
��ddi}|rd|d<d|d<nd|d<|jd4i|��}|j	|j�td��}|rd|d<|rddg|d<|jd5i|��}|jdtd��|jdd d!�"�td#��}	|rd$|	d<|jd6i|	��}
|
jd%d&d'�"�|
jd(td)d*�+�td,��}|rd-|d<|jd7i|��}|jd.td/��|jd0d1d2�3�|S)8N�PROG�main description)�prog�descriptionrGrr�r'r��foo help�r��help�r]r^r�rA�bar help�r�rar�F�COMMANDr��commands�title�command helpraz
1 description�r^z1 help�1alias1�1alias2�aliasesrWzw helpr�r��x help�r�raz
2 descriptionz2 helpr�123�y helprr�zz help)r�rrraz
3 descriptionz3 help�tzt help�urazu help�rrrar@�r)r�)r�)	r�r�rk�add_subparsersrX�dict�
add_parserr�r)
r�subparser_helprGrlr1�subparsers_kwargs�
subparsers�parser1_kwargs�parser1�parser2_kwargs�parser2�parser3_kwargs�parser3s
             rr�zTestAddSubparsers._get_parser9s���/��);�,�X�F�����Q��!�#�e�+�L�z�
 �
S�0��);�=�F������:�
 �
?������J�	�	0�(��/���+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��/�:���%-�N�6�"�'�*�'�'�>�~�>�����S�s���:����S��H��=��
rc�z��t�|��|j�|_|jd��|_y)NT)rx)rrJr�r1�command_help_parserr�s �rrJzTestAddSubparsers.setUpps2���
��
���&�&�(���#'�#3�#3�4�#3�#H�� rc�~�dD]8}|j�}|j|jj|��:y)N)rr�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�rXr1r:)rr�rus   r�test_parse_args_failuresz*TestAddSubparsers.test_parse_args_failuresus;��1�	I�H��>�>�#�D��*�*�4�;�;�+A�+A�4�H�	Irc
�<�|j|jjdj��t	dddd���|j|jjdj��t	dd	d
ddg�
��|j|jjdj��t	dddd���|j|jjdj��t	dddgd����y)N�0.5 1 b -w 7Frj�rz�r'rArfr�z0.25 --foo 2 -y 2 3j -- -1jTr3r�y@y��)r'rArYrz--foo 0.125 1 cr4r{z-1.5 3 11 -- a --foo 7 -- br
�)r�r�r��--rz)r'rArqrr)r�r1r:r�rzrs r�test_parse_argsz!TestAddSubparsers.test_parse_args|s�������K�K�"�"�>�#7�#7�#9�:��5�c�Q�#�.�	
�	
����K�K�"�"�#@�#F�#F�#H�I��4�T�S�R��I�6�	
�	
����K�K�"�"�#4�#:�#:�#<�=��4�U�d�c�2�	
�	
����K�K�"�"�#@�#F�#F�#H�I��5�d�b�,J�K�	
rc	���|j|jjdj��t	dddd��gf�|j|jjdj��t	dddd��dgf�|j|jjd	j��t	dddd��dgf�|j|jjd
j��t	dddd��ddgf�|j|jjd
j��t	dddd��gd�f�y)Nr�Frjr�rzr�z0.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-Xrerb)r�r1�parse_known_argsr�rzrs r�test_parse_known_argsz'TestAddSubparsers.test_parse_known_args�sC������K�K�(�(��)=�)=�)?�@�
�E�s�a�3�
/��4�	
�	
����K�K�(�(�):�)@�)@�)B�C�
�E�s�a�3�
/�$��8�	
�	
����K�K�(�(�):�)@�)@�)B�C�
�E�s�a�3�
/�$��8�	
�	
����K�K�(�(�)>�)D�)D�)F�G�
�E�s�a�3�
/�$���?�	
�	
����K�K�(�(�)A�)G�)G�)I�J�
�E�s�a�3�
/�1G�H�	
rc��t�}|jdd��|jd��}|jd�}|jd�|j	tddd	�
�|j
dj���y)Nr�r�r�rAr$rrBFr�r6r)r�r�rurwr�rzr:r�)rr1rzr|s    r�	test_destzTestAddSubparsers.test_dest�s{��+�-�����G�L��9��*�*��*�6�
��'�'��,�����U�#������3�C�8��*�*�5�;�;�=�9�	;rc��|jdg�}|j|jd�|j|jd�y)N�runr@)r:r��commandrX)rr1�rets   r�_test_required_subparsersz+TestAddSubparsers._test_required_subparsers�s@�������(��������e�,�	
�&�&�v�'8�'8�"�=rc��t�}|jd��}d|_|jd�|j	|�y)Nr�r$Tr�)r�rur�rwr��rr1rzs   r�&test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attribute�sA��+�-���*�*�	�*�:�
�"�
�����e�$��&�&�v�.rc��t�}|jdd��}|jd�|j|�y)Nr�T�r%r�r�)r�rurwr�r�s   r�"test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwarg�s;��+�-���*�*�	�D�*�I�
����e�$��&�&�v�.rc��t�}|jd��}|jd�|jd�}|j	|j
�y)Nr�r$r�r@�r�rurwr:�assertIsNoner��rr1rzr�s    r� test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_default�sM��+�-���*�*�	�*�:�
����e�$�����#�����#�+�+�&rc�B�t�}|jd��}|jd�|jd�|jt�5}|jd�ddd�|j
jjd�y#1swY�0xYw)NT�r�r'rAr@z8error: the following arguments are required: {foo,bar}
$�	r�rurwr�r�r:r=r�r��rr1rz�excinfos    r�-test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_error�s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�	"�w����b�!�	"�������$�$�G�	
�	"�	"���B�Bc�B�t�}|jd��}|jd�|jd�|jt�5}|jd�ddd�|j
jjd�y#1swY�0xYw)NTr�r'rAr�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�
����e�$����e�$�
�
�
�2�
3�	(�w����h�'�	(�������$�$�_�	
�	(�	(�r�c��t�}|jdd��}|jd�|jd�}|j	|j
�y)Nr�Fr�r�r@r�r�s    r�test_optional_subparsersz*TestAddSubparsers.test_optional_subparsers�sO��+�-���*�*�	�E�*�J�
����e�$�����#�����#�+�+�&rc���|j|jj�d�|j|jj�t	j
d��y)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�r1�format_usage�format_help�textwrap�dedentrs r�	test_helpzTestAddSubparsers.test_help�sQ��������1�1�3�E�	G�������0�0�2�H�O�O�E�5�	rc���|jd��}|j|j�d�|j|j�t	j
d��y)Nz+:-rZz)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�r0s  r�test_help_extra_prefix_charsz.TestAddSubparsers.test_help_extra_prefix_chars�s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc��tdd��}|jddd��|j|j�t	j
d��y)	Nr[r\rbz--non-breakingr�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesr`u7            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�r0s  r�test_help_non_breaking_spacesz/TestAddSubparsers.test_help_non_breaking_spaces	s[��+��%7�9������]�;�	�	<�	
����+�+�-�x���	@�	0
�		rc�R�tdd��}|jdd��|j|j�t	j
d��tdd��}|jdgd�	�|j|j�t	j
d
��y)Nr[r\rbr'z    �raz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        r�r0s  r�test_help_blankz!TestAddSubparsers.test_help_blank!	s���+��%7�9�������	�	�	
����+�+�-�x���	@�	0
�		�,��%7�9������2��	�	 �	
����+�+�-�x���	@�	0
�		rc���|jd��}|j|j�d�|j|j�t	j
d��y)NrErZz)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�r0s  r� test_help_alternate_prefix_charsz2TestAddSubparsers.test_help_alternate_prefix_charsC	s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc���|j|jj�d�|j|jj�t	j
d��y)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�r�r�r�r�r�rs r�test_parser_command_helpz*TestAddSubparsers.test_parser_command_helpU	sU������1�1�>�>�@�E�	G�����1�1�=�=�?�!���*��	rc�~�tdd��}|jddd��|jdd	�
�|jddd
��}|jd�}|jd�}|j	|j�d�|j	|j
�tjd��y)Nr[r\rbr�r�r_r`rArcr��subcommandsrhzadditional text)rgr^rarr�z'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�rurwr�r�r�r�r�)rr1rzr|r~s     r�test_subparser_title_helpz+TestAddSubparsers.test_subparser_title_helpj	s���+��8J�L�����G�L�z��J����E�
��3��*�*��7E�0A�+�C�
��'�'��,���'�'��,������,�,�.�C�	E�����+�+�-�x���@�0�	rc��|jt�5}|jj|j	��ddd�|j|jj�y#1swY�0xYwrN)r�r�r1r:r�r�r�r�)rr��
expected_helpr�s    r�_test_subparser_helpz&TestAddSubparsers._test_subparser_help�	s[��
�
�
�2�
3�	5�r��K�K�"�"�8�>�>�#3�4�	5��������(;�(;�<�	5�	5�s�*A/�/A8c�N�|jdtjd��y)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_help�	�"���!�!�*�h�o�o�?�/�	rc�N�|jdtjd��y)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_help�	r�rc	� �|jd��}|j|jdj��t	dddd��gf�|j|jdj��t	dddd��gf�y)	NT�rlz
0.5 1alias1 bFrjrzr�z
0.5 1alias2 b)r�r�r�r�rzr0s  r�test_alias_invocationz'TestAddSubparsers.test_alias_invocation�	s����!�!�$�!�/������#�#�O�$9�$9�$;�<�
�E�s�d�c�
2�B�7�	
�	
����#�#�O�$9�$9�$;�<�
�E�s�d�c�
2�B�7�	
rc�|�|jd��}|j|jdj��y)NTr�z
0.5 1alias3 b)r�rXr:r�r0s  r�test_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocation�	s8���!�!�$�!�/���&�&�v�'8�'8�'6�'<�'<�'>�	@rc��|jdd��}d|_|j|j�t	j
d��y)NT)rlrxa	            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�r0s  r�test_alias_helpz!TestAddSubparsers.test_alias_help�	sH���!�!�$�t�!�D���������+�+�-�x���@�0�	r)FNF)rrr rXr�rJr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r!r"s@rrUrU3s����(�@�>B�!�5�nI�
I�
�&
�,;�>�/�/�'�

�

�'��"�&�$ �D�$�*�<=�
��	
�@�
rrUc� �eZdZ	d�Zd�Zd�Zy)�TestPositionalsGroupsc��t�}|jd�|jd�}|jd�|jd�tddd��}|j	d	j��}|j
||�y)
Nr'rcrArBrr�r�r6�1 2 3)r�r�r�rzr:r�r��rr1r��expectedr�s     r�test_nongroup_firstz)TestPositionalsGroups.test_nongroup_first�	sx��+�-�����E�"��)�)�#�.��
���5�!����E�"��#�3�C�0���"�"�7�=�=�?�3������6�*rc��t�}|jd�}|jd�|jd�|jd�tddd��}|j	d	j��}|j
||�y)
N�xxxr'rArBrr�r�r6r��r�r�r�rzr:r�r�r�s     r�test_group_firstz&TestPositionalsGroups.test_group_first�	sx��+�-���)�)�%�0��
���5�!����E�"����E�"��#�3�C�0���"�"�7�=�=�?�3������6�*rc�d�t�}|jd�}|jd�|jd�|jd�|jd�}|jd�tddd	d
��}|j	dj��}|j
||�y)
Nr�r'rArBr�frellrr�r�rL)r'rArBr�z1 2 3 4r�r�s     r�test_interleaved_groupsz-TestPositionalsGroups.test_interleaved_groups�	s���+�-���)�)�%�0�����E�"�
���5�!����E�"��)�)�%�0��
���7�#��#�3�C�s�;���"�"�9�?�?�#4�5������6�*rN)rrr r�r�r�r@rrr�r��	s��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�8�|jtg|��i|��yrNrWrws   rrXz+TestParentParsers.assertArgumentParserError�	rYrc���t�|��td��|_|jj	d�|jjd�}|j	d�|jj	d�td��|_|jj	d�|jj	d�|jjd	�}|j	d
�td��|_|jj	d�td��|_|jj	d�td��|_	|jj�}|j	dd�
�|j	dd�
�tjjtjd�|_y)NF�rHz--wr�rrr�r�r{z--dr�r�r�r)rrJr��wxyz_parentr�r��abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprRrZ�basenamer�r��main_program)r�x_group�c_groupr�rs    �rrJzTestParentParsers.setUp
sb���
��
��5�u�E������%�%�e�,��"�"�5�5�c�:�����T�"����%�%�c�*�5�u�E������%�%�c�*����%�%�d�+��"�"�5�5�c�:�����U�#�2�E�B��
��
�
�"�"�5�)�2�E�B��
��
�
�"�"�3�'� :�5�I����$�$�A�A�C��
���4���5�
���4���5��G�G�,�,�S�X�X�a�[�9��rc��t|jg��}|j|jdj	��tddd���y)N��parentsz-y 1 2 --w 3r�rr��rfrYr)r�r�r�r:r�rzr0s  r�test_single_parentz$TestParentParsers.test_single_parent
sE��+�T�5E�5E�4F�G������*�*�>�+?�+?�+A�B��c�S�C�0�	2rc��|j|jj�t|jg��}|j|j�y�Nr�)�_test_mutex_abr�r:r�r0s  r�test_single_parent_mutexz*TestParentParsers.test_single_parent_mutex"
sC�����D�0�0�;�;�<�+�T�5I�5I�4J�K�����F�-�-�.rc��|jg}td|��}t|g��}|j|j�y)NF)rHr�r�)r�r�r�r:�rr�r1s   r�test_single_granparent_mutexz.TestParentParsers.test_single_granparent_mutex'
s<���'�'�(��+�U�G�L��+�V�H�=�����F�-�-�.rc��|j|g�tdd���|j|dg�tdd���|j|dg�tdd���|j|ddg�|j|ddg�|j|dg�|j|ddg�|j|ddg�y)NF�r�rzr�Tr�r�)r�rzrX)rr:s  rr�z TestParentParsers._test_mutex_ab-
s�������B���e�u�)=�>�����T�F�+�R�$�%�-@�A�����T�F�+�R�%�4�-@�A��&�&�z�D�$�<�@��&�&�z�D�$�<�@��&�&�z�D�6�:��&�&�z�D�$�<�@��&�&�z�D�$�<�@rc���|j|jg}t|��}|j|j	dj��t
dddddd���y)Nr�z--d 1 --w 2 3 4r�rr�rL)r�rzr�rfrYr)r�r�r�r�r:r�rzr�s   r�test_multiple_parentsz'TestParentParsers.test_multiple_parents7
sZ���#�#�T�%5�%5�6��+�G�<������*�*�+<�+B�+B�+D�E��c�T�S�C�4�3�G�	Irc
�n�|j|jg}t|��}|j|j	dj��t
ddddd���|j|jdj��|j|jd	j��y)
Nr�z
-a --w 2 3TFr�r�)r�rzrfrYrz
-a --w 2 3 -bz
-a -b --w 2 3)r�r�r�r�r:r�rzrXr�s   r�test_multiple_parents_mutexz-TestParentParsers.test_multiple_parents_mutex=
s����'�'��)9�)9�:��+�G�<������*�*�<�+=�+=�+?�@��d�e�s�d�c�B�	D��&�&�����4�4�6�	8��&�&�����4�4�6�	8rc��|jtjtj|j|j
g��yr�)r�r*�
ArgumentErrorr+r�r�rs r�test_conflicting_parentsz*TestParentParsers.test_conflicting_parentsG
s9������"�"��#�#��]�]�D�$4�$4�5�	�	7rc��|jtjtj|j|j
g��yr�)r�r*rr+r�r�rs r�test_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutexM
s;������"�"��#�#��%�%�t�';�';�<�	�	>rc���|j|jg}t|��}|j|j	dj��t
ddd���y)Nr�rr�r�)r�r�r�r�r:r�rzr�s   r�test_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parentsS
sM���#�#�T�]�]�3��+�G�<������*�*�5�;�;�=�9��d�d�c�2�	4rc	��t�}|j�}|jd|jg��}|j	d�|j|j
dj��tdddd�	��y)
NrAr�r�zbar -b 1 --d 2 3 4r�rr�rL)r�rzr�r�)	r�rurwr�r�r�r:r�rz)rr1rz�abcde_parsers    r�test_subparser_parentsz(TestParentParsers.test_subparser_parentsY
sw��+�-���*�*�,�
�!�,�,�U�T�=M�=M�<N�,�O���!�!�#�&�����*�*�+?�+E�+E�+G�H��c�S�C�3�7�	9rc���t�}|j�}|jg}|jd|��}|j	d�}|jd�|j|jg}|jd|��}|jd�|j|jdj��tdd	d
���|j|jdj��td	dd
ddd
���|j|jdj��|j|jdj��y)Nr'r�r�r{rAr�zfoo -a 4TFrLryzbar -b  --w 2 3 4r�r�)r�rzrfrYrr�zfoo -a -b 4zbar -b -a 4)r�rur�rwr�r�r�r�r:r�rzrX)rr1rzr��
abc_parserr��wxyzabe_parsers       r�test_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutexa
s>��+�-���*�*�,�
��'�'�(���*�*�5�'�*�B�
��/�/�	�:�����S�!��#�#�T�%9�%9�:��#�.�.�u�g�.�F���#�#�C�(�����*�*�:�+;�+;�+=�>��d�e�s�3�	5�����*�*�+>�+D�+D�+F�G��e�t�s�d�c�S�I�	K��&�&����}�2�2�4�	6��&�&����}�2�2�4�	6rc	��|j|jg}t|��}|j�}|j}|j|t
jdj||rdnd���y)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�r1�parser_help�prognames     r�test_parent_helpz"TestParentParsers.test_parent_helpt
sm���#�#�T�%5�%5�6��+�G�<���(�(�*���$�$������h�o�o�7�"
�F�8�H�S�"�6�#'8�	9rc	���td��}|jdd��}|jd�|jd�|j�}|jd�|jd	�t|g�
�}|j	t
|jgd��|j�}|j}|j|tjdj||rd
nd���y)NFr�rc�gd�rgr^rWr�rrr�)rrerrbz�            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
        rr)
r�r�r�r�r�r�r:r�r�r�r�r�r)r�parentrcrr1rrs       r�test_groups_parentsz%TestParentParsers.test_groups_parents�
s���+�U�;���%�%�C�T�%�B��	���t��	���t���/�/�1��	���t��	���t��+�V�H�=�����-�v�/@�/@�"�	$��(�(�*���$�$������h�o�o�
7�
�F�8�H�S�"�6�
'8�
	9r)rrr rXrJr�r�r�r�rrrrr
r
rrrr!r"s@rr�r��	sT���?�@�:�82�
/�
/�A�I�8�7�>�4�9�6�&9�09rr�c�$�eZdZd�Zd�Zd�Zd�Zy)� TestMutuallyExclusiveGroupErrorsc�b�t�}|j}|t|jd��y)Nr')rg)r�r�r�r�)rr1�raisess   r�test_invalid_add_argument_groupz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group�
s'��+�-���"�"���y�&�=�=�U�Krc� �t�}|j�}|j}|j}|t|dd��|t|d�|t|dd��|t|dd��|t|dt
j��y)Nr�Tr�rAr�rqrp)r�r�r�r�rr*�PARSER)rr1r�r�r s     r�test_invalid_add_argumentz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument�
sv��+�-���3�3�5���)�)���"�"���z�<��4�@��z�<��/��z�<��c�:��z�<��a�8��z�<��h�o�o�Frc�^�td��}|j�}|jdd��|jdd��|j�}|jdd��|jd	d��d
}|j|j	�tj|��y)Nr[�r]r�r�r�r,r�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�)rr1�group1�group2r�s     rr�z*TestMutuallyExclusiveGroupErrors.test_help�
s���+��8���4�4�6�����G�L��9����G�M��:��4�4�6�����H�\��:����H�]��;�	��	
����+�+�-�x���x�/H�Irc���tj�}|j�}|jt�5|jdg�ddd�y#1swYyxYw)Nr4)r*r+r�r�rr:�rr1r�s   r�test_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group�
sQ���(�(�*���3�3�5��
�
�
�z�
*�	&����t�f�%�	&�	&�	&�s�A�AN)rrr r!r$r�r+r@rrrr�
s��L�
	G�J�(&rrc�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�MEMixinc��|jd��j}t}|jD]#}|j	|||j���%y�NFr���
get_parserr:r�r�r�r��rr:r��args_strings    r�test_failures_when_not_requiredz'MEMixin.test_failures_when_not_required�
sM���_�_�e�_�4�?�?�
�#���=�=�	F�K����e�Z��1B�1B�1D�E�	Frc��|jd��j}t}|jdgzD]#}|j	|||j���%y)NTr�rr0r2s    r�test_failures_when_requiredz#MEMixin.test_failures_when_required�
sT���_�_�d�_�3�>�>�
�#���=�=�B�4�/�	F�K����e�Z��1B�1B�1D�E�	Frc���|jd��j}|j|jz}|D]-\}}||j	��}|j||��/yr/)r1r:r��successes_when_not_requiredr�r�)rr:r�r3r��	actual_nss      r� test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required�
sc���_�_�e�_�4�?�?�
��N�N�T�%E�%E�E�	�(1�	5�$�K��"�;�#4�#4�#6�7�I����Y��4�	5rc��|jd��j}|jD]-\}}||j��}|j	||��/y�NTr�)r1r:r�r�r�)rr:r3r�r9s     r�test_successes_when_requiredz$MEMixin.test_successes_when_required�
sS���_�_�d�_�3�>�>�
�(,���	5�$�K��"�;�#4�#4�#6�7�I����Y��4�	5rc��|jd��j}|j}|j|�t	j
|��yr/)r1r��usage_when_not_requiredr�r�r��rr��expected_usages   r�test_usage_when_not_requiredz$MEMixin.test_usage_when_not_required�
s>�������6�C�C���5�5�����������)H�Irc��|jd��j}|j}|j|�t	j
|��yr<)r1r��usage_when_requiredr�r�r�r@s   r�test_usage_when_requiredz MEMixin.test_usage_when_required�
s>�������5�B�B���1�1�����������)H�Irc���|jd��j}|j|jz}|j	|�tj|��yr/)r1r�r?rar�r�r��rr�ras   r�test_help_when_not_requiredz#MEMixin.test_help_when_not_requiredsG���o�o�u�o�5�A�A���+�+�d�i�i�7�����������(=�>rc���|jd��j}|j|jz}|j	|�tj|��yr<)r1r�rDrar�r�r�rGs   r�test_help_when_requiredzMEMixin.test_help_when_requiredsG���o�o�t�o�4�@�@���'�'�$�)�)�3�����������(=�>rN)rrr r4r6r:r=rBrErHrJr@rrr-r-�
s.��F�F�5�5�J�
J�
?�
?rr-c��eZdZdd�ZddgZdedd��fded	d��fd
edd��fdedd	��fgZd
edd��fgZdZdZ	dZ
y)�TestMutuallyExclusiveSimpleNc��td��}|j|��}|jdd��|jddd	d
��|S)Nr[r&r�r,rcr�r`r~rb�baz help)rrrra�r�r�r��rr�r1r�s    rr1z&TestMutuallyExclusiveSimple.get_parser
sN��+��8���3�3�X�3�F��
���7���4�
���7�#�S�z��J��
r�--bar X --baz Yz
--bar X --baz�--bar Xr3�rArBz--bar X --bar Zrb�--baz Yrer`rz;        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
        rN�rrr r1r�rzr�r8r?rDrar@rrrLrLs����"�?�3�H�	�B�3�D�)�*�	�B�3�D�1�2�	�B�4�S�)�*�	�"��3�'�(�	�I�
�R�D�d�
#�$�#�������DrrLc
��eZdZdd�ZdgZdedddd��fdedddd��fd	edddd��fd
edddd��fgZdedddd��fgZdZd
Z	dZ
y)�TestMutuallyExclusiveLongNc���td��}|jdd��|jdd��|j|��}|jd	d
��|jdd��|S)
Nr[r&z--abcdez
abcde helpr�z--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�r�r�r�rPs    rr1z$TestMutuallyExclusiveLong.get_parser0sp��+��8�����I�L��9����I�L��9��3�3�X�3�F��
���9�<��8�
���9�<��8��
rz--klmno X --pqrst Yz	--klmno Xr3)�abcde�fghij�klmno�pqrstz--abcde Y --klmno Xrez	--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
    rNrUr@rrrWrW.s����&�&�H�	�b�t�4�s�$�G�H�	��S��C�t�<�	>�	�b�t�4�t�3�G�H�	��T��D��<�	>��I�
�R�d�$�d�$�
?�@�#�������DrrWc��eZdZd�ZdgZdedd��fdedd��fd	ed
d��fgZded
d��fgZd
ZdZ	dZ
y
)�$TestMutuallyExclusiveFirstSuppressedc��td��}|j|��}|jdtj��|jddd�	�|S)
Nr[r&r�r�r�rr�rpr`�r�r�r�r*rorPs    rr1z/TestMutuallyExclusiveFirstSuppressed.get_parser[sR��+��8���3�3�X�3�F��
���4�h�&7�&7��8�
���4�
�H��E��
rz-x X -yz-x Xr3Trkz	-x X -x YrerNFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        rUr@rrr_r_Yst����{�H�	��c�T�"�#�	�b�3�$�'�(�	
�r�D�E�"�#��I�
�R�$�$�
� �#�������Drr_c	��eZdZd�Zgd�Zdeddd��fdeddd��fd	eddd
��fdeddd��fgZdeddd��fgZd
xZZ	dZ
y)�#TestMutuallyExclusiveManySuppressedc���td��}|j|��}|j}|ddtj��|ddtj��|d	tj�
�|S)Nr[r&r��--spamr�r`r+r�z	--bladderr�ra)rr�r1r�r�s     rr1z.TestMutuallyExclusiveManySuppressed.get_parser|sc��+��8���3�3�X�3�F��� � ���H�\��0A�0A�B��J�}�8�3D�3D�E��K�h�/�/�0��
r)z--spam --badgerz--badger --bladder Bz--bladder B --spamreTN)rr1�bladderr+Fz--bladder Br?z
--spam --spamrz!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        �rrr r1r�rzr�r8rDr?rar@rrrcrczs�����H�
�2�4��d�;�<�	�R�U�5�$�?�@�	���d�C�@�A�	�"�$�t�T�B�C�	�I�
�R�U�4��
6�7�#��5���1��Drrcc
��eZdZd�Zgd�Zdeddd��fded	d
d��fded	ddg��fded	dgd���fgZd
ed	dd��fgZdZdZ	dZ
y)�*TestMutuallyExclusiveOptionalAndPositionalc��td��}|j|��}|jddd��|jdd	�
�|jddd
d��|S)Nr[r&r�r�r��FOOr`re�SPAMr�r1r�r3�BADGER�rrrjrarOrPs    rr1z5TestMutuallyExclusiveOptionalAndPositional.get_parser�sc��+��8���3�3�X�3�F��
���7�<�e��D�
���8�&��1�
���8�3��(��K��
r)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr3)r'rr1z--spam SF�SzX Y Z)r3rerbrzD        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
        rUr@rrrjrj�s�����H�
�"��D��5�6�	�R�E��C�8�9�	�b�U��s�e�4�5�	�"��T�/�B�C�	�I�
�R�E��S�
1�2�#������	�Drrjc
�*�eZdZd�Zgd�Zdeddddd��fdeddddd��fdeddddd��fd	eddddd��fd
eddddd��fdeddddd��fgZdeddddd��fd
eddddd��fdeddddd��fgZdxZZ	dZ
y)�#TestMutuallyExclusiveOptionalsMixedc�
�td��}|jddd��|j|��}|jddd	��|jd
dd��|jddd
��|jddd��|S)Nr[r&r�r�rmr`r�r��a helpr��b helprrpr��c helprYrPs    rr1z.TestMutuallyExclusiveOptionalsMixed.get_parser�s���+��8�����D��H��E��3�3�X�3�F��
���4��8��D�
���4��8��D����D��H��E�
���4��8��D��
r)z-a -b�-b -cz-a -cz-a -b -cr�TF�r�rzr{r�rYr�r�z-a -xz-y -bz-x -y -crr�rz:        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
        Nrhr@rrrrrr�s����7�H�	
�r�D�E�U�e�u�=�>�	
�r�E�T�U�e�u�=�>�	
�r�E�U�d�e�u�=�>�	�"�t�u����?�@�	�"�u����$�?�@�	�R�%�5�D�D�D�A�B�
�I�
�R�%�5�E�U�e�
<�=�	
�r�E�U�e�t�u�=�>�	
�r�E�U�e�u��=�>�#��5���1�	�Drrrc�r�eZdZdd�ZddgZdedd��fdedd	��fgZd
edd��fgZdZdZ	d
Z
y)�TestMutuallyExclusiveInGroupNc��td��}|jdd��}|j|��}|jdd�	�|jd
d�	�|S)Nr[r&zTitled groupzGroup descriptionrr�r,rcr�r`rN)r�r�r�r�)rr�r1�titled_group�mutex_groups     rr1z'TestMutuallyExclusiveInGroup.get_parser�sk��+��8���0�0� �.A�1�C��
�5�5�x�5�H�	�� � ��z� �:�� � ��z� �:��
rrQz--baz X --bar YrRr3rSrTrerz9        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
        rNrUr@rrrzrz�si���"�#4�5�H�	�B�3�D�)�*�	�B�4�S�)�*��I�

�R�D�d�
#�$�#������
�Drrzc���eZdZd�Zgd�Zdeddddd��fded	d
ddd��fded	dd
dd��fdeddddd
��fd
ed	d
ddd
��fgZded	dddd��fded	dddd
��fgZdxZZ	dZ
y	)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedc��td��}|jdd��|jddd�	�|j|�
�}|jddd
��|jddd�	�|jddd�	�|S)Nr[r&r�rmr�rr�rpr`r�r�r~rtrsr�rur�rvrYrPs    rr1z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parsers���+��8�����C�h��/����D��H��E��3�3�X�3�F��
���3�c���9�
���4��8��D�
���4��8��D��
r)zX A -brwz-c X AzX ArdFr3rxzX -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
        rhr@rrrrs����-�H�	��S�E�U�c�U�;�<�	��d�d�e�s�e�<�=�	��d�e�t�s�e�<�=�	�2��u����=�>�	�B����#��>�?��I�

�b�4�5�E�S�E�:�;�	��d�e�u��t�<�=�#��
5���1��Drrc�.�eZdZd�ZdZdZdZdZdZdZ	dZ
y)�TestMutuallyExclusiveNestedc�b�td��}|j|��}|jd�|jd�tj�5tj
dt�|j|��}ddd�jd�|jd�tj�5tj
dt�|j|��}ddd�jd	�|jd
�|S#1swY��xYw#1swY�9xYw)Nr[r&r�r�r�r�r�r�r�r)r�r�r��warnings�catch_warnings�simplefilterr�)rr�r1r�r(�group3s      rr1z&TestMutuallyExclusiveNested.get_parserMs��+��8���3�3�X�3�F��
���4� �
���4� �
�
$�
$�
&�	K��!�!�(�,>�?��7�7��7�J�F�	K�	���D�!����D�!�
�
$�
$�
&�	L��!�!�(�,>�?��8�8�(�8�K�F�	L�	���D�!����D�!��
�	K�	K��
	L�	L�s�-D�-D%�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 r1r?rDrar4r6r:r=r@rrr�r�Fs8���"����
�D�'+�#�"&��'+�$�#'� rr�c� ��eZdZd�fd�	Z�xZS)�MEPBasec�b��tt|�|��}t|jd|g��}|S)Nr�F)r]rHr�)rr�r1r�r])rr�rr1rs    �rr1zMEPBase.get_parser}s4����w��0�(�0�C��+����u�v�h�@���
rrN)rrr r1r!r"s@rr�r�{s
����rr�c��eZdZy)�&TestMutuallyExclusiveGroupErrorsParentN�rrr r@rrr�r�����rr�c��eZdZy)�!TestMutuallyExclusiveSimpleParentNr�r@rrr�r��r�rr�c��eZdZy)�TestMutuallyExclusiveLongParentNr�r@rrr�r��r�rr�c��eZdZy)�*TestMutuallyExclusiveFirstSuppressedParentNr�r@rrr�r��r�rr�c��eZdZy)�)TestMutuallyExclusiveManySuppressedParentNr�r@rrr�r��r�rr�c��eZdZy)�0TestMutuallyExclusiveOptionalAndPositionalParentNr�r@rrr�r��r�rr�c��eZdZy)�)TestMutuallyExclusiveOptionalsMixedParentNr�r@rrr�r��r�rr�c��eZdZy)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNr�r@rrr�r��r�rr�c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�TestSetDefaultsc
�
�t�}|jd��|jdd��|jtddd��|j	g��|jtddd��|j	gt���|jtddd��|j	gtd����|jtddd��|j	gtdd�	���y)
Nr'r�rArp)rYrrXrBr�)r�r�r��set_defaultsr�rzr:r0s  r�test_set_defaults_no_argsz)TestSetDefaults.test_set_defaults_no_args�s���+�-�����e��$����e�q��)�����e�u��2��*�*�2�.�	0�����e�u��2��*�*�2�r�t�4�	6�����e�u��2��*�*�2�r�E�{�;�	=�����e�u��2��*�*�2�r�E�Q�/?�@�	Brc	��t�}|jdd��|jdd��|jt	dd��|jg��|jt	dd��|jgt	���|jt	dd��|jgt	d����|jt	d	d��|jd
j
���|jt	d	d��|jd
j
�t	���|jt	d	d��|jd
j
�t	d����y)Nr'rArkr��xfooxrirBr�rr�)r�r�r�r�rzr:r�r0s  r�test_set_defaults_with_argsz+TestSetDefaults.test_set_defaults_with_args�s6��+�-�����e�u��-����D�'��2�����g��/��*�*�2�.�	0�����g��/��*�*�2�r�t�4�	6�����e�u�-��*�*�2�r�E�{�;�	=�����c�U�+��*�*�6�<�<�>�:�	<�����c�U�+��*�*�6�<�<�>�2�4�@�	B�����c�U�+��*�*�6�<�<�>�2��;�G�	Irc��t�}|jd��|j�}|jd�}|jd��|j	tdd��|j
dj���y)Nr'r�r�rAr�rk)r�r�rurwr�rzr:r�)rr1rz�parser_as    r�test_set_defaults_subparsersz,TestSetDefaults.test_set_defaults_subparsers�su��+�-�����e��$��*�*�,�
��(�(��-�������&�����e�u�-��*�*�3�9�9�;�7�	9rc��td��}|jd��t|g��}|jtd��|j	g��y)NFr�r'r�r�r�)rrr1s   r�test_set_defaults_parentsz)TestSetDefaults.test_set_defaults_parents�sH��+�U�;�����e��$�+�V�H�=������e��f�&7�&7��&;�<rc�
�tj�}|j�jd�}|j	d��|j	d��|jt
d��|jdg��y)Nr3rpr
r�)r*r+rurwr�r�rzr:)rr1�xparsers   r�)test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparser�sl���(�(�*���'�'�)�4�4�S�9�������"������#�������F�$5�$5�s�e�$<�=rc��t�}|jdddd��|jd�|jdd�	�|jd
d��|jd
dd��|jt	dddd��|jg��|jdddd��|jt	dddd��|jg��y)N�Wr3rerbr�rWr��XXrirYr~rqr�ZZr��WW�YY)r�r�r�r�rzr:r0s  r�&test_set_defaults_same_as_add_argumentz6TestSetDefaults.test_set_defaults_same_as_add_argument�s���+�-�����c�S�C�3��7����D�!����D�$��/����C�s��+����C�s�D��9�	
����c�T�S�D�9��*�*�2�.�	0�	���d�c�T�S��9�����d�c�T�S�9��*�*�2�.�	0rc���t�}|jdddd��|jd�}|jd�|jdd	�
�|jdd�
�|jddd��|j	tdd	dd��|j
g��|jdddd��|j	tdddd��|j
g��y)Nr�r3rerbr�r'rWr�r�rirYr~rqrr�r�r�r�)r�r�r�r�r�rzr:r*s   r�,test_set_defaults_same_as_add_argument_groupz<TestSetDefaults.test_set_defaults_same_as_add_argument_group�s���+�-�����c�S�C�3��7��)�)�%�0��
���4� �
���4���.�
���3�c��*�
���3�c�4��8�	
����c�T�S�D�9��*�*�2�.�	0�	���d�c�T�S��9�����d�c�T�S�9��*�*�2�.�	0rN)
rrr r�r�r�r�r�r�r�r@rrr�r��s'��B�I�"9�=�>�0�"0rr�c��eZdZd�Zy)�TestGetDefaultc��t�}|j|jd��|j|jd��|jd�|j|jd��|j|jd��|jdtd��|j|jd��|jd|jd��|j
d��|jd|jd��|jd|jd��y)	Nr'rAr�r,rr�r1r
)r�r��get_defaultr�r�r�r�r0s  r�test_get_defaultzTestGetDefault.test_get_default
s��+�-�����&�,�,�U�3�4����&�,�,�U�3�4����G�$����&�,�,�U�3�4����&�,�,�U�3�4����G�#�r��:����&�,�,�U�3�4�����V�/�/��6�7������)�����6�#5�#5�e�#<�=�����V�/�/��6�7rN)rrr r�r@rrr�r�

s��8rr�c��eZdZd�Zd�Zy)�TestNamespaceContainsSimplec�t�tj�}|jd|�|jd|�y)Nrr�)r*�	Namespace�assertNotIn�r�nss  r�
test_emptyz&TestNamespaceContainsSimple.test_empty&
s0��
�
�
�
!������R� �����b�!rc���tjdd��}|jd|�|jd|�|jd|�|jd|�|jd|�y)	Nrpr�rkrr�rY�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�$
s��"�
"rr�c��eZdZd�Zy)�TestHelpFormattingMetaclassc�V�|dk(ryGd�dt�}dD]\}}||||��y)N�HelpTestCasec�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc���||_||_|j|j|jfD]-}|j
�d|��}|fd�}	||_t|||��/y#t$rY�wxYw)Nr�c��||�yrNr@r�s  r�test_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapperH
r�r)�func_suffix�std_name�test_format�
test_print�test_print_filerr�r�)r�
test_classr�r�r�r�r�s       rrz?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__?
s���#.�� � (��
�"&�"2�"2�"&�/�/�"&�"6�"6�"8�A�I�,5�+=�+=�{� K�I�5>�(��09��-��J�	�<�@�A��%����s�A#�#	A/�.A/c�\�tj|jji|jj��}t|dg�D](}|j|ji|j���*t|dg�}|D]X\}}|j|ji|j��}|D](}|j|ji|j���*�Zt|dg�}|r=|j�}	|D](}
|	j|
ji|
j���*|S)Nr��argument_group_signatures�subparsers_signatures)
r*r+r�rurvr�r�r�rurw)rr�r1�argument_sig�
group_sigs�	group_sig�
argument_sigsr��subparsers_sigsrz�
subparser_sigs           rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parserP
s`��!�0�0��,�,�1�1�6��-�-�4�4�6��%,�F�4I�2�$N�?�L�'�F�'�'��):�):�?�*6�*=�*=�?�?�%�V�-H�"�M�
�0:�B�,�I�}�5�F�5�5�y�~�~�J�8A�8H�8H�J�E�(5�B��*��*�*�L�,=�,=�B�-9�-@�-@�B�B�B�#*�&�2I�2�"N��"�!'�!6�!6�!8�J�)8�G�
�-�
�-�-�}�/A�/A�G�1>�1E�1E�G�G��
rc��t||j�}tj|�}d|_|j||�yrN)r�r�r�r�r�r�)rr��parser_text�
expected_texts    r�_testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testf
s9�� '���0@�0@� A�
� (���
� >�
�!%����"�"�=�+�>rc��|j|�}t|d|jz�}|j||��y)Nz	format_%s)r�r�r�r�)rr�r1rs    rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatl
s9���)�)�&�1�� ���t�7G�7G�)G�H���
�
�6�6�8�,rc���|j|�}t|d|jz�}tt|j�}tt|jt
��	|�tt|j�j�}tt|j|�|j||�y#tt|j|�wxYw�Nzprint_%s)	r�r�r�r�r�r�rrr�)rr�r1�print_�
old_streamr�s      rr�zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printq
s����)�)�&�1�� ���d�6F�6F�)F�G��$�S�$�-�-�8�
���T�]�]�K�M�:�<��H�")�#�t�}�}�"=�"F�"F�"H�K��C����
�;��
�
�6�;�/���C����
�;�s�)/C�C#c��|j|�}t|d|jz�}t�}||�|j	�}|j||�yr�)r�r�r�rrr�)rr�r1r��sfiler�s      rr�zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file}
sQ���)�)�&�1�� ���d�6F�6F�)F�G��#�
���u�
�#�n�n�.���
�
�6�;�/rN)	rrr rr�r�r�r�r�r@rrr�r�=
s!��
A�"
�,
?�
-�


0�
0rr�))�usager�)rar�)r�)r�rcr�r�r�r�r�s       rrz$TestHelpFormattingMetaclass.__init__9
s>���>�!��F	0�v�F	0�R&:�	1�!�K���S�+�x�0�	1rNrxr@rrr�r�7
s��O1rr�r�c��eZdZ	eddd��Zedddd�	�ed
dd�
�edd��edd��edd��gZgZdZedzZdZ	y)�TestHelpBiggerOptionalsr[�DESCRIPTION�EPILOG�r]r^�epilogr\rvrw�0.1ryr�r��X HELPr`�--y�Y HELPr�r'�FOO HELPrA�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 rsr�r�r�r�rarwr@rrr�r��
s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���!#��
�E����D� �Grr�c��eZdZ	d�Zej
ZejZejZdZedzZ	ejZ
y)�TestShortColumnsc�n�|jtj��}|jdd�y)NrErM)rFrrGrHrHs  rrJzTestShortColumns.setUp�
s)�����	� =� =� ?�@�����	�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 rJr�r�r�r�r�rarwr@rrr�r��
sW���
!�#:�"J�"J��"9�"M�"M��"9�"S�"S��
�E����D�:#:�"A�"A�Grr�c���eZdZ	eddd��Zedddd�	�ed
dd�
�edd��edd��edd��gZedd��edd��eddd��gfgZdZedzZd Z	y!)"�TestHelpBiggerOptionalGroupsr[r�r�r�r\rvrwr�ryr�r�r�r`r�r�r�r'r�rAr�zGROUP TITLEzGROUP DESCRIPTIONrirBzBAZ HELPrr�zZ HELPrszN        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���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���

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

�E����D�,�Grr�c��eZdZ	edd��Zeddd��edd	�
�edd�
�ed
d�
�gZgZdZedzZdZ	y)�TestHelpBiggerPositionals�USAGEr��r�r^r�r�r�r`r�r�r��ekiekiekifekangzEKI HELPrAr��        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�sl��>���m�D���D��H�5��E��!���J�/��E�
�#�	��!#��
�E����D��Grr�c��eZdZ	edd��Zeddd��edd	d
��gZedd�
�eddd��gfgZdZedzZdZ	y)�TestHelpReformattingr[ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrbr�r�zoddly
    formatted -x help�r�rarYrz
normal y helprgz'
    oddly formatted group

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

        positional arguments:
          yyy         normal y help

        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@rrrr6s���H��
�)�*��	�D�$�&=�	>��C��_�5���

�W�#0�
1��d�<�$�%�
&�		'�
!��
�E����D�(�Grrc��eZdZ	edd��Zeddd��edd	d
��gZed�edd
d��gfgZdZedzZdZ	y)�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
Drbr�r�zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrrYr�dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�r�zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAr`ra�
        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	jsz��H���[�A���D�$�]�3��C��\�2���


�X����\��@�B�	C�!��
�E����D�,�Grr	c��eZdZ	edd��Zedddd��ed	d
d��ed
dd��gZed�eddd��eddd��gfgZdZedzZdZ	y)�TestHelpWrappingLongNamesrzZD 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 Drr\rvrwzZV 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 Vryr��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrrY�yyyyyyyyyyyyyyyyyyyyyyyyyr
rr��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 ZHrag
        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���z�B���D�+�i��D��D�(��6��C���5���

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

�E����D�<�Grr
c��eZdZ	ed��Zeddd��eddd	��ed
d
��eddd
��eddd��eddej��edddej��edddej��edejejd��g	Zed�ed dd!��ed"d#d$��ed%d%d��ed&d&d��gfgZ	d'Z
e
d(zZd)Zy*)+�
TestHelpUsager[r&rWr�rfrsr�r�r�r�r�rzr�)rarrr{r~r�zWhether to foo)rar�r,zWhether to barT)rarjr�rz--foobarz--barfoor�z--bazzzBazz!)r�rjrar�rrYrrurr�r�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 rsr�r*r�ror�r�r�rarwr@rrrr�s��#���'���D��#�&��D��#�&��C�c���C�c��#��C�c��%��G�*�8�3Q�3Q�R��G�*�D�$�:�:�	<��D�*�j��1O�1O�P��H�X�;�;�&�/�/�g�	?���

�W����C�c�*���A�C�(���#�S�)���#�S�)�	
�	�!��
�E����D�,�Grrc�Z�eZdZed��Zedd��eddd��gZd	Zed
zZdZy)
�TestHelpUsageWithParenthesesr[r&�
positionalz(example) positional�r�r�z
--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 rsr�r�r�rarwr@rrrrsL����'���L�"8�9��D�,�(F�G���

�E����D��Grrc��eZdZ	edd��ZgZed�edd��edd��gfed	�ed
d
��edd��gfgZd
ZedzZdZ	y)�TestHelpOnlyUserGroupsr[F�r]rH�xxxxr�r�r�r��yyyyrzrrYz.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

        yyyy:
          b     b
          -y Y  y
        rNr�r@rrrrs���#����7����	�V����3����#��
�	�

�V����#����3��
�	�	!��
�E��	�	�D��Grrc�z�eZdZ	ed��Zedd��edd��ed�ed	�gZgZd
ZedzZdZ	y
)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr&rWr�rr�r3r�rzzz        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@rrrr6sa��4���)���D�#���D�#���C���C��	��!#��
�E��
�
�D��Grrc��eZdZ	ed��Zedd��edd��edd	��ed
d��ed�ed
�gZgZdZedzZdZ	y)� TestHelpUsageLongProgOptionsWraprr&rW�WWWWWWWWWWWWWWWWWWWWWWWWWrr�rr�YYYYYYYYYYYYYYYYYYYYYYYYYr�ZZZZZZZZZZZZZZZZZZZZZZZZZr�rza        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@rrr!r!Ssu��K���)���D�(�#��D�(�#��D�(�#��D�(�#��C���C��
��!#��
�E����D��Grr!c�f�eZdZ	edd��Zed�ed�ed�gZgZdZedzZd	Z	y
)�$TestHelpUsageLongProgPositionalsWraprFr�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNr�r@rrr&r&wsV��M���5�9���H�
��H�
��H�
���
!#��
�E�
���D��Grr&c	��eZdZ	ed��Zedd��edd��edd	��ed
d��ed�ed
�ed�gZgZdZedzZdZ	y)�TestHelpUsageOptionalsWrapr[r&rWr"rr�rrr#rr$r�rzr{z�        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@rrr,r,�s|��6���'���D�(�#��D�(�#��D�(�#��D�(�#��C���C���C����!#��
�E��
�
�D��Grr,c��eZdZ	ed��Zed�ed�ed�ed�ed�ed�gZgZd	Zed
zZdZ	y)
�TestHelpUsagePositionalsWrapr[r&r�rrr'r(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@rrr.r.�si��8���'���D�	��D�	��D�	��H�
��H�
��H�
�
��!#��
�E�
���D��Grr.c��eZdZ	ed��Zedd��edd��edd	��ed
�ed�ed�gZgZd
ZedzZdZ	y)�%TestHelpUsageOptionalsPositionalsWrapr[r&r�rrrr#rr$r'r(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@rrr0r0�sr��F���'���D�(�#��D�(�#��D�(�#��H�
��H�
��H�
�
��!#��
�E����D��Grr0c�p�eZdZ	ed��Zedd��edd��edd	��gZgZd
ZedzZdZ	y
)�TestHelpUsageOptionalsOnlyWrapr[r&r�rrrr#rr$z�        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@rrr2r2�s]��J���'���D�(�#��D�(�#��D�(�#���
!#��
�E�
���D��Grr2c�f�eZdZ	edd��Zed�ed�ed�gZgZdZedzZd	Z	y
)� TestHelpUsagePositionalsOnlyWrapr[Frr'r(r)z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r*rNr�r@rrr4r4sV��L����7���H�
��H�
��H�
���
!#��
�E����D��Grr4c
���eZdZ	ed��Zeded��edddd	d
��edd
d��eddddgdd��edd��eddd��gZed�edd ��ed!d"d#��gfgZd$Zed%zZ	d&Z
y')(�TestHelpVariableExpansionr[r&r�z"x %(prog)s %(default)s %(type)s %%rdrr�r�XXXz y %(prog)s %(default)s %(const)s)r�rjrrar�r�z$foo %(prog)s %(default)s %(choices)srnr,rBrpr��BBBz!bar %(prog)s %(default)s %(dest)s)rjr�r�rarzspam %(prog)s %(default)sr�r1rjzbadger %(prog)s %(default)s)rjrar�r�za %(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 rsr�r�r�r�r�rarwr@rrr6r6.s���D���'���D�s�5�	7��D���%�3�	5��G�U�7�	9��G�U�Q��F�E�4�	6��F�4�5��H�c�(E�F���

�W����3�4���b�'?�@�
�	�!���E����D�"�Grr6c�<�eZdZ	edd��ZgZgZdZedzZdZ	y)�&TestHelpVariableExpansionUsageSuppliedr[z%(prog)s FOO�r]r�z         usage: PROG FOO
        rgrNr�r@rrr:r:\s=��J���n�=���� "���E����D�
�Grr:c�6�eZdZ	edd��ZgZgZdZeZdZ	y)�$TestHelpVariableExpansionNoArgumentsr[Frz        usage: PROG
        rNr�r@rrr=r=ms1��E����7���� "���E��D��Grr=c�n�eZdZ	edej
��Zedd��edd��gZgZdZ	d	Z
d	Zy
)�TestHelpSuppressUsager[r;r�r_r�r�	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrr rsr*ror�r�r�rar�rwr@rrr?r?zsO��=���h�.?�.?�@���G�*�%��F��%���!#���D�
�E��Grr?c�t�eZdZ	edd��Zedej��edd��gZgZdZ	e	d	zZ
d
Zy)�TestHelpSuppressOptionalr[Frr�r�rr@z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN�rrr rsr�r*ror�r�r�rarwr@rrrBrB�s[��I����7���G�(�+�+�,��F��%���!#��
�E����D�
�GrrBc��eZdZ	ed��Zedd��edd��gZed�ed	ej��gfgZd
Z	e	dzZ
dZy
)�TestHelpSuppressOptionalGroupr[r&r�r_r�rr@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 rsr�r�r*ror�r�rarwr@rrrErE�sq��F���'���G�*�%��F��%���


�W���G�(�*;�*;�<�=�>�!��
�E����D��GrrEc�r�eZdZ	ed��Zedd��edej��gZgZdZ	e	dzZ
d	Zy
)�TestHelpSuppressPositionalr[r&r�r_r�rz-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNrCr@rrrIrI�sY��K���'���G�*�%��F��*�*�+���!#��
�E����D��GrrIc�N�eZdZ	ed��Zeddd��gZgZdZedzZd	Z	y
)�TestHelpRequiredOptionalr[r&r�Tr_)r�raz+        usage: PROG [-h] --foo FOO
        rJrNr�r@rrrLrL�sK��8���'���G�d��4���!#��
�E����D��GrrLc�f�eZdZ	eddd��Zeddd��ed	d
d��gZgZd
ZedzZdZ	y)�TestHelpAlternatePrefixCharsr[z^;F)r]rGrHz^^foor�r_r`z;bz;;barrcr�z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNr�r@rrrNrN�s[��D���T�E�J���G�L�z�:��D�'�
�+���!#��
�E����D��GrrNc�`�eZdZ	edd��Zedd��edd��gZgZd	Zed
zZdZ	y)
�TestHelpNoHelpOptionalr[Frr�r_r�rr@z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        rNr�r@rrrPrP�sU��G����7���G�*�%��F��%���!#��
�E����D��GrrPc�V�eZdZ	ed��Zed�ed�gZgZdZedzZdZ	y)	�TestHelpNoner[r&r�rrFz�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rNr�r@rrrRrRsM��;���'���G���F����!#��
�E����D��GrrRc	��eZdZ	ed��Zedddd��edd	d
d��edd
dd��edddd��gZgZdZedzZdZ	y)�TestHelpTupleMetavarr[r&rWrfr�)�W1�W2)rarrr�r�r�r�)�X1�X2rrYru)�Y1�Y2�Y3rrr~)�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@rrrTrT*sx��,���'���D�s�#�|�<��D�s�#�|�<��D�s�!�-?�@��D�s�#�x�8�	��!#��
�E����D��GrrTc��eZdZ	edej
d��Zedd��edd��gZed	d
��edd
��gfgZdZ	e	dzZ
dZy)�TestHelpRawTextr[�7Keep the formatting
    exactly as it is written

here
�r]�formatter_classr^r�z-    foo help should also
appear as given herer�rr@rg�?    This text
  should be indented
    exactly like it is here
rir,rc�>        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 rsr*�RawTextHelpFormatterr�r�r�r�rarwr@rrr^r^Es���'��
�X�%B�%B����	�G�1�	2��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�,�Grr^c��eZdZ	edej
d��Zedd��edd��gZed	d
��edd
��gfgZdZ	e	dzZ
dZy)�TestHelpRawDescriptionr[r_r`r�z4  foo help should not
    retain this odd formattingr�rr@rgrbrir,rcrca�
        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 rsr*�RawDescriptionHelpFormatterr�r�r�r�rarwr@rrrfrfvs���'��
�X�%I�%I����	�G�;�	<��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�*�Grrfc�H�eZdZ	edej
d��Zedd��eddd	�
�edejdd
��edejdej��eddd��edd��edddd��gZ	edd��ede
dd� �gfgZd!Zed"zZ
d#Zy$)%�TestHelpArgumentDefaultsr[r^r`r�z)foo help - oh and by the way, %(default)sr�r,r�rcr`z--tazzWhether to taz itT)r�rarjz--corgezWhether to corge itz--quuxzSet the quuxr)rarjrr@r1r~�woodenzbadger helprorgrir`rN)r�rjraz�        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 rsr*�ArgumentDefaultsHelpFormatterr�r�ror�r�r�r�rarwr@rrriri�s���0��
�X�%K�%K�!�#��
	�G�E�F��G�L�z�:��G�H�:�:�$�d�	4��I�h�<�<�&��0A�0A�	C��H�>�2�6��F��%��H�C��
�F�
��

�W�-�	0�

�g�C��*�
=�	>�	@�!��
�E�
���D�*�Grric�R�eZdZ	edd��Zedddd��gZgZd	Zed
zZdZ	y)
�TestHelpVersionActionr[r^rb�-Vrvrwz3.6ryz&        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@rrrmrm�sK��6���M�B���t�[��E�R�S�� "��
�E����D��Grrmc��eZdZ	ed��Zeddddej��edd	�
�edd�
�gZgZd
Z	e	dzZ
y)�TestHelpVersionActionSuppressr[r&r\rvrwrx)r�rwrar�r_r�rr@rFrGN)rrr rsr�r*ror�r�r�rar@rrrprp�se��M���'���D�+�i���"�"�	$��G�*�%��F��%�	��!#��
�E����Drrpc��eZdZ	edd��Zedddd��gZd	D���cgc]}t|�
���c}}}ZdZedzZd
Z	ycc}}}w)�TestHelpSubparsersOrderingr[�display some subcommandsrbr\rvrwr�ry)r�rzr{r�r�r��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 rsr�r�r�r�rarw)�.0rcrss000rrrrrsw��?���'A�C���t�[��E�R�S��*C�D�D�!%�!�d�^�D��
�E��
�
�D��G��'Ds�Arrc
��eZdZ	edd��Zedddd��gZd	ZeD����cgc]\}}t||�
���c}}}}ZdZedzZ	d
Z
ycc}}}}w)�"TestHelpSubparsersWithHelpOrderingr[rsrbr\rvrwr�ry))r�za subcommand help)rzzb subcommand help)r{zc subcommand help)r�zd subcommand help)r�ze subcommand help)rcrarta�
        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 rsr�r��subcommand_datar�r�rarw)rurcrarss0000rrwrw"s���?���'A�C���t�[��E�R�S���O�0?�@�@�!+��t�!�d��6�@��
�E����D�"�G��1@s�A
rwc��eZdZd�Zeddej��Zede��ede��ede	d	�
�gZ
gZdZedzZ
d
Zy)�TestHelpMetavarTypeFormatterc��|SrNr@r)s r�custom_typez(TestHelpMetavarTypeFormatter.custom_typeOs���
rr[r^)r]r^rar�rhr�r�z
SOME FLOAT)r�r�zF        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 r|rsr*�MetavarTypeHelpFormatterr�r�rkr�r�r�rarwr@rrrzrzMsr�����M�+3�+L�+L�N���s��-��t�+�6��t�%��F�H��!#��
�E����D��Grrzc�h�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zy)�TestInvalidArgumentConstructorsc�v�tj�}|jt|jg|��i|��yrN)r*r+r�r�r��rrurvr1s    r�assertTypeErrorz/TestInvalidArgumentConstructors.assertTypeErrorqs:���(�(�*������)�V�%8�%8�	+��	+�#)�	+rc�v�tj�}|jt|jg|��i|��yrN)r*r+r�rr�r�s    r�assertValueErrorz0TestInvalidArgumentConstructors.assertValueErrorvs:���(�(�*������*�f�&9�&9�	+��	+�#)�	+rc��|jdd��|jdd��|jdd��|jdi��y)	Nr�)rArr')�callbackr@)�
callback_args)�callback_kwargs�r�rs r�test_invalid_keyword_argumentsz>TestInvalidArgumentConstructors.test_invalid_keyword_arguments{sN�����T�t��,����T�E��2����T���4����T�2��6rc�V�|j�dD]}|j|���y)N)r�r�r�r��rr�s  r�test_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destination�s.������)�	0�F�� � �� �/�	0rc�H�|jd�|jd�y)Nr�z---�r�rs r�test_invalid_option_stringsz;TestInvalidArgumentConstructors.test_invalid_option_strings�s�����d�#����e�$rc�d�|jdd��|jdttf��y)Nr�r�rh)r�r�rkrs r�test_invalid_typez1TestInvalidArgumentConstructors.test_invalid_type�s,�����g�E��2����g�S�%�L��9rc�b�|jdd��|jdd��|jdd��tj�}|jt�5}|jdd��ddd�|j
dtj��y#1swY�/xYw)	Nr�r'r�rBr��r�r�z
store-truezunknown action)	r�r*r+r�rr�r�r�r�r�s   r�test_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_action�s������d�5��1����e�E��2����g�.A��B��(�(�*��
�
�
�z�
*�	>�b�������=�	>��
�
�&��B�L�L�(9�:�	>�	>�s�#B%�%B.c��tj�}|jd��|jt�5}|jdd��ddd�|jdt
j��y#1swY�/xYw)Nr'r$rArBz+dest supplied twice for positional argument)r*r+r�r�rr�r�r�r�s   r�test_multiple_destz2TestInvalidArgumentConstructors.test_multiple_dest�st���(�(�*�������'�
�
�
�z�
*�	3�b�����E��2�	3��
�
�C��"�,�,�'�	)�	3�	3�s�A>�>Bc��dD]B}tt��td��td��fD]}|jdd|i|����Dy)	N)r�r�r�r�r�rhr�rq�abr�r�)r�)rvr�r�)rr��attrss   r�test_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actions�sU��0�	C�F��C�.�$�S�/��t�,�.�
C��$��$�$�B�&�B�E�B�
C�	Crc�b�dD]*}|jdd|��|jdd|���,y)N)r�r�r�r�r'r�r��rrr�r�r�s  r�!test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actions�sA��<�	A�F�
� � ��U�6� �B�
� � ��S�� �@�
	Arc���dD][}|jdd|��|jdd|��dD],}|jdd||��|jdd||���.�]y)	Nr�r�rr�r)rpr�r�r')rrrr�r�)rr�rrs   r�#test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actions�s���)�	B�F�
�!�!�$�a��!�?��!�!�&��&�!�A�'�
B���%�%�d�%�,1�&�&�B��%�%�f�E�,1�&�&�B�
B�	Brc�:�dD]}|jdd|���y)N)r�r�r�r�r�r�r�s  r�test_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actions�s*��5�	A�F�
� � ��S�� �@�	Arc��|jdd��|jddd��|jddtj��y)Nr��parsersr�r[)r�r])r�r�)r�r*r+rs r�"test_parsers_action_missing_paramszBTestInvalidArgumentConstructors.test_parsers_action_missing_params�sK�����Y�y��9����Y�y�v��F����Y�y�*2�*A�*A�	�	Crc�*�|jdd��y)Nr'Tr�r�rs r�test_required_positionalz8TestInvalidArgumentConstructors.test_required_positional�s�����U�T��2rc����Gd�dt��G�fd�dt�}tj�}|j	�|j
d|����|j	�|j
d|����y)Nc��eZdZy)�ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNr�r@rr�Successr��s��rr�c�"��eZdZ	d�fd�	Zd�Zy)�HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Actionc�2��|dk(r|�ur|�ur���yyy)Nrr@)r�option_stringsr%rrjr�r�s      �rrzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__�s2����6�>���'�"�g�-�")�)�O�.�(�"rc��yrNr@rws   rr;zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__�s��rN)F)rrr rr;)r�s�rrCr��s���#(�	
,�
rrCre)r�rjrr)r�r�r*r+r�r�)rrCr1r�s   @r�test_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_action�sy���	�i�	�	�V�	� �(�(�*�����'�6�#6�#6��!'���	�	I����'�6�#6�#6��!'���	�	IrN)rrr r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r@rrrrnsV��7�+�
+�
7�0�
%�:�;�)�C�A�B�A�C�3�Irrc��eZdZd�Zd�Zy)�TestActionsReturnedc�>�tj�}|jd�}|j|jd�|jdd�}|j|jd�|jdd�}|j|jd�y)	Nr�r'r�r,rAr�rr�)r*r+r�r�r%�rr1r�s   rr�zTestActionsReturned.test_dest�s����(�(�*���$�$�W�-��������e�,��$�$�T�7�3��������e�,��$�$�T�4�0��������c�*rc�8�tj�}|jddddtddgddd	�
�	}|j	|j
d�|j	|jd�|j	|jd�|j	|jt�|j	|jddg�|j	|jd�|j	|jd�|j	|jd	�y)Nr�r~rr�rpr�rl�BARrB)rrrrjr�r�rar�r%)
r*r+r�r�r�rrrrjr�r�rar�r%r�s   r�	test_misczTestActionsReturned.test_misc�s����(�(�*���$�$�W�C�r�-/�c�A�q�6�*/��U�%�L��	
������s�+�������r�*��������,�������c�*�������!�Q��0�������e�,��������/�������e�,rN)rrr r�r�r@rrr�r��s��+�-rr�c�$�eZdZd�Zd�Zd�Zd�Zy)�TestConflictHandlingc�P�|jttjd��y)Nr')�conflict_handler)r�rr*r+rs r�
test_bad_typez"TestConflictHandling.test_bad_types"�����*�h�&=�&=�+0�	�	2rc��tj�}|jd�|jtj|jd�|jd�|jtj|jd�y)Nr�re)r*r+r�r�rr0s  r�test_conflict_errorz(TestConflictHandling.test_conflict_errorsn���(�(�*�����D�!����(�0�0� �-�-�t�	5����H�%����(�0�0� �-�-�x�	9rc��tj}|dd��}|jdd��|jdd��|j|j	�tjd��|jd	d
��|jd	d��|j|j	�tjd
��y)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
            re�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�)rr1r1s   r�test_resolve_errorz'TestConflictHandling.test_resolve_errors����,�,�
���)�D�����D�w��/����D�w��/�����+�+�-�x���@�0�	�	���H�j��9����H�j��9�����+�+�-�x���@�0�	rc���tj�}|j�}|jddg��|j	tj
|jd�|j	tj
|jd�|j	tj
|jddg��|j	tj
|jddg��y)N�fullname�aliasr�r�)r*r+rurwr�r)rr1�sps   r�test_subparser_conflictz,TestConflictHandling.test_subparser_conflict2s����(�(�*��
�
"�
"�
$��
�
�
�j�7�)�
�4����(�0�0��-�-��	5����(�0�0��-�-��	2����(�0�0��-�-��:�,�	�	H����(�0�0��-�-��7�)�	�	ErN)rrr r�r�r�r�r@rrr�r�
s��2�9��2Err�c�D�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�TestOptionalsHelpVersionActionsc��|jt�5}|j|j��ddd�|j	|j�jj�y#1swY�>xYwrN)r�r�r:r�r�r�r�r�)rr1r�r�s    r�assertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExitGs`��
�
�
�2�
3�	0�r����h�n�n�.�/�	0�����+�+�-�r�|�|�/B�/B�C�	0�	0�s� A3�3A<c�F�|jt|j|�yrN)r�r�r:�rr1rus   rrXz9TestOptionalsHelpVersionActions.assertArgumentParserErrorLs�����-�v�/@�/@�$�Grc���t�}|jdddd��|j|d�|j|d�|jtt
|d�y)	Nr\rvrwrxryr4rM�format_version�r�r�r�r�r�r�r0s  r�test_versionz,TestOptionalsHelpVersionActions.test_versionOsV��+�-�����D�+�i���O�� � ���.�� � ���2����.�'�6�;K�Lrc�
�td��}|jdddd��|jt�5}|j	dg�ddd�|jdjj�y#1swY�0xYw)	N�PPPr&r\rvrwz%(prog)s 3.5ryzPPP 3.5
�r�r�r�r�r:r�r�r�r�s   r�test_version_formatz3TestOptionalsHelpVersionActions.test_version_formatVss��+��7�����D�+�i���X�
�
�
�2�
3�	&�r����t�f�%�	&�����b�l�l�&9�&9�:�	&�	&�s�A9�9Bc���td��}|jdddd��|j|d�|j|d	�|jtt
|d
�y)NFr�r\rvrwrxryr4rMr�)r�r�rXr�r�r�r0s  r�test_version_no_helpz4TestOptionalsHelpVersionActions.test_version_no_help]sX��+�U�;�����D�+�i���O��&�&�v�t�4��&�&�v�x�8����.�'�6�;K�Lrc��td��}|jddd��|jt�5}|j	dg�ddd�|jdjj�y#1swY�0xYw)Nr7r&rnrwz%(prog)s 3.7ryzXXX 3.7
r�r�s   r�test_version_actionz3TestOptionalsHelpVersionActions.test_version_actiondsq��+��7�����D��N��K�
�
�
�2�
3�	&�r����t�f�%�	&�����b�l�l�&9�&9�:�	&�	&�s�A8�8Bc��td��}|j|d�|j|d�|j|d�|j|d�y)NFr�r4rMr\rv)r�rXr0s  r�test_no_helpz,TestOptionalsHelpVersionActions.test_no_helpksL��+�U�;���&�&�v�t�4��&�&�v�x�8��&�&�v�t�4��&�&�v�{�;rc��t�}|jdd��|jdd��|j|d�|j|d�|j|d�|j	t
t|d�y)	Nr�rar�rrwr\rvr�)r�r�r�rXr�r�r�r0s  r�test_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_versionrsu��+�-�����D���0����D���3�� � ���.��&�&�v�t�4��&�&�v�{�;����.�'�6�;K�Lrc�T�t�}|jddd��|jdd��|jd�gd	�}|d
dgz}|D]V}|D]	}|�d|��}�|j|d
z�|j||dz�|jtt
|d��Xy)Nrvrwrxryr�r�r�rY)rr�r'z-x barzbaz -xz--bad-optionzfoo bar bazz %s r4rMr�r�)rr1�valid_prefixes�valid_suffixes�prefix�suffixrs       r�!test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_arguments{s���+�-�����K�	�5��I����D���6����C� �?��'�>�=�*I�I��$�	Q�F�(�
8��(.��7��
8��$�$�V�V�d�]�;��$�$�V�V�h�->�?����n�g�v�?O�P�	QrN)rrr r�rXr�r�r�r�r�r�r�r@rrr�r�Ds8��+�D�
H�M�;�M�;�<�M�Qrr�c�>�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�TestStringsc�V�ttfD]}|j||�|��yrN)r�r�r�)r�obj�
result_stringr5s    r�assertStringEqualzTestStrings.assertStringEqual�s)���$�K�	7�D����T�#�Y�
�6�	7rc�p�tjgd�ddddgd�ddd	�
�	}d}|j||�y)N)r�r�r�rzr�r�r�rpr�ruF�HELP�METAVAR�	r�r%r�rrrjr�r�rar�z�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*rCr�)r�optionr*s   r�
test_optionalzTestStrings.test_optional�sH�����0���������	��
Q�	�	
���v�v�.rc��tjgdtddgd�ddd��	}d	tz}|j||�y)
Nr�r~ri)rjg�?riTzH 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*rCrkr�)r�argumentr*s   r�
test_argumentzTestStrings.test_argument�sQ���?�?������#����	 ��
@�BG�
H�	�	
���x��0rc�Z�tjdd��}d}|j||�y)NrrrzNamespace(foo=42, bar='spam')�r*r�r��rr�r*s   r�test_namespacezTestStrings.test_namespace�s)��
�
�
�B�F�
3��0�����r�6�*rc�Z�tjdiddi��}d}|j||�y)N�"�quotezNamespace(**{'"': 'quote'})r@r�r�s   r�'test_namespace_starkwargs_notidentifierz3TestStrings.test_namespace_starkwargs_notidentifier�s.��
�
�
�
1�3��.�
1��2�����r�6�*rc�^�tjdddiddi��}d}|j||�y)Nr�rpr�r�z Namespace(a=1, **{'"': 'quote'})r@r�r�s   r�2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifier�s3��
�
�
�
6�!�
6��W�~�
6��7�����r�6�*rc�Z�tjdiddi��}d}|j||�y)N�validTzNamespace(valid=True)r@r�r�s   r�$test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifier�s.��
�
�
�
2�7�D�/�
2��(�����r�6�*rc�z�tjd��}dtjz}|j||�y)Nr[r&zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r*r+�
HelpFormatterr�)rr1r*s   r�test_parserzTestStrings.test_parser�s<���(�(�f�5��
�'�5�5�
6�	�	
���v�v�.rN)rrr r�r�r�r�r�r�rrr@rrr�r��s-��=�7�/�"1�"+�
+�
+�
+�
/rr�c��eZdZd�Zd�Zd�Zy)�
TestNamespacec��tj�}|jtt|d�tjdd��}|j|jd�|j|jd�y)Nr�rrr�)r*r�r�r�r�r�r�rzr�s  r�test_constructorzTestNamespace.test_constructor�s^��
�
�
�
!�����.�'�2�s�;�
�
�
�"��
/��������r�"�������v�&rc��tjdd��}tjdd��}tjd��}tjd��}|j||�|j||�|j||�|j||�|j||�|j	||k7�|j	||k7�|j	||k7�|j	||k7�y)Nrpr�r�)rzr�)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��}|j|jd�t�|j|jd�t�y)Nrpr�r�)r*r��assertIsr��NotImplemented�__ne__r�s  r�$test_equality_returns_notimplementedz2TestNamespace.test_equality_returns_notimplemented�s@��
�
�
�!�q�
)���
�
�b�i�i��o�~�6��
�
�b�i�i��o�~�6rN)rrr r	rrr@rrrr�s��'�$� 7rrc��eZdZd�Zd�Zd�Zy)�TestEncodingc��tjj|�\}}|dz
}t|dd��5}|j	�ddd�y#1swYyxYw)Nz.pyr�rrg)rRrZ�splitextrir�)rrZr�rs    r�_test_module_encodingz"TestEncoding._test_module_encodingsO���'�'�"�"�4�(���a���
��
�$��g�
.�	�!�
�F�F�H�	�	�	�s�A�Ac�B�|jtj�yrN)rr*�__file__rs r�test_argparse_module_encodingz*TestEncoding.test_argparse_module_encodings���"�"�8�#4�#4�5rc�.�|jt�yrN)rrrs r�"test_test_argparse_module_encodingz/TestEncoding.test_test_argparse_module_encoding	s���"�"�8�,rN)rrr rrr r@rrrr�s���6�-rrc��eZdZd�Zy)�TestArgumentErrorc�j�d}tjd|�}|jt|�|�y)Nz
my error here)r*rr�r�)rr�r�s   r�test_argument_errorz%TestArgumentError.test_argument_errors-�����&�&�t�S�1������U��S�)rN)rrr r$r@rrr"r"s��*rr"c��eZdZd�Zy)�TestArgumentTypeErrorc��d�}tdd��}|jd|��|jt�5}|j	dg�ddd�|jdjj�y#1swY�0xYw)	Nc�,�tjd��)N�spam!)r*�ArgumentTypeErrorr)s rrz<TestArgumentTypeError.test_argument_type_error.<locals>.spams���,�,�W�5�5rr[Frr�rhr7z-usage: PROG x
PROG: error: argument x: spam!
)r�r�r�r�r:r�r�r�)rrr1r�s    r�test_argument_type_errorz.TestArgumentTypeError.test_argument_type_errors|��	6�,��%�H�����C�d��+�
�
�
�2�
3�	'�r����u�g�&�	'����J����,�,�	.�	'�	'�s�A;�;BN)rrr r+r@rrr&r&s��
.rr&c��eZdZd�Zd�Zd�Zy)�TestMessageContentErrorc���tdd��}|jdt��|jdtd��|jd	td
��|j	t
�5}|j
g�ddd�tj�}|j|d�|j|d�|j|d	�|j	t
�5}|j
d
g�ddd�t|j�}|j|d�|j|d�|j|d	�|j	t
�5}|j
d
dg�ddd�t|j�}|j|d�|j|d�|j|d	�y#1swY��MxYw#1swY��xYw#1swY�nxYw)Nr[rr;�req_posrh�-req_optTr��need_oner�)r�rr�req_opt�myXargumentz
-req_opt=1)
r�r�r�r�r�r�r:r�r=r��rr1r�r�s    r�%test_missing_argument_name_in_messagez=TestMessageContentError.test_missing_argument_name_in_message/s���+��r�B�����I�C��0����J�S�4��@����J�S���<�
�
�
�2�
3�	"�r����b�!�	"��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�	/�r����}�o�.�	/��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�	=�r����}�l�;�<�	=��"�,�,�������i�(�����i�(�����j�)�#	"�	"��	/�	/��	=�	=�s$�*G�$G�G �G�G� G)c���tdd��}|jdt��|jdtd��|jd	td
d��|jt�5}|jg�ddd�tj�}|j|d�|j|d�|j|d
�|jt�5}|jdg�ddd�t|j�}|j|d�|j|d�|j|d
�y#1swY��xYw#1swY�axYw)Nr[rr;r/rhz	--req_optTr�z	--opt_optr~)r�rrrjr2�opt_optz--req_opt=1)r�r�r�r�r�r�r�r:r�r=r�r4s    r�%test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_messageHs8��+��r�B�����I�C��0����K�c�D��A����K�d�#�$(�	�	*�
�
�
�2�
3�	"�r����b�!�	"��"�,�,�������i�(�����i�(�����i�(�
�
�
�2�
3�	/�r����}�o�.�	/��"�,�,�������i�(�����i�(�����i�(�	"�	"��	/�	/�s�+E�%E�E�E!c�P�tdd��}|jd�|jddd��|jt�5}|j	g�ddd�tj�}|j|d�|j|d�y#1swY�CxYw)	Nr[rr;r/�optional_positionalr~rr�)	r�r�r�r�r:r�r�r=r�r4s    r�'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_message[s���+��r�B�����I�&����1��f��M�
�
�
�2�
3�	"�r����b�!�	"��"�,�,�������i�(�����3�4�		"�	"�s�B�B%N)rrr r5r8r;r@rrr-r--s��*�2)�&5rr-c��eZdZd�Zy)�TestTypeFunctionCallOnlyOncec�����fd�}tj�}|jd|d��|jdj	��}�jt
d��|�y)Nc�*���j|d�y)Nr)�
foo_converted�r�)�string_to_convertrs �rrzLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamms������.��8�"rr�rAr�z--foo spam!r@r
)r*r+r�r:r�r�rz�rrr1rus`   r�!test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_oncels[���	#��(�(�*�����G�$���>�� � ��!4�!4�!6�7�������0�$�7rN)rrr rDr@rrr=r=js��8rr=c�$�eZdZd�Zd�Zd�Zd�Zy)�TestTypeFunctionCalledOnDefaultc����fd�}tj�}|jd|d��|jg�}�j	td��|�y)Nc�*���j|d�y)Nrr@rA)�int_to_convertrs �rrz]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam}s������^�Q�/�"rr�rr�r
�r*r+r�r:r�rzrCs`   r�/test_type_function_call_with_non_string_defaultzOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default|sQ���	#��(�(�*�����G�$���:�� � ��$��������D�)rc��d�}tj�}|jd|d��|jg�}|j	td��|�y)Nc��y)Nr@r@)rIs rrzYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam�s��"rr��0r�r@r
rJrCs    r�+test_type_function_call_with_string_defaultzKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default�sQ��	#��(�(�*�����G�$���<�� � ��$�������0�$�7rc��d�}tj�}|jd|d��|jg�}|j	td��|�y)Nc��|dzS)Nr�r@)�str_to_converts rrOzYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�s
��!�C�'�'r�--testr�r�z**)rrJ)rrOr1rus    r�)test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default�sR��	(��(�(�*�����H�6�3��?�� � ��$��	
�������-rc��tj�}|jddtgd��|j	g�}|j|jg�y)NrSrr�)r%r�rjr�)r*r+r�r�r:r�rr�s   r�test_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906�sT���(�(�*�����H�6��$&�x�	�	9�� � ��$��������B�'rN)rrr rKrOrTrVr@rrrFrFzs��	*�8�
.�(rrFc�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�TestParseKnownArgsc�N�tj�}|jd�y)Nr@�r*r+r:r0s  r�test_arguments_tuplez'TestParseKnownArgs.test_arguments_tuple�����(�(�*�����"�rc�N�tj�}|jg�yrNrZr0s  r�test_arguments_listz&TestParseKnownArgs.test_arguments_list�r\rc�p�tj�}|jd�|jd�y)Nr�r��r*r+r�r:r0s  r�test_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positional�s,���(�(�*�����C� ����&�!rc�r�tj�}|jd�|jdg�y)Nr�r`r0s  r�test_arguments_list_positionalz1TestParseKnownArgs.test_arguments_list_positional�s.���(�(�*�����C� ����3�%� rc���tj�}|jd�|jdj	��\}}|jt
d��|�|jddg|�y)Nr�z--foo F --bar --baz�Fr
r,r`)r*r+r�r�r�r�rz)rr1ru�extrass    r�test_optionalsz!TestParseKnownArgs.test_optionals�se���(�(�*�����G�$��.�.�/D�/J�/J�/L�M���f�������d�+����'�7�+�V�4rc�:�tj�}|jdddt��|jdd��|jd�gd	�}|j	|�\}}|jt
d
dd�
�|�|jgd�|�y)Nr\r~rp)rrrr�rer�r�r1)r?r$r�r\r�rLruTr?)�vrr1)r$r�rL)r*r+r�r�r�r�rz)rr1r�rurfs     r�
test_mixedzTestParseKnownArgs.test_mixed�s����(�(�*�����D��1�3��?����H�]��;����H�%�2���.�.�t�4���f�����a�d�3�7��>����,�f�5rc��tj�}|jddd��|jg�}|j	tg��|�y)Nr�r�rk)rrr�r�rJr�s   r�test_zero_or_more_optionalz-TestParseKnownArgs.test_zero_or_more_optional�sI���(�(�*�����C�s�J��?�� � ��$������b��4�(rc�b�tj�}|jddd��|jdd��|jdg�}|j	tdgg��|�|jddg�}|j	tgg��|�|jd	g�}|j	tdgg��|�|jddg�}|j	tgg��|�|jgd
��}|j	tddgd
dg��|�y)Nrr�r�rqrAz--foo=--r�rz-f--)r�r�rzr�r{r�r�rzr{r�rJr�s   r�test_double_dashz#TestParseKnownArgs.test_double_dash�s���(�(�*�����D�'���5����E���-�� � �*��.��������B�/��6�� � �'�4��1��������+�T�2�� � �&��*��������B�/��6�� � �$���.��������+�T�2�� � �!D�E�������c�
��c�
�;�T�BrN)rrr r[r^rarcrgrjrlrnr@rrrXrX�s+����"�
!�
5�	6�)�CrrXc�$�eZdZd�Zd�Zd�Zd�Zy)�TestIntermixedArgsc	��tjd��}|jdd��|jddd�	�}|jd
�|jddt�
�dj	�}|j|�}|j
tdd
dgd���|�|j|�\}}|j
tdd
dg��|�|j
gd�|�dj	�}|j|�\}}|j
tdd
ddg��|�|j
gd�|�|j|j�|j
|jd�y)Nr[r&r�r'r$r,rATr��cmd�restr�)rrr�zcmd --foo x 1 --bar y 2 3rYr�r�)rArrr'rs�rr�r�z!cmd --foo x 1 --error 2 --bar y 3rp)z--errorr�r�)
r*r+r�r�r��parse_intermixed_argsr�rzr��parse_known_intermixed_argsr�r�r�)rr1rAr�rurfs      r�
test_basiczTestIntermixedArgs.test_basic�sO���(�(�f�5�����G�%��0��!�!�'���!�E�����E�"����F�#�C��8�*�0�0�2���+�+�D�1��������C�i�H�$�O��.�.�t�4���f�������C�b�A�4�H�����&�1�2�8�8�:���9�9�$�?���f�������C�q�c�B�D�I����.��7�	
���&�,�,�'�������t�,rc�f�td��}|jd�|jd�|jdd��dj�}|jt�5}|j|�ddd�|j
tj�d	�y#1swY�/xYw)
Nr[r&rr�rYrarqrcz\.\.\.)	r�r�r�r�r�rur=r�r�)rr1r�r�s    r�test_remainderz!TestIntermixedArgs.test_remainders���+��8�����D�!����C� ����C�u��-��!�!�#���
�
�y�
)�	/�R��(�(��.�	/�����R�\�\�*�I�6�	/�	/�s�'B'�'B0c���td��}|jd��}|jddd��|jd	d
��|jdd
dd��|jdj	��}|jt
ddgdd��|�|jt|jdj	��|j|jd�y)Nr[r&Tr�r�r�rlr`rermr�r1r�r3rnroz	1 --foo 2rr�)r1r'rr)
r�r�r�rur�r�rzr�r�r�)rr1r�rus    r�test_exclusivez!TestIntermixedArgs.test_exclusives���+��8���3�3�T�3�B��
���7�<�e��D�
���8�&��1����H�C��8��L��+�+�K�,=�,=�,?�@������C��:�4�d�C�T�J����-�v�/K�/K�U�[�[�]�[��������.rc�2�td��}|jd��}|jddd��|jd	d
��|jdd
dd��|jt|j
g�|j
|jd�y)Nr[r&Tr�r�r�rlr`rermr�r1r�r3rnro)r�r�r�r�r�rur�r�r*s   r�test_exclusive_incompatiblez.TestIntermixedArgs.test_exclusive_incompatible!s���+��8���3�3�T�3�B��
���7�<�e��D�
���8�&��1�
���8�3��(��K����)�V�%A�%A�2�F��������.rN)rrr rwryr{r}r@rrrprp�s��-�67�
/�/rrpc��eZdZd�Zy)�!TestIntermixedMessageContentErrorc�L�tdd��}|jdt��|jdtd��|j	t
�5}|j
g�ddd�tj�}|j|d�|j|d	�|j	t
�5}|jg�ddd�t|j�}|j|d�|j|d	�y#1swY��xYw#1swY�OxYw)
Nr[rr;r/rhr0Tr�r2)r�r�r�r�r�r�r:r�r=ru�assertNotRegexr4s    rr5zGTestIntermixedMessageContentError.test_missing_argument_name_in_message.s���+��r�B�����I�C��0����J�S�4��@�
�
�
�2�
3�	"�r����b�!�	"��"�,�,�������i�(�����i�(�
�
�
�2�
3�	-�r��(�(��,�	-��"�,�,������C��+�����i�(�	"�	"��	-�	-�s�D�:D�D�D#N)rrr r5r@rrrr+s��)rrc�*�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�Z2y1)2�TestAddArgumentMetavarz,length of metavar tuple does not match nargsc�T�tj�}|jd||��y)Nr��rrr�)r*r+r�)rrrr�r1s    r�do_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exceptionGs%���(�(�*�����G�5�'��Brc��tj�}|jt�5}|j	d||��ddd�|jjjd|j�y#1swY�=xYw)Nr�r�r)	r*r+r�rr�r�r�ru�EXPECTED_MESSAGE)rrrr�r1r�s     r�do_test_exceptionz(TestAddArgumentMetavar.do_test_exceptionKss���(�(�*��
�
�
�z�
*�	G�b�����u�g��F�	G�������*�*�1�-�t�/D�/D�E�	G�	G�s�A;�;Bc�*�|jdd��y)Nrr��r�rs r�test_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_stringSs���!�!��c�!�:rc�:�|jdt���y)Nr��r��tuplers r�test_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0Vs�����T�5�7��;rc�*�|jdd��y)Nrtr�r�rs r�test_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1Ys���!�!��f�!�=rc�*�|jdd��y)N�rr�r��r�rs r�test_nargs_None_metavar_length2z6TestAddArgumentMetavar.test_nargs_None_metavar_length2\s�����T�:��>rc�*�|jdd��y)Nrtr�r�rs r�test_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3_s�����T�?��Crc�*�|jdd��y)Nr~rr�r�rs r�"test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringd����!�!��S�!�9rc�:�|jdt���y)Nr~r�r�rs r�#test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0g������S�%�'��:rc�*�|jdd��y)Nr~rtr�r�rs r�#test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1j����!�!��V�!�<rc�*�|jdd��y)Nr~r�r�r�rs r�#test_nargs_optional_metavar_length2z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2ms�����S�*��=rc�*�|jdd��y)Nr~rtr�r�rs r�#test_nargs_optional_metavar_length3z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3p������S�/��Brc�*�|jdd��y)Nr�rr�r�rs r�$test_nargs_zeroormore_metavar_stringz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringur�rc�:�|jdt���y)Nr�r�r�rs r�%test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0xr�rc�*�|jdd��y)Nr�rtr�r�rs r�%test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1{r�rc�*�|jdd��y)Nr�r�r�r�rs r�%test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2~����!�!��Z�!�@rc�*�|jdd��y)Nr�rtr�r�rs r�%test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3�r�rc�*�|jdd��y)Nr�rr�r�rs r�#test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string�r�rc�:�|jdt���y)Nr�r�r�rs r�$test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0�r�rc�*�|jdd��y)Nr�rtr�r�rs r�$test_nargs_oneormore_metavar_length1z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1�s�����S�&��9rc�*�|jdd��y)Nr�r�r�r�rs r�$test_nargs_oneormore_metavar_length2z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2�r�rc�*�|jdd��y)Nr�rtr�r�rs r�$test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3�r�rc�*�|jdd��y)Nrarr�r�rs r�#test_nargs_remainder_metavar_stringz:TestAddArgumentMetavar.test_nargs_remainder_metavar_string�s���!�!��s�!�;rc�:�|jdt���y)Nrar�)r�r�rs r�$test_nargs_remainder_metavar_length0z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0�s���!�!��u�w�!�?rc�*�|jdd��y)Nrartr�r�rs r�$test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1�s���!�!��v�!�>rc�*�|jdd��y)Nrar�r�r�rs r�$test_nargs_remainder_metavar_length2z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2�s���!�!��z�!�Brc�*�|jdd��y)Nrartr�r�rs r�$test_nargs_remainder_metavar_length3z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3�s���!�!���!�Grc�*�|jdd��y)N�A...rr�r�rs r� test_nargs_parser_metavar_stringz7TestAddArgumentMetavar.test_nargs_parser_metavar_string�s���!�!���!�<rc�:�|jdt���y)Nr�r�r�rs r�!test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0�s�����V�U�W��=rc�*�|jdd��y)Nr�rtr�r�rs r�!test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1�s���!�!���!�?rc�*�|jdd��y)Nr�r�r�r�rs r�!test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2�s�����V�Z��@rc�*�|jdd��y)Nr�rtr�r�rs r�!test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3�s�����V�_��Erc�*�|jdd��y)Nrprr�r�rs r�test_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_string�����!�!��3�!�7rc�:�|jdt���y)Nrpr�r�rs r�test_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0�������Q����8rc�*�|jdd��y)Nrprtr�r�rs r�test_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1�s���!�!��6�!�:rc�*�|jdd��y)Nrpr�r�r�rs r�test_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2�������Q�
��;rc�*�|jdd��y)Nrprtr�r�rs r�test_nargs_1_metavar_length3z3TestAddArgumentMetavar.test_nargs_1_metavar_length3�������Q���@rc�*�|jdd��y)Nr�rr�r�rs r�test_nargs_2_metavar_stringz2TestAddArgumentMetavar.test_nargs_2_metavar_string�r�rc�:�|jdt���y)Nr�r�r�rs r�test_nargs_2_metavar_length0z3TestAddArgumentMetavar.test_nargs_2_metavar_length0�r�rc�*�|jdd��y)Nr�rtr�r�rs r�test_nargs_2_metavar_length1z3TestAddArgumentMetavar.test_nargs_2_metavar_length1�������Q���7rc�*�|jdd��y)Nr�r�r�r�rs r�test_nargs_2_metavar_length2z3TestAddArgumentMetavar.test_nargs_2_metavar_length2�s���!�!��:�!�>rc�*�|jdd��y)Nr�rtr�r�rs r�test_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3�r�rc�*�|jdd��y)Nrurr�r�rs r�test_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_string�r�rc�:�|jdt���y)Nrur�r�rs r�test_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0�r�rc�*�|jdd��y)Nrurtr�r�rs r�test_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1�r�rc�*�|jdd��y)Nrur�r�r�rs r�test_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2�r�rc�*�|jdd��y)Nrurtr�r�rs r�test_nargs_3_metavar_length3z3TestAddArgumentMetavar.test_nargs_3_metavar_length3�s���!�!��?�!�CrN)3rrr r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r@rrr�r�Cs��E��C�F�;�<�>�?�D�
:�;�=�>�C�
:�;�=�A�C�
:�;�:�A�C�
<�@�?�C�H�
=�>�@�A�F�
8�9�;�<�A�
8�9�8�?�A�
8�9�8�<�Drr�c�,�eZdZdZdZd�Zd�Zd�Zd�Zy)�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�}|jt�5}|j	d|��ddd�|jjjd|j�y#1swY�=xYw�Nr�rqr)	r*r+r�rr�r�r�ru�EXPECTED_RANGE_MESSAGE�rrrr1r�s    r�do_test_range_exceptionz(TestInvalidNargs.do_test_range_exception�sm���(�(�*��
�
�
�z�
*�	6�b�����u��5�	6�������*�*�1�-�t�/J�/J�K�	6�	6���A:�:Bc��tj�}|jt�5}|j	d|��ddd�|jjjd|j�y#1swY�=xYwr�)	r*r+r�rr�r�r�ru�EXPECTED_INVALID_MESSAGEr�s    r�do_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exception�sm���(�(�*��
�
�
�z�
*�	6�b�����u��5�	6�������*�*�1�-�t�/L�/L�M�	6�	6�r�c�L�|jd��|jd��y)Nr�rq�abcd)r�rs r�test_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetics$���&�&�S�&�1��&�&�V�&�4rc�(�|jd��y)Nrrq)r�rs r�test_nargs_zeroz TestInvalidNargs.test_nargs_zeros���$�$�1�$�-rN)	rrr r�r�r�r�rrr@rrr�r��s'��4��L��L�N�5�.rr�c��eZdZd�Zd�Zy)�TestImportStarc�l�tjD]!}|jtt|���#yrN)r*�__all__rr�r�s  rrzTestImportStar.test
s*���$�$�	5�D��O�O�G�H�d�3�4�	5rc�(�tt�j�D��cgc]2\}}|jd�s|dk(st	j
|�s|��4}}}|j
t|�ttj��ycc}}w)Nr��ngettext)	r�r*r��
startswith�inspect�ismoduler�r�r)rrcrr�s    r�'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modulessy�� $�H�~�3�3�5�
���e��O�O�C�(�D�J�,>��#�#�E�*�
�
��
�	
�������x�/?�/?�(@�A��

s�7BN)rrr rr
r@rrrrs
��5�Brrc�$��eZdZ�fd�Zd�Z�xZS)�TestWrappingMetavarc���t�|��td�|_d}|jj	d|��y)N�9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyr)rrJr�r1r�)rr�rs  �rrJzTestWrappingMetavar.setUps9���
��
��0�G�
���
-����� � ��G� �<rc��|jj�}|j|tjd��y)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>
            )r1r�r�r�r�)r�	help_texts  r�test_help_with_metavarz*TestWrappingMetavar.test_help_with_metavar's4���K�K�+�+�-�	�����H�O�O�5�%�	r)rrr rJrr!r"s@rrrs
���=�	rrc��eZdZd�Zd�Zd�Zy)�TestExitOnErrorc�~�tjd��|_|jjddt��y)NF)�
exit_on_errorz
--integers�N)r�r�)r*r+r1r�r�rs rrJzTestExitOnError.setUp5s-���-�-�E�B������ � ��s�� �Erc��|jjdj��}|j|t	j
d���y)Nz--integers 4r�)�integers)r1r:r�r�r*r�r�s  r�!test_exit_on_error_with_good_argsz1TestExitOnError.test_exit_on_error_with_good_args9s:��
�[�[�
#�
#�N�$8�$8�$:�
;������X�/�/��;�<rc��|jtj�5|jj	dj��ddd�y#1swYyxYw)Nz--integers a)r�r*rr1r:r�rs r� test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_args=sF��
�
�
�x�5�5�
6�	;��K�K�"�"�>�#7�#7�#9�:�	;�	;�	;�s�*A�AN)rrr rJrrr@rrrr3s��F�=�;rrc�@�it_t�t_yrN)r�r�rHr�r@rr�tearDownModuler Bs���E�J���E�Jr�__main__)�r,r8rr
r�rRr^r\r�r�rO�unittestr*r��test.supportrr�
TextIOWrapperrrBr$�skip_unless_working_chmodr�rLrsrzr�r�r�r+r�r�r�r�r�r�r�r
rr r"r(r*r8r;rDrTrVr[r_rhrmrortr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr
rrrrrrrr r#r%r'r)r+r-r/r1r3r5r8r:r=r?rArCrJrPrRrUrWrYr^r`rgrmrqrur{r�r�r�r�r�r�r��	eq_stderrr�r��
eq_bstderrr�r�r�r�r��skip_if_dac_overrider�r�r�r�r�rr
rrr&r/rErNrUr�r�rr-rLrWr_rcrjrrrzrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr	r
rrrrr!r&r,r.r0r2r4r6r:r=r?rBrErIrLrNrPrRrTr^rfrirmrprrrwrzrr�r�r�r�rrr"r&r-r=rFrXrprr�r�rrrr r�mainr@rr�<module>r*sV�����	��	�
��
������"��:�"�"�"�:�$F�H�%�%�F�:�x� � ���$�$�D�6�D�%�D�.�&��)��)�%�)�%�# �L>��!8�!8�>�o9�D�o9�b	�	��&�'7���C���n���n��4�.��
�^�
� 
�~�
� 
�>�
��n���.��$���&�N��&���(���,���.
�^�
� 
��
�	�>�	�����.���.�����.�>��&�.��"�>��"
�N�
��~���N���N���>��>��>�@
��
�	��	�	�>�	����&�^������~�����"�N��"�~��"�n��&�N��.�~���N���N��	�^�	�	�N�	��N���>���.���>���>��������	��	�����~��	��	�����~���n���^���N��	�n�	��^���N���.���������>��
�^�
�	�N�	��>�����
�.�
� 
��
� �~��"�>��&�~��&
�.�
� 
��
��^��6�.��&���(�.��**�L�.�*�Z�\�>��DK�x�K�0�h���h��,�,�,�W�%���h�'�	��h�'�	��n�-�	�
��
/�
�
��
/�
�/�F�/�"�L�.��03�<��3�"�\�>��.'�F�'�"����L�.�� ��,����L�.�� ��&���
�\�>�
� �
� ���
�]�
� �
�3�8�3�$
��
�$�~���.��,�>��,>�8�>�.>�N�>�BJ�X�J�$�~��[��[�B
!+�H�!+�Nm9��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�h�X0�|8�X�8�.
"�(�
"�&Q1�$�Q1�f	�	��*�>�5�"�E��"�l�"�H3B�|�3B�l,�<�,�^���>1�<�1�h%��%�P3��3�l6�L�6�r�<��,�\��>�L��:!�|�!�H�<��2#��#�L�<��D!�L�!�H�\��4�|��0+��+�\�\��"
�<�
��L��*�|��(�L��4���*�|��(�<��*�\��.�<��0�<��6.�l�.�b-�\�-�`0�|�0�d�L��(�L��2���:'��'�V�<��BxI�h�xI�|-�(�-�<3E�8�3E�tEQ�h�EQ�XC/�(�C/�R7�H�7�J-�8�-�$*��*�.�H�.�$65�h�65�z
8�8�
8� +(�h�+(�b:C��:C�B=/��=/�~)��)�0eD�X�eD�P.�x�.�@
B�X�
B� �(��0;�h�;���z���H�M�M�O�r