Sindbad~EG File Manager

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

�

SԚg7����ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZGd�dej��ZGd�dej��ZGd�d	ej��ZejGd
�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�ej�Gd؄d�ee"����Z�ej�Gdڄd�ee"����Z�ej�Gd܄d�ee"����Z�ej�Gdބd�e�����Z�Gd�d�e��Z�Gd�d�e��Z�Gd�d�e"��Z�Gd�d�e"��Z�Gd�d�e"��Z�Gd�d�e��Z�Gd�d�e"��Z�Gd�d�e��Z�Gd�d�e"��Z�Gd�d�e��Z�Gd�d�e��Z�Gd��d�e��Z�Gd��d�e��Z�Gd��d�e��Z�Gd��d�e�e��Z�Gd��d�e�e��Z�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�krej���dSdS(��N)�	os_helper)�mockc�(��eZdZ	d�fd�	Zd�Z�xZS)�StdIOBuffer��
c����|�d��}t���tjtj|����d|���dS)N�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�self�
initial_valuer�	__class__s   ��//usr/local/lib/python3.11/test/test_argparse.pyrzStdIOBuffer.__init__s]���%�,�,�W�5�5�
�
������*�2�:�m�+D�+D�E�E� �'�	�	3�	3�	3�	3�	3�c��|���|jj����d��S)Nr
)�flush�buffer�raw�getvalue�decode�rs rrzStdIOBuffer.getvalue#s3���
�
�����{��'�'�)�)�0�0��9�9�9r)rr)�__name__�
__module__�__qualname__rr�
__classcell__�rs@rrrsQ��������3�3�3�3�3�3�
:�:�:�:�:�:�:rrc��eZdZd�Zd�ZdS)�
StdStreamTestc��tj��}tjd��5t	jd��5|�dd���ddd��n#1swxYwYddd��dS#1swxYwYdS)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*s���(�*�*���&�t�,�,�	1�	1��J�+�,�,�	1�	1�
�K�K�q�%�K�0�0�0�		1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s4�A9�A!�A9�!A%	�%A9�(A%	�)A9�9A=�A=c��tj��}|j|jt	j|jdg��fD�]
}|�|���5tj	d��5t��5}tj|��5tj
d��5|��|�|���d��ddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwYddd��n#1swxYwY��dS)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_stdout2s����(�*�*��������f�/�$��8�8�
�	F�	F�D����$��'�'�	
F�	
F��*�4�0�0�	
F�	
F��
�
�		
F�"/��*�=�9�9�	
F�	
F��
�/�0�0�
	
F�	
F������� � ��!7�!7�!9�!9�9�E�E�E�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F����	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F����	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F����	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F����	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F�	
F����	
F�	
F�	
F�	
F��	F�	Fs��D>�*D'�9D	�C9�#3C"
�C9�"C&�&C9�)C&�*C9�-D	�9C=�=D	�C=�D	�D'�D
�D'�D
�D'�D>�'D+�+D>�.D+�/D>�>E	�E	N)rrr r2r?�rrr$r$(s7������1�1�1�F�F�F�F�Frr$c��eZdZd�ZdS)�TestCasec�\�|�tj����}d|d<dS)N�80�COLUMNS)�enterContextr�EnvironmentVarGuard�r�envs  r�setUpzTestCase.setUpGs-�����	� =� ?� ?�@�@����I���rN)rrr rJr@rrrBrBEs#����������rrBc�&�eZdZd�Zd�Zd�Zd�ZdS)�TempDirMixinc��tj��|_tj��|_tj|j��dS�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirrs rrJzTempDirMixin.setUpRs7�� �(�*�*��
��y�{�{���
��������rc�>�tj|j��tj|jd���D]M\}}}|D]D}tjtj�|j|��tj	���E�Ntj|jd��dS)NF)�topdownT)rRrUrT�walkrQ�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�names     r�tearDownzTempDirMixin.tearDownWs���
�������!#�����!F�!F�!F�	K�	K��D�$���
K�
K��������d�m�T�:�:�D�M�J�J�J�J�
K��
�d�m�T�*�*�*�*�*rc���tj�|j|��}t	|dd���5}|�|��ddd��n#1swxYwY|S)N�wr
��encoding)rRrZr[rQ�open�write)r�filename�	file_path�files    r�create_writable_filez!TempDirMixin.create_writable_file^s����G�L�L����9�9�	�
�)�S�7�
3�
3�
3�	!�t��J�J�x� � � �	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!��s�A�A�!Ac�j�tj|�|��tj��dSrN)rRrYrnr\�S_IREAD)rrks  r�create_readonly_filez!TempDirMixin.create_readonly_fileds*��
���*�*�8�4�4�d�l�C�C�C�C�CrN)rrr rJrdrnrqr@rrrLrLOsU������ � � �
+�+�+����D�D�D�D�DrrLc��eZdZd�ZdS)�Sigc�"�||_||_dSrN)�args�kwargs�rrurvs   rrzSig.__init__is����	�����rN�rrr rr@rrrsrsgs#����������rrsc� �eZdZd�Zd�Zd�ZdS)�NSc�:�|j�|��dSrN)�__dict__�update)rrvs  rrzNS.__init__ps���
���V�$�$�$�$�$rc��t|j�����}d�d�|D����}t	|��j�d|�d�S)Nz, c��g|]}d|z��S)z%s=%rr@)�.0�tups  r�
<listcomp>zNS.__repr__.<locals>.<listcomp>us��E�E�E��w��}�E�E�Er�(�))�sortedr|�itemsr[�typer)r�sorted_items�	kwarg_strs   r�__repr__zNS.__repr__ss[���d�m�1�1�3�3�4�4���I�I�E�E��E�E�E�F�F�	���:�:�.�.�.�	�	�	�:�:rc�B�t|��t|��kSrN)�vars�r�others  r�__eq__z	NS.__eq__xs���D�z�z�T�%�[�[�(�(rN)rrr rr�r�r@rrrzrznsA������%�%�%�;�;�;�
)�)�)�)�)rrzc��eZdZdd�ZdS)�ArgumentParserErrorNc�x�t�||||��||_||_||_||_dSrN)�	Exceptionrr)�stdout�stderr�
error_code)rr)r�r�r�s     rrzArgumentParserError.__init__~s<�����4��&�&�9�9�9����������$����r)NNNrxr@rrr�r�|s(������%�%�%�%�%�%rr�c
�0�ttjt��sttjt��r||i|��Stj}tj}t��t_t��t_		||i|��}tt
|����D]�}t||��}|tjurt|||���2|tjj	ur&t||t|dt�����k|tjurt|||����|tjj	ur%t||t|dt������||t_|t_S#t$r[}|j
}	tj���}
tj���}td|
||	��d�d}~wwxYw#|t_|t_wxYw)Nr�
SystemExit)�
isinstance�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�.Q�+��z�4�*�6�*�*�*���J���J����C�J����C�J� �	>��Z��0��0�0�F��D��L�L�)�)�	
]�	
]���v�s�+�+���3�:�%�%��F�C��4�4�4�4��S�Z�.�.�.��F�C���X�GZ�)[�)[�\�\�\�\��S�Z�'�'��F�C��4�4�4�4��S�Z�.�.�.��F�C���X�GZ�)[�)[�\�\�\��� ��
���
�
���	>�	>�	>��6�D��Z�(�(�*�*�F��Z�(�(�*�*�F�%��f�f�d�4�4�9=�
>�����		>����� ��
���
����s&�C)F�
G8�AG3�3G8�8G;�;Hc�2��eZdZ�fd�Z�fd�Z�fd�Z�xZS)�ErrorRaisingArgumentParserc�X��tt|��j}t|g|�Ri|��SrN)r
r�r:r�)rrurvr:rs    �rr:z%ErrorRaisingArgumentParser.parse_args�s4����5�t�<�<�G�
�%�j�B�4�B�B�B�6�B�B�Brc�X��tt|��j}t|g|�Ri|��SrN)r
r�r/r�)rrurvr/rs    �rr/zErrorRaisingArgumentParser.exit�s4����/��6�6�;��%�d�<�T�<�<�<�V�<�<�<rc�X��tt|��j}t|g|�Ri|��SrN)r
r��errorr�)rrurvr�rs    �rr�z ErrorRaisingArgumentParser.error�s4����0�$�7�7�=��%�e�=�d�=�=�=�f�=�=�=r)rrr r:r/r�r!r"s@rr�r��so�������C�C�C�C�C�=�=�=�=�=�>�>�>�>�>�>�>�>�>rr�c��eZdZ	d�ZdS)�ParserTesterMetaclassc��|dkrdSt|d��st��|_t|d��st|_d�}d�}d�}d�}d�}Gd	�d
t
��}	|||fD]}
||fD]}|	||
|����dS)N�ParserTestCase�parser_signature�parser_classc�@�	|D]}|j|ji|j���dSrN)�add_argumentrurv)r1�argument_signatures�sigs   r�	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groups�s=��:�*�
=�
=��#��#�S�X�<���<�<�<�<�
=�
=rc�j�	|�d��}|D]}|j|ji|j���dS)Nr')�add_argument_groupr�rurv)r1r��groupr�s    r�	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_group�sP��F��-�-�e�4�4�E�*�
<�
<��"��"�C�H�;��
�;�;�;�;�
<�
<rc��	t|��D]4\}}|�d|z��}|j|ji|j���5dS)Nzfoo:%i)�	enumerater�r�rurv)r1r��ir�r�s     r�many_groupsz3ParserTesterMetaclass.__init__.<locals>.many_groups�sa��B�#�$7�8�8�
<�
<���3��1�1�(�Q�,�?�?��"��"�C�H�;��
�;�;�;�;�
<�
<rc�.�	|�|��SrN)r:)r1rus  r�listargsz0ParserTesterMetaclass.__init__.<locals>.listargs�s��5��$�$�T�*�*�*rc��	tj}|dg|zt_	|���|t_S#|t_wxYw)Nr)r��argvr:)r1ru�old_sys_argvs   r�sysargsz/ParserTesterMetaclass.__init__.<locals>.sysargs�sO��:��8�L�$�Q��(�4�/�C�H�
(��(�(�*�*�'�����<���'�'�'�'s�A�Ac�&�eZdZd�Zd�Zd�Zd�ZdS)�0ParserTesterMetaclass.__init__.<locals>.AddTestsc��||_||_|jj}|jj}|j|jfD]R}|j}|||f}d�|��}	|fd�}
	|	|
_n#t$rYnwxYwt||	|
���SdS)N�_c��||��dSrNr@�r�	test_funcs  r�wrapperzJParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper���!�	�$�����r)�_add_arguments�_parse_argsr�
test_failures�test_successesr[�	TypeErrorr�)r�
tester_cls�
add_argumentsr:�add_arguments_name�parse_args_namer��	func_name�names�	test_namer�s           rrz9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__�s���&3��#�#-�� �%)�%8�%A�"�"&�"2�";��"&�"4�d�6I�!J�<�<�I� )� 2�I�%�'9�?�J�E� #������I�09�(�(�(�(��+4��(�(��$�����������J�	�7�;�;�;�;�<�<s�A&�&
A3�2A3c��|jj}|jj}|j|i|��}|�||j��|SrN)r�rurvr�r�r�)r�testerrurvr1s     r�_get_parserz<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parsersM���.�3���0�7��,��,�d�=�f�=�=���#�#�F�F�,F�G�G�G��
rc��|�|��}|jD]_}|���}|�t|���5|�|��ddd��n#1swxYwY�`dS)N)�msg)r��failures�split�assertRaisesr�r:)rr�r1�args_strrus     rr�z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failuress����)�)�&�1�1�� &��0�0�H�#�>�>�+�+�D��,�,�-@�d�,�K�K�0�0��)�)�$�/�/�/�0�0�0�0�0�0�0�0�0�0�0����0�0�0�0��0�0s�A1�1A5	�8A5	c���|�|��}|jD]Z\}}t|t��r|���}|�||��}|�||���[dSrN)r��	successesr��strr�r��assertEqual)rr�r1ru�expected_ns�	result_nss      rr�z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successess����)�)�&�1�1��)/�)9�?�?�%�D�+�!�$��,�,�,�#�z�z�|�|�� $� 0� 0��� >� >�I��&�&�{�I�>�>�>�>�	?�?rN)rrr rr�r�r�r@rr�AddTestsr��sP������
<�
<�
<�&
�
�
�
0�
0�
0�
?�
?�
?�
?�
?rr�)�hasattrrsr�r�r��object)�clsrc�bases�bodydictr�r�r�r�r�r�r�r:s            rrzParserTesterMetaclass.__init__�s���#�#�#��F��s�.�/�/�	)�#&�5�5�C� ��s�N�+�+�	:�9�C��
	=�	=�	=�
	<�	<�	<�	<�	<�	<�	+�	+�	+�	(�	(�	(�)	?�)	?�)	?�)	?�)	?�v�)	?�)	?�)	?�Z(��K�@�	9�	9�M�'��1�
9�
9�
����m�Z�8�8�8�8�
9�	9�	9rNrxr@rrr�r��s-������
�_9�_9�_9�_9�_9rr�r�c��eZdZ	ed��gZgd�Zded���fded���fded���fd	ed
���fded
���fgZdS)�TestOptionalsSingleDash�-x)r��a�--foo�-x --fooz-x -yrN��x�-x ar��-xaz-x -1�-1z-x-1�rrr rsr�r�rzr�r@rrr�r�3s�������;��3�t�9�9�+��8�8�8�H�	�R�R�$�Z�Z�Z��	���c�����	���S�	�	�	��	�"�"�t�*�*�*��	���d������I�I�Irr�c���eZdZ	edd���eddd���ed��gZgd	�Zd
eddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fgZdS)�TestOptionalsSingleDashCombinedr��
store_true��actionz-yyy�store_const�*�r�const�-z)r�r�r�r�z-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=rFN)r��yyy�zT�-zar��-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar�r@rrr�r�As�������;�	��D��&�&�&���F�=��3�3�3���D�	�	���
C�C�C�H�
�R�R�%�T�T�
*�
*�
*�+�	
�r�r�D�d�d�+�+�+�,�	���U���,�,�,�-�	���e���-�-�-�.�	���d���,�,�,�-�	�"�"�t���-�-�-�.�	�2�2��$�#�.�.�.�/�	�B�B��4�3�/�/�/�0�	
�r�r�E�r�T�*�*�*�+�	���e��t�,�,�,�-�	���T�r�S�1�1�1�2�	���d��c�2�2�2�3�
�I�I�Irr�c��eZdZ	ed��gZgd�Zded���fded���fded	���fd
ed���fded���fgZdS)�TestOptionalsSingleDashLong�-foo)rr�r�z
-foo --fooz-foo -y�-fooarN�r'z-foo ar�z-foo -1r�z-fo a�-f ar�r@rrr
r
[s�������K��3�v�;�;�-��G�G�G�H�	�R�R�D�\�\�\��	�2�2�#�;�;�;��	�B�B�4�L�L�L�!�	�"�"��+�+�+��	���������I�I�Irr
c�.�eZdZ	ed��ed��ed��gZgd�Zdeddd���fded	dd���fd
ed	dd���fdeddd���fd
eddd���fdedd	d���fdeddd	���fgZdS)�&TestOptionalsSingleDashSubsetAmbiguous�-f�-foobar�-foorab)rr�-fo�-foo bz-foobz-foobaz-foorarN)�f�foobar�foorabrr��-fa�-foa�oar�ooa�	-foobar a�	-foorab ar�r@rrrris�������G��3�t�9�9�c�c�)�n�n�c�c�)�n�n�E��K�K�K�H�	�R�R�$�t�D�
1�
1�
1�2�	���c�$�t�4�4�4�5�	���S��d�3�3�3�4�	���d�4��5�5�5�6�	�"�"�u�T�$�7�7�7�8�	�b�b�4��D�9�9�9�:�	�b�b�4��S�9�9�9�:��I�I�Irrc��eZdZ	ed��ed��gZgd�Zdedd���fdedd���fd	edd���fd
edd���fdedd���fdedd���fd
edd���fgZdS)� TestOptionalsSingleDashAmbiguousrr)rrrrrrrrN)rrz-foob ar�z-foor az-fooba az-foora ar r!r�r@rrr#r#ys�������A��3�y�>�>�3�3�y�>�>�:��E�E�E�H�	�R�R�t�D�
)�
)�
)�*�	�B�B�c�$�/�/�/�0�	�B�B�d�3�/�/�/�0�	�R�R�s�4�0�0�0�1�	�R�R�t�C�0�0�0�1�	�b�b��D�1�1�1�2�	�b�b��S�1�1�1�2��I�I�Irr#c��eZdZ	edd���gZgd�Zded���fded	���fd
ed	���fded���fgZdS)
�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%�s�������2��3�t�%�0�0�0�1��A�A�A�H�	�R�R�D�\�\�\��	��������	���s�����	��������	�I�I�Irr%c��eZdZ	ed��gZgd�Zded���fded���fded���fd	ed
���fded
���fgZdS)�TestOptionalsDoubleDashr�)r�rrr�z--foo -xz--foo --barrNrz--foo ar�z--foo=az
--foo -2.5z-2.5z
--foo=-2.5r�r@rrr+r+�s�������;��3�w�<�<�.��F�F�F�H�	�R�R�D�\�\�\��	�B�B�3�K�K�K� �	�B�B�3�K�K�K� �	�r�r�f�~�~�~�&�	�r�r�f�~�~�~�&��I�I�Irr+c
���eZdZ	edd���ed��gZgd�Zdedd�	��fd
edd�	��fded
d�	��fded
d�	��fded
d�	��fded
d�	��fgZdS)�#TestOptionalsDoubleDashPartialMatch�--badgerr�rz--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�G�G�H�	�R�R�u�$�
'�
'�
'�(�	�B�B�e��-�-�-�.�	�"�"�D�d�+�+�+�,�	�2�2�T�t�,�,�,�-�	�B�B�d��-�-�-�.�	�R�R�t��.�.�.�/�
�I�I�Irr-c��eZdZ	edd���ed��gZgd�Zdedd�	��fd
edd�	��fdedd�	��fd
edd�	��fdedd�	��fdedd�	��fdedd�	��fgZdS)�"TestOptionalsDoubleDashPrefixMatchr.r�rr1)r/r0r1r2r3rFN)r4�baz--ba Xr6z--ba=Xr7Tr8r9r�r@rrr;r;�s�������I�	��J�|�,�,�,���F�����>�=�=�H�	�R�R�u��
&�
&�
&�'�	�2�2�U�s�+�+�+�,�	�2�2�U�s�+�+�+�,�	�"�"�D�T�*�*�*�+�	�2�2�T�d�+�+�+�,�	�B�B�d�t�,�,�,�-�	�R�R�t��-�-�-�.��I�I�Irr;c��eZdZ	edd���ed��eddd���gZgd	�Zd
eddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fdeddd�
��fgZdS)�TestOptionalsSingleDoubleDashrr�rr/�-bazrrr)r/�-fbarz-fbazz-bazf�-b B�BrFN�r�bar�bazTz--ba BrBz
-f --bar Bz-f -bz-ba -fr�r@rrr>r>�s�������F�	��D��&�&�&���G�����F�=��3�3�3���
A�@�@�H�	�R�R�%�T�t�
,�
,�
,�-�	
�r�r�D�d��-�-�-�.�	�2�2��3�D�1�1�1�2�	�r�r�D�c�t�4�4�4�5�	�"�"�t��2�.�.�.�/�	�2�2��$�B�/�/�/�0�
�I�I�Irr>c�4�eZdZ	edd���Zedd���ed��edd	d
���gZgd�Zd
eddd���fdeddd���fdeddd���fdeddd���fdeddd
���fdeddd
���fgZdS)�!TestOptionalsAlternatePrefixChars�+:/F��prefix_chars�add_help�+fr�r�::bar�/bazrrr)r/r@rArBr�--bar Br?r4�--helpz+hz::helpz/helprNrCT�::ba BrB�
+f ::bar B�+f /b�/ba +f�	rrr rsr�r�r�rzr�r@rrrGrG�s
������C��s���>�>�>����D��&�&�&���G�����F�=��3�3�3���
q�p�p�H�	�R�R�%�T�t�
,�
,�
,�-�	
�r�r�D�d��-�-�-�.�	�2�2��3�D�1�1�1�2�	�r�r�D�c�t�4�4�4�5�	�"�"�t��2�.�.�.�/�	�2�2��$�B�/�/�/�0�
�I�I�IrrGc�4�eZdZ	edd���Zedd���ed��edd	d
���gZgd�Zd
eddd���fdeddd���fdeddd���fdeddd���fdeddd
���fdeddd
���fgZdS)�*TestOptionalsAlternatePrefixCharsAddedHelprHTrIrLr�rrMrNrrr)r/r@rArBrrOr?rFNrCrQrBrRrSrTrUr@rrrWrW�s������+��s���=�=�=����D��&�&�&���G�����F�=��3�3�3���
H�G�G�H�	�R�R�%�T�t�
,�
,�
,�-�	
�r�r�D�d��-�-�-�.�	�2�2��3�D�1�1�1�2�	�r�r�D�c�t�4�4�4�5�	�"�"�t��2�.�.�.�/�	�2�2��$�B�/�/�/�0�
�I�I�IrrWc	��eZdZ	edd���Zedd���edd���edd���gZgd	�Zd
eddd���fdeddd���fd
eddd���fdeddd���fgZdS)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-FrIr�r�rz+yz+z)�-wz-xyzz+xrz+xyzr�r��yrTz+y -xz+yz -xNrUr@rrrYrYs�������J��s��u�=�=�=����D��&�&�&���D��&�&�&���D��&�&�&���
���H�
�R�R�%�5�E�
*�
*�
*�+�	
�r�r�D�E�U�+�+�+�,�	�"�"�t�t�u�-�-�-�.�	�2�2����-�-�-�.�	�I�I�IrrYc��eZdZ	eddddd���gZgd�Zded	�
��fded�
��fded�
��fded�
��fded�
��fgZdS)
�TestOptionalsShortLong�-v�	--verbose�-nz--noisyr�r)z
--x --verbosez-Nr�z-v xrF)�verboseTNr�r@rrr^r^s�������F�	��D�+�t�Y�|�D�D�D���4�3�3�H�	�R�R��
�
�
��	
�r�r�$���� �	�b�b��&�&�&�'�	
�r�r�$���� �	�B�B�t�$�$�$�%��I�I�Irr^c��eZdZ	ed��edd���gZdgZdedd�	��fd
edd�	��fded
d�	��fdedd�	��fgZdS)�TestOptionalsDestz	--foo-bar�--baz�zabbazr'r�z--foo-bar frN)�foo_barrfz--baz g�gz--foo-bar h --baz i�hr�z--baz j --foo-bar k�k�jr�r@rrrdrd-s�������4��3�{�+�+�S�S��x�-H�-H�-H�I���u�H�	���3�t�4�4�4�5�	�B�B�t�C�0�0�0�1�	���3�s� ;� ;� ;�<�	���3�s� ;� ;� ;�<�	�I�I�Irrdc��eZdZ	ed��edd���gZdgZdedd���fd	ed
d���fdedd���fgZdS)
�TestOptionalsDefaultr�rr��defaultr�rN�r�r\z-xxr�z-yyr\r�r@rrrmrm:s�������4��3�t�9�9�c�c�$��&;�&;�&;�<���u�H�	�R�R�$�"�
�
�
��	���S�B���� �	���T�S�!�!�!�"��I�I�Irrmc�h�eZdZ	ed��gZddgZded���fded���fgZdS)�TestOptionalsNargsDefaultr�r�rNr�r�r�r@rrrrrrFsU������A��3�t�9�9�+���T�{�H�	�R�R�$�Z�Z�Z��	���c������I�I�Irrrc�n�eZdZ	edd���gZddgZded���fdedg���fgZdS)	�TestOptionalsNargs1r����nargsr�rNr�r�r�r@rrrtrtQs_������0��3�t�1�-�-�-�.���T�{�H�	�R�R�$�Z�Z�Z��	���s�e������I�I�Irrtc�p�eZdZ	edd���gZgd�Zded���fdegd	����fgZdS)
�TestOptionalsNargs3r��rv)r�r�r��-x a b�a -x�a -x brNr�z-x a b c�r��b�cr�r@rrryry\sf������1��3�t�1�-�-�-�.��>�>�>�H�	�R�R�$�Z�Z�Z��	�R�R�/�/�/�*�*�*�+��I�I�Irryc��eZdZ	edd���eddd���eddd�	��ed
dedd�
��gZdgZdedddd���fdedddd���fdedddd���fdedddd���fdedddd���fdedddd���fdedddd���fd
edddd���fdedddd���fg	ZdS)�TestOptionalsNargsOptionalrZ�?rvr�r)rwrr�spam�rwror�42�84)rwr�rro�2rN�T�rfr�r\rz-w 2z-x 2z-y 2z-z 2��	rrr rs�intr�r�rzr�r@rrr�r�gsp������:�	��D�������D��2�&�&�&���D��V�,�,�,���D��#�T�4�@�@�@�	���u�H�	�R�R�$�$�&�B�
/�
/�
/�0�	
�r�r�D�D�F�b�1�1�1�2�	���c�T�V�r�2�2�2�3�	
�r�r�D�B�&�B�/�/�/�0�	���d�c�V�r�2�2�2�3�	
�r�r�D�D�D�B�/�/�/�0�	���d�d�c�R�0�0�0�1�	
�r�r�D�D�F�b�1�1�1�2�	���d�d�f��2�2�2�3�
�I�I�Irr�c� �eZdZ	edd���eddd���gZdgZded	d�
��fdegd�
��fdedgd�
��fdedd
gd�
��fded	g�
��fded	dg�
��fded	dd
g�
��fgZd	S)�TestOptionalsNargsZeroOrMorer��*rvrr�r�r�rNrpr�r{r�-y a�-y a br�r@rrr�r�~s�������I�	��D�������D��V�,�,�,����u�H�	�R�R�$�&�
!�
!�
!�"�	
�r�r�B�&�!�!�!�"�	���s�e�v�&�&�&�'�	�2�2��c�
�f�-�-�-�.�	
�r�r�D�B���� �	���d�s�e�$�$�$�%�	�2�2���c�
�+�+�+�,��I�I�Irr�c
���eZdZ	edd���eddd���gZgd�Zded	d�
��fdedgd�
��fd
eddgd�
��fded	dg�
��fded	ddg�
��fgZd	S)�TestOptionalsNargsOneOrMorer��+rvrr�r�)r�r�rr|za -y brNrpr�r�r{rr�r�r�r@rrr�r��s�������H�	��D�������D��V�,�,�,���3�2�2�H�	�R�R�$�&�
!�
!�
!�"�	���s�e�v�&�&�&�'�	�2�2��c�
�f�-�-�-�.�	���d�s�e�$�$�$�%�	�2�2���c�
�+�+�+�,��I�I�Irr�c
��eZdZ	edd���edeed�����gZgd�Zded	d	�
��fdedd	�
��fd
edd	�
��fded	d�
��fded	d�
��fdedd�
��fgZ	d	S)�TestOptionalsChoicesr�abc��choicesz-g��r�r�)r�z-f dz-fadz-gaz-g 6rN)rrhrr�z-f cr�z-g 0rz-g 03rzz-fb -g4r��
rrr rsr��ranger�r�rzr�r@rrr�r��s�������6�	��D�%� � � ���D�s�E�E�!�H�H�-�-�-�/��4�3�3�H�	�R�R�$�$�
�
�
� �	���c�T�"�"�"�#�	���c�T�"�"�"�#�	���d�a����!�	�"�"�t�q�/�/�/�"�	�B�B���N�N�N�#�
�I�I�Irr�c�n�eZdZ	eded���gZddgZded���fd	ed
���fgZdS)�TestOptionalsRequiredr�T�r��requiredr�r�-x 1rur�z-x42rNr�r@rrr�r��se������3�	��D�s�T�*�*�*����R�y�H�	���a�����	���b������I�I�Irr�c�l�eZdZ	edd���gZddgZded���fd	ed
���fgZdS)�TestOptionalsActionStorer��storerr�r|rNr�z-xfoor'r�r@rrr�r��s]������0��3�t�G�4�4�4�5���V�}�H�	�R�R�$�Z�Z�Z��	�"�"�u�+�+�+���I�I�Irr�c�l�eZdZ	edde���gZdgZded���fdee���fgZdS)�TestOptionalsActionStoreConstrrrr�rN�r\)	rrr rsr�r�r�rzr�r@rrr�r��s]������6��3�t�M��H�H�H�I���u�H�	�R�R�$�Z�Z�Z��	
�r�r�F�|�|�|���I�I�Irr�c�l�eZdZ	edd���gZgd�Zded���fded���fgZd	S)
�TestOptionalsActionStoreFalser�store_falser)r�r	r
rT)rFNr�r@rrr�r��s_������6��3�t�M�:�:�:�;��#�#�#�H�	�R�R�$�Z�Z�Z��	
�r�r�E�{�{�{���I�I�Irr�c�l�eZdZ	edd���gZgd�Zded���fded���fgZd	S)
�TestOptionalsActionStoreTruez--appler�r)r�z	--apple=bz	--apple brF)�appleTNr�r@rrr�r��s_������5��3�y��>�>�>�?��.�.�.�H�	�R�R�e�_�_�_��	�B�B�T�N�N�N�#��I�I�Irr�c���eZdZ	edej���gZddgZded���fded���fd	ed
���fded
���fded���fgZ	d
�Z
dS)�TestBooleanOptionalActionr�r�	--foo bar�	--foo=barrNrT�--no-fooFz--foo --no-fooz--no-foo --fooc�$�tj��}|�t��5}|�ddtj���ddd��n#1swxYwY|�dt|j����dS)Nr�T�rrz*got an unexpected keyword argument 'const')	r*r+r�r�r��BooleanOptionalAction�assertInr��	exception�rr1�cms   r�
test_constz$TestBooleanOptionalAction.test_const�s����(�*�*��
�
�
�y�
)�
)�	\�R�����t�H�<Z��[�[�[�	\�	\�	\�	\�	\�	\�	\�	\�	\�	\�	\����	\�	\�	\�	\�	
�
�
�B�C���DU�DU�V�V�V�V�Vs�#A�A!�$A!)rrr rsr*r�r�r�rzr�r�r@rrr�r��s�������%��3�w�x�/M�N�N�N�O���[�)�H�	�R�R�D�\�\�\��	�"�"��,�,�,��	�R�R�E�]�]�]�#�	�2�2�%�=�=�=�)�	�2�2�$�<�<�<�(��I�W�W�W�W�Wrr�c�v�eZdZ	eddej���gZdgZded���fded���fgZ	dS)	�!TestBooleanOptionalActionRequiredr�T)r�rrrr�FN)
rrr rsr*r�r�r�rzr�r@rrr�r�sf������.�	��G�d�8�+I�J�J�J����t�H�	�"�"��,�,�,��	�R�R�E�]�]�]�#��I�I�Irr�c��eZdZ	edd���gZgd�Zded���fded	g���fd
ed	dg���fgZdS)�TestOptionalsActionAppendre�appendr�r�re�a --baz�	--baz a brN�rE�--baz ar��--baz a --baz brr�r@rrr�r�sz������1��3�w�x�8�8�8�9��5�5�5�H�	�R�R�D�\�\�\��	�B�B�C�5�M�M�M�"�	�B�B�C��:�.�.�.�/��I�I�Irr�c��eZdZ	edddg���gZgd�Zdedg���fdedd	g���fd
egd����fgZdS)
�$TestOptionalsActionAppendWithDefaultrer�r6�rror�rr�r�r�r�)r6r�rNr�r@rrr�r�s�������1��3�w�x�#��G�G�G�H��5�5�5�H�	�R�R�S�E�]�]�]��	�B�B�C��:�&�&�&�'�	�B�B�?�?�?�3�3�3�4��I�I�Irr�c�$�eZdZ	edd���edd���edd���edd���gZgd�Zd	ed
d
d
d
���fded
gd
d
d
���fded
d
gd
d
���fded
d
d
d
���fded
d
d
d
���fgZd
S)�!TestConstActionsMissingConstKwargr�append_constrr��-brr/)z-f vr�r�rN)rr'rrDr�r@rrr�r�$s������G�	��D��(�(�(���G�N�+�+�+���D��'�'�'���G�M�*�*�*�	��2�1�1�H�	�R�R�$�D�D�d�
3�
3�
3�4�	
�r�r�T�F���$�7�7�7�8�	�"�"�t�$��4�T�:�:�:�;�	
�r�r�D�d�d��5�5�5�6�	�"�"�t���4�8�8�8�9��I�I�Irr�c	��eZdZ	edde���eddd���gZgd�Zd	ed
���fdeeg���fdeed
edg���fgZd
S)�TestOptionalsActionAppendConstr�r�r�-cr�r�rr(�r�r�za -cz-bxz-b xrN�r�-b -cx -b -cyzr��yz�	rrr rsr�r�r�rzr�r@rrr�r�7s�������7�	��D��y�9�9�9���D���,�,�,���2�1�1�H�	�R�R�$�Z�Z�Z��	
�r�r�Y�K� � � �!�	�2�2��C��D� A�B�B�B�C��I�I�Irr�c
��eZdZ	eddedg���eddd���gZgd	�Zd
edg���fdedeg���fdeded
edg���fgZdS)�)TestOptionalsActionAppendConstWithDefaultr�r�r6)rrror�r�rr�r�rr�r�r�r�Nr�r@rrr�r�Fs�������7�	��D��y�3�%�H�H�H���D���,�,�,���2�1�1�H�	�R�R�3�%�[�[�[��	
�r�r�S�)�$�%�%�%�&�	�2�2��i��i�� F�G�G�G�H��I�I�Irr�c�l�eZdZ	edd���gZgd�Zded���fded���fgZdS)	�TestOptionalsActionCountr��countr)r�r�z-x bz	-x a -x brNr�rur�r@rrr�r�Us^������0��3�t�G�4�4�4�5��1�1�1�H�	�R�R�$�Z�Z�Z��	
�r�r�A�w�w�w���I�I�Irr�c	���eZdZ	ed��ed��edd���gZddgZded	d	d
���fded
d	d
���fded	dd
���fdedd	d���fgZd	S)�"TestOptionalsAllowLongAbbreviationr�z--foobazz--foobler�rz--foob 5z--foobrNF)r'�foobaz�fooblez--foo 7�7z	--fooba ar�z--foobl --foo grhTr�r@rrr�r�`s�������<�	��G�����J�����J�|�,�,�,���
�H�%�H�	�R�R�D��e�
4�
4�
4�5�	�B�B�3�t�E�:�:�:�;�	�b�b�T�#�e�<�<�<�=�	�B�B�3�t�D�A�A�A�B�	�I�I�Irr�c���eZdZ	ed���Zed��edd���ed��gZgd�Zd	ed
dd
���fded
dd
���fdeddd���fgZd
S)�%TestOptionalsDisallowLongAbbreviationF��allow_abbrevr�z--foodler�rz--foonly)z-foon 3z--foon 3z--foodz--food --foo 2rN�r'�foodle�foonlyz--foo 3�3z--foonly 7 --foodle --foo 2r�Tr�rUr@rrr�r�qs�������;��s��.�.�.����G�����J�|�,�,�,���J�����
C�B�B�H�	�R�R�D��t�
4�
4�
4�5�	�B�B�3�u�T�:�:�:�;�	&���s�4��(L�(L�(L�M��I�I�Irr�c���eZdZ	edd���Zed��edd���ed��gZgd	�Zd
eddd���fd
eddd���fdeddd���fgZdS)�0TestOptionalsDisallowLongAbbreviationPrefixCharsr�F�rJr�z++fooz++foodler�rz++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNr�z++foo 3r�z++foonly 7 ++foodle ++foo 2r�Tr�rUr@rrr�r��s�������L��s��%�@�@�@����G�����J�|�,�,�,���J�����
C�B�B�H�	�R�R�D��t�
4�
4�
4�5�	�B�B�3�u�T�:�:�:�;�	&���s�4��(L�(L�(L�M��I�I�Irr�c
��eZdZ	ed���Zed��edd���gZddgZded	d	�
��fdedd	�
��fd
edd	�
��fded	d�
��fdedd�
��fdedd�
��fgZd	S)�/TestDisallowLongAbbreviationAllowsShortGroupingFr�z-rr�r�rz-c -rrN��rr�z-rar�z-rcc�ccz-ccr�z-cc -raz-ccrccrUr@rrr�r��s�������;��s��.�.�.����D�	�	���D��!�!�!����g��H�	�R�R�$�$�
�
�
� �	���S�D�!�!�!�"�	���d�d�#�#�#�$�	���T�Q���� �	�B�B���N�N�N�#�	�2�2���?�?�?�#�
�I�I�Irr�c
��eZdZ	edd���Zed��edd���gZddgZd	ed
d
���fded
d
���fdedd
���fded
d���fded
d���fdedd���fgZd
S)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr�Fr�z+rz+cr�rz+c +rrNr�z+rar�z+rccr�z+ccr�z+cc +raz+ccrccrUr@rrr�r��s�������O��s��%�@�@�@����D�	�	���D��!�!�!����g��H�	�R�R�$�$�
�
�
� �	���S�D�!�!�!�"�	���d�d�#�#�#�$�	���T�Q���� �	�B�B���N�N�N�#�	�2�2���?�?�?�#�
�I�I�Irr�c�N�eZdZ	ed��gZgd�Zded���fgZdS)�TestPositionalsNargsNoner'�rr��a br�rNr�r@rrr�r��sE������6��3�u�:�:�,�� � � �H�	�b�b�S�k�k�k���I�I�Irr�c�T�eZdZ	edd���gZgd�Zdedg���fgZdS)�TestPositionalsNargs1r'rurvr�r�rNr�r@rrr�r��sO������8��3�u�A�.�.�.�/�� � � �H�	�b�b�c�U�m�m�m���I�I�Irr�c�V�eZdZ	edd���gZgd�Zdeddg���fgZd	S)
�TestPositionalsNargs2r'r�rv)rr�r��a b cr�r�rrNr�r@rrr�r��sT������8��3�u�A�.�.�.�/��'�'�'�H�	����S�z�"�"�"�#��I�I�Irr�c��eZdZ	edd���gZdgZdeg���fdedg���fdedd	g���fgZd
S)�TestPositionalsNargsZeroOrMorer'r�rvr�rrr�r�rNr�r@rrr�r��sv������:��3�u�C�0�0�0�1���v�H�	�R�R�B�Z�Z�Z��	�b�b�c�U�m�m�m��	����S�z�"�"�"�#��I�I�Irr�c��eZdZ	eddd���gZdgZded���fdedg���fd	edd
g���fgZdS)�%TestPositionalsNargsZeroOrMoreDefaultr'r�rDr�r�rrr�r�rNr�r@rrrr�sx������H��3�u�C��?�?�?�@���v�H�	�R�R�E�]�]�]��	�b�b�c�U�m�m�m��	����S�z�"�"�"�#��I�I�Irrc�r�eZdZ	edd���gZddgZdedg���fdedd	g���fgZd
S)�TestPositionalsNargsOneOrMorer'r�rvrr�r�rr�rNr�r@rrrr�sf������<��3�u�C�0�0�0�1���D�z�H�	�b�b�c�U�m�m�m��	����S�z�"�"�"�#��I�I�Irrc�l�eZdZ	edd���gZddgZded���fd	ed	���fgZdS)
�TestPositionalsNargsOptionalr'r�rvr�r�rNrr�r�r@rrrr�s]������&��3�u�C�0�0�0�1���e�}�H�	�R�R�D�\�\�\��	�b�b�S�k�k�k���I�I�Irrc�n�eZdZ	eddd���gZddgZded���fd	ed	���fgZd
S)�#TestPositionalsNargsOptionalDefaultr'r�rr�r�r�rrr�Nr�r@rrrr	s_������;��3�u�C��<�<�<�=���e�}�H�	�R�R�B�Z�Z�Z��	�b�b�S�k�k�k���I�I�Irrc�p�eZdZ	edded���gZgd�Zded���fd	ed
���fgZdS)�,TestPositionalsNargsOptionalConvertedDefaultr'r�r�)rwr�ro)r�r��1 2rrr�1ruNr�r@rrr	r	sk�������
	��E��3��5�5�5���$�#�#�H�	�R�R�B�Z�Z�Z��	�b�b�Q�i�i�i���I�I�Irr	c�d�eZdZ	ed��ed��gZgd�Zdedd���fgZdS)	�TestPositionalsNargsNoneNoner'rD)rr�r�r�r�r�r�r'rDNr�r@rrr
r
#sU������7��3�u�:�:�s�s�5�z�z�2��'�'�'�H�	���s��$�$�$�%��I�I�Irr
c�j�eZdZ	ed��edd���gZgd�Zdeddg�	��fgZd
S)�TestPositionalsNargsNone1r'rDrurv)rr�r�r�r�r�rrNr�r@rrrr-s^������@��3�u�:�:�s�s�5��':�':�':�;��*�*�*�H�	���s���&�&�&�'��I�I�Irrc�l�eZdZ	edd���ed��gZgd�Zdeddgd	�
��fgZdS)�TestPositionalsNargs2Noner'r�rvrD�rr�r�r��a b c dr�r�rr�rNr�r@rrrr7s`������B��3�u�A�.�.�.���E�
�
�;��3�3�3�H�	�"�"�#�s���-�-�-�.��I�I�Irrc��eZdZ	ed��edd���gZddgZdedg���fd	edd
g���fdedd
dg���fgZd
S)�"TestPositionalsNargsNoneZeroOrMorer'rDr�rvrr�r�rr�rr�r�Nr�r@rrrrAs�������H��3�u�:�:�s�s�5��'<�'<�'<�=���G�}�H�	�b�b�S�b�!�!�!�"�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.��I�I�Irrc��eZdZ	ed��edd���gZgd�Zdeddg�	��fd
edddg�	��fgZdS)
�!TestPositionalsNargsNoneOneOrMorer'rDr�rv�rr�r�r�r�rrr�r�Nr�r@rrrrMsy������J��3�u�:�:�s�s�5��'<�'<�'<�=��!�!�!�H�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.��I�I�Irrc��eZdZ	ed��edd���gZgd�Zdedd���fd	edd
���fgZdS)� TestPositionalsNargsNoneOptionalr'rDr�rv�rr�r�r�Nrr�rr�r@rrrrXss������J��3�u�:�:�s�s�5��'<�'<�'<�=��%�%�%�H�	�b�b�S�d�#�#�#�$�	���s��$�$�$�%��I�I�Irrc��eZdZ	edd���ed��gZddgZdegd���fd	edgd
���fdedd
gd���fgZd
S)�"TestPositionalsNargsZeroOrMoreNoner'r�rvrDrr�r�rr�rr�r�Nr�r@rrrrcs�������J��3�u�C�0�0�0�#�#�e�*�*�=���G�}�H�	�b�b�R�S�!�!�!�"�	����u�#�&�&�&�'�	�"�"�#�s���-�-�-�.��I�I�Irrc��eZdZ	edd���ed��gZgd�Zdedgd�	��fd
eddgd�	��fgZdS)
�!TestPositionalsNargsOneOrMoreNoner'r�rvrDrr�r�rrr�r�Nr�r@rrr r osy������L��3�u�C�0�0�0�#�#�e�*�*�=��!�!�!�H�	����u�#�&�&�&�'�	�"�"�#�s���-�-�-�.��I�I�Irr c��eZdZ	eddd���ed��gZgd�Zdedd���fd	edd
���fgZdS)� TestPositionalsNargsOptionalNoner'r�rr�rDrr�rr�rNr�r@rrr"r"zsu������L��3�u�C��<�<�<�c�c�%�j�j�I��%�%�%�H�	�b�b�R�S�!�!�!�"�	���s��$�$�$�%��I�I�Irr"c��eZdZ	edd���edd���gZgd�Zdedd	gg�
��fdedd	gdg�
��fgZd
S)�TestPositionalsNargs2ZeroOrMorer'r�rvrDr�rr�r�rrr�r�Nr�r@rrr$r$�s�������G��3�u�A�.�.�.���E��0E�0E�0E�F��!�!�!�H�	����S�z�r�*�*�*�+�	�"�"�#�s��#��/�/�/�0��I�I�Irr$c�r�eZdZ	edd���edd���gZgd�Zdedd	gd
g���fgZdS)
�TestPositionalsNargs2OneOrMorer'r�rvrDr�)rr�r�r�r�r�rr�rNr�r@rrr&r&�si������I��3�u�A�.�.�.���E��0E�0E�0E�F��(�(�(�H�	�"�"�#�s��#��/�/�/�0��I�I�Irr&c��eZdZ	edd���edd���gZgd�Zdedd	gd
���fdedd	gd
���fgZd
S)�TestPositionalsNargs2Optionalr'r�rvrDr�)rr�r�rr�r�rNrr�r�r�r@rrr(r(�s�������A��3�u�A�.�.�.���E��0E�0E�0E�F��,�,�,�H�	����S�z�t�,�,�,�-�	�"�"�#�s���-�-�-�.��I�I�Irr(c��eZdZ	edd���edd���gZddgZdegdg�	��fd
edgdg�	��fdeddgd
g�	��fgZdS)�TestPositionalsNargsZeroOrMore1r'r�rvrDrurr�r�rr�rr�r�Nr�r@rrr*r*�s�������G��3�u�C�0�0�0�#�#�e�1�2E�2E�2E�F���G��H�	�b�b�R�c�U�#�#�#�$�	����u�3�%�(�(�(�)�	�"�"�#�s��#��/�/�/�0��I�I�Irr*c��eZdZ	edd���edd���gZgd�Zdedgd	g�
��fdedd	gdg�
��fgZd
S)�TestPositionalsNargsOneOrMore1r'r�rvrDrurr�r�rrr�r�Nr�r@rrr,r,�s�������I��3�u�C�0�0�0�#�#�e�1�2E�2E�2E�F��!�!�!�H�	����u�3�%�(�(�(�)�	�"�"�#�s��#��/�/�/�0��I�I�Irr,c��eZdZ	edd���edd���gZgd�Zdeddg�	��fd
eddg�	��fgZdS)�TestPositionalsNargsOptional1r'r�rvrDrurr�Nrr�rr�r@rrr.r.�s~������I��3�u�C�0�0�0�#�#�e�1�2E�2E�2E�F��%�%�%�H�	�b�b�T��u�%�%�%�&�	���s���&�&�&�'��I�I�Irr.c��eZdZ	ed��edd���edd���gZgd�Zded	gd
g���fded	d
gd
g���fgZdS)�#TestPositionalsNargsNoneZeroOrMore1r'rDr�rvrErurr�r�r�r'rDrEr�r�Nr�r@rrr0r0�s�������G�	��E�
�
���E�������E�������
"�!�!�H�	���s����.�.�.�/�	�"�"��3�%�c�U�3�3�3�4��I�I�Irr0c��eZdZ	ed��edd���edd���gZgd�Zded	d
gdg���fd
ed	d
dgdg���fgZdS)�"TestPositionalsNargsNoneOneOrMore1r'rDr�rvrEru)rr�r�rr�r�rr�r1r�dNr�r@rrr3r3�s�������I�	��E�
�
���E�������E�������
'�&�&�H�	�"�"��3�%�c�U�3�3�3�4�	�B�B�3�S�#�J�S�E�:�:�:�;��I�I�Irr3c��eZdZ	ed��eddd���edd���gZgd	�Zd
edddg�
��fdedddg�
��fgZdS)�!TestPositionalsNargsNoneOptional1r'rDr���?r�rErurvrr�r�rr1r�r�Nr�r@rrr6r6�s�������E�	��E�
�
���E��e�,�,�,���E�������
"�!�!�H�	���s��C�5�1�1�1�2�	�"�"��#�C�5�1�1�1�2��I�I�Irr6c��eZdZ	edd���eddd���gZddgZd	ed
d���fdedd���fd
edd���fgZd
S)�$TestPositionalsNargsOptionalOptionalr'r�rvrDrr�r�r�rNrr�r�rr�r@rrr9r9�s�������!�	��E�������E��b�)�)�)�����!�H�	�R�R�D�b�
!�
!�
!�"�	�b�b�S�b�!�!�!�"�	���s��$�$�$�%��I�I�Irr9c	���eZdZ	edd���edd���gZdgZdedg�	��fd
ed
g�	��fded
dg�	��fd
ed
ddg�	��fgZdS)�&TestPositionalsNargsOptionalZeroOrMorer'r�rvrDr�r�rNrr�r�rr�r�r�r@rrr;r;s�������;��3�u�C�0�0�0�#�#�e�3�2G�2G�2G�H���y�H�	�R�R�D�b�
!�
!�
!�"�	�b�b�S�b�!�!�!�"�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.�	�I�I�Irr;c��eZdZ	edd���edd���gZddgZded	dg�
��fdeddg�
��fd
edddg�
��fgZd	S)�%TestPositionalsNargsOptionalOneOrMorer'r�rvrDr�rr�r�Nrr�rr�r�r�r@rrr=r=s�������=��3�u�C�0�0�0�#�#�e�3�2G�2G�2G�H���G�}�H�	�b�b�T��u�%�%�%�&�	���s���&�&�&�'�	�"�"��3��*�-�-�-�.��I�I�Irr=c�~�eZdZ	eded�����gZgd�Zded���fded���fgZdS)	�TestPositionalsChoicesStringr��abcdefgr��rr�rir��efr��r�rhN)	rrr rs�setr�r�rzr�r@rrr?r?sg������0��3�v�s�s�9�~�~�>�>�>�?��-�-�-�H�	�b�b�c�l�l�l��	�b�b�c�l�l�l���I�I�Irr?c��eZdZ	edeed�����gZgd�Zded���fded	���fgZ	d
S)�TestPositionalsChoicesIntr��r�rA�4r�rC�15�Nr�r@rrrFrF'si������'��3�v�C���r���C�C�C�D��-�-�-�H�	�b�b�a�j�j�j��	
�r�r�r�{�{�{���I�I�IrrFc�t�eZdZ	edd���eddd���gZgd�Zdedd	d
gg���fgZdS)
�TestPositionalsActionAppendr�r�rr�)rrwrr�r�rr�rCNr�r@rrrLrL2ss������"�	��F�8�$�$�$���F�8�1�-�-�-���4�3�3�H�	�"�"�3��c�
�+�,�,�,�-��I�I�IrrLc���eZdZ	edd���eddd���gZdd	gZd
edd�
��fdedd�
��fdedd�
��fdedd�
��fgZdS)�"TestOptionalsNumericAndPositionalsr�r�rvz-4r\r��r(rr)z-315rNFrpr�Tz-4 ar�r@rrrNrNBs�������E�	��C�s������D�s�<�0�0�0����f�~�H�	�R�R�$�%�
 �
 �
 �!�	�b�b�3�%� � � �!�	
�r�r�D�D�!�!�!�"�	���c�T�"�"�"�#�	�I�I�IrrNc	���eZdZ	edd���eddd���gZdgZd	ed
d���fd
ed
d���fdedd���fded
d���fdedd���fgZd
S)�(TestOptionalsAlmostNumericAndPositionalsr�r�rvz-k4r\r�rOz-k3rNFrpr)r�Tz-k4 ar�r@rrrQrQRs�������L�	��C�s������E��L�1�1�1����w�H�	�R�R�$�%�
 �
 �
 �!�	
�r�r�D�E�"�"�"�#�	�b�b�3�%� � � �!�	���T�T�"�"�"�#�	�"�"�s�d�#�#�#�$��I�I�IrrQc�D�eZdZedd���eddd���gZdgZdgedd	�
��fdgedd	�
��fdgedd	�
��fddged	d�
��fddged	d�
��fddged	d�
��fd
ged	d�
��fdged	d�
��fgZd	S)�$TestEmptyAndSpaceContainingArgumentsr�r�rvrz--yyyr\r'rNrpza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�r@rrrSrScs ������	��C�s������D�'��$�$�$����v�H�
��r�r�B�$���� �
��r�r�J�$�/�/�/�0�
����[�D�1�1�1�2�
���R�R�$�"�%�%�%�&�
�
�	�R�R�$�*�5�5�5�6�
��	�b�b�4�;�7�7�7�8�
�	�R�R�$�*�5�5�5�6�
�	�b�b�4�;�7�7�7�8�	�I�I�IrrSc�<�eZdZed���Zedddd���edd	ed
���edd
d���gZddgZdedd
d���fdedd
d���fdedd
d���fdeddd���fdedd
d���fdedd
d���fgZ	dS)� TestPrefixCharacterOnlyArgumentsz-+�rJ�-r�r�r4)r(rwrr�r\r)r(r�roz-+-rr�rOrz+ -rNFr[z- Xr6z+ -3���Tz- ===z===)
rrr rsr�r�r�r�rzr�r@rrrUrUvs�������s��-�-�-����C�c��H�5�5�5���C�c��R�0�0�0���E��L�1�1�1���
�e�}�H�	�R�R�$�"��
&�
&�
&�'�	�b�b�8�r�U�+�+�+�,�	���S�B�%�(�(�(�)�	���d�b�E�*�*�*�+�	���T�R�4�(�(�(�)�	�"�"�u��e�,�,�,�-�
�I�I�IrrUc��eZdZ	edd���edd���gZgZdedg���fdegg���fded	gg���fd
ed	gdg���fd	edd	g���fdegd	g���fd
edgd	g���fgZdS)�TestNargsZeroOrMorer�r�rvr\rNrpr�r�z	-x a -- brr|r}r�r@rrrZrZ�s�������I��3�t�3�/�/�/���S��1D�1D�1D�E���H�	�R�R�$�"�
�
�
��	
�r�r�B�"�~�~�~��	���s�e�r�"�"�"�#�	�b�b�C�5�S�E�*�*�*�+�	�b�b�4�C�5�!�!�!�"�	���b�S�E�"�"�"�#�	�2�2���#��'�'�'�(��I�I�IrrZc	���eZdZ	ed��edd���ed��gZgd�Zdedgd�	��fd
edgd�	��fdedgd
�d�	��fdedddgd�	��fgZdS)�TestNargsRemainderr�r\�...rvr)rrz-z Zr6Nr[z-z Z X�Z�
X A B -z Z)�ArBrr^z	X Y --foo�Yr�r�r@rrr\r\�s�������<��3�s�8�8�S�S��E�%:�%:�%:�C�C��I�I�F��!�!�!�H�	�b�b�3�"��%�%�%�&�	�2�2��r�S�)�)�)�*�	�r�r�C�#8�#8�#8�D�A�A�A�B�	�b�b�3�3��.�D�9�9�9�:�	�I�I�Irr\c��eZdZ	ede���eded���edd���gZgd	�Zd
eddg���fd
eddg���fdedddg���fdeddg���fdeddg���fdeddg���fdedddg���fdedddg���fdedddg���fdedddg���fdedddg���fgZdS)�TestOptionLiker��r�z-3r\)r�r(rr�rv)
r�z-y2.5r�z-x -az-x -3z-x -3.5z-3 -3.5z-x -2.5z	-x -2.5 az-3 -.5za x -1z-x -1 az-3 -1 arNr[z-x 2.5�@z-x 2.5 ar�z-3.5��?z-3-.5g�z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 a)	rrr rs�floatr�r�rzr�r@rrrcrc�s�������8�	��D�u������D�u�3�'�'�'���C�s������
0�0�0�H�

�R�R�$�$�"�
%�
%�
%�&�	�2�2��t�r�*�*�*�+�	�R�R�#��#��/�/�/�0�	���d�c�R�(�(�(�)�	�"�"�t�t�r�*�*�*�+�	�"�"�t�s�b�)�)�)�*�	�2�2����u�-�-�-�.�	�b�b�4�4�C�5�)�)�)�*�	�2�2��t��u�-�-�-�.�	�2�2��t��u�-�-�-�.�	�2�2����u�-�-�-�.��I�I�Irrcc�.�eZdZ	eddej���eddej���eddej���gZd	gZd
e��fded���fd
eddg���fded���fdedd���fdeddgd���fgZ	dS)�TestDefaultSuppressr'r�r�rDr�rer�r�r�rr�rr�rrTr�r��r'rEr�r1N)
rrr rsr*�SUPPRESSr�r�rzr�r@rrriri�s�������/�	��E��h�&7�8�8�8���E��h�&7�8�8�8���G�L�(�2C�D�D�D���
�v�H�	�R�R�T�T�
�	�b�b�S�k�k�k��	���s���&�&�&�'�	�"�"��,�,�,��	�B�B�3�D�)�)�)�*�	�b�b�S�s�e��6�6�6�7�
�I�I�Irric�,�eZdZ	eej���Zedd���edd���edd�	��gZd
gZde	��fde	d�
��fde	ddg���fde	d���fde	dd���fde	ddgd���fgZ
dS)�TestParserDefaultSuppress��argument_defaultr'r�rvrDr�rer�rr�rr�rr�rrTr�r�rjr�r1N)rrr rsr*rkr�r�r�rzr�r@rrrmrm�s�������>��s�H�,=�>�>�>����E�������E�������G�L�)�)�)���
�v�H�	�R�R�T�T�
�	�b�b�S�k�k�k��	���s���&�&�&�'�	�"�"��,�,�,��	�B�B�3�D�)�)�)�*�	�b�b�S�s�e��6�6�6�7�
�I�I�Irrmc�\�eZdZ	ed���Zeddd���edd�	��ed
d�	��edd
���gZdgZdedddd���fdedddd���fdeddgdd���fdedddd���fdedddd���fdeddgdd���fgZdS)�TestParserDefault42rrn�	--version�version�1.0�rrsr'r�rvrDr�rer�rr�r)r'rDrErsr�r�rTr�r�NrUr@rrrqrq�s,������8��s�B�/�/�/����K�	�5�9�9�9���E�������E�������G�L�)�)�)�	���v�H�	�R�R�B�B�B��
3�
3�
3�4�	�b�b�S�b�b�"�5�5�5�6�	���s���2�r�:�:�:�;�	�"�"����r�:�:�:�;�	�B�B�3�B�D�"�=�=�=�>�	�b�b�S�s�e��r�B�B�B�C�
�I�I�Irrqc�r��eZdZ	�fd�Zed���Zed��ed��edd���gZgd	�Zd
eddd
g���fdeddd
dg���fdedddg���fdedddg���fdeddd
dg���fdeddddg���fgd�eddd
g���fgZ	�xZ
S)�TestArgumentsFromFilec����tt|�����gd�}|D]D\}}t|dd���5}|�|��ddd��n#1swxYwY�EdS)N)��helloz
hello world!
)�	recursivez-a
A
@hello)�invalidz@no-such-path
rfr
rg)r
rwrJrirj�r�
file_textsrZ�textrmrs     �rrJzTestArgumentsFromFile.setUps����
�#�T�*�*�0�0�2�2�2�
�
�
�
�%�	!�	!�J�D�$��d�C�'�2�2�2�
!�d��
�
�4� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!��	!�	!s�A(�(A,	�/A,	�@��fromfile_prefix_chars�-ar�r\r�rv)rr�r6z@invalidz@missingzX YNr6ra)r�r�r\z
X -a A Y Zr`r^�@hello Xzhello world!zX @helloz-a B @recursive Y ZzX @recursive Z -a BrB)r�rr6rar)rrr rJrsr�r�r�rzr�r!r"s@rrwrw�sS�������,�!�!�!�!�!��s��5�5�5����D�	�	���C�����C�s������
7�6�6�H�	���T�S�S�E�*�*�*�+�	�r�r�C�3�3��*�5�5�5�6�	�R�R�$�.�S�E�:�:�:�;�	�R�R�$�#�.�)9�:�:�:�;�	���S�N�s�C�j� I� I� I�J�	���S�C�N�C�3H� I� I� I�J�	�	�	�r�r�B�#�#��7�7�7�8��I�I�I�I�Irrwc���eZdZ	�fd�ZGd�de��ZeZed���Zedd���gZ	gZ
d	egd
����fgZ�xZ
S)�TestArgumentsFromFileConverterc����tt|�����dg}|D]D\}}t|dd���5}|�|��ddd��n#1swxYwY�EdS)Nryrfr
rg)r
r�rJrirjr}s     �rrJz$TestArgumentsFromFileConverter.setUp"s����
�,�d�3�3�9�9�;�;�;�'�
�
�%�	!�	!�J�D�$��d�C�'�2�2�2�
!�d��
�
�4� � � �
!�
!�
!�
!�
!�
!�
!�
!�
!�
!�
!����
!�
!�
!�
!��	!�	!s�A'�'A+	�.A+	c��eZdZd�ZdS)�>TestArgumentsFromFileConverter.FromFileConverterArgumentParserc#�jK�|���D]}|���s�|V��dSrN)r��strip)r�arg_line�args   r�convert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_args-sG�����~�~�'�'�
�
���y�y�{�{����	�	�	�	�
�
rN)rrr r�r@rr�FromFileConverterArgumentParserr�+s#������	�	�	�	�	rr�r�r�r\r�rvr�)rzzworld!r6r�)rrr rJr�r�r�rsr�r�r�rzr�r!r"s@rr�r�s��������,�!�!�!�!�!������*D����3�L��s��5�5�5����C�s�������H�	�R�R�2�2�2�3�3�3�4��I�I�I�I�Irr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestFileTypeReprc�t�tjd��}|�dt|����dS)Nr�z
FileType('r')�r*�FileTyper��repr�rr�s  r�test_rzTestFileTypeRepr.test_rCs4��� ��%�%������$�t�*�*�5�5�5�5�5rc�v�tjdd��}|�dt|����dS)N�wbruzFileType('wb', 1)r�r�s  r�	test_wb_1zTestFileTypeRepr.test_wb_1Gs7��� ��q�)�)�����,�d�4�j�j�9�9�9�9�9rc�x�tjdd���}|�dt|����dS)Nr��latin_1rgz!FileType('r', encoding='latin_1')r�r�s  r�test_r_latinzTestFileTypeRepr.test_r_latinKs:��� ��y�9�9�9�����<�d�4�j�j�I�I�I�I�Irc�z�tjddd���}|�dt|����dS)Nrf�big5�ignore)rh�errorsz/FileType('w', encoding='big5', errors='ignore')r�r�s  r�test_w_big5_ignorez#TestFileTypeRepr.test_w_big5_ignoreOsG��� ��v�h�G�G�G�����J��d���	%�	%�	%�	%�	%rc�z�tjddd���}|�dt|����dS)Nr�ru�replace�r�z"FileType('r', 1, errors='replace')r�r�s  r�test_r_1_replacez!TestFileTypeRepr.test_r_1_replaceTs<��� ��a�	�:�:�:�����=�t�D�z�z�J�J�J�J�JrN)rrr r�r�r�r�r�r@rrr�r�Asg������6�6�6�:�:�:�J�J�J�%�%�%�
K�K�K�K�Krr�c��eZdZd�Zd�ZdS)�StdStreamComparerc��tj|��|_|dkrt|_dS|dkrt
|_dSt
��|_dS)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterr�r��
backupattrr�r�)rr�s  rrzStdStreamComparer.__init__^sQ�� �*�4�0�0����?�"�"�1�D�O�O�O�
�_�
$�
$�1�D�O�O�O�$�h�h�D�O�O�Orc�v�	||�t��kS#t$r||jkcYSwxYwrN)r�r��AttributeErrorr�r�s  rr�zStdStreamComparer.__eq__lsL��	,��D�L�L��-�-�-�-���	,�	,�	,��D�O�+�+�+�+�	,���s� �8�8N�rrr rr�r@rrr�r�]s2������'�'�'�,�,�,�,�,rr��stdinr�r�zstdin.bufferr�r�c��eZdZiZd�Zd�ZdS)�RFilec��||_dSrN�rc�rrcs  rrzRFile.__init__~�
����	�	�	rc��||jvr|j|}n2|���x}|j|<|���t|t��s|�d��}|j|jcxko|kncS)N�ascii)�seen�read�closer�r�rrc�rr�rs   rr�zRFile.__eq__�s����D�I����9�U�#�D�D�&+�j�j�l�l�2�D�4�9�U�#��K�K�M�M�M��$��$�$�	(��;�;�w�'�'�D��y�E�J�.�.�.�.�$�.�.�.�.�.rN)rrr r�rr�r@rrr�r�{s7������
�D����/�/�/�/�/rr�c���eZdZ	�fd�Zedej�����edejd�����gZgd�Zde	de
d���	��fd
e	e
d��e
d���	��fde	e
d��e
d���	��fd
e	ee�	��fde	de
d���	��fgZ�xZ
S)�
TestFileTypeRc�N��tt|�����dD]d}ttj�|j|��dd���5}|�|��ddd��n#1swxYwY�e|�	d��dS)Nrrfr
rg�readonly)
r
r�rJrirRrZr[rQrjrq�r�	file_namermrs   �rrJzTestFileTypeR.setUp�s����
�m�T�"�"�(�(�*�*�*�'�	&�	&�I��b�g�l�l�4�=�)�<�<��G�-�-�-�
&�04��
�
�9�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	
�!�!�*�-�-�-�-�-��"B�B	�B	r�rdr�r�)r�rznon-existent-file.txtr'N�r�r��
-x foo barrD�
bar -x foo�-x - -r�)rrr rJrsr*r�r�r�rzr��eq_stdinr�r!r"s@rr�r��s0�������B�.�.�.�.�.�	��D�(�x�(�*�*�+�+�+���F�*��*�3�/�/�0�0�0���3�2�2�H�	���T���e���-�-�-�.�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2��x�0�0�0�1�	�R�R�$�U�U�:�%6�%6�7�7�7�8��I�I�I�I�Irr�c���eZdZ	�fd�Zedejd��d���gZdgZde	e
d���	��fgZ�xZS)
�TestFileTypeDefaultsc���tt|�����ttj�|jd��dd���}|�d��|�	��dS)N�goodrfr
rg)
r
r�rJrirRrZr[rQrjr�)rrmrs  �rrJzTestFileTypeDefaults.setUp�si���
�"�D�)�)�/�/�1�1�1��B�G�L�L����7�7��w�O�O�O���
�
�6�����
�
�����rr�r�zno-file.txt�r�rorz-c goodr�)r�)
rrr rJrsr*r�r�r�rzr�r�r!r"s@rr�r��s��������F������	��D�(�x�(��-�-�}�E�E�E����t�H��R�R�%�%��-�-�0�0�0�1�2�I�I�I�I�Irr�c	�b��eZdZ	�fd�Zedejd�����edejd�����gZddgZde	de
d���	��fd
e	e
d��e
d���	��fde	e
d��e
d���	��fd
e	ee�	��fgZ�xZ
S)�TestFileTypeRBc�$��tt|�����dD]d}ttj�|j|��dd���5}|�|��ddd��n#1swxYwY�edS)Nrrfr
rg)	r
r�rJrirRrZr[rQrjr�s   �rrJzTestFileTypeRB.setUp�s����
�n�d�#�#�)�)�+�+�+�'�	&�	&�I��b�g�l�l�4�=�)�<�<��G�-�-�-�
&�04��
�
�9�%�%�%�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&��	&�	&r�r��rbrdr�rr'Nr�r�rDr�r�)rrr rJrsr*r�r�r�rzr��	eq_bstdinr�r!r"s@rr�r��s�������B�&�&�&�&�&�	��D�(�x�(��.�.�/�/�/���F�*��*�4�0�0�1�1�1����b�z�H�	���T���e���-�-�-�.�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�	�	�2�2�2�3�	�I�I�I�I�Irr�c�.�eZdZe��Zd�Zd�ZdS)�WFilec��||_dSrNr�r�s  rrzWFile.__init__�r�rc��||jvrcd}d|jvr|�d��}|�|��|���|j�|��|j|jkS)NzCheck that file is writable.rr�)r��moderrjr��addrcr�s   rr�zWFile.__eq__�st����	�!�!�1�D��e�j� � ��{�{�7�+�+���K�K������K�K�M�M�M��I�M�M�%� � � ��y�E�J�&�&rN)rrr rDr�rr�r@rrr�r��s=�������3�5�5�D����'�'�'�'�'rr�c
���eZdZ	�fd�Zedejd�����edejd�����gZgd�Zde	de
d���	��fd
e	de
d
���	��fde	e
d��e
d���	��fd
e	e
d��e
d���	��fde	ee�	��fgZ�xZ
S)�
TestFileTypeWc���t�����|�d��|�d��dS�Nr��writable�r
rJrqrn�rrs �rrJzTestFileTypeW.setUp��B���
���
�
�����!�!�*�-�-�-��!�!�*�-�-�-�-�-rr�rfrdr�)r�rr�r'Nr�r�r�rDr�r��rrr rJrsr*r�r�r�rzr��	eq_stdoutr�r!r"s@rr�r��s2�������B�.�.�.�.�.�	��D�(�x�(��-�-�.�.�.���F�*��*�3�/�/�0�0�0���&�%�%�H�	���T���e���-�-�-�.�	�R�R�$�U�U�:�%6�%6�7�7�7�8�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�	�	�2�2�2�3��I�I�I�I�Irr�c����eZdZ	�fd�Zedejd�����edejd�����gZgd�Zde	e
d��e
d	���
��fde	ee�
��fgZ�xZ
S)�
TestFileTypeXc���t�����|�d��|�d��dSr�r�r�s �rrJzTestFileTypeX.setUp�r�rr�r�rdr�)r�rr�r�r�r'rDr�r�r�r"s@rr�r��s��������K�.�.�.�.�.�	��D�(�x�(��-�-�.�.�.���F�*��*�3�/�/�0�0�0���2�1�1�H�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�	�	�2�2�2�3��I�I�I�I�Irr�c	�R�eZdZ	edejd�����edejd�����gZddgZdede	d�����fd	ee	d��e	d
�����fdee	d��e	d
�����fdee
e
���fgZdS)
�TestFileTypeWBr�r�rdr�rr'Nr�r�rDr�r�)rrr rsr*r�r�r�rzr��
eq_bstdoutr�r@rrr�r�s�������I�	��D�(�x�(��.�.�/�/�/���F�*��*�4�0�0�1�1�1����b�z�H�	���T���e���-�-�-�.�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�
��4�4�4�5�	�I�I�Irr�c���eZdZ	edejd�����edejd�����gZdeed��ed�����fd	ee	e	���fgZ
d
S)�TestFileTypeXBr��xbrdr�r�r'rDr�r�N)rrr rsr*r�r�rzr�r�r�r@rrr�r�s�������N�	��D�(�x�(��.�.�/�/�/���F�*��*�4�0�0�1�1�1���

�r�r�E�E�%�L�L�u�u�U�|�|�<�<�<�=�	�2�2�
��4�4�4�5��I�I�Irr�c��eZdZ	d�ZdS)�TestFileTypeOpenArgsc
�H�tj}|d��df|dd��df|dd���df|d	d
���df|dd
dd��dfg}tjd��5}|D]\}}|d��|jdg|�R��	ddd��dS#1swxYwYdS)Nr�)r����NNrfru)rfruNNr�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*s4��
�
��
�R��X�X�-�.�
�R��Q�Z�Z�-�.�
�R��I�
&�
&�
&�(B�C�
�R��v�
&�
&�
&�(@�A�
�R��Q��h�
'�
'�)A�B�
���Z��
(�
(�	3�A�#�
3�
3�
��d���U����$��$�U�2�T�2�2�2�2�2�
3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	3�	3s�'"B�B�BN)rrr r�r@rrr�r�'s&������:�3�3�3�3�3rr�c��eZdZ	d�ZdS)�!TestFileTypeMissingInitializationc�<�tj��}|�t��5}|�dtj���ddd��n#1swxYwY|�tj�d�t|j����dS)Nr�rdz: is a FileType class object, instance of it must be passed)	r*r+r��
ValueErrorr�r�r�r�r�r�s   r�testz&TestFileTypeMissingInitialization.test?s����(�*�*��
�
�
�z�
*�
*�	>�b�����8�+<��=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	
���� � � �
#������	
�	
�	
�	
�	
s�"A�A �#A N�rrr r�r@rrr�r�9s(�������
	
�	
�	
�	
�	
rr�c��eZdZ	ede���ede���gZgd�Zdedd���fd	ed
d���fded
d���fgZ	d
S)�TestTypeCallablez--eggsrdr�)r��42jz--eggs az	--eggs 2iz--eggs=42 42rgE@)�eggsr�z--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
rrr rs�complexrgr�r�rzr�r@rrrrKs�������6�	��H�7�#�#�#���F�������5�4�4�H�	����$�/�/�/�0�	�b�b�b�t�4�4�4�5�	�R�R�T��1�1�1�2��I�I�Irrc���eZdZ	Gd�de��Zede���ede���gZgZdeed��ed���	��fd
eed��ed���	��fgZ	d
S)�TestTypeUserDefinedc��eZdZd�Zd�ZdS)�TestTypeUserDefined.MyTypec��||_dSrN��value�rrs  rrz#TestTypeUserDefined.MyType.__init___�
���D�J�J�Jrc�^�t|��|jft|��|jfkSrN�r�rr�s  rr�z!TestTypeUserDefined.MyType.__eq__b�'����J�J��
�+��U���U�[�/I�I�IrNr�r@rr�MyTyper]�7������	�	�	�	J�	J�	J�	J�	Jrrr�rdr�r}rr�r��-xf grrhN)
rrr rBrrsr�r�rzr�r@rrrrZs�������2�J�J�J�J�J��J�J�J�	��D�v������F�� � � ����H�	�2�2���s���&�&��+�+�6�6�6�7�	�"�"�v�v�c�{�{������5�5�5�6��I�I�Irrc���eZdZ	Gd�d��Zede���ede���gZgZdeed��ed���	��fd
eed��ed���	��fgZd
S)�TestTypeClassicClassc��eZdZd�Zd�ZdS)�TestTypeClassicClass.Cc��||_dSrNr
rs  rrzTestTypeClassicClass.C.__init__ur
rc�^�t|��|jft|��|jfkSrNrr�s  rr�zTestTypeClassicClass.C.__eq__xrrNr�r@rr�Crsrrrr�rdr�r}rr�r�rrrhN)	rrr rrsr�r�rzr�r@rrrrps�������#�J�J�J�J�J�J�J�J�	��D�q������F��������H�	�2�2���#���Q�Q�s�V�V�,�,�,�-�	�"�"�q�q��v�v�A�A�c�F�F�+�+�+�,��I�I�Irrc��eZdZ	d�ZdS)�TestTypeRegistrationc���d�}tj��}|�dd|��|�dd���|�dd���|�|�d�����tdd�	����|�|�d
�����tdd�	����dS)Nc��d|zS)Nzmy_type{%s}r@��strings r�get_my_typez.TestTypeRegistration.test.<locals>.get_my_type�s
�� �6�)�)rr��my_typer�rdr\rz
my_type{1}rpz-x 1 42zmy_type{42})r*r+�registerr�r�r:r�rz)rr!r1s   rr�zTestTypeRegistration.test�s���	*�	*�	*��(�*�*������	�;�7�7�7����D�y��1�1�1����C�i��0�0�0�����*�*�3�9�9�;�;�7�7��d�l�3�3�3�	5�	5�	5�����*�*�9�?�?�+<�+<�=�=��l�m�<�<�<�	>�	>�	>�	>�	>rNr�r@rrrr�s&������4�
>�
>�
>�
>�
>rrc��eZdZ	Gd�dej��ZGd�dej��Zeddeed���ed	ee	d
d���gZ
gZd
edd���fdedd���fdedd���fdedd���fgZ
dS)�TestActionUserDefinedc��eZdZdd�ZdS)�$TestActionUserDefined.OptionalActionNc���	td���}|dvrd|_n|dvrd|_ntd|z���n$#t$r}td|z���d}~wwxYwt	|d	|��dS)
N��?rC)��?r7r�)�@r��	value: %szopt_action failed: %sr�)rzr4�AssertionErrorr�r��rr1�	namespacer�
option_stringr�r�s       r�__call__z-TestActionUserDefined.OptionalAction.__call__�s���
G�!�d�m�m�m���N�*�*�)*�K�&�&��e�^�^�)+�K�&�&�(��u�)<�=�=�=���"�
G�
G�
G�)�*A�A�*E�F�F�F�����
G�����I�v�u�-�-�-�-�-s�:=�
A�A�ArN�rrr r1r@rr�OptionalActionr'�s(������	.�	.�	.�	.�	.�	.rr3c��eZdZdd�ZdS)�&TestActionUserDefined.PositionalActionNc��	td���}|dvrd|_n*|dvrd|_n|dvrd|_ntd	|z���n$#t$r}td
|z���d}~wwxYwt	|d|��dS)Nr��r4)rr�r))rur7)r�r*r,zarg_action failed: %sr4)rzr�r-r�r�r.s       rr1z/TestActionUserDefined.PositionalAction.__call__�s���
G�!��l�l�l���H�$�$�'+�K�$�$��c�\�\�',�K�$�$��c�\�\�',�K�$�$�(��u�)<�=�=�=���"�
G�
G�
G�)�*A�A�*E�F�F�F�����
G�����I�x��/�/�/�/�/s�AA	�	
A*�A%�%A*rNr2r@rr�PositionalActionr5�s(������	0�	0�	0�	0�	0�	0rr8z-sr�r))r(rr�ror4r�r�)rr�rwroz-s0.125r*)r�r4r�rz
-s 0.625 1r7ruz84 -s2r+r�N)rrr r*�Actionr3r8rsrgr�r�r�rzr�r@rrr%r%�s������4�.�.�.�.�.���.�.�.�,0�0�0�0�0�8�?�0�0�0�4	��D�v�n���	&�	&�	&���H�-��C��	,�	,�	,����H�	�B�B�E�!�,�,�,�-�	
�r�r�t�B�'�'�'�(�	�r�r�u�Q�/�/�/�0�	�2�2�3�r�*�*�*�+�	�I�I�Irr%c�<�eZdZ	Gd�dej��Zd�ZdS)�TestActionRegistrationc��eZdZdd�ZdS)�TestActionRegistration.MyActionNc�8�t||jd|z��dS)Nzfoo[%s])r�r()rr1r/�valuesr0s     rr1z(TestActionRegistration.MyAction.__call__�s!���I�t�y�)�f�*<�=�=�=�=�=rrNr2r@rr�MyActionr=�s(������	>�	>�	>�	>�	>�	>rr@c�r�tj��}|�dd|j��|�dd���|�|�dg��td�����|�|�dg��td	�����dS)
Nr�	my_actionr4rrzfoo[1]r7r�zfoo[42])r*r+r#r@r�r�r:rzr0s  rr�zTestActionRegistration.test�s����(�*�*������+�t�}�=�=�=����H�[��9�9�9�����*�*�C�5�1�1�2�X�3F�3F�3F�G�G�G�����*�*�D�6�2�2�B�i�4H�4H�4H�I�I�I�I�IrN)rrr r*r9r@r�r@rrr;r;�sW������?�>�>�>�>�>�8�?�>�>�>�
J�J�J�J�Jrr;c�T�eZdZeddde���gZdZdegd����fgZd	S)
�TestActionExtendr��extendr�)rrwr�r@z--foo f1 --foo f2 f3 f4)�f1�f2�f3�f4rN)	rrr rsr�r�r�rzr�r@rrrDrD�sV��������G�H�C�c�:�:�:����H�	"�B�B�+C�+C�+C�$D�$D�$D�E��I�I�IrrDc����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�Zd�Z�xZS) �TestAddSubparsersc�2�|jtg|�Ri|��dSrN�r�r�rws   r�assertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError�,�����-�?��?�?�?��?�?�?�?�?rFNc��|r7tdd|���}|�|ddzdzdd�	��n)tdd�
��}|�ddd�	��|�dtd
���ddi}|rd|d<d|d<nd|d<|jd7i|��}|�|j��td���}|rd|d<|rddg|d<|jd8i|��}|�dtd���|�d d!d"�#��td$���}	|rd%|	d<|jd9i|	��}
|
�d'd(d)�#��|
�d*td+d,�-��td.���}|rd/|d<|jd:i|��}|�d1td2���|�d3d4d5�6��|S);N�PROG�main description)�prog�descriptionrJrr�r'r��foo help�r�help�rSrTr�rD�bar help�r�rWr�F�COMMAND�metavar�commands�title�command helprWz
1 description�rTz1 help�1alias1�1alias2�aliasesrrZzw helpr�r��x help�r�rWz
2 descriptionz2 helpr�r�123�y helprr�zz help)r�rwrWz
3 descriptionz3 helpr��tzt help�ur]zu help�rwrWr@�r)r�)r�)	r�r�rg�add_subparsersrN�dict�
add_parserr�r)
r�subparser_helprJrcr1�subparsers_kwargs�
subparsers�parser1_kwargs�parser1�parser2_kwargs�parser2�parser3_kwargs�parser3s
             rr�zTestAddSubparsers._get_parsers����		?�/��);�,�X�X�X�F�����Q��!�#�e�+�L�z�
 �
S�
S�
S�
S�0��);�=�=�=�F������:�
 �
?�
?�
?������J�	�	0�	0�	0�(��/���	7�+4��i�(�)3��g�&�&�(6��f�%�*�V�*�?�?�->�?�?�
��&�&�v�'<�=�=�=��/�:�:�:���	.�%-�N�6�"��	?�)2�I�(>�N�9�%�'�*�'�>�>�~�>�>�����T��(��;�;�;����S�%�h��?�?�?��/�:�:�:���	.�%-�N�6�"�'�*�'�>�>�~�>�>�����T�5�x��@�@�@����S�w�c���I�I�I��/�:�:�:���	.�%-�N�6�"�'�*�'�>�>�~�>�>�����S�s���:�:�:����S��H��=�=�=��
rc���t�����|���|_|�d���|_dS)NT)ro)r
rJr�r1�command_help_parserr�s �rrJzTestAddSubparsers.setUp:sF���
���
�
�����&�&�(�(���#'�#3�#3�4�#3�#H�#H�� � � rc�x�dD]6}|���}|�|jj|���7dS)N)rr�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�rNr1r:)rr�rus   r�test_parse_args_failuresz*TestAddSubparsers.test_parse_args_failures?sN��1�	I�	I�H��>�>�#�#�D��*�*�4�;�+A�4�H�H�H�H�	I�	Irc
��|�|j�d�����t	dddd�����|�|j�d�����t	dd	d
ddg�
����|�|j�d�����t	dddd�����|�|j�d�����t	dddgd������dS)N�0.5 1 b -w 7Frf�r�r'rDrfr�z0.25 --foo 2 -y 2 3j -- -1jTr)r�y@y��)r'rDr\rz--foo 0.125 1 cr*r�z-1.5 3 11 -- a --foo 7 -- br�)r�r�r��--r)r'rDrhri)r�r1r:r�rzrs r�test_parse_argsz!TestAddSubparsers.test_parse_argsFsL������K�"�"�>�#7�#7�#9�#9�:�:��5�c�Q�#�.�.�.�	
�	
�	
�	
����K�"�"�#@�#F�#F�#H�#H�I�I��4�T�S�R��I�6�6�6�	
�	
�	
�	
����K�"�"�#4�#:�#:�#<�#<�=�=��4�U�d�c�2�2�2�	
�	
�	
�	
����K�"�"�#@�#F�#F�#H�#H�I�I��5�d�b�,J�,J�,J�K�K�K�	
�	
�	
�	
�	
rc	�P�|�|j�d�����t	dddd���gf��|�|j�d�����t	dddd���dgf��|�|j�d	�����t	dddd���dgf��|�|j�d
�����t	dddd���ddgf��|�|j�d
�����t	dddd���gd�f��dS)Nr}Frfr~rrz0.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-Xrar^)r�r1�parse_known_argsr�rzrs r�test_parse_known_argsz'TestAddSubparsers.test_parse_known_argsYs�������K�(�(��)=�)=�)?�)?�@�@�
�E�s�a�3�
/�
/�
/��4�	
�	
�	
�	
����K�(�(�):�)@�)@�)B�)B�C�C�
�E�s�a�3�
/�
/�
/�$��8�	
�	
�	
�	
����K�(�(�):�)@�)@�)B�)B�C�C�
�E�s�a�3�
/�
/�
/�$��8�	
�	
�	
�	
����K�(�(�)>�)D�)D�)F�)F�G�G�
�E�s�a�3�
/�
/�
/�$���?�	
�	
�	
�	
����K�(�(�)A�)G�)G�)I�)I�J�J�
�E�s�a�3�
/�
/�
/�1G�1G�1G�H�	
�	
�	
�	
�	
rc���t��}|�dddd���|�dddd���|�|�ddg��t	d	d�
��dgf��|�|�ddg��t	d	d�
��dgf��|�|�dg��t	d	d�
��dgf��|�|jdg��|�|�d
g��t	dd�
��d
gf��|�|�dg��t	dd�
��dgf��|�|�dg��t	d	d�
��dgf��|�|jdg��|�|�dg��t	d	d�
��dgf��|�|�dg��t	d	d	�
��dgf��|�|jdg��|�|jdg��|�|jdg��|�|�dg��t	d	d	�
��dgf��dS)Nz-kz--knownr�rr�raz--newz-uru)�known�newz-kuz-k=uz-ukz-u=kz	-kunknownz-unknownz
-k=unknownz
-ku=nknownz	-u=nknownz-knewz-ewz-kn=ewz-k-newz-kn-ewz-kne-wz-e-w)r�r�r�r�rzrNr0s  r�-test_parse_known_args_with_single_dash_optionz?TestAddSubparsers.test_parse_known_args_with_single_dash_optionos%��+�-�-�����D�)�G�Q��G�G�G����D�'�'�1��E�E�E�����0�0�$���>�>��1�!�,�,�,�t�f�5�	7�	7�	7�����0�0�$���>�>��1�!�,�,�,�t�f�5�	7�	7�	7�����0�0�%��9�9��1�!�,�,�,�t�f�5�	7�	7�	7��&�&�v�'>���I�I�I�����0�0�%��9�9��1�!�,�,�,�u�g�6�	8�	8�	8�����0�0�&��:�:��1�!�,�,�,�v�h�7�	9�	9�	9�����0�0�+��?�?��1�!�,�,�,�z�l�;�	=�	=�	=��&�&�v�'>���O�O�O�����0�0�,��@�@��1�!�,�,�,�{�m�<�	>�	>�	>�����0�0�'��;�;��1�!�,�,�,�u�g�6�	8�	8�	8��&�&�v�'>��
�K�K�K��&�&�v�'>��
�K�K�K��&�&�v�'>��
�K�K�K�����0�0�(��<�<��1�!�,�,�,�v�h�7�	9�	9�	9�	9�	9rc�f�t��}|�dd���|�d���}|�d��}|�d��|�tddd	�
��|�d�������dS)Nr�r�rrDr'rrEFr�r1r
)r�r�rlrnr�rzr:r�)rr1rqrss    r�	test_destzTestAddSubparsers.test_dest�s���+�-�-�����G�L��9�9�9��*�*��*�6�6�
��'�'��,�,�����U�#�#�#������3�C�8�8�8��*�*�5�;�;�=�=�9�9�	;�	;�	;�	;�	;rc��|�dg��}|�|jd��|�|jd��dS)N�runr@)r:r��commandrN)rr1�rets   r�_test_required_subparsersz+TestAddSubparsers._test_required_subparsers�sP�������(�(�������e�,�,�,�	
�&�&�v�'8�"�=�=�=�=�=rc��t��}|�d���}d|_|�d��|�|��dS)Nr�r'Tr�)r�rlr�rnr��rr1rqs   r�&test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attribute�sY��+�-�-���*�*�	�*�:�:�
�"�
�����e�$�$�$��&�&�v�.�.�.�.�.rc��t��}|�dd���}|�d��|�|��dS)Nr�T�r(r�r�)r�rlrnr�r�s   r�"test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwarg�sS��+�-�-���*�*�	�D�*�I�I�
����e�$�$�$��&�&�v�.�.�.�.�.rc���t��}|�d���}|�d��|�d��}|�|j��dS)Nr�r'r�r@�r�rlrnr:�assertIsNoner��rr1rqr�s    r� test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_default�sf��+�-�-���*�*�	�*�:�:�
����e�$�$�$�����#�#�����#�+�&�&�&�&�&rc�p�t��}|�d���}|�d��|�d��|�t��5}|�d��ddd��n#1swxYwY|�|jjd��dS)NT�r�r'rDr@z8error: the following arguments are required: {foo,bar}
$�	r�rlrnr�r�r:r=r�r��rr1rq�excinfos    r�-test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_error�s���+�-�-���*�*�D�*�9�9�
����e�$�$�$����e�$�$�$�
�
�
�2�
3�
3�	"�w����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"������$�G�	
�	
�	
�	
�	
��)B�B�Bc�p�t��}|�d���}|�d��|�d��|�t��5}|�d��ddd��n#1swxYwY|�|jjd��dS)NTr�r'rDr�zPerror: argument {foo,bar}: invalid choice: 'baz' \(choose from 'foo', 'bar'\)\n$r�r�s    r�3test_wrong_argument_subparsers_no_destination_errorzETestAddSubparsers.test_wrong_argument_subparsers_no_destination_error�s���+�-�-���*�*�D�*�9�9�
����e�$�$�$����e�$�$�$�
�
�
�2�
3�
3�	(�w����h�'�'�'�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(�	(����	(�	(�	(�	(������$�_�	
�	
�	
�	
�	
r�c���t��}|�dd���}|�d��|�d��}|�|j��dS)Nr�Fr�r�r@r�r�s    r�test_optional_subparsersz*TestAddSubparsers.test_optional_subparsers�sh��+�-�-���*�*�	�E�*�J�J�
����e�$�$�$�����#�#�����#�+�&�&�&�&�&rc���|�|j���d��|�|j���t	jd����dS)N�)usage: PROG [-h] [--foo] bar {1,2,3} ...
a?            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�r1�format_usage�format_help�textwrap�dedentrs r�	test_helpzTestAddSubparsers.test_help�sv�������1�1�3�3�E�	G�	G�	G������0�0�2�2�H�O�E�5�5�	�	�	�	�	rc��|�d���}|�|���d��|�|���t	jd����dS)Nz+:-rVz)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�5������,�,�.�.�E�	G�	G�	G�����+�+�-�-�x��@�0�0�	�	�	�	�	rc���tdd���}|�ddd���|�|���t	jd����dS)	NrQrRrXz--non-breakingr�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesrVu7            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�9�9������]�;�	�	<�	<�	<�	
����+�+�-�-�x��	@�	0
�	0
�		�		�		�		�		rc��tdd���}|�dd���|�|���t	jd����tdd���}|�dgd�	��|�|���t	jd
����dS)NrQrRrXr'z    �rWz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

            options:
              -h, --help  show this help message and exit
        z%(choices)srez�            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�9�9�������	�	�	�	�	
����+�+�-�-�x��	@�	0
�	0
�		�		�		�,��%7�9�9�9������2��	�	 �	 �	 �	
����+�+�-�-�x��	@�	0
�	0
�		�		�		�		�		rc��|�d���}|�|���d��|�|���t	jd����dS)NrHrVz)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_chars)	s����!�!�u�!�5�5������,�,�.�.�E�	G�	G�	G�����+�+�-�-�x��@�0�0�	�	�	�	�	rc���|�|j���d��|�|j���t	jd����dS)Nr�a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�ryr�r�r�r�rs r�test_parser_command_helpz*TestAddSubparsers.test_parser_command_help;	sx������1�>�>�@�@�E�	G�	G�	G�����1�=�=�?�?�!��*���	�	�	�	�	rc���tdd���}|�ddd���|�dd	�
��|�ddd
���}|�d��}|�d��}|�|���d��|�|���tjd����dS)NrQrRrXr�r�rUrVrDrYr��subcommandsr_zadditional text)r^rTrWrr�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�rlrnr�r�r�r�r�)rr1rqrsrus     r�test_subparser_title_helpz+TestAddSubparsers.test_subparser_title_helpP	s��+��8J�L�L�L�����G�L�z��J�J�J����E�
��3�3�3��*�*��7E�0A�+�C�C�
��'�'��,�,���'�'��,�,������,�,�.�.�C�	E�	E�	E�����+�+�-�-�x��@�0�0�	�	�	�	�	rc��|�t��5}|j�|�����ddd��n#1swxYwY|�||jj��dSrN)r�r�r1r:r�r�r�r�)rr��
expected_helpr�s    r�_test_subparser_helpz&TestAddSubparsers._test_subparser_helpn	s���
�
�
�2�
3�
3�	5�r��K�"�"�8�>�>�#3�#3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�������(;�<�<�<�<�<s�-A�A�Ac�V�|�dtjd����dS)Nz5.0 1 -ha            usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

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

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

            2 description

            positional arguments:
              z           z help

            options:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            r�rs r�test_subparser2_helpz&TestAddSubparsers.test_subparser2_help�	r�rc	�j�|�d���}|�|�d�����t	dddd���gf��|�|�d�����t	dddd���gf��dS)	NT�rcz
0.5 1alias1 bFrfrrz
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�
2�
2�B�7�	
�	
�	
�	
����#�#�O�$9�$9�$;�$;�<�<�
�E�s�d�c�
2�
2�
2�B�7�	
�	
�	
�	
�	
rc��|�d���}|�|jd�����dS)NTr�z
0.5 1alias3 b)r�rNr:r�r0s  r�test_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocation�	sS���!�!�$�!�/�/���&�&�v�'8�'6�'<�'<�'>�'>�	@�	@�	@�	@�	@rc��|�dd���}d|_|�|���t	jd����dS)NT)rcroa	            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�	se���!�!�$�t�!�D�D���������+�+�-�-�x��@�0�0�	�	�	�	�	r)FNF) rrr rNr�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!r"s@rrKrK�s��������(�@�@�@�>B�!�5�5�5�5�nI�I�I�I�I�
I�I�I�
�
�
�&
�
�
�,9�9�9�8;�;�;�>�>�>�/�/�/�/�/�/�'�'�'�

�

�

�

�

�

�'�'�'����"���&���$ � � �D���$���*���<=�=�=�
������	
�	
�	
�@�@�@�
������rrKc�"�eZdZ	d�Zd�Zd�ZdS)�TestPositionalsGroupsc�h�t��}|�d��|�d��}|�d��|�d��tddd���}|�d	�����}|�||��dS)
Nr'rhrDrErr�r�r1�1 2 3)r�r�r�rzr:r�r��rr1r��expectedr�s     r�test_nongroup_firstz)TestPositionalsGroups.test_nongroup_first�	s���+�-�-�����E�"�"�"��)�)�#�.�.��
���5�!�!�!����E�"�"�"��#�3�C�0�0�0���"�"�7�=�=�?�?�3�3������6�*�*�*�*�*rc�h�t��}|�d��}|�d��|�d��|�d��tddd���}|�d	�����}|�||��dS)
N�xxxr'rDrErr�r�r1r��r�r�r�rzr:r�r�r�s     r�test_group_firstz&TestPositionalsGroups.test_group_first�	s���+�-�-���)�)�%�0�0��
���5�!�!�!����E�"�"�"����E�"�"�"��#�3�C�0�0�0���"�"�7�=�=�?�?�3�3������6�*�*�*�*�*rc��t��}|�d��}|�d��|�d��|�d��|�d��}|�d��tddd	d
���}|�d�����}|�||��dS)
Nr�r'rDrEr�frellrr�r�rH)r'rDrEr�z1 2 3 4r�r�s     r�test_interleaved_groupsz-TestPositionalsGroups.test_interleaved_groups�	s���+�-�-���)�)�%�0�0�����E�"�"�"�
���5�!�!�!����E�"�"�"��)�)�%�0�0��
���7�#�#�#��#�3�C�s�;�;�;���"�"�9�?�?�#4�#4�5�5������6�*�*�*�*�*rN)rrr r�r�r�r@rrr�r��	sD������J�+�+�+�+�+�+�
+�
+�
+�
+�
+rr�c�t��eZdZ	d�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Z�xZS)�TestParentParsersc�2�|jtg|�Ri|��dSrNrMrws   rrNz+TestParentParsers.assertArgumentParserError�	rOrc���t�����td���|_|j�d��|j�d��}|�d��|j�d��td���|_|j�d��|j�d��|j�d	��}|�d
��td���|_|j�d��td���|_|j�d��td���|_	|j	�
��}|�dd�
��|�dd�
��tj�
tjd��|_dS)NF�rKz--wr�rrr�r�r�z--dr�r�rr)r
rJr��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�	s����
���
�
����5�u�E�E�E�����%�%�e�,�,�,��"�5�5�c�:�:�����T�"�"�"���%�%�c�*�*�*�5�u�E�E�E�����%�%�c�*�*�*���%�%�d�+�+�+��"�5�5�c�:�:�����U�#�#�#�2�E�B�B�B��
��
�"�"�5�)�)�)�2�E�B�B�B��
��
�"�"�3�'�'�'� :�5�I�I�I����$�A�A�C�C��
���4���5�5�5�
���4���5�5�5��G�,�,�S�X�a�[�9�9����rc���t|jg���}|�|�d�����tddd�����dS)N��parentsz-y 1 2 --w 3r�rr��rfr\r)r�r�r�r:r�rzr0s  r�test_single_parentz$TestParentParsers.test_single_parent
sh��+�T�5E�4F�G�G�G������*�*�>�+?�+?�+A�+A�B�B��c�S�C�0�0�0�	2�	2�	2�	2�	2rc��|�|jj��t|jg���}|�|j��dS�Nr�)�_test_mutex_abr�r:r�r0s  r�test_single_parent_mutexz*TestParentParsers.test_single_parent_mutex
sO�����D�0�;�<�<�<�+�T�5I�4J�K�K�K�����F�-�.�.�.�.�.rc��|jg}td|���}t|g���}|�|j��dS)NF)rKr�r�)r�r�r�r:�rr�r1s   r�test_single_granparent_mutexz.TestParentParsers.test_single_granparent_mutex
sN���'�(��+�U�G�L�L�L��+�V�H�=�=�=�����F�-�.�.�.�.�.rc��|�|g��tdd�����|�|dg��tdd�����|�|dg��tdd�����|�|ddg��|�|ddg��|�|dg��|�|ddg��|�|ddg��dS)NF�r�rr�Tr�r�)r�rzrN)rr:s  rr�z TestParentParsers._test_mutex_ab
s�������B����e�u�)=�)=�)=�>�>�>������T�F�+�+�R�$�%�-@�-@�-@�A�A�A������T�F�+�+�R�%�4�-@�-@�-@�A�A�A��&�&�z�D�$�<�@�@�@��&�&�z�D�$�<�@�@�@��&�&�z�D�6�:�:�:��&�&�z�D�$�<�@�@�@��&�&�z�D�$�<�@�@�@�@�@rc���|j|jg}t|���}|�|�d�����t
dddddd�����dS)Nr�z--d 1 --w 2 3 4r�rr�rH)r�rr4rfr\r)r�r�r�r�r:r�rzr�s   r�test_multiple_parentsz'TestParentParsers.test_multiple_parents
s~���#�T�%5�6��+�G�<�<�<������*�*�+<�+B�+B�+D�+D�E�E��c�T�S�C�4�3�G�G�G�	I�	I�	I�	I�	Irc
��|j|jg}t|���}|�|�d�����t
ddddd�����|�|jd�����|�|jd	�����dS)
Nr�z
-a --w 2 3TFr�r�)r�rrfr\rz
-a --w 2 3 -bz
-a -b --w 2 3)r�r�r�r�r:r�rzrNr�s   r�test_multiple_parents_mutexz-TestParentParsers.test_multiple_parents_mutex#
s����'��)9�:��+�G�<�<�<������*�*�<�+=�+=�+?�+?�@�@��d�e�s�d�c�B�B�B�	D�	D�	D��&�&����4�4�6�6�	8�	8�	8��&�&����4�4�6�6�	8�	8�	8�	8�	8rc�v�|�tjtj|j|jg���dSr�)r�r*�
ArgumentErrorr+r�r�rs r�test_conflicting_parentsz*TestParentParsers.test_conflicting_parents-
sB������"��#��]�D�$4�5�	�	7�	7�	7�	7�	7rc�v�|�tjtj|j|jg���dSr�)r�r*rr+r�r�rs r�test_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutex3
sC������"��#��%�t�';�<�	�	>�	>�	>�	>�	>rc���|j|jg}t|���}|�|�d�����t
ddd�����dS)Nr�r
r�r�)r�r�r�r�r:r�rzr�s   r�test_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parents9
sm���#�T�]�3��+�G�<�<�<������*�*�5�;�;�=�=�9�9��d�d�c�2�2�2�	4�	4�	4�	4�	4rc	�F�t��}|���}|�d|jg���}|�d��|�|�d�����tdddd�	����dS)
NrDr�r�zbar -b 1 --d 2 3 4r�rr�rH)r�rr4r�)	r�rlrnr�r�r�r:r�rz)rr1rq�abcde_parsers    r�test_subparser_parentsz(TestParentParsers.test_subparser_parents?
s���+�-�-���*�*�,�,�
�!�,�,�U�T�=M�<N�,�O�O���!�!�#�&�&�&�����*�*�+?�+E�+E�+G�+G�H�H��c�S�C�3�7�7�7�	9�	9�	9�	9�	9rc�6�t��}|���}|jg}|�d|���}|�d��}|�d��|j|jg}|�d|���}|�d��|�|�d�	����tdd	d
�����|�|�d�	����td	dd
ddd
�����|�|jd�	����|�|jd�	����dS)Nr'r�r�r�rDr�zfoo -a 4TFrHr~zbar -b  --w 2 3 4r�r�)r�rrfr\rr�zfoo -a -b 4zbar -b -a 4)r�rlr�rnr�r�r�r�r:r�rzrN)rr1rqr��
abc_parserr��wxyzabe_parsers       r�test_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutexG
s���+�-�-���*�*�,�,�
��'�(���*�*�5�'�*�B�B�
��/�/�	�:�:�����S�!�!�!��#�T�%9�:��#�.�.�u�g�.�F�F���#�#�C�(�(�(�����*�*�:�+;�+;�+=�+=�>�>��d�e�s�3�3�3�	5�	5�	5�����*�*�+>�+D�+D�+F�+F�G�G��e�t�s�d�c�S�I�I�I�	K�	K�	K��&�&���}�2�2�4�4�	6�	6�	6��&�&���}�2�2�4�4�	6�	6�	6�	6�	6rc	��|j|jg}t|���}|���}|j}|�|t
jd�||rdnd������dS)Nr�aG            usage: {}{}[-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

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

            c:
              --d D

            x:
              -y Y
        � r)	r�r�r�r�r�r�r�r��format)rr�r1�parser_help�prognames     r�test_parent_helpz"TestParentParsers.test_parent_helpZ
s����#�T�%5�6��+�G�<�<�<���(�(�*�*���$������h�o�7�"
�F�8�H�4�S�S�"�6�6�#'8�'8�	9�	9�	9�	9�	9rc	�B�td���}|�dd���}|�d��|�d��|���}|�d��|�d	��t|g�
��}|�t
|jgd���|���}|j}|�	|tjd�||rd
nd������dS)NFr�rh�gd�r^rTrZr�rrr�)rrarr^z�            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�parentrhr�r1rrs       r�test_groups_parentsz%TestParentParsers.test_groups_parentsr
s*��+�U�;�;�;���%�%�C�T�%�B�B��	���t����	���t�����/�/�1�1��	���t����	���t����+�V�H�=�=�=�����-�v�/@�"�"�"�	$�	$�	$��(�(�*�*���$������h�o�
7�
�F�8�H�4�S�S�"�6�6�
'8�
'8�
	9�
	9�
	9�
	9�
	9r)rrr rNrJr�r�r�r�r�r�rrrrrrrr!r"s@rr�r��	s�������?�@�@�@�:�:�:�:�:�82�2�2�
/�/�/�
/�/�/�A�A�A�I�I�I�8�8�8�7�7�7�>�>�>�4�4�4�9�9�9�6�6�6�&9�9�9�09�9�9�9�9�9�9rr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)� TestMutuallyExclusiveGroupErrorsc�`�t��}|j}|t|jd���dS)Nr')r^)r�r�r�r�)rr1�raisess   r�test_invalid_add_argument_groupz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group�
s5��+�-�-���"����y�&�=�U�K�K�K�K�K�Krc�>�t��}|���}|j}|j}|t|dd���|t|d��|t|dd���|t|dd���|t|dt
j���dS)Nr�Tr�rDr�rvru)r�r�r�r�r�r*�PARSER)rr1r�r�rs     r�test_invalid_add_argumentz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument�
s���+�-�-���3�3�5�5���)���"����z�<��4�@�@�@�@���z�<��/�/�/���z�<��c�:�:�:�:���z�<��a�8�8�8�8���z�<��h�o�F�F�F�F�F�Frc��td���}|���}|�dd���|�dd���|���}|�dd���|�d	d���d
}|�|���tj|����dS)NrQ�rSr�r�rr/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�8�8���4�4�6�6�����G�L��9�9�9����G�M��:�:�:��4�4�6�6�����H�\��:�:�:����H�]��;�;�;�	��	
����+�+�-�-�x��x�/H�/H�I�I�I�I�Irc	��d|_td���}|�dd���}|�d��}|���}|�ddtj�	��|�d
dtj�	��d}d}|�|��d
|�d|�d|�d|�d�	}|�|�	��tj|����dS)NrQr!r]r�)r^r(r'r`r�rVz--quietz�--longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongڀLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGz>            usage: PROG foo [-h]
                            [rzj]

            options:
              -h, --help            show this help message and exit
              z
              )r�r�rlrnr�r�r*rkr�r�r�r�)rr1r]�cmd_foor��longopt�longmetar�s        r�Ctest_help_subparser_all_mutually_exclusive_group_members_suppressedzdTestMutuallyExclusiveGroupErrors.test_help_subparser_all_mutually_exclusive_group_members_suppressed�
s'�����+��8�8�8���(�(�z�	�(�J�J���%�%�e�,�,���4�4�6�6��
���;�|�(�BS��T�T�T�
���9�\��@Q��R�R�R�"�������W�%�%�%��%���(0����
��"�
����	
����,�,�.�.����0I�0I�J�J�J�J�Jrc���tj��}|���}|�t��5|�dg��ddd��dS#1swxYwYdS)Nr4)r*r+r�r�r�r:�rr1r�s   r�test_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group�
s����(�*�*���3�3�5�5��
�
�
�z�
*�
*�	&�	&����t�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�	&�	&s�A&�&A*�-A*N)rrr rrr�r)r,r@rrrr�
sk������L�L�L�
	G�	G�	G�J�J�J�(K�K�K�*&�&�&�&�&rrc�>�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�MEMixinc��|�d���j}t}|jD]+}|�|||������,dS�NFr���
get_parserr:r�r�r�r��rr:r��args_strings    r�test_failures_when_not_requiredz'MEMixin.test_failures_when_not_required�
sc���_�_�e�_�4�4�?�
�#���=�	F�	F�K����e�Z��1B�1B�1D�1D�E�E�E�E�	F�	Frc��|�d���j}t}|jdgzD]+}|�|||������,dS)NTr�rr1r3s    r�test_failures_when_requiredz#MEMixin.test_failures_when_required�
sj���_�_�d�_�3�3�>�
�#���=�B�4�/�	F�	F�K����e�Z��1B�1B�1D�1D�E�E�E�E�	F�	Frc���|�d���j}|j|jz}|D]8\}}||�����}|�||���9dSr0)r2r:r��successes_when_not_requiredr�r�)rr:r�r4r��	actual_nss      r� test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required�
sy���_�_�e�_�4�4�?�
��N�T�%E�E�	�(1�	5�	5�$�K��"�
�;�#4�#4�#6�#6�7�7�I����Y��4�4�4�4�	5�	5rc��|�d���j}|jD]8\}}||�����}|�||���9dS�NTr�)r2r:r�r�r�)rr:r4r�r:s     r�test_successes_when_requiredz$MEMixin.test_successes_when_required�
sl���_�_�d�_�3�3�>�
�(,��	5�	5�$�K��"�
�;�#4�#4�#6�#6�7�7�I����Y��4�4�4�4�	5�	5rc��|�d���j}|j}|�|��t	j|����dSr0)r2r��usage_when_not_requiredr�r�r��rr��expected_usages   r�test_usage_when_not_requiredz$MEMixin.test_usage_when_not_required�
sL�������6�6�C���5������������)H�)H�I�I�I�I�Irc��|�d���j}|j}|�|��t	j|����dSr=)r2r��usage_when_requiredr�r�r�rAs   r�test_usage_when_requiredz MEMixin.test_usage_when_required�
sL�������5�5�B���1������������)H�)H�I�I�I�I�Irc��|�d���j}|j|jz}|�|��tj|����dSr0)r2r�r@rWr�r�r��rr�rWs   r�test_help_when_not_requiredz#MEMixin.test_help_when_not_required�
sS���o�o�u�o�5�5�A���+�d�i�7������������(=�(=�>�>�>�>�>rc��|�d���j}|j|jz}|�|��tj|����dSr=)r2r�rErWr�r�r�rHs   r�test_help_when_requiredzMEMixin.test_help_when_requiredsS���o�o�t�o�4�4�@���'�$�)�3������������(=�(=�>�>�>�>�>rN)rrr r5r7r;r>rCrFrIrKr@rrr.r.�
s�������F�F�F�F�F�F�5�5�5�5�5�5�J�J�J�
J�J�J�
?�?�?�
?�?�?�?�?rr.c��eZdZdd�ZddgZdedd���fded	d���fd
edd���fdedd	���fgZd
edd���fgZdZdZ	dZ
dS)�TestMutuallyExclusiveSimpleNc��td���}|�|���}|�dd���|�ddd	d
���|S)NrQr!r�r/rYr�rer�r^�baz help)rwrrW�r�r�r��rr�r1r�s    rr2z&TestMutuallyExclusiveSimple.get_parsersc��+��8�8�8���3�3�X�3�F�F��
���7���4�4�4�
���7�#�S�z��J�J�J��
r�--bar X --baz Yz
--bar X --baz�--bar Xr6�rDrEz--bar X --bar Zr^�--baz Yrarerz;        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 r2r�rzr�r9r@rErWr@rrrMrMs�����������"�?�3�H�	�B�B�3�D�)�)�)�*�	�B�B�3�D�1�1�1�2�	�B�B�4�S�)�)�)�*�	�"�"��3�'�'�'�(�	�I�
�R�R�D�d�
#�
#�
#�$�#�������D�D�DrrMc
���eZdZdd�ZdgZdedddd���fdedddd���fd	edddd���fd
edddd���fgZdedddd���fgZdZd
Z	dZ
dS)�TestMutuallyExclusiveLongNc�
�td���}|�dd���|�dd���|�|���}|�d	d
���|�dd���|S)
NrQr!z--abcdez
abcde helpr�z--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�r�r�r�rQs    rr2z$TestMutuallyExclusiveLong.get_parser+s���+��8�8�8�����I�L��9�9�9����I�L��9�9�9��3�3�X�3�F�F��
���9�<��8�8�8�
���9�<��8�8�8��
rz--klmno X --pqrst Yz	--klmno Xr6)�abcde�fghij�klmno�pqrstz--abcde Y --klmno Xraz	--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
    rNrVr@rrrXrX)s�����������&�&�H�	�b�b�t�4�s�$�G�G�G�H�	��B�S��C�t�<�<�<�	>�	�b�b�t�4�t�3�G�G�G�H�	��B�T��D��<�<�<�	>��I�
�R�R�d�$�d�$�
?�
?�
?�@�#�������D�D�DrrXc��eZdZd�ZdgZdedd���fdedd���fd	ed
d���fgZded
d���fgZd
ZdZ	dZ
d
S)�$TestMutuallyExclusiveFirstSuppressedc���td���}|�|���}|�dtj���|�ddd�	��|S)
NrQr!r�r�r�rr�rgrV�r�r�r�r*rkrQs    rr2z/TestMutuallyExclusiveFirstSuppressed.get_parserVsd��+��8�8�8���3�3�X�3�F�F��
���4�h�&7��8�8�8�
���4�
�H��E�E�E��
rz-x X -yz-x Xr6Trpz	-x X -x YrarNFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        rVr@rrr`r`Ts�����������{�H�	���c�T�"�"�"�#�	�b�b�3�$�'�'�'�(�	
�r�r�D�E�"�"�"�#��I�
�R�R�$�$�
�
�
� �#�������D�D�Drr`c	���eZdZd�Zgd�Zdeddd���fdeddd���fd	eddd
���fdeddd���fgZdeddd���fgZd
xZZ	dZ
dS)�#TestMutuallyExclusiveManySuppressedc���td���}|�|���}|j}|ddtj���|ddtj���|d	tj�
��|S)NrQr!r��--spamr�rVr.r�z	--bladderr�rb)rr�r1r�r�s     rr2z.TestMutuallyExclusiveManySuppressed.get_parserws���+��8�8�8���3�3�X�3�F�F��� ����H�\��0A�B�B�B�B���J�}�8�3D�E�E�E�E���K�h�/�0�0�0�0��
r)z--spam --badgerz--badger --bladder Bz--bladder B --spamrfTN)r�r4�bladderr.Fz--bladder BrBz
--spam --spamrz!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        �rrr r2r�rzr�r9rEr@rWr@rrrdrdus�������������H�
�2�2�4��d�;�;�;�<�	�R�R�U�5�$�?�?�?�@�	����d�C�@�@�@�A�	�"�"�$�t�T�B�B�B�C�	�I�
�R�R�U�4��
6�
6�
6�7�#��5���1��D�D�Drrdc
���eZdZd�Zgd�Zdeddd���fded	d
d���fded	ddg���fded	dgd����fgZd
ed	dd���fgZdZdZ	dZ
dS)�*TestMutuallyExclusiveOptionalAndPositionalc���td���}|�|���}|�ddd���|�dd	�
��|�ddd
d���|S)NrQr!r�r�r��FOOrVrf�SPAMr�r4r�r6�BADGER�rwrorWrPrQs    rr2z5TestMutuallyExclusiveOptionalAndPositional.get_parser�s~��+��8�8�8���3�3�X�3�F�F��
���7�<�e��D�D�D�
���8�&��1�1�1�
���8�3��(��K�K�K��
r)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam Sz	--foo X Yr�TNr6)r'r�r4z--spam SF�SzX Y Z)r6rar^rzD        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
        rVr@rrrkrk�s�������������H�
�"�"��D��5�5�5�6�	�R�R�E��C�8�8�8�9�	�b�b�U��s�e�4�4�4�5�	�"�"��T�/�/�/�B�B�B�C�	�I�
�R�R�E��S�
1�
1�
1�2�#������	�D�D�Drrkc
�b�eZdZd�Zgd�Zdeddddd���fdeddddd���fdeddddd���fd	eddddd���fd
eddddd���fdeddddd���fgZdeddddd���fd
eddddd���fdeddddd���fgZdxZZ	dZ
dS)�#TestMutuallyExclusiveOptionalsMixedc�B�td���}|�ddd���|�|���}|�ddd	���|�d
dd���|�ddd
���|�ddd���|S)NrQr!r�r�rdrVr�r��a helpr��b helprrgr��c helprZrQs    rr2z.TestMutuallyExclusiveOptionalsMixed.get_parser�s���+��8�8�8�����D��H��E�E�E��3�3�X�3�F�F��
���4��8��D�D�D�
���4��8��D�D�D����D��H��E�E�E�
���4��8��D�D�D��
r)z-a -b�-b -cz-a -cz-a -b -cr�TF�r�rr�r�r\r�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
        Nrir@rrrsrs�sW���������7�6�6�H�	
�r�r�D�E�U�e�u�=�=�=�>�	
�r�r�E�T�U�e�u�=�=�=�>�	
�r�r�E�U�d�e�u�=�=�=�>�	�"�"�t�u����?�?�?�@�	�"�"�u����$�?�?�?�@�	�R�R�%�5�D�D�D�A�A�A�B�
�I�
�R�R�%�5�E�U�e�
<�
<�
<�=�	
�r�r�E�U�e�t�u�=�=�=�>�	
�r�r�E�U�e�u��=�=�=�>�#��5���1�	�D�D�Drrsc��eZdZdd�ZddgZdedd���fdedd	���fgZd
edd���fgZdZdZ	d
Z
dS)�TestMutuallyExclusiveInGroupNc���td���}|�dd���}|�|���}|�dd�	��|�d
d�	��|S)NrQr!zTitled groupzGroup descriptionrr�r/rYr�rerO)r�r�r�r�)rr�r1�titled_group�mutex_groups     rr2z'TestMutuallyExclusiveInGroup.get_parser�s���+��8�8�8���0�0� �.A�1�C�C��
�5�5�x�5�H�H�	�� � ��z� �:�:�:�� � ��z� �:�:�:��
rrRz--baz X --bar YrSr6rTrUrarz9        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
        rNrVr@rrr{r{�s�����������"�#4�5�H�	�B�B�3�D�)�)�)�*�	�B�B�4�S�)�)�)�*��I�

�R�R�D�d�
#�
#�
#�$�#������
�D�D�Drr{c��eZdZd�Zgd�Zdeddddd���fded	d
ddd���fded	dd
dd���fdeddddd
���fd
ed	d
ddd
���fgZded	dddd���fded	dddd
���fgZdxZZ	dZ
d	S)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedc�@�td���}|�dd���|�ddd�	��|�|�
��}|�ddd
���|�ddd�	��|�ddd�	��|S)NrQr!r�rdr�rr�rgrVr�r�r�rurjr�rvr�rwrZrQs    rr2z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parsers���+��8�8�8�����C�h��/�/�/����D��H��E�E�E��3�3�X�3�F�F��
���3�c���9�9�9�
���4��8��D�D�D�
���4��8��D�D�D��
r)zX A -brxz-c X AzX Ar`Fr6ryzX -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
        rir@rrr�r�s���������-�,�,�H�	���S�E�U�c�U�;�;�;�<�	���d�d�e�s�e�<�<�<�=�	���d�e�t�s�e�<�<�<�=�	�2�2��u����=�=�=�>�	�B�B����#��>�>�>�?��I�

�b�b�4�5�E�S�E�:�:�:�;�	���d�e�u��t�<�<�<�=�#��
5���1��D�D�Drr�c�0�eZdZd�ZdZdZdZdZdZdZ	dZ
dS)�TestMutuallyExclusiveNestedc��td���}|�|���}|�d��|�d��tj��5tjdt��|�|���}ddd��n#1swxYwY|�d��|�d��tj��5tjdt��|�|���}ddd��n#1swxYwY|�d	��|�d
��|S)NrQr!r�r�r�r�r�z-dz-er)r�r�r��warnings�catch_warnings�simplefilter�DeprecationWarning)rr�r1r�r#�group3s      rr2z&TestMutuallyExclusiveNested.get_parserHs���+��8�8�8���3�3�X�3�F�F��
���4� � � �
���4� � � �
�
$�
&�
&�	K�	K��!�(�,>�?�?�?��7�7��7�J�J�F�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	���D�!�!�!����D�!�!�!�
�
$�
&�
&�	L�	L��!�(�,>�?�?�?��8�8�(�8�K�K�F�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	���D�!�!�!����D�!�!�!��
s$�$1B!�!B%�(B%�)1D&�&D*�-D*zO        usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
        zO        usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
        z�
        options:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)rrr r2r@rErWr5r7r;r>r@rrr�r�AsP���������"����
�D�'+�#�"&��'+�$�#'� � � rr�c� ��eZdZd�fd�	Z�xZS)�MEPBaseNc���tt|���|���}t|jd|g���}|S)Nr�F)rSrKr�)r
r�r2r�rS)rr�rr1rs    �rr2zMEPBase.get_parserxsJ����w��%�%�0�0�(�0�C�C��+���u�v�h�@�@�@���
rrN)rrr r2r!r"s@rr�r�vs=����������������rr�c��eZdZdS)�&TestMutuallyExclusiveGroupErrorsParentN�rrr r@rrr�r���������Drr�c��eZdZdS)�!TestMutuallyExclusiveSimpleParentNr�r@rrr�r��r�rr�c��eZdZdS)�TestMutuallyExclusiveLongParentNr�r@rrr�r��r�rr�c��eZdZdS)�*TestMutuallyExclusiveFirstSuppressedParentNr�r@rrr�r��r�rr�c��eZdZdS)�)TestMutuallyExclusiveManySuppressedParentNr�r@rrr�r��r�rr�c��eZdZdS)�0TestMutuallyExclusiveOptionalAndPositionalParentNr�r@rrr�r��r�rr�c��eZdZdS)�)TestMutuallyExclusiveOptionalsMixedParentNr�r@rrr�r��r�rr�c��eZdZdS)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNr�r@rrr�r��r�rr�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestSetDefaultsc
��t��}|�d���|�dd���|�tddd���|�g����|�tddd���|�gt������|�tddd���|�gtd�������|�tddd���|�gtdd�	������dS)
Nr'r�rDru)r\rr[rEr�)r�r�r��set_defaultsr�rzr:r0s  r�test_set_defaults_no_argsz)TestSetDefaults.test_set_defaults_no_args�sS��+�-�-�����e��$�$�$����e�q��)�)�)�����e�u��2�2�2��*�*�2�.�.�	0�	0�	0�����e�u��2�2�2��*�*�2�r�t�t�4�4�	6�	6�	6�����e�u��2�2�2��*�*�2�r�E�{�{�{�;�;�	=�	=�	=�����e�u��2�2�2��*�*�2�r�E�Q�/?�/?�/?�@�@�	B�	B�	B�	B�	Brc	��t��}|�dd���|�dd���|�t	dd���|�g����|�t	dd���|�gt	������|�t	dd���|�gt	d�������|�t	d	d���|�d
�������|�t	d	d���|�d
���t	������|�t	d	d���|�d
���t	d�������dS)Nr'rDrpr��xfooxrnrEr�rr�)r�r�r�r�rzr:r�r0s  r�test_set_defaults_with_argsz+TestSetDefaults.test_set_defaults_with_args�s���+�-�-�����e�u��-�-�-����D�'��2�2�2�����g��/�/�/��*�*�2�.�.�	0�	0�	0�����g��/�/�/��*�*�2�r�t�t�4�4�	6�	6�	6�����e�u�-�-�-��*�*�2�r�E�{�{�{�;�;�	=�	=�	=�����c�U�+�+�+��*�*�6�<�<�>�>�:�:�	<�	<�	<�����c�U�+�+�+��*�*�6�<�<�>�>�2�4�4�@�@�	B�	B�	B�����c�U�+�+�+��*�*�6�<�<�>�>�2��;�;�;�G�G�	I�	I�	I�	I�	Irc�`�t��}|�d���|���}|�d��}|�d���|�tdd���|�d�������dS)Nr'r�r�rDr�rp)r�r�rlrnr�rzr:r�)rr1rq�parser_as    r�test_set_defaults_subparsersz,TestSetDefaults.test_set_defaults_subparsers�s���+�-�-�����e��$�$�$��*�*�,�,�
��(�(��-�-�������&�&�&�����e�u�-�-�-��*�*�3�9�9�;�;�7�7�	9�	9�	9�	9�	9rc���td���}|�d���t|g���}|�td���|�g����dS)NFr�r'r�r�r�)rrr1s   r�test_set_defaults_parentsz)TestSetDefaults.test_set_defaults_parents�sm��+�U�;�;�;�����e��$�$�$�+�V�H�=�=�=������e����f�&7�&7��&;�&;�<�<�<�<�<rc�B�tj��}|����d��}|�d���|�d���|�t
d���|�dg����dS)Nr6rurr�)r*r+rlrnr�r�rzr:)rr1�xparsers   r�)test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparser�s����(�*�*���'�'�)�)�4�4�S�9�9�������"�"�"������#�#�#���������F�$5�$5�s�e�$<�$<�=�=�=�=�=rc�$�t��}|�dddd���|�d��|�dd�	��|�d
d���|�d
dd���|�t	dddd���|�g����|�dddd���|�t	dddd���|�g����dS)N�Wr6rar^r�rZr��XXrnr\r�rvr�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�7�7����D�!�!�!����D�$��/�/�/����C�s��+�+�+����C�s�D��9�9�9�	
����c�T�S�D�9�9�9��*�*�2�.�.�	0�	0�	0�	���d�c�T�S��9�9�9�����d�c�T�S�9�9�9��*�*�2�.�.�	0�	0�	0�	0�	0rc�N�t��}|�dddd���|�d��}|�d��|�dd	�
��|�dd�
��|�ddd���|�tdd	dd���|�g����|�dddd���|�tdddd���|�g����dS)Nr�r6rar^r�r'rZr�r�rnr\r�rvrr�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�sA��+�-�-�����c�S�C�3��7�7�7��)�)�%�0�0��
���4� � � �
���4���.�.�.�
���3�c��*�*�*�
���3�c�4��8�8�8�	
����c�T�S�D�9�9�9��*�*�2�.�.�	0�	0�	0�	���d�c�T�S��9�9�9�����d�c�T�S�9�9�9��*�*�2�.�.�	0�	0�	0�	0�	0rN)
rrr r�r�r�r�r�r�r�r@rrr�r��s�������B�B�B�I�I�I�"9�9�9�=�=�=�>�>�>�0�0�0�"0�0�0�0�0rr�c��eZdZd�ZdS)�TestGetDefaultc�8�t��}|�|�d����|�|�d����|�d��|�|�d����|�|�d����|�dtd���|�|�d����|�d|�d����|�d���|�d|�d����|�d|�d����dS)	Nr'rDr�r/rr�r4r)r�r��get_defaultr�r�r�r�r0s  r�test_get_defaultzTestGetDefault.test_get_default

so��+�-�-�����&�,�,�U�3�3�4�4�4����&�,�,�U�3�3�4�4�4����G�$�$�$����&�,�,�U�3�3�4�4�4����&�,�,�U�3�3�4�4�4����G�#�r��:�:�:����&�,�,�U�3�3�4�4�4�����V�/�/��6�6�7�7�7������)�)�)�����6�#5�#5�e�#<�#<�=�=�=�����V�/�/��6�6�7�7�7�7�7rN)rrr r�r@rrr�r�
s#������8�8�8�8�8rr�c��eZdZd�Zd�ZdS)�TestNamespaceContainsSimplec��tj��}|�d|��|�d|��dS)Nrr�)r*�	Namespace�assertNotIn�r�nss  r�
test_emptyz&TestNamespaceContainsSimple.test_empty!
sB��
�
�
!�
!������R� � � �����b�!�!�!�!�!rc��tjdd���}|�d|��|�d|��|�d|��|�d|��|�d|��dS)	Nrur�rprr�r\�xxr)r*r�r�r�r�s  r�test_non_emptyz*TestNamespaceContainsSimple.test_non_empty&
s���
�
�!�q�
)�
)�
)������R� � � ��
�
�c�2�����
�
�c�2��������r�"�"�"�����b�!�!�!�!�!rN)rrr r�r�r@rrr�r�
s2������"�"�"�
"�"�"�"�"rr�c��eZdZd�ZdS)�TestHelpFormattingMetaclassc�f�|dkrdSGd�dt��}dD]\}}||||���dS)N�HelpTestCasec�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc���||_||_|j|j|jfD]=}|j�d|��}|fd�}	||_n#t$rYnwxYwt|||���>dS)Nr�c��||��dSrNr@r�s  r�test_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapperC
r�r)�func_suffix�std_name�test_format�
test_print�test_print_filerr�r�)r�
test_classr�r�r�r�r�s       rrz?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__:
s���#.�� � (��
�"&�"2�"&�/�"&�"6�"8�A�A�I�,5�+=�+=�+=�{�{� K�I�5>�(�(�(�(��09��-�-��$�����������J�	�<�@�@�@�@�A�As�?�
A�Ac���tj|jji|jj��}t|dg��D]}|j|ji|j���t|dg��}|D]8\}}|j|ji|j��}|D]}|j|ji|j����9t|dg��}|r0|���}	|D]}
|	j	|
ji|
j���|S)Nr��argument_group_signatures�subparsers_signatures)
r*r+r�rurvr�r�r�rlrn)rr�r1�argument_sig�
group_sigs�	group_sig�
argument_sigsr��subparsers_sigsrq�
subparser_sigs           rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parserK
s���!�0��,�1�6��-�4�6�6��%,�F�4I�2�$N�$N�?�?�L�'�F�'��):�?�*6�*=�?�?�?�?�$�V�-H�"�M�M�
�0:�B�B�,�I�}�5�F�5�y�~�J�8A�8H�J�J�E�(5�B�B��*��*�L�,=�B�-9�-@�B�B�B�B�B�#*�&�2I�2�"N�"N��"�G�!'�!6�!6�!8�!8�J�)8�G�G�
�-�
�-�}�/A�G�1>�1E�G�G�G�G��
rc��t||j��}tj|��}d|_|�||��dSrN)r�r�r�r�r�r�)rr��parser_text�
expected_texts    r�_testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._testa
sF�� '���0@� A� A�
� (��
� >� >�
�!%����"�"�=�+�>�>�>�>�>rc��|�|��}t|d|jz��}|�||����dS)Nz	format_%s)r�r�r�r�)rr�r1rs    rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_formatg
sL���)�)�&�1�1�� ���t�7G�)G�H�H���
�
�6�6�6�8�8�,�,�,�,�,rc���|�|��}t|d|jz��}tt|j��}tt|jt
����	|��tt|j�����}tt|j|��n #tt|j|��wxYw|�||��dS�Nzprint_%s)	r�r�r�r�r�r�rrr�)rr�r1�print_�
old_streamr�s      rr�zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_printl
s����)�)�&�1�1�� ���d�6F�)F�G�G��$�S�$�-�8�8�
���T�]�K�M�M�:�:�:�<��F�H�H�H�")�#�t�}�"=�"=�"F�"F�"H�"H�K��C���
�;�;�;�;��G�C���
�;�;�;�;�����
�
�6�;�/�/�/�/�/s�06C�Cc���|�|��}t|d|jz��}t��}||��|���}|�||��dSr�)r�r�r�rrr�)rr�r1r��sfiler�s      rr�zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_filex
sk���)�)�&�1�1�� ���d�6F�)F�G�G��#�
�
����u�
�
�
�#�n�n�.�.���
�
�6�;�/�/�/�/�/rN)	rrr rr�r�r�r�r�r@rrr�r�8
sq������
A�
A�
A�"
�
�
�,
?�
?�
?�
-�
-�
-�


0�

0�

0�
0�
0�
0�
0�
0rr�))�usager�)rWr�)r�)r�rcr�r�r�r�r�s       rrz$TestHelpFormattingMetaclass.__init__4
s|���>�!�!��F�F	0�F	0�F	0�F	0�F	0�v�F	0�F	0�F	0�R&:�	1�	1�!�K���H�S�+�x�0�0�0�0�	1�	1rNrxr@rrr�r�2
s(������O1�O1�O1�O1�O1rr�r�c���eZdZ	eddd���Zedddd�	��ed
dd�
��edd���edd���edd���gZgZdZedzZdZ	dS)�TestHelpBiggerOptionalsrQ�DESCRIPTION�EPILOG�rSrT�epilogr_rrrs�0.1rur�r��X HELPrV�--y�Y HELPr�r'�FOO HELPrD�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�rWrsr@rrr�r��
s�������E��s��M�"*�,�,�,��	��D�+�i��?�?�?���D��H�5�5�5���E��!�!�!���E�
�#�#�#���E�
�#�#�#���!#��
�E����D� �G�G�Grr�c�\�eZdZ	d�ZejZejZejZdZedzZ	ej
Z
dS)�TestShortColumnsc�~�|�tj����}|�dd��dS)NrErI)rFrrGrDrHs  rrJzTestShortColumns.setUp�
s8�����	� =� ?� ?�@�@�����	�4� � � � � rz�        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a�
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

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

        EPILOG
    N)rrr rJr�r�r�r�r�rWrsr@rrr�r��
sa�������
!�!�!�#:�"J��"9�"M��"9�"S��
�E����D�:#:�"A�G�G�Grr�c��eZdZ	eddd���Zedddd�	��ed
dd�
��edd���edd���edd���gZedd���edd���eddd���gfgZdZedzZd Z	d!S)"�TestHelpBiggerOptionalGroupsrQr�r�r�r_rrrsr�rur�r�r�rVr�r�r�r'r�rDr�zGROUP TITLEzGROUP DESCRIPTIONr`rEzBAZ HELPrr�zZ HELPrjzN        usage: PROG [-h] [-v] [-x] [--y Y] [-z Z [Z ...]] foo bar baz
        a�
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        GROUP TITLE:
          GROUP DESCRIPTION

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

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

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

�E����D�,�G�G�Grr�c��eZdZ	edd���Zeddd���edd	�
��edd�
��ed
d�
��gZgZdZedzZdZ	dS)�TestHelpBiggerPositionals�USAGEr��r�rTr�r�r�rVr�r�r��ekiekiekifekangzEKI HELPrDr��        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@rrrrs�������>��s��m�D�D�D����D��H�5�5�5���E��!�!�!����J�/�/�/���E�
�#�#�#�	��!#��
�E����D��G�G�Grrc��eZdZ	edd���Zeddd���edd	d
���gZedd�
��eddd���gfgZdZedzZdZ	dS)�TestHelpReformattingrQze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedrXr�r�zoddly
    formatted -x help�r\rWr\rz
normal y helpr^z'
    oddly formatted group

descriptionr`r�r�z` oddly 
formatted    -a  help  
    again, so long that it should be wrapped over multiple linesrV�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@rrrr1s�������H��s�
�)�*�*�*��	��D�$�&=�	>�	>�	>���C��_�5�5�5���

��W�#0�
1�
1�
1��#�d�<�$�%�%�%�
&�		'�
!��
�E����D�(�G�G�Grrc��eZdZ	edd���Zeddd���edd	d
���gZed��edd
d���gfgZdZedzZdZ	dS)�TestHelpWrappingShortNamesrQzZD
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
DrXr�r�zxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrr\r�dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�r�zPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHArVr	a�
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

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

        options:
          -h, --help  show this help message and exit
          -x XX       XHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH
                      HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX

        ALPHAS:
          -a          AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH
                      HHAAHHH HHAAHHH HHA
        rNr�r@rrrres�������H��s��[�A�A�A����D�$�]�3�3�3���C��\�2�2�2���


��X����C��\��@�@�@�B�	C�!��
�E����D�,�G�G�Grrc���eZdZ	edd���Zedddd���ed	d
d���ed
dd���gZed��eddd���eddd���gfgZdZedzZdZ	dS)�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_rrrszZV 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 Vrur��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrr\�yyyyyyyyyyyyyyyyyyyyyyyyyrr
r��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@rrrr�s�������F��s��z�B�B�B����D�+�i��D�D�D���D�(��6�6�6���C���5�5�5���

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

�E����D�<�G�G�Grrc���eZdZ	ed���Zeddd���eddd	���ed
d
���eddd
���eddd���eddej���edddej���edddej���edejejd���g	Zed��ed dd!���ed"d#d$���ed%d%d���ed&d&d���gfgZ	d'Z
e
d(zZd)Zd*S)+�
TestHelpUsagerQr!rZr�rfrjr�r�r�r�r�rr�)rWrwr�r�r�zWhether to foo)rWrr/zWhether to barT)rWrorrz--foobarz--barfoorz--bazzzBazz!)rrorWr�rr\rrzrr4r�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�rkr�r�r�rWrsr@rrrr�s�������#��s��'�'�'����D��#�&�&�&���D��#�&�&�&���C�c������C�c��#�#�#���C�c��%�%�%���G�*�8�3Q�R�R�R���G�*�D�$�:�	<�	<�	<���D�*�j��1O�P�P�P���H�X�;�&�/�g�	?�	?�	?���

��W����C��C�c�*�*�*��C��A�C�(�(�(��C��#�S�)�)�)��C��#�S�)�)�)�	
�	�!��
�E����D�,�G�G�Grrc�n�eZdZed���Zedd���eddd���gZd	Zed
zZdZdS)
�TestHelpUsageWithParenthesesrQr!�
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�rWrsr@rrrr�sp�������s��'�'�'����L�"8�9�9�9���D�,�(F�G�G�G���

�E����D��G�G�Grrc���eZdZ	edd���ZgZed��edd���edd���gfed	��ed
d
���edd���gfgZd
ZedzZdZ	dS)�TestHelpOnlyUserGroupsrQF�rSrK�xxxxr�r�r�r��yyyyrrr\z.        usage: PROG [-x X] [-y Y] a b
        zn
        xxxx:
          -x X  x
          a     a

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

��V����C��#�����C��3����
�	�	!��
�E��	�	�D��G�G�Grrc��eZdZ	ed���Zedd���edd���ed��ed	��gZgZd
ZedzZdZ	d
S)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr!rZr�rr�r6r�rzz        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@rrr r 1s�������4��s��)�)�)����D�#������D�#������C�����C���	��!#��
�E��
�
�D��G�G�Grr c���eZdZ	ed���Zedd���edd���edd	���ed
d���ed��ed
��gZgZdZedzZdZ	dS)� TestHelpUsageLongProgOptionsWrapr!r!rZ�WWWWWWWWWWWWWWWWWWWWWWWWWrr�rr�YYYYYYYYYYYYYYYYYYYYYYYYYr�ZZZZZZZZZZZZZZZZZZZZZZZZZr�ra        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#Ns�������K��s��)�)�)����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���C�����C���
��!#��
�E����D��G�G�Grr#c��eZdZ	edd���Zed��ed��ed��gZgZdZedzZd	Z	d
S)�$TestHelpUsageLongProgPositionalsWrapr!Fr�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNr�r@rrr(r(rsv������M��s��5�9�9�9����H�
�
���H�
�
���H�
�
���
!#��
�E�
���D��G�G�Grr(c	���eZdZ	ed���Zedd���edd���edd	���ed
d���ed��ed
��ed��gZgZdZedzZdZ	dS)�TestHelpUsageOptionalsWraprQr!rZr$rr�rrr%rr&r�rr�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��s��'�'�'����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���C�����C�����C�����!#��
�E��
�
�D��G�G�Grr.c��eZdZ	ed���Zed��ed��ed��ed��ed��ed��gZgZd	Zed
zZdZ	dS)
�TestHelpUsagePositionalsWraprQr!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@rrr0r0�s�������8��s��'�'�'����D�	�	���D�	�	���D�	�	���H�
�
���H�
�
���H�
�
�
��!#��
�E�
���D��G�G�Grr0c���eZdZ	ed���Zedd���edd���edd	���ed
��ed��ed��gZgZd
ZedzZdZ	dS)�%TestHelpUsageOptionalsPositionalsWraprQr!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@rrr2r2�s�������F��s��'�'�'����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���H�
�
���H�
�
���H�
�
�
��!#��
�E����D��G�G�Grr2c��eZdZ	ed���Zedd���edd���edd	���gZgZd
ZedzZdZ	d
S)�TestHelpUsageOptionalsOnlyWraprQr!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@rrr4r4�s�������J��s��'�'�'����D�(�#�#�#���D�(�#�#�#���D�(�#�#�#���
!#��
�E�
���D��G�G�Grr4c��eZdZ	edd���Zed��ed��ed��gZgZdZedzZd	Z	d
S)� TestHelpUsagePositionalsOnlyWraprQFrr)r*r+z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r,rNr�r@rrr6r6sv������L��s���7�7�7����H�
�
���H�
�
���H�
�
���
!#��
�E����D��G�G�Grr6c
�2�eZdZ	ed���Zeded���edddd	d
���edd
d���eddddgdd���edd���eddd���gZed��edd ���ed!d"d#���gfgZd$Zed%zZ	d&Z
d'S)(�TestHelpVariableExpansionrQr!r�z"x %(prog)s %(default)s %(type)s %%rZrrr�XXXz y %(prog)s %(default)s %(const)s)rrorrWr�r�z$foo %(prog)s %(default)s %(choices)srer/rErur��BBBz!bar %(prog)s %(default)s %(dest)s)ror�r\rWr�zspam %(prog)s %(default)sr�r4rfzbadger %(prog)s %(default)s)rorWr�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�rWrsr@rrr8r8)s2������D��s��'�'�'����D�s�5�	7�	7�	7���D���%�3�	5�	5�	5���G�U�7�	9�	9�	9���G�U�Q��F�E�4�	6�	6�	6���F�4�5�5�5���H�c�(E�F�F�F���

��W����C��3�4�4�4��C��b�'?�@�@�@�
�	�!���E����D�"�G�G�Grr8c�D�eZdZ	edd���ZgZgZdZedzZdZ	dS)�&TestHelpVariableExpansionUsageSuppliedrQz%(prog)s FOO�rSr�z         usage: PROG FOO
        rhrNr�r@rrr<r<WsQ������J��s��n�=�=�=���� "���E����D�
�G�G�Grr<c�>�eZdZ	edd���ZgZgZdZeZdZ	dS)�$TestHelpVariableExpansionNoArgumentsrQFrz        usage: PROG
        rNr�r@rrr?r?hsE������E��s���7�7�7���� "���E��D��G�G�Grr?c�x�eZdZ	edej���Zedd���edd���gZgZdZ	d	Z
d	Zd
S)�TestHelpSuppressUsagerQr=r�rUr�r��	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)rrr rsr*rkr�r�r�rWr�rsr@rrrArAusp������=��s��h�.?�@�@�@����G�*�%�%�%���F��%�%�%���!#���D�
�E��G�G�GrrAc�~�eZdZ	edd���Zedej���edd���gZgZdZ	e	d	zZ
d
ZdS)�TestHelpSuppressOptionalrQFrr�r�r�rBz!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN�rrr rsr�r*rkr�r�r�rWrsr@rrrDrD�s|������I��s���7�7�7����G�(�+�,�,�,���F��%�%�%���!#��
�E����D�
�G�G�GrrDc��eZdZ	ed���Zedd���edd���gZed��ed	ej���gfgZd
Z	e	dzZ
dZd
S)�TestHelpSuppressOptionalGrouprQr!r�rUr�r�rBr�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*rkr�r�rWrsr@rrrGrG�s�������F��s��'�'�'����G�*�%�%�%���F��%�%�%���


��W�����G�(�*;�<�<�<�=�>�!��
�E����D��G�G�GrrGc�|�eZdZ	ed���Zedd���edej���gZgZdZ	e	dzZ
d	Zd
S)�TestHelpSuppressPositionalrQr!r�rUr�r�z-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNrEr@rrrKrK�sz������K��s��'�'�'����G�*�%�%�%���F��*�+�+�+���!#��
�E����D��G�G�GrrKc�\�eZdZ	ed���Zeddd���gZgZdZedzZd	Z	d
S)�TestHelpRequiredOptionalrQr!r�TrU)r�rWz+        usage: PROG [-h] --foo FOO
        rLrNr�r@rrrNrN�sg������8��s��'�'�'����G�d��4�4�4���!#��
�E����D��G�G�GrrNc�z�eZdZ	eddd���Zeddd���ed	d
d���gZgZd
ZedzZdZ	dS)�TestHelpAlternatePrefixCharsrQz^;F)rSrJrKz^^foor�rUrVz;bz;;barrYr�z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNr�r@rrrPrP�s������D��s��T�E�J�J�J����G�L�z�:�:�:���D�'�
�+�+�+���!#��
�E����D��G�G�GrrPc�t�eZdZ	edd���Zedd���edd���gZgZd	Zed
zZdZ	dS)
�TestHelpNoHelpOptionalrQFrr�rUr�r�rBz-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        rNr�r@rrrRrR�sy������G��s���7�7�7����G�*�%�%�%���F��%�%�%���!#��
�E����D��G�G�GrrRc�j�eZdZ	ed���Zed��ed��gZgZdZedzZdZ	dS)	�TestHelpNonerQr!r�r�rHz�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rNr�r@rrrTrT
si������;��s��'�'�'����G�����F�����!#��
�E����D��G�G�GrrTc	��eZdZ	ed���Zedddd���edd	d
d���edd
dd���edddd���gZgZdZedzZdZ	dS)�TestHelpTupleMetavarrQr!rZrfr�)�W1�W2)rWrwr\r�r�r�)�X1�X2rr\rz)�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@rrrVrV%s�������,��s��'�'�'����D�s�#�|�<�<�<���D�s�#�|�<�<�<���D�s�!�-?�@�@�@���D�s�#�x�8�8�8�	��!#��
�E����D��G�G�GrrVc��eZdZ	edejd���Zedd���edd���gZed	d
���edd
���gfgZdZ	e	dzZ
dZdS)�TestHelpRawTextrQ�7Keep the formatting
    exactly as it is written

here
�rS�formatter_classrTr�z-    foo help should also
appear as given herer�r�rBr^�?    This text
  should be indented
    exactly like it is here
r`r/rY�>        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�rWrsr@rrr`r`@s�������'��s�
�X�%B������	��G�1�	2�	2�	2���F��%�%�%���

��W�#B�
C�
C�
C��#�g�J�
'�
'�
'�	(�	*�!��
�E����D�,�G�G�Grr`c��eZdZ	edejd���Zedd���edd���gZed	d
���edd
���gfgZdZ	e	dzZ
dZdS)�TestHelpRawDescriptionrQrarbr�z4  foo help should not
    retain this odd formattingr�r�rBr^rdr`r/rYrea�
        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�rWrsr@rrrhrhqs�������'��s�
�X�%I������	��G�;�	<�	<�	<���F��%�%�%���

��W�#B�
C�
C�
C��#�g�J�
'�
'�
'�	(�	*�!��
�E����D�*�G�G�Grrhc�^�eZdZ	edejd���Zedd���eddd	�
��edejdd
���edejdej���eddd���edd���edddd���gZ	edd���ede
dd� ��gfgZd!Zed"zZ
d#Zd$S)%�TestHelpArgumentDefaultsrQrTrbr�z)foo help - oh and by the way, %(default)sr�r/r�rYrVz--tazzWhether to taz itT)rrWroz--corgezWhether to corge itz--quuxzSet the quuxr)rWror�rBr4r��woodenzbadger helprpr^r`rerO)r�rorWz�        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�rkr�r�r�r�rWrsr@rrrkrk�s@������0��s�
�X�%K�!�#�#�#��
	��G�E�F�F�F���G�L�z�:�:�:���G�H�:�$�d�	4�	4�	4���I�h�<�&��0A�	C�	C�	C���H�>�2�6�6�6���F��%�%�%���H�C��
�F�F�F�
��

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

�#�g�C��*�
=�
=�
=�	>�	@�!��
�E�
���D�*�G�G�Grrkc�`�eZdZ	edd���Zedddd���gZgZd	Zed
zZdZ	dS)
�TestHelpVersionActionrQrTrX�-Vrrrsz3.6ruz&        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@rrroro�sg������6��s��M�B�B�B���3�t�[��E�R�R�R�S�� "��
�E����D��G�G�Grroc��eZdZ	ed���Zeddddej���edd	�
��edd�
��gZgZd
Z	e	dzZ
dS)�TestHelpVersionActionSuppressrQr!r_rrrsrt)rrsrWr�rUr�r�rBrHrIN)rrr rsr�r*rkr�r�r�rWr@rrrrrr�s�������M��s��'�'�'����D�+�i���"�	$�	$�	$���G�*�%�%�%���F��%�%�%�	��!#��
�E����D�D�Drrrc�t�eZdZ	edd���Zedddd���gZd	�d
D��ZdZedzZd
Z	dS)�TestHelpSubparsersOrderingrQ�display some subcommandsrXr_rrrsr�ruc�.�g|]}t|�����S)r��rs)r�rcs  rr�z%TestHelpSubparsersOrdering.<listcomp>s6��D�D�D�!%�!�d�^�^�^�D�D�Dr)r�rr�r4r��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�rWrsr@rrrtrts�������?��s��'A�C�C�C���3�t�[��E�R�R�R�S��D�D�)B�D�D�D��
�E��
�
�D��G�G�Grrtc�x�eZdZ	edd���Zedddd���gZd	Zd
�eD��ZdZedzZ	d
Z
dS)�"TestHelpSubparsersWithHelpOrderingrQrurXr_rrrsr�ru))r�za subcommand help)rzb subcommand help)r�zc subcommand help)r4zd subcommand help)r�ze subcommand helpc�6�g|]\}}t||�����S))rcrWrw)r�rcrWs   rr�z-TestHelpSubparsersWithHelpOrdering.<listcomp>*s?��@�@�@�!+��t�!�d��6�6�6�@�@�@rrxa�
        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�rWrsr@rrrzrzs�������?��s��'A�C�C�C���3�t�[��E�R�R�R�S���O�@�@�/>�@�@�@��
�E����D�"�G�G�Grrzc��eZdZd�Zeddej���Zede���ede���ede	d	�
��gZ
gZdZedzZ
d
ZdS)�TestHelpMetavarTypeFormatterc��|SrNr@rs r�custom_typez(TestHelpMetavarTypeFormatter.custom_typeJs���
rrQrT)rSrTrcr�rdr�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�rgr�r�r�rWrsr@rrr~r~Hs�����������s��M�+3�+L�N�N�N���3�s��-�-�-��3�t�+�6�6�6��3�t�%��F�F�F�H��!#��
�E����D��G�G�Grr~c�j�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�ZdS)�TestInvalidArgumentConstructorsc�d�tj��}|jt|jg|�Ri|��dSrN)r*r+r�r�r��rrurvr1s    r�assertTypeErrorz/TestInvalidArgumentConstructors.assertTypeErrorlsR���(�*�*�����)�V�%8�	+��	+�	+�	+�#)�	+�	+�	+�	+�	+rc�d�tj��}|jt|jg|�Ri|��dSrN)r*r+r�r�r�r�s    r�assertValueErrorz0TestInvalidArgumentConstructors.assertValueErrorqsR���(�*�*�����*�f�&9�	+��	+�	+�	+�#)�	+�	+�	+�	+�	+rc��|�dd���|�dd���|�dd���|�di���dS)	Nr�)rDrr')�callbackr@)�
callback_args)�callback_kwargs�r�rs r�test_invalid_keyword_argumentsz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentsvsl�����T�t��,�,�,����T�E��2�2�2����T���4�4�4����T�2��6�6�6�6�6rc�d�|���dD]}|�|����dS)N)r�r�rr��rrs  r�test_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destination|sG��������)�	0�	0�F�� � �� �/�/�/�/�	0�	0rc�Z�|�d��|�d��dS)Nr�z---�r�rs r�test_invalid_option_stringsz;TestInvalidArgumentConstructors.test_invalid_option_strings�s0�����d�#�#�#����e�$�$�$�$�$rc�z�|�dd���|�dttf���dS)Nr�r�rd)r�r�rgrs r�test_invalid_typez1TestInvalidArgumentConstructors.test_invalid_type�s>�����g�E��2�2�2����g�S�%�L��9�9�9�9�9rc��|�dd���|�dd���|�dd���tj��}|�t��5}|�dd���ddd��n#1swxYwY|�dt|j����dS)	Nr�r'rrEr��r�r�z
store-truezunknown action)	r�r*r+r�r�r�r�r�r�r�s   r�test_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_action�s�����d�5��1�1�1����e�E��2�2�2����g�.A��B�B�B��(�*�*��
�
�
�z�
*�
*�	>�b�������=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>��
�
�&��B�L�(9�(9�:�:�:�:�:s�3B�B�Bc�:�tj��}|�d���|�t��5}|�dd���ddd��n#1swxYwY|�dt
|j����dS)Nr'r'rDrEz+dest supplied twice for positional argument)r*r+r�r�r�r�r�r�r�s   r�test_multiple_destz2TestInvalidArgumentConstructors.test_multiple_dest�s����(�*�*�������'�'�'�
�
�
�z�
*�
*�	3�b�����E��2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3��
�
�C��"�,�'�'�	)�	)�	)�	)�	)s�A(�(A,�/A,c��dD]H}tt���td���td���fD]}|jd	d|i|����IdS)
N)rr�r�r�r�rdr�rv�abr�r�r)r�)rmr�r�)rr�attrss   r�test_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actions�s~��0�	C�	C�F��C�.�.�.�$�S�/�/�/��t�,�,�,�.�
C�
C��$��$�B�B�&�B�E�B�B�B�B�
C�	C�	Crc�p�dD]2}|�dd|���|�dd|����3dS)N)r�r�r�r�r'r�r��rwrr�r�s  r�!test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actions�s\��<�	A�	A�F�
� � ��U�6� �B�B�B�
� � ��S�� �@�@�@�@�
	A�	Arc���dD]i}|�dd|���|�dd|���dD]4}|�dd||���|�dd||����5�jdS)	Nr�r�rr�r�)rur�r�r')rrwrr�)rrrws   r�#test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actions�s���)�	B�	B�F�
�!�!�$�a��!�?�?�?��!�!�&��&�!�A�A�A�'�
B�
B���%�%�d�%�,1�&�&�B�B�B��%�%�f�E�,1�&�&�B�B�B�B�
B�	B�	Brc�@�dD]}|�dd|����dS)N)rr�r�r�r�r�r�s  r�test_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actions�s?��5�	A�	A�F�
� � ��S�� �@�@�@�@�	A�	Arc��|�dd���|�ddd���|�ddtj���dS)Nr��parsersrrQ)rrS)rr�)r�r*r+rs r�"test_parsers_action_missing_paramszBTestInvalidArgumentConstructors.test_parsers_action_missing_params�sl�����Y�y��9�9�9����Y�y�v��F�F�F����Y�y�*2�*A�	�	C�	C�	C�	C�	Crc�4�|�dd���dS)Nr'Tr�r�rs r�test_required_positionalz8TestInvalidArgumentConstructors.test_required_positional�s!�����U�T��2�2�2�2�2rc���Gd�dt���G�fd�dt��}tj��}|��|jd|�����|��|jd|�����dS)Nc��eZdZdS)�ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNr�r@rr�Successr��s�������Drr�c�$��eZdZ	d�fd�	Zd�ZdS)�HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActionFc�@��|dkr|�ur|�ur����dSdSdS)Nr�r@)r�option_stringsr(rror�r�s      �rrzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__�sB����6�>�>���'�'�"�g�-�-�")�'�)�)�O�"�>�'�'�-�-rc��dSrNr@rws   rr1zQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__�s���rN)F)rrr rr1)r�s�rr9r��sG�������#(�	
,�	
,�	
,�	
,�	
,�	
,�
�
�
�
�
rr9rf)rrorr�)r�r�r*r+r�r�)rr9r1r�s   @r�test_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_action�s����	�	�	�	�	�i�	�	�	�	�	�	�	�	�	�	�V�	�	�	� �(�*�*�����'�6�#6��!'���	�	I�	I�	I����'�6�#6��!'���	�	I�	I�	I�	I�	IrN)rrr r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r@rrr�r�is������7�+�+�+�
+�+�+�
7�7�7�0�0�0�
%�%�%�:�:�:�;�;�;�)�)�)�C�C�C�A�A�A�B�B�B�A�A�A�C�C�C�3�3�3�I�I�I�I�Irr�c��eZdZd�Zd�ZdS)�TestActionsReturnedc�P�tj��}|�d��}|�|jd��|�dd��}|�|jd��|�dd��}|�|jd��dS)	Nr�r'r�r/rDr�rr�)r*r+r�r�r(�rr1rs   rr�zTestActionsReturned.test_dest�s����(�*�*���$�$�W�-�-�������e�,�,�,��$�$�T�7�3�3�������e�,�,�,��$�$�T�4�0�0�������c�*�*�*�*�*rc�4�tj��}|�ddddtddgddd	�
�	�	}|�|jd��|�|jd��|�|jd��|�|jt��|�|j	ddg��|�|j
d��|�|jd��|�|jd	��dS)Nr�r�rr�rur�rm�BARrE)rwrror�r�rWr\r()
r*r+r�r�r�rwrror�r�rWr\r(r�s   r�	test_misczTestActionsReturned.test_misc�s���(�*�*���$�$�W�C�r�-/�c�A�q�6�*/��U�%�L�L��	
�����s�+�+�+������r�*�*�*�������,�,�,������c�*�*�*������!�Q��0�0�0������e�,�,�,�������/�/�/������e�,�,�,�,�,rN)rrr r�r�r@rrr�r��s2������+�+�+�-�-�-�-�-rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestConflictHandlingc�T�|�ttjd���dS)Nr')�conflict_handler)r�r�r*r+rs r�
test_bad_typez"TestConflictHandling.test_bad_types3�����*�h�&=�+0�	�	2�	2�	2�	2�	2rc��tj��}|�d��|�tj|jd��|�d��|�tj|jd��dS)Nr�rf)r*r+r�r�rr0s  r�test_conflict_errorz(TestConflictHandling.test_conflict_errors����(�*�*�����D�!�!�!����(�0� �-�t�	5�	5�	5����H�%�%�%����(�0� �-�x�	9�	9�	9�	9�	9rc���tj}|dd���}|�dd���|�dd���|�|���tjd����|�d	d
���|�d	d���|�|���tjd
����dS)NrQ�resolve)rSr�r�zOLD Xr�zNEW Xz�            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            rf�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�)rr2r1s   r�test_resolve_errorz'TestConflictHandling.test_resolve_errors���,�
����)�D�D�D�����D�w��/�/�/����D�w��/�/�/�����+�+�-�-�x��@�0�0�	�	�	�	���H�j��9�9�9����H�j��9�9�9�����+�+�-�-�x��@�0�0�	�	�	�	�	rc��tj��}|���}|�ddg���|�tj|jd��|�tj|jd��|�tj|jddg���|�tj|jddg���dS)N�fullname�aliasr�r�)r*r+rlrnr�r)rr1�sps   r�test_subparser_conflictz,TestConflictHandling.test_subparser_conflict-s����(�*�*��
�
"�
"�
$�
$��
�
�
�j�7�)�
�4�4�4����(�0��-��	5�	5�	5����(�0��-��	2�	2�	2����(�0��-��:�,�	�	H�	H�	H����(�0��-��7�)�	�	E�	E�	E�	E�	ErN)rrr r�r�r�r�r@rrr�r�sU������2�2�2�9�9�9����2E�E�E�E�Err�c�F�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
S)�TestOptionalsHelpVersionActionsc��|�t��5}|�|�����ddd��n#1swxYwY|�|���|jj��dSrN)r�r�r:r�r�r�r�r�)rr1r�r�s    r�assertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExitBs���
�
�
�2�
3�
3�	0�r����h�n�n�.�.�/�/�/�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0�	0����	0�	0�	0�	0�����+�+�-�-�r�|�/B�C�C�C�C�Cs�(A�A�Ac�H�|�t|j|��dSrN)r�r�r:�rr1rus   rrNz9TestOptionalsHelpVersionActions.assertArgumentParserErrorGs$�����-�v�/@�$�G�G�G�G�Grc���t��}|�dddd���|�|d��|�|d��|�tt
|d��dS)	Nr_rrrsrtrur4rP�format_version�r�r�r�r�r�r�r0s  r�test_versionz,TestOptionalsHelpVersionActions.test_versionJsw��+�-�-�����D�+�i���O�O�O�� � ���.�.�.�� � ���2�2�2����.�'�6�;K�L�L�L�L�Lrc�(�td���}|�dddd���|�t��5}|�dg��ddd��n#1swxYwY|�d|jj��dS)	N�PPPr!r_rrrsz%(prog)s 3.5ruzPPP 3.5
�r�r�r�r�r:r�r�r�r�s   r�test_version_formatz3TestOptionalsHelpVersionActions.test_version_formatQs���+��7�7�7�����D�+�i���X�X�X�
�
�
�2�
3�
3�	&�r����t�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�����b�l�&9�:�:�:�:�:s�A'�'A+�.A+c���td���}|�dddd���|�|d��|�|d	��|�tt
|d
��dS)NFr�r_rrrsrtrur4rPr�)r�r�rNr�r�r�r0s  r�test_version_no_helpz4TestOptionalsHelpVersionActions.test_version_no_helpXs|��+�U�;�;�;�����D�+�i���O�O�O��&�&�v�t�4�4�4��&�&�v�x�8�8�8����.�'�6�;K�L�L�L�L�Lrc�&�td���}|�ddd���|�t��5}|�dg��ddd��n#1swxYwY|�d|jj��dS)Nr9r!rprsz%(prog)s 3.7ruzXXX 3.7
r�r�s   r�test_version_actionz3TestOptionalsHelpVersionActions.test_version_action_s���+��7�7�7�����D��N��K�K�K�
�
�
�2�
3�
3�	&�r����t�f�%�%�%�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&�	&����	&�	&�	&�	&�����b�l�&9�:�:�:�:�:s�A&�&A*�-A*c���td���}|�|d��|�|d��|�|d��|�|d��dS)NFr�r4rPr_rr)r�rNr0s  r�test_no_helpz,TestOptionalsHelpVersionActions.test_no_helpfsp��+�U�;�;�;���&�&�v�t�4�4�4��&�&�v�x�8�8�8��&�&�v�t�4�4�4��&�&�v�{�;�;�;�;�;rc�F�t��}|�dd���|�dd���|�|d��|�|d��|�|d��|�t
t|d��dS)	Nr�rWrrrsr_rrr�)r�r�r�rNr�r�r�r0s  r�test_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_versionms���+�-�-�����D���0�0�0����D���3�3�3�� � ���.�.�.��&�&�v�t�4�4�4��&�&�v�{�;�;�;����.�'�6�;K�L�L�L�L�Lrc��t��}|�ddd���|�dd���|�d��gd	�}|d
dgz}|D]b}|D]	}|�d|��}�
|�||d
z��|�||dz��|�tt
|d���cdS)Nrrrsrtrur�r�rr\)rr�r'z-x barzbaz -xz--bad-optionzfoo bar bazz %s r4rPr�r�)rr1�valid_prefixes�valid_suffixes�prefix�suffixrs       r�!test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_argumentsvs��+�-�-�����K�	�5��I�I�I����D���6�6�6����C� � � �?�>�>��'�>�=�*I�I��$�	Q�	Q�F�(�
8�
8��(.�����7����$�$�V�V�d�]�;�;�;��$�$�V�V�h�->�?�?�?����n�g�v�?O�P�P�P�P�	Q�	QrN)rrr r�rNr�r�r�r�r�r�r�r@rrr�r�?s�������+�D�D�D�
H�H�H�M�M�M�;�;�;�M�M�M�;�;�;�<�<�<�M�M�M�Q�Q�Q�Q�Qrr�c�@�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	S)
�TestStringsc�f�ttfD]!}|�||��|���"dSrN)r�r�r�)r�obj�
result_stringr5s    r�assertStringEqualzTestStrings.assertStringEqual�s@���$�K�	7�	7�D����T�T�#�Y�Y�
�6�6�6�6�	7�	7rc�x�tjgd�ddddgd�ddd	�
�	�	}d}|�||��dS)N)r�r�r�rr�r�r�rur�rzF�HELP�METAVAR�	r�r(r�rwror�r�rWr\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*r9r�)r�optionr s   r�
test_optionalzTestStrings.test_optional�sf����0�0�0������I�I����	�	�	��
Q�	�	
���v�v�.�.�.�.�.rc��tjgdtddgd�ddd��	�	}d	tz}|�||��dS)
Nr�r�re)rfg�?reTzH 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*r9rgr�)r�argumentr s   r�
test_argumentzTestStrings.test_argument�si���?������#�O�O����	 �	 �	 ��
@�BG�
H�	�	
���x��0�0�0�0�0rc�b�tjdd���}d}|�||��dS)Nrr�rzNamespace(foo=42, bar='spam')�r*r�r��rr�r s   r�test_namespacezTestStrings.test_namespace�s8��
�
�B�F�
3�
3�
3��0�����r�6�*�*�*�*�*rc�\�tjdiddi��}d}|�||��dS)N�"�quotezNamespace(**{'"': 'quote'})r@r�r�s   r�'test_namespace_starkwargs_notidentifierz3TestStrings.test_namespace_starkwargs_notidentifier�s=��
�
�
1�
1�3��.�
1�
1��2�����r�6�*�*�*�*�*rc�`�tjdddiddi��}d}|�||��dS)Nr�rur�rz Namespace(a=1, **{'"': 'quote'})r@r�r�s   r�2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifier�sB��
�
�
6�
6�!�
6��W�~�
6�
6��7�����r�6�*�*�*�*�*rc�\�tjdiddi��}d}|�||��dS)N�validTzNamespace(valid=True)r@r�r�s   r�$test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifier�s=��
�
�
2�
2�7�D�/�
2�
2��(�����r�6�*�*�*�*�*rc�z�tjd���}dtjz}|�||��dS)NrQr!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�sH���(�f�5�5�5��
�'�5�
6�	�	
���v�v�.�.�.�.�.rN)rrr r�r�r�r�rrrr	r@rrr�r��s�������=�7�7�7�/�/�/�"1�1�1�"+�+�+�
+�+�+�
+�+�+�
+�+�+�
/�/�/�/�/rr�c� �eZdZd�Zd�Zd�ZdS)�
TestNamespacec��tj��}|�tt|d��tjdd���}|�|jd��|�|jd��dS)Nr�rr�r�)r*r�r�r�r�r�r�rr�s  r�test_constructorzTestNamespace.test_constructor�su��
�
�
!�
!�����.�'�2�s�;�;�;�
�
�"��
/�
/�
/�������r�"�"�"������v�&�&�&�&�&rc�V�tjdd���}tjdd���}tjd���}tjd���}|�||��|�||��|�||��|�||��|�||��|�||k��|�||k��|�||k��|�||k��dS)Nrur�r�)rr�)r�r�)r*r�r��assertNotEqual�
assertTrue)r�ns1�ns2�ns3�ns4s     r�
test_equalityzTestNamespace.test_equality�s��� �1��*�*�*��� �1��*�*�*��� �1�%�%�%��� �1�%�%�%������c�"�"�"����C��%�%�%����C��%�%�%����C��%�%�%����C��%�%�%�����s�
�#�#�#�����s�
�#�#�#�����s�
�#�#�#�����s�
�#�#�#�#�#rc���tjdd���}|�|�d��t��|�|�d��t��dS)Nrur�r�)r*r��assertIsr��NotImplemented�__ne__r�s  r�$test_equality_returns_notimplementedz2TestNamespace.test_equality_returns_notimplemented�sY��
�
�!�q�
)�
)�
)���
�
�b�i�i��o�o�~�6�6�6��
�
�b�i�i��o�o�~�6�6�6�6�6rN)rrr r
rrr@rrrr�sA������'�'�'�$�$�$� 7�7�7�7�7rrc� �eZdZd�Zd�Zd�ZdS)�TestEncodingc���tj�|��\}}|dz
}t|dd���5}|���ddd��dS#1swxYwYdS)Nz.pyr�r
rg)rRrZ�splitextrir�)rrZr�rs    r�_test_module_encodingz"TestEncoding._test_module_encoding�s����'�"�"�4�(�(���a���
��
�$��g�
.�
.�
.�	�!�
�F�F�H�H�H�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�A�A �#A c�D�|�tj��dSrN)rr*�__file__rs r�test_argparse_module_encodingz*TestEncoding.test_argparse_module_encodings���"�"�8�#4�5�5�5�5�5rc�:�|�t��dSrN)rr!rs r�"test_test_argparse_module_encodingz/TestEncoding.test_test_argparse_module_encodings���"�"�8�,�,�,�,�,rN)rrr rr"r$r@rrrr�sA���������6�6�6�-�-�-�-�-rrc��eZdZd�ZdS)�TestArgumentErrorc�z�d}tjd|��}|�t|��|��dS)Nz
my error here)r*rr�r�)rr�r�s   r�test_argument_errorz%TestArgumentError.test_argument_error
s;�����&�t�S�1�1������U���S�)�)�)�)�)rN)rrr r(r@rrr&r&s#������*�*�*�*�*rr&c��eZdZd�ZdS)�TestArgumentTypeErrorc�,�d�}tdd���}|�d|���|�t��5}|�dg��ddd��n#1swxYwY|�d|jj��dS)	Nc�*�tjd���)N�spam!)r*�ArgumentTypeErrorrs rr�z<TestArgumentTypeError.test_argument_type_error.<locals>.spams���,�W�5�5�5rrQFrr�rdr9z-usage: PROG x
PROG: error: argument x: spam!
)r�r�r�r�r:r�r�r�)rr�r1r�s    r�test_argument_type_errorz.TestArgumentTypeError.test_argument_type_errors���	6�	6�	6�,��%�H�H�H�����C�d��+�+�+�
�
�
�2�
3�
3�	'�r����u�g�&�&�&�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'�	'����	'�	'�	'�	'����J���,�	.�	.�	.�	.�	.s�A)�)A-�0A-N)rrr r/r@rrr*r*s#������
.�
.�
.�
.�
.rr*c� �eZdZd�Zd�Zd�ZdS)�TestMessageContentErrorc��tdd���}|�dt���|�dtd���|�d	td
���|�t
��5}|�g��ddd��n#1swxYwYt|j��}|�|d��|�|d��|�|d	��|�t
��5}|�d
g��ddd��n#1swxYwYt|j��}|�	|d��|�|d��|�|d	��|�t
��5}|�d
dg��ddd��n#1swxYwYt|j��}|�	|d��|�	|d��|�|d	��dS)NrQrr=�req_posrd�-req_optTr��need_oner�)r�rw�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�B�B�����I�C��0�0�0����J�S�4��@�@�@����J�S���<�<�<�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����i�(�(�(�����j�)�)�)�
�
�
�2�
3�
3�	/�r����}�o�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��"�,��������i�(�(�(�����i�(�(�(�����j�)�)�)�
�
�
�2�
3�
3�	=�r����}�l�;�<�<�<�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=�	=����	=�	=�	=�	=��"�,��������i�(�(�(�����i�(�(�(�����j�)�)�)�)�)s6�B$�$B(�+B(�E�E�	E�=G!�!G%�(G%c�L�tdd���}|�dt���|�dtd���|�d	td
d���|�t��5}|�g��ddd��n#1swxYwYt|j��}|�	|d��|�	|d��|�
|d
��|�t��5}|�dg��ddd��n#1swxYwYt|j��}|�	|d��|�
|d��|�
|d
��dS)NrQrr=r3rdz	--req_optTr�z	--opt_optr�)r�rwror6�opt_optz--req_opt=1)r�r�r�r��boolr�r�r:r�r=r�r8s    r�%test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_messageCs��+��r�B�B�B�����I�C��0�0�0����K�c�D��A�A�A����K�d�#�$(�	�	*�	*�	*�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����i�(�(�(�����i�(�(�(�
�
�
�2�
3�
3�	/�r����}�o�.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��"�,��������i�(�(�(�����i�(�(�(�����i�(�(�(�(�(s$�B%�%B)�,B)� E�E�
Ec��tdd���}|�d��|�ddd���|�t��5}|�g��ddd��n#1swxYwYt|j��}|�|d��|�|d��dS)	NrQrr=r3�optional_positionalr�rr�)	r�r�r�r�r:r�r�r=r�r8s    r�'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_messageVs��+��r�B�B�B�����I�&�&�&����1��f��M�M�M�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����3�4�4�4�4�4s�A;�;A?�A?N)rrr r9r=r@r@rrr1r1(sA������*�*�*�2)�)�)�&5�5�5�5�5rr1c��eZdZd�ZdS)�TestTypeFunctionCallOnlyOncec����fd�}tj��}|�d|d���|�d�����}��t
d���|��dS)Nc�4����|d��dS)Nr-�
foo_converted�r�)�string_to_convertrs �rr�zLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spamhs������.��8�8�8�"�?rr�rDr�z--foo spam!rEr)r*r+r�r:r�r�rz�rr�r1rus`   r�!test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_oncegs����	#�	#�	#�	#�	#��(�*�*�����G�$���>�>�>�� � ��!4�!4�!6�!6�7�7�������0�0�0�$�7�7�7�7�7rN)rrr rIr@rrrBrBes#������8�8�8�8�8rrBc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestTypeFunctionCalledOnDefaultc�����fd�}tj��}|�d|d���|�g��}��td���|��dS)Nc�4����|d��dS)NrrErF)�int_to_convertrs �rr�z]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spamxs������^�Q�/�/�/�"�?rr�rr�r�r*r+r�r:r�rzrHs`   r�/test_type_function_call_with_non_string_defaultzOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultws~���	#�	#�	#�	#�	#��(�*�*�����G�$���:�:�:�� � ��$�$����������D�)�)�)�)�)rc���d�}tj��}|�d|d���|�g��}|�td���|��dS)Nc��dS)NrEr@)rNs rr�zYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam�s��"�?rr��0r�rErrOrHs    r�+test_type_function_call_with_string_defaultzKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default�sv��	#�	#�	#��(�*�*�����G�$���<�<�<�� � ��$�$�������0�0�0�$�7�7�7�7�7rc���d�}tj��}|�d|d���|�g��}|�td���|��dS)Nc��|dzS)Nr�r@)�str_to_converts rrEzYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�s
��!�C�'�'r�--testr�r�z**)r�rO)rrEr1rus    r�)test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default�su��	(�	(�	(��(�*�*�����H�6�3��?�?�?�� � ��$�$��	
���������-�-�-�-�-rc���tj��}|�ddtgd���|�g��}|�|jg��dS)NrXr�r�)r(r�ror)r*r+r�r�r:r�r�r�s   r�test_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906�sk���(�*�*�����H�6��$&�x�	�	9�	9�	9�� � ��$�$�������B�'�'�'�'�'rN)rrr rPrTrYr[r@rrrKrKusP������	*�	*�	*�8�8�8�
.�
.�
.�(�(�(�(�(rrKc�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestParseKnownArgsc�V�tj��}|�d��dS)Nr@�r*r+r:r0s  r�test_arguments_tuplez'TestParseKnownArgs.test_arguments_tuple��*���(�*�*�����"�����rc�V�tj��}|�g��dSrNr_r0s  r�test_arguments_listz&TestParseKnownArgs.test_arguments_list�rarc��tj��}|�d��|�d��dS)Nr�r��r*r+r�r:r0s  r�test_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positional�s>���(�*�*�����C� � � ����&�!�!�!�!�!rc��tj��}|�d��|�dg��dS)Nr�rer0s  r�test_arguments_list_positionalz1TestParseKnownArgs.test_arguments_list_positional�s@���(�*�*�����C� � � ����3�%� � � � � rc�"�tj��}|�d��|�d�����\}}|�t
d���|��|�ddg|��dS)Nr�z--foo F --bar --baz�Frr/re)r*r+r�r�r�r�rz)rr1ru�extrass    r�test_optionalsz!TestParseKnownArgs.test_optionals�s����(�*�*�����G�$�$�$��.�.�/D�/J�/J�/L�/L�M�M���f���������d�+�+�+����'�7�+�V�4�4�4�4�4rc�t�tj��}|�dddt���|�dd���|�d��gd	�}|�|��\}}|�t
d
dd�
��|��|�gd�|��dS)Nr_r�ru)rwrr�rfr�rr4)rBrr�r_r�rHrzTrB)�vr�r4)rr�rH)r*r+r�r�r�r�rz)rr1r�rurks     r�
test_mixedzTestParseKnownArgs.test_mixed�s����(�*�*�����D��1�3��?�?�?����H�]��;�;�;����H�%�%�%�2�2�2���.�.�t�4�4���f�����a�d�3�7�7�7��>�>�>����,�,�,�f�5�5�5�5�5rc���tj��}|�ddd���|�dd���|�dg��}|�tdgg���|��|�ddg��}|�tgg���|��|�d	g��}|�tdgg���|��|�ddg��}|�tgg���|��|�gd
���}|�tddgd
dg���|��dS)Nrr�r�rvrDz--foo=--r�rz-f--)r�r�rr�r�r4r�rr�r4rOr�s   r�test_double_dashz#TestParseKnownArgs.test_double_dash�sw���(�*�*�����D�'���5�5�5����E���-�-�-�� � �*��.�.��������B�/�/�/��6�6�6�� � �'�4��1�1��������+�+�+�T�2�2�2�� � �&��*�*��������B�/�/�/��6�6�6�� � �$���.�.��������+�+�+�T�2�2�2�� � �!D�!D�!D�E�E�������c�
��c�
�;�;�;�T�B�B�B�B�BrN)
rrr r`rcrfrhrlrorqr@rrr]r]�s�������������"�"�"�
!�!�!�
5�5�5�	6�	6�	6�C�C�C�C�Crr]c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestIntermixedArgsc	��tjd���}|�dd���|�ddd�	��}|�d
��|�ddt�
��d���}|�|��}|�tdd
dgd����|��|�|��\}}|�tdd
dg���|��|�gd�|��d���}|�	|��\}}|�tdd
ddg���|��|�gd�|��|�
|j��|�|jd��dS)NrQr!r�r'r'r/rDTr��cmd�restr�)rwr�zcmd --foo x 1 --bar y 2 3r\r�r�)rDrur'rv�rr�r�z!cmd --foo x 1 --error 2 --bar y 3ru)z--errorr�r�)
r*r+r�r�r��parse_intermixed_argsr�rzr��parse_known_intermixed_argsr�r�r�)rr1rDr�rurks      r�
test_basiczTestIntermixedArgs.test_basic�s����(�f�5�5�5�����G�%��0�0�0��!�!�'���!�E�E�����E�"�"�"����F�#�C��8�8�8�*�0�0�2�2���+�+�D�1�1��������C�i�i�i�H�H�H�$�O�O�O��.�.�t�4�4���f�������C�b�A�A�A�4�H�H�H�������&�1�1�1�2�8�8�:�:���9�9�$�?�?���f�������C�q�c�B�B�B�D�I�I�I����.�.�.��7�7�7�	
���&�,�'�'�'������t�,�,�,�,�,rc��td���}|�d��|�d��|�dd���d���}|�t��5}|�|��ddd��n#1swxYwY|�t|j��d	��dS)
NrQr!rr�r\r]rvr_z\.\.\.)	r�r�r�r�r�rxr=r�r�)rr1r�r�s    r�test_remainderz!TestIntermixedArgs.test_remainder�s��+��8�8�8�����D�!�!�!����C� � � ����C�u��-�-�-��!�!�#�#���
�
�y�
)�
)�	/�R��(�(��.�.�.�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�����R�\�*�*�I�6�6�6�6�6s�B"�"B&�)B&c��td���}|�d���}|�ddd���|�d	d
���|�dd
dd���|�d�����}|�t
ddgdd���|��|�t|jd�����|�|j	d��dS)NrQr!Tr�r�r�rmrVrfrnr�r4r�r6rorpz	1 --foo 2rr�)r4r'r�r
)
r�r�r�rxr�r�rzr�r�r�)rr1r�rus    r�test_exclusivez!TestIntermixedArgs.test_exclusive
s��+��8�8�8���3�3�T�3�B�B��
���7�<�e��D�D�D�
���8�&��1�1�1����H�C��8��L�L�L��+�+�K�,=�,=�,?�,?�@�@������C��:�4�d�C�C�C�T�J�J�J����-�v�/K�U�[�[�]�]�[�[�[�������.�.�.�.�.rc�Z�td���}|�d���}|�ddd���|�d	d
���|�dd
dd���|�t|jg��|�|jd��dS)NrQr!Tr�r�r�rmrVrfrnr�r4r�r6rorp)r�r�r�r�r�rxr�r�r+s   r�test_exclusive_incompatiblez.TestIntermixedArgs.test_exclusive_incompatibles���+��8�8�8���3�3�T�3�B�B��
���7�<�e��D�D�D�
���8�&��1�1�1�
���8�3��(��K�K�K����)�V�%A�2�F�F�F�������.�.�.�.�.rN)rrr rzr|r~r�r@rrrsrs�sP������-�-�-�67�7�7�
/�
/�
/�/�/�/�/�/rrsc��eZdZd�ZdS)�!TestIntermixedMessageContentErrorc��tdd���}|�dt���|�dtd���|�t
��5}|�g��ddd��n#1swxYwYt|j��}|�|d��|�|d	��|�t
��5}|�	g��ddd��n#1swxYwYt|j��}|�
|d��|�|d	��dS)
NrQrr=r3rdr4Tr�r6)r�r�r�r�r�r�r:r�r=rx�assertNotRegexr8s    rr9zGTestIntermixedMessageContentError.test_missing_argument_name_in_message#s���+��r�B�B�B�����I�C��0�0�0����J�S�4��@�@�@�
�
�
�2�
3�
3�	"�r����b�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��"�,��������i�(�(�(�����i�(�(�(�
�
�
�2�
3�
3�	-�r��(�(��,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-��"�,�������C��+�+�+�����i�(�(�(�(�(s$�%B�B�B�,D�D�DN)rrr r9r@rrr�r� s#������)�)�)�)�)rr�c�,�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*d)�Z+d*�Z,d+�Z-d,�Z.d-�Z/d.�Z0d/�Z1d0�Z2d1S)2�TestAddArgumentMetavarz,length of metavar tuple does not match nargsc�\�tj��}|�d||���dS)Nr��rwr\)r*r+r�)rrwr\r1s    r�do_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exception<s1���(�*�*�����G�5�'��B�B�B�B�Brc��tj��}|�t��5}|�d||���ddd��n#1swxYwY|�|jjd|j��dS)Nr�r�r)	r*r+r�r�r�r�r�ru�EXPECTED_MESSAGE)rrwr\r1r�s     r�do_test_exceptionz(TestAddArgumentMetavar.do_test_exception@s����(�*�*��
�
�
�z�
*�
*�	G�b�����u�g��F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G������*�1�-�t�/D�E�E�E�E�Es�A�A�Ac�4�|�dd���dS)Nrr��r�rs r�test_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_stringHs!���!�!��c�!�:�:�:�:�:rc�L�|�dt�����dS)Nr��r��tuplers r�test_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0Ks%�����T�5�7�7��;�;�;�;�;rc�4�|�dd���dS)Nrkr�r�rs r�test_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1Ns!���!�!��f�!�=�=�=�=�=rc�4�|�dd���dS)N�rr�r��r�rs r�test_nargs_None_metavar_length2z6TestAddArgumentMetavar.test_nargs_None_metavar_length2Qs!�����T�:��>�>�>�>�>rc�4�|�dd���dS)Nrwr�r�rs r�test_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3Ts!�����T�?��C�C�C�C�Crc�4�|�dd���dS)Nr�rr�r�rs r�"test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_stringY�!���!�!��S�!�9�9�9�9�9rc�L�|�dt�����dS)Nr�r�r�rs r�#test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0\�%�����S�%�'�'��:�:�:�:�:rc�4�|�dd���dS)Nr�rkr�r�rs r�#test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1_�!���!�!��V�!�<�<�<�<�<rc�4�|�dd���dS)Nr�r�r�r�rs r�#test_nargs_optional_metavar_length2z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2bs!�����S�*��=�=�=�=�=rc�4�|�dd���dS)Nr�rwr�r�rs r�#test_nargs_optional_metavar_length3z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3e�!�����S�/��B�B�B�B�Brc�4�|�dd���dS)Nr�rr�r�rs r�$test_nargs_zeroormore_metavar_stringz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringjr�rc�L�|�dt�����dS)Nr�r�r�rs r�%test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0mr�rc�4�|�dd���dS)Nr�rkr�r�rs r�%test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1pr�rc�4�|�dd���dS)Nr�r�r�r�rs r�%test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2s�!���!�!��Z�!�@�@�@�@�@rc�4�|�dd���dS)Nr�rwr�r�rs r�%test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3vr�rc�4�|�dd���dS)Nr�rr�r�rs r�#test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string{r�rc�L�|�dt�����dS)Nr�r�r�rs r�$test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0~r�rc�4�|�dd���dS)Nr�rkr�r�rs r�$test_nargs_oneormore_metavar_length1z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1�s!�����S�&��9�9�9�9�9rc�4�|�dd���dS)Nr�r�r�r�rs r�$test_nargs_oneormore_metavar_length2z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2�r�rc�4�|�dd���dS)Nr�rwr�r�rs r�$test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3�r�rc�4�|�dd���dS)Nr]rr�r�rs r�#test_nargs_remainder_metavar_stringz:TestAddArgumentMetavar.test_nargs_remainder_metavar_string�s!���!�!��s�!�;�;�;�;�;rc�L�|�dt�����dS)Nr]r�)r�r�rs r�$test_nargs_remainder_metavar_length0z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0�s%���!�!��u�w�w�!�?�?�?�?�?rc�4�|�dd���dS)Nr]rkr�r�rs r�$test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1�s!���!�!��v�!�>�>�>�>�>rc�4�|�dd���dS)Nr]r�r�r�rs r�$test_nargs_remainder_metavar_length2z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2�s!���!�!��z�!�B�B�B�B�Brc�4�|�dd���dS)Nr]rwr�r�rs r�$test_nargs_remainder_metavar_length3z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3�s!���!�!���!�G�G�G�G�Grc�4�|�dd���dS)N�A...rr�r�rs r� test_nargs_parser_metavar_stringz7TestAddArgumentMetavar.test_nargs_parser_metavar_string�s!���!�!���!�<�<�<�<�<rc�L�|�dt�����dS)Nr�r�r�rs r�!test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0�s%�����V�U�W�W��=�=�=�=�=rc�4�|�dd���dS)Nr�rkr�r�rs r�!test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1�s!���!�!���!�?�?�?�?�?rc�4�|�dd���dS)Nr�r�r�r�rs r�!test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2�s!�����V�Z��@�@�@�@�@rc�4�|�dd���dS)Nr�rwr�r�rs r�!test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3�s!�����V�_��E�E�E�E�Erc�4�|�dd���dS)Nrurr�r�rs r�test_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_string��!���!�!��3�!�7�7�7�7�7rc�L�|�dt�����dS)Nrur�r�rs r�test_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0��%�����Q�����8�8�8�8�8rc�4�|�dd���dS)Nrurkr�r�rs r�test_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1�s!���!�!��6�!�:�:�:�:�:rc�4�|�dd���dS)Nrur�r�r�rs r�test_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2��!�����Q�
��;�;�;�;�;rc�4�|�dd���dS)Nrurwr�r�rs r�test_nargs_1_metavar_length3z3TestAddArgumentMetavar.test_nargs_1_metavar_length3��!�����Q���@�@�@�@�@rc�4�|�dd���dS)Nr�rr�r�rs r�test_nargs_2_metavar_stringz2TestAddArgumentMetavar.test_nargs_2_metavar_string�r�rc�L�|�dt�����dS)Nr�r�r�rs r�test_nargs_2_metavar_length0z3TestAddArgumentMetavar.test_nargs_2_metavar_length0�r�rc�4�|�dd���dS)Nr�rkr�r�rs r�test_nargs_2_metavar_length1z3TestAddArgumentMetavar.test_nargs_2_metavar_length1��!�����Q���7�7�7�7�7rc�4�|�dd���dS)Nr�r�r�r�rs r�test_nargs_2_metavar_length2z3TestAddArgumentMetavar.test_nargs_2_metavar_length2�s!���!�!��:�!�>�>�>�>�>rc�4�|�dd���dS)Nr�rwr�r�rs r�test_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3�r�rc�4�|�dd���dS)Nrzrr�r�rs r�test_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_string�r�rc�L�|�dt�����dS)Nrzr�r�rs r�test_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0�r�rc�4�|�dd���dS)Nrzrkr�r�rs r�test_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1�r�rc�4�|�dd���dS)Nrzr�r�r�rs r�test_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2�r�rc�4�|�dd���dS)Nrzrwr�r�rs r�test_nargs_3_metavar_length3z3TestAddArgumentMetavar.test_nargs_3_metavar_length3�s!���!�!��?�!�C�C�C�C�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�8s������E��C�C�C�F�F�F�;�;�;�<�<�<�>�>�>�?�?�?�D�D�D�
:�:�:�;�;�;�=�=�=�>�>�>�C�C�C�
:�:�:�;�;�;�=�=�=�A�A�A�C�C�C�
:�:�:�;�;�;�:�:�:�A�A�A�C�C�C�
<�<�<�@�@�@�?�?�?�C�C�C�H�H�H�
=�=�=�>�>�>�@�@�@�A�A�A�F�F�F�
8�8�8�9�9�9�;�;�;�<�<�<�A�A�A�
8�8�8�9�9�9�8�8�8�?�?�?�A�A�A�
8�8�8�9�9�9�8�8�8�<�<�<�D�D�D�D�Drr�c�.�eZdZdZdZd�Zd�Zd�Zd�ZdS)�TestInvalidNargszinvalid nargs valuez�nargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatec��tj��}|�t��5}|�d|���ddd��n#1swxYwY|�|jjd|j��dS�Nr�rvr)	r*r+r�r�r�r�r�ru�EXPECTED_RANGE_MESSAGE�rrwr1r�s    r�do_test_range_exceptionz(TestInvalidNargs.do_test_range_exception�s����(�*�*��
�
�
�z�
*�
*�	6�b�����u��5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6������*�1�-�t�/J�K�K�K�K�K��A�A�Ac��tj��}|�t��5}|�d|���ddd��n#1swxYwY|�|jjd|j��dSr�)	r*r+r�r�r�r�r�ru�EXPECTED_INVALID_MESSAGEr�s    r�do_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exception�s����(�*�*��
�
�
�z�
*�
*�	6�b�����u��5�5�5�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6�	6����	6�	6�	6�	6������*�1�-�t�/L�M�M�M�M�Mr�c�^�|�d���|�d���dS)Nr�rv�abcd)rrs r�test_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetic�s6���&�&�S�&�1�1�1��&�&�V�&�4�4�4�4�4rc�2�|�d���dS)Nrrv)r�rs r�test_nargs_zeroz TestInvalidNargs.test_nargs_zero�s���$�$�1�$�-�-�-�-�-rN)	rrr rr�r�rrrr@rrr�r��se������4��L��L�L�L�N�N�N�5�5�5�.�.�.�.�.rr�c��eZdZd�Zd�ZdS)�TestImportStarc�t�tjD]*}|�tt|�����+dSrN)r*�__all__rr�r�s  rr�zTestImportStar.tests=���$�	5�	5�D��O�O�G�H�d�3�3�4�4�4�4�	5�	5rc���d�tt�����D��}|�t	|��t	tj����dS)Nc�v�g|]6\}}|�d��s|dk� tj|���4|��7S)r��ngettext)�
startswith�inspect�ismodule)r�rcrs   rr�zJTestImportStar.test_all_exports_everything_but_modules.<locals>.<listcomp>sZ��
�
�
���e��O�O�C�(�(�
�-1�J�,>�,>��#�E�*�*�-?�
�,>�,>�,>r)r�r*r�r�r�r
)rr�s  r�'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modulessa��
�
�#�H�~�~�3�3�5�5�
�
�
��	
��������x�/?�(@�(@�A�A�A�A�ArN)rrr r�rr@rrrrs7������5�5�5�B�B�B�B�Brrc�$��eZdZ�fd�Zd�Z�xZS)�TestWrappingMetavarc���t�����td��|_d}|j�d|���dS)N�9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyr)r
rJr�r1r�)rr\rs  �rrJzTestWrappingMetavar.setUpsP���
���
�
����0�G�
�
���
-���� � ��G� �<�<�<�<�<rc��|j���}|�|tjd����dS)Na            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            options:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r1r�r�r�r�)r�	help_texts  r�test_help_with_metavarz*TestWrappingMetavar.test_help_with_metavarsL���K�+�+�-�-�	�����H�O�5�%�%�	�	�	�	�	r)rrr rJrr!r"s@rrrsG�������=�=�=�=�=�	�	�	�	�	�	�	rrc� �eZdZd�Zd�Zd�ZdS)�TestExitOnErrorc�~�tjd���|_|j�ddt���dS)NF)�
exit_on_errorz
--integers�N)r\r�)r*r+r1r�r�rs rrJzTestExitOnError.setUp*s:���-�E�B�B�B����� � ��s�� �E�E�E�E�Erc��|j�d�����}|�|t	jd�����dS)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_args.sM��
�[�
#�
#�N�$8�$8�$:�$:�
;�
;������X�/��;�;�;�<�<�<�<�<rc���|�tj��5|j�d�����ddd��dS#1swxYwYdS)Nz--integers a)r�r*rr1r:r�rs r� test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_args2s���
�
�
�x�5�
6�
6�	;�	;��K�"�"�>�#7�#7�#9�#9�:�:�:�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;�	;����	;�	;�	;�	;�	;�	;s�-A�A�!AN)rrr rJr r"r@rrrr(sD������F�F�F�=�=�=�;�;�;�;�;rrc�N�it_t��t_dSrN)r�r�rDr�r@rr�tearDownModuler$7s���E�J����E�J�J�Jr�__main__)�r,r8rrr�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-r;r>rGrWrYr^rdrmrrrtryr�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�rrrrr	r
rrrrrrr r"r$r&r(r*r,r.r0r3r6r9r;r=r?rFrLrNrQrSrUrZr\rcrirmrqrwr�r�r�r�r�r�r��	eq_stderrr�r��
eq_bstderrr�r�r�r�r��skip_if_dac_overrider�r�r�r�r�r�rrrrr%r;rDrKr�r�rr.rMrXr`rdrkrsr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrr r#r(r.r0r2r4r6r8r<r?rArDrGrKrNrPrRrTrVr`rhrkrorrrtrzr~r�r�r�r�r�rrr&r*r1rBrKr]rsr�r�r�rrrr$r�mainr@rr�<module>r.s�#��������������	�	�	�	�����	�	�	�	�
�
�
�
�����
�
�
�
���������������������"�"�"�"�"�"�������:�:�:�:�:�"�"�:�:�:�$F�F�F�F�F�H�%�F�F�F�:�����x� �����$�D�D�D�D�D�6�D�D�%�$�D�.�����&����)�)�)�)�)��)�)�)�%�%�%�%�%�)�%�%�%�# �# �# �L>�>�>�>�>��!8�>�>�>�o9�o9�o9�o9�o9�D�o9�o9�o9�b	�	��&�&�'7���C�C�������n���������n����4�����.����
�
�
�
�
�^�
�
�
� 
�
�
�
�
�~�
�
�
� 
�
�
�
�
�>�
�
�
������n���������.����$���������&�����N����&���������(���������,���������.
�
�
�
�
�^�
�
�
� 
�
�
�
�
��
�
�
�	�	�	�	�	�>�	�	�	���������������.���������.�������������.�����>����&�����.����"�����>����"
�
�
�
�
�N�
�
�
������~���������N���������N���������>����W�W�W�W�W��W�W�W�*
�
�
�
�
��
�
�
�	�	�	�	�	��	�	�	�	�	�	�	�	�>�	�	�	����������&�����^������������������~�������������"�����N����"�����~����"�����n����&�����N����.�����~���������N���������N����	�	�	�	�	�^�	�	�	�	�	�	�	�	�N�	�	�	������N���������>���������.���������>���������>����������������������	�	�	�	�	��	�	�	���������������~����	�	�	�	�	��	�	�	���������������~���������n���������^���������N����	�	�	�	�	�n�	�	�	������^���������N���������.���������������������������>����
�
�
�
�
�^�
�
�
�	�	�	�	�	�N�	�	�	������>�������������
�
�
�
�
�.�
�
�
� 
�
�
�
�
��
�
�
� �����~����"�����>����&�����~����&
�
�
�
�
�.�
�
�
� 
�
�
�
�
��
�
�
������^����6�����.����&���������(�����.����*�����L�.����D�����\�>����DK�K�K�K�K�x�K�K�K�0�f�h�h���f�h�h��,�,�,�,�,�,�,�,�,��W�%�%����h�'�'�	���h�'�'�	���n�-�-�	�
�
��
/�
/�
�
�
��
/�
/�
�/�/�/�/�/�F�/�/�/�"�����L�.����03�3�3�3�3�<��3�3�3�"�����\�>����.'�'�'�'�'�F�'�'�'�"�������L�.��� ���,�������L�.��� ���&��
�
�
�
�
�\�>�
�
� ��
� ��
�
�
�
�
�]�
�
� ��
�3�3�3�3�3�8�3�3�3�$
�
�
�
�
��
�
�
�$�����~���������.����,�����>����,>�>�>�>�>�8�>�>�>�.>�>�>�>�>�N�>�>�>�BJ�J�J�J�J�X�J�J�J�$�����~����w�w�w�w�w��w�w�w�z
!+�!+�!+�!+�!+�H�!+�!+�!+�Nm9�m9�m9�m9�m9��m9�m9�m9�f@&�@&�@&�@&�@&�x�@&�@&�@&�D-?�-?�-?�-?�-?�f�-?�-?�-?�` � � � � �'�8� � � �F(�(�(�(�(���(�(�(�V�����7�H����B!�!�!�!�!�'�8�!�!�!�H*�*�*�*�*��(�*�*�*�Z'�'�'�'�'�'�8�'�'�'�T%�%�%�%�%�7�H�%�%�%�P'�'�'�'�'���'�'�'�R/(�/(�/(�/(�/(�'�8�/(�/(�/(�j�����f����	�	�	�	�	��
-�	�	�	�
	�	�	�	�	��
(�	�	�	�
	�	�	�	�	��
&�	�	�	�
	�	�	�	�	��
1�	�	�	�
	�	�	�	�	��
0�	�	�	�
	�	�	�	�	��
7�	�	�	�
	�	�	�	�	��
0�	�	�	�
	�	�	�	�	��
>�	�	�	�X0�X0�X0�X0�X0�h�X0�X0�X0�|8�8�8�8�8�X�8�8�8�.
"�
"�
"�
"�
"�(�
"�
"�
"�&Q1�Q1�Q1�Q1�Q1�$�Q1�Q1�Q1�f	�	��*�*�>�5�"�E�E��"�"�"�"�"�l�"�"�"�H3B�3B�3B�3B�3B�|�3B�3B�3B�l,�,�,�,�,�<�,�,�,�^���������>1�1�1�1�1�<�1�1�1�h%�%�%�%�%��%�%�%�P3�3�3�3�3��3�3�3�l6�6�6�6�6�L�6�6�6�r�����<����,�����\����>�����L����:!�!�!�!�!�|�!�!�!�H�����<����2#�#�#�#�#��#�#�#�L�����<����D!�!�!�!�!�L�!�!�!�H�����\����4�����|����0+�+�+�+�+��+�+�+�\�����\����"
�
�
�
�
�<�
�
�
������L����*�����|����(�����L����4���������*�����|����(�����<����*�����\����.�����<����0�����<����6.�.�.�.�.�l�.�.�.�b-�-�-�-�-�\�-�-�-�`0�0�0�0�0�|�0�0�0�d�����L����(�����L����2���������:'�'�'�'�'��'�'�'�V�����<����BxI�xI�xI�xI�xI�h�xI�xI�xI�|-�-�-�-�-�(�-�-�-�<3E�3E�3E�3E�3E�8�3E�3E�3E�tEQ�EQ�EQ�EQ�EQ�h�EQ�EQ�EQ�XC/�C/�C/�C/�C/�(�C/�C/�C/�R7�7�7�7�7�H�7�7�7�J-�-�-�-�-�8�-�-�-�$*�*�*�*�*��*�*�*�.�.�.�.�.�H�.�.�.�$65�65�65�65�65�h�65�65�65�z
8�
8�
8�
8�
8�8�
8�
8�
8� +(�+(�+(�+(�+(�h�+(�+(�+(�b4C�4C�4C�4C�4C��4C�4C�4C�v=/�=/�=/�=/�=/��=/�=/�=/�~)�)�)�)�)��)�)�)�0eD�eD�eD�eD�eD�X�eD�eD�eD�P.�.�.�.�.�x�.�.�.�@
B�
B�
B�
B�
B�X�
B�
B�
B� �����(����0;�;�;�;�;�h�;�;�;�����z����H�M�O�O�O�O�O��r

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