403Webshell
Server IP : 121.121.20.254  /  Your IP : 216.73.217.51
Web Server : Microsoft-IIS/10.0
System : Windows NT WEB-SERVER 10.0 build 20348 (Windows Server 2022) AMD64
User : IUSR ( 0)
PHP Version : 8.3.28
Disable Function : NONE
MySQL : ON  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  C:/Python312/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python312/Lib/test/__pycache__/test_argparse.cpython-312.opt-2.pyc
�

���g����ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZmZddlmZGd�dej,�ZGd�d	ej0�ZGd
�dej0�Zej4Gd�d
e��ZGd�de�ZGd�de�ZGd�de�Z d�Z!Gd�dejD�Z#Gd�de$�Z%efZ&e%de&i�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'�Z0Gd,�d-e'�Z1Gd.�d/e'�Z2Gd0�d1e'�Z3Gd2�d3e'�Z4Gd4�d5e'�Z5Gd6�d7e'�Z6Gd8�d9e'�Z7Gd:�d;e'�Z8Gd<�d=e'�Z9Gd>�d?e'�Z:Gd@�dAe'�Z;GdB�dCe'�Z<GdD�dEe'�Z=GdF�dGe'�Z>GdH�dIe'�Z?GdJ�dKe'�Z@GdL�dMe'�ZAGdN�dOe'�ZBGdP�dQe'�ZCGdR�dSe'�ZDGdT�dUe'�ZEGdV�dWe'�ZFGdX�dYe'�ZGGdZ�d[e'�ZHGd\�d]e'�ZIGd^�d_e'�ZJGd`�dae'�ZKGdb�dce'�ZLGdd�dee'�ZMGdf�dge'�ZNGdh�die'�ZOGdj�dke'�ZPGdl�dme'�ZQGdn�doe�ZRGdp�dqe'�ZSGdr�dse'�ZTGdt�due'�ZUGdv�dwe'�ZVGdx�dye'�ZWGdz�d{e'�ZXGd|�d}e'�ZYGd~�de'�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�e'�ZwGd��d�e'�ZxGd��d�e'�ZyGd��d�e'�ZzGd��d�e'�Z{Gd„d�e'�Z|GdĄd�e'�Z}GdƄd�ee'�Z~GdȄd�ee'�ZGdʄd�e�Z�e�Z�e�Z�Gd̄dͫZ�e�dΫZ�e�dϫZ�e�dЫZ�e�dѫZ�e�dҫZ�e�dӫZ�GdԄd�e�Z�Gdքd�ee'�Z�Gd؄d�ee'�Z�Gdڄd�ee'�Z�Gd܄d�e�Z�e�jGdބd�ee'��Z�e�jGd�d�ee'��Z�e�jGd�d�ee'��Z�e�jGd�d�e���Z�Gd�d�e�Z�Gd�d�e�Z�Gd�d�e'�Z�Gd�d�e'�Z�Gd�d�e'�Z�Gd�d�e�Z�Gd�d�e'�Z�Gd�d�e�Z�Gd��d�e'�Z�Gd��d�e�Z�Gd��d�e�Z�Gd��d�e�Z�Gd��d�e�Z�G�d��de�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�e�Z�G�d��de�e�Z�G�d��de�e�Z�G�d��de�e�Z�G�d��de�e�Z�G�d��de�e�Z�G�d��de�Z�G�d��de�e��Z�G�d��de�e��Z�G�d ��d!e�e��Z�G�d"��d#e�e��Z�G�d$��d%e�e��Z�G�d&��d'e�e��Z�G�d(��d)e�e��Z�G�d*��d+e�e��Z�G�d,��d-e�Z�G�d.��d/e�Z�G�d0��d1e�Z�G�d2��d3e$�Z�efZ&e��d4e&i�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�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z�G�d���d�e�Z��d��Z�e��d�k(rZe�e�j���d�kDr0e�j��d��d�k(ree�e�j�d�e�j��yy(��N)�StrEnum)�	os_helper)�TestTranslationsBase�update_translation_snapshots)�mockc�(��eZdZ	d�fd�	Zd�Z�xZS)�StdIOBufferc���|jd�}t�|�	tjtj
|��d|��y)N�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�self�
initial_valuer�	__class__s   ��'C:\Python312\\Lib\test\test_argparse.pyrzStdIOBuffer.__init__ s@���%�,�,�W�5�
�
����*�*�2�:�:�m�+D�E� �'�	�	3�c��|j�|jjj�j	d�S)Nr)�flush�buffer�raw�getvalue�decode�rs rrzStdIOBuffer.getvalue%s-���
�
���{�{���'�'�)�0�0��9�9r)��
)�__name__�
__module__�__qualname__rr�
__classcell__�rs@rr	r	s����3�
:rr	c��eZdZd�Zd�Zy)�
StdStreamTestc��tj�}tjd�5t	j
d�5|j
dd��ddd�ddd�y#1swY�xYw#1swYyxYw)N�argparse._sys.exitr�foo)�status�message)�argparse�ArgumentParser�
contextlib�redirect_stderrr�patch�exit�r�parsers  r�test_skip_invalid_stderrz&StdStreamTest.test_skip_invalid_stderr,sX���(�(�*���&�&�t�,��J�J�+�,��K�K�q�%�K�0�
-�
-�,�,�,��
-�,�s#�A1�A%�A1�%A.	�*A1�1A:c�|�tj�}|j|jt	j
|jdg�fD]�}|j|��5tjd�5t�5}tj|�5tjd�5|�|j|j�d�ddd�ddd�ddd�ddd�ddd���y#1swY�,xYw#1swY�0xYw#1swY�4xYw#1swY�8xYw#1swY��xYw)N�-h)�funcr)zusage:)r-r.�print_usage�
print_help�	functools�partial�
parse_args�subTestr/�redirect_stdoutr	r0rr1�assertRegexr)rr4r8�
mocked_stderrs    r�test_skip_invalid_stdoutz&StdStreamTest.test_skip_invalid_stdout4s����(�(�*�����������f�/�/�$��8�
�D����$��'��*�*�4�0��
���*�*�=�9��
�
�/�0���� � ��!7�!7�!9�9�E�1�:��1�(�'�

�1�0��:�9���
��1�0��(�'�sl�"D2�8D&�D	�D�/(D
�D�D	�'D&�/D2�D�D�D�D	�D#
�D&�&D/�+D2�2D;	N)r!r"r#r5rB�rrr'r'*s
��1�Frr'c��eZdZd�Zy)�TestCasec�T�|jtj��}d|d<y)N�80�COLUMNS)�enterContextr�EnvironmentVarGuard�r�envs  r�setUpzTestCase.setUpIs&�����	� =� =� ?�@����I�rN)r!r"r#rMrCrrrErEGs��rrEc�$�eZdZd�Zd�Zd�Zd�Zy)�TempDirMixinc��tj�|_tj�|_tj|j�y�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirrs rrMzTempDirMixin.setUpTs/�� �(�(�*��
��y�y�{���
������rc�|�tj|j�tj|jd��D]Y\}}}|D]N}tj
tjj|j|�tj��P�[tj|jd�y)NF)�topdownT)rUrXrW�walkrT�chmod�path�join�stat�S_IWRITE�shutil�rmtree)r�root�dirs�files�names     r�tearDownzTempDirMixin.tearDownYsv��
�������!#�������!F��D�$������������d�m�m�T�:�D�M�M�J��"G�	�
�
�d�m�m�T�*rc���tjj|j|�}t	|dd��5}|j|�ddd�|S#1swY|SxYw)N�wr��encoding)rUr]r^rT�open�write)r�filename�	file_path�files    r�create_writable_filez!TempDirMixin.create_writable_file`sK���G�G�L�L�����9�	�
�)�S�7�
3�t��J�J�x� �4���4���s�A�Ac�j�tj|j|�tj�yrQ)rUr\rqr_�S_IREAD)rrns  r�create_readonly_filez!TempDirMixin.create_readonly_filefs��
����*�*�8�4�d�l�l�CrN)r!r"r#rMrgrqrtrCrrrOrOQs�� �
+��DrrOc��eZdZd�Zy)�Sigc� �||_||_yrQ)�args�kwargs�rrxrys   rrzSig.__init__ks����	���rN�r!r"r#rrCrrrvrvis��rrvc��eZdZd�Zd�Zd�Zy)�NSc�:�|jj|�yrQ)�__dict__�update)rrys  rrzNS.__init__rs���
�
���V�$rc���t|jj��}dj|D�cgc]}d|z��	c}�}t	|�j
�d|�d�Scc}w)Nz, z%s=%r�(�))�sortedr�itemsr^�typer!)r�sorted_items�tup�	kwarg_strs    r�__repr__zNS.__repr__usU���d�m�m�1�1�3�4���I�I��E���w��}��E�F�	���:�.�.�	�:�:��Fs�A!c�0�t|�t|�k(SrQ)�vars�r�others  r�__eq__z	NS.__eq__zs���D�z�T�%�[�(�(rN)r!r"r#rr�r�rCrrr}r}ps��%�;�
)rr}c��eZdZdd�Zy)�ArgumentParserErrorNc�l�tj||||�||_||_||_||_yrQ)�	Exceptionrr,�stdout�stderr�
error_code)rr,r�r�r�s     rrzArgumentParserError.__init__�s2�����4��&�&�9����������$��r)NNNr{rCrrr�r�~s��%rr�c
��ttjt�sttjt�r||i|��Stj}tj}t�t_t�t_		||i|��}tt
|��D]�}t||�}|tjurt|||��/|tjjurt||t|dt���h|tjurt|||���|tjjus��t||t|dt����||t_|t_S#t$r\}|j}	tjj�}
tjj�}td|
||	�d�d}~wwxYw#|t_|t_wxYw)Nr�
SystemExit)�
isinstance�sysr�r	r��listr��getattr�setattrr�BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELr��coderr�)r=rxry�
old_stdout�
old_stderr�result�key�attr�er�r�r�s            r�stderr_to_parser_errorr��s����#�*�*�k�*�j����[�.Q��4�*�6�*�*����J����J���C�J���C�J� �	>���0��0�F��D��L�)���v�s�+���3�:�:�%��F�C��4��S�Z�Z�.�.�.��F�C���X�GZ�)[�\��S�Z�Z�'��F�C��4��S�Z�Z�.�.�.��F�C���X�GZ�)[�\�*�� ��
���
���	>��6�6�D��Z�Z�(�(�*�F��Z�Z�(�(�*�F�%��f�f�d�4�9=�
>��		>�� ��
���
�s,�
CF�F�	G)�
AG$�$G)�)G,�,Hc�2��eZdZ�fd�Z�fd�Z�fd�Z�xZS)�ErrorRaisingArgumentParserc�>��tt|�
}t|g|��i|��SrQ)rr�r=r�)rrxryr=rs    �rr=z%ErrorRaisingArgumentParser.parse_args�s%����5�t�G�
�%�j�B�4�B�6�B�Brc�>��tt|�
}t|g|��i|��SrQ)rr�r2r�)rrxryr2rs    �rr2zErrorRaisingArgumentParser.exit�s%����/��;��%�d�<�T�<�V�<�<rc�>��tt|�
}t|g|��i|��SrQ)rr��errorr�)rrxryr�rs    �rr�z ErrorRaisingArgumentParser.error�s%����0�$�=��%�e�=�d�=�f�=�=r)r!r"r#r=r2r�r$r%s@rr�r��s���C�=�>�>rr�c��eZdZ	d�Zy)�ParserTesterMetaclassc���|dk(ryt|d�st�|_t|d�st|_d�}d�}d�}d�}d�}Gd	�d
t
�}	|||fD]}
||fD]}|	||
|���y)N�ParserTestCase�parser_signature�parser_classc�`�	|D](}|j|ji|j���*yrQ)�add_argumentrxry)r4�argument_signatures�sigs   r�	no_groupsz1ParserTesterMetaclass.__init__.<locals>.no_groups�s,��:�*��#��#�#�S�X�X�<����<�+rc��	|jd�}|D](}|j|ji|j���*y)Nr*)�add_argument_groupr�rxry)r4r��groupr�s    r�	one_groupz1ParserTesterMetaclass.__init__.<locals>.one_group�s<��F��-�-�e�4�E�*��"��"�"�C�H�H�;��
�
�;�+rc��	t|�D]?\}}|jd|z�}|j|ji|j���Ay)Nzfoo:%i)�	enumerater�r�rxry)r4r��ir�r�s     r�many_groupsz3ParserTesterMetaclass.__init__.<locals>.many_groups�sJ��B�#�$7�8���3��1�1�(�Q�,�?��"��"�"�C�H�H�;��
�
�;�9rc�&�	|j|�SrQ)r=)r4rxs  r�listargsz0ParserTesterMetaclass.__init__.<locals>.listargs�s��5��$�$�T�*�*rc��	tj}|dg|zt_	|j�|t_S#|t_wxYw)Nr)r��argvr=)r4rx�old_sys_argvs   r�sysargsz/ParserTesterMetaclass.__init__.<locals>.sysargs�sA��:��8�8�L�$�Q��(�4�/�C�H�
(��(�(�*�'����<���s�A�
A
c�$�eZdZd�Zd�Zd�Zd�Zy)�0ParserTesterMetaclass.__init__.<locals>.AddTestsc�H�||_||_|jj}|jj}|j|jfD]>}|j}|||f}dj|�}	|fd�}
	|	|
_t||	|
��@y#t$rY�wxYw)N�_c��||�yrQrC�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�%8�%A�%A�"�"&�"2�"2�";�";��"&�"4�"4�d�6I�6I�!J�I� )� 2� 2�I�%�'9�?�J�E� #�����I�09�(��+4��(��J�	�7�;�"K��%����s�>B�	B!� B!c��|jj}|jj}|j|i|��}|j	||j
�|SrQ)r�rxryr�r�r�)r�testerrxryr4s     r�_get_parserz<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parsersV���.�.�3�3���0�0�7�7��,��,�,�d�=�f�=���#�#�F�F�,F�,F�G��
rc�0�|j|�}|jD]^}|j�}|j|��5|j	t
|��5|j
|�ddd�ddd��`y#1swY�xYw#1swY�wxYw)N�rx)�msg)r��failures�splitr>�assertRaisesr�r=)rr�r4�args_strrxs     rr�z>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failuress}���)�)�&�1�� &���H�#�>�>�+�D����T��2�#�0�0�1D�$�0�O�"�-�-�d�3�P�3�2�!0�P�O��3�2�s$�B�B�-B�B	�B�B	c�$�|j|�}|jD]d\}}t|t�r|j	�}|j|��5|j
||�}|j||�ddd��fy#1swY�qxYw)Nr�)r��	successesr��strr�r>r��assertEqual)rr�r4rx�expected_ns�	result_nss      rr�z?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes!s}���)�)�&�1��)/�)9�)9�%�D�+�!�$��,�#�z�z�|�����T��2�$(�$4�$4�V�T�$B�	��*�*�;�	�B�3�2�*:�3�2�s�%B�B	N)r!r"r#rr�r�r�rCrr�AddTestsr��s��
<�&
�
4�
Crr�)�hasattrrvr�r�r��object)�clsrf�bases�bodydictr�r�r�r�r�r�r�r=s            rrzParserTesterMetaclass.__init__�s����#�#���s�.�/�#&�5�C� ��s�N�+�9�C��
	=�
	<�	<�	+�	(�+	C�v�+	C�^(��K�@�M�'��1�
���m�Z�8�2�ArNr{rCrrr�r��s
��
�a9rr�r�c��eZdZ	ed�gZgd�Zded��fded��fded��fd	ed
��fded
��fgZy)�TestOptionalsSingleDash�-x)r��a�--foo�-x --fooz-x -yrN��x�-x ar��-xaz-x -1�-1z-x-1�r!r"r#rvr�r�r}r�rCrrr�r�7sY��;��t�9�+��8�H�	�R�$�Z��	��c���	��S�	��	�"�t�*��	��d����Irr�c�r�eZdZ	edd��eddd��ed�gZgd	�Zd
eddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fgZy)�TestOptionalsSingleDashCombinedr��
store_true��actionz-yyy�store_const�*�r�const�-z)r�r�r�r�z-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=rFN)r��yyy�zT�-zar��-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar�rCrrr�r�Es	��;�	�D��&��F�=��3��D�	���
C�H�
�R�%�T�T�
*�+�	
�r�D�d�d�+�,�	��U���,�-�	��e���-�.�	��d���,�-�	�"�t���-�.�	�2��$�#�.�/�	�B��4�3�/�0�	
�r�E�r�T�*�+�	��e��t�,�-�	��T�r�S�1�2�	��d��c�2�3�
�Irr�c��eZdZ	ed�gZgd�Zded��fded��fded	��fd
ed��fded��fgZy)�TestOptionalsSingleDashLong�-foo)rr�r�z
-foo --fooz-foo -y�-fooarN�r*z-foo ar�z-foo -1r�z-fo a�-f ar�rCrrrr_sY��K��v�;�-��G�H�	�R�D�\��	�2�#�;��	�B�4�L�!�	�"��+��	������Irrc���eZdZ	ed�ed�ed�gZgd�Zdeddd��fded	dd��fd
ed	dd��fdeddd��fd
eddd��fdedd	d��fdeddd	��fgZy)�&TestOptionalsSingleDashSubsetAmbiguous�-f�-foobar�-foorab)rr�-fo�-foo bz-foobz-foobaz-foorarN)�f�foobar�foorabrr��-fa�-foa�oar�ooa�	-foobar a�	-foorab ar�rCrrrrms���G��t�9�c�)�n�c�)�n�E��K�H�	�R�$�t�D�
1�2�	��c�$�t�4�5�	��S��d�3�4�	��d�4��5�6�	�"�u�T�$�7�8�	�b�4��D�9�:�	�b�4��S�9�:��Irrc�X�eZdZ	ed�ed�gZgd�Zdedd��fdedd��fd	edd��fd
edd��fdedd��fdedd��fd
edd��fdedd��fdedd��fdedd��fdedd��fdedd��fdedd��fg
Zy)� TestOptionalsSingleDashAmbiguousrr)	rrrrrrrz-f=az-foo=brN)rrz-foob ar�z-foob=az-foor az-foor=az-fooba az-fooba=az-foora az-foora=ar!z	-foobar=ar"z	-foorab=ar�rCrrr$r$}s���A��y�>�3�y�>�:��"�H�
�R�t�D�
)�*�	�B�c�$�/�0�	�B�c�$�/�0�	�B�d�3�/�0�	�B�d�3�/�0�	�R�s�4�0�1�	�R�s�4�0�1�	�R�t�C�0�1�	�R�t�C�0�1�	�b��D�1�2�	�b��D�1�2�	�b��S�1�2�	�b��S�1�2��Irr$c��eZdZ	edd��gZgd�Zded��fded	��fd
ed	��fded��fgZy)
�TestOptionalsNumericr��one��dest)r�r�z-1 --fooz-1 -yz-1 -1z-1 -2rN)r'z-1 ar�z-1az-1-2�-2r�rCrrr&r&�sQ��2��t�%�0�1��A�H�	�R�D�\��	�����	��s���	�����	�Irr&c��eZdZ	ed�gZgd�Zded��fded��fded��fd	ed
��fded
��fgZy)�TestOptionalsDoubleDashr�)r�rrr�z--foo -xz--foo --barrNrz--foo ar�z--foo=az
--foo -2.5z-2.5z
--foo=-2.5r�rCrrr,r,�sY��;��w�<�.��F�H�	�R�D�\��	�B�3�K� �	�B�3�K� �	�r�f�~�&�	�r�f�~�&��Irr,c
���eZdZ	edd��ed�gZgd�Zdedd�	�fd
edd�	�fded
d�	�fded
d�	�fded
d�	�fded
d�	�fgZy)�#TestOptionalsDoubleDashPartialMatch�--badgerrrz--bat)�--bar�--b�--ba�--b=2z--ba=4�	--badge 5rFN)�badger�batz--bat X�X�--badT�--badg�--badger�rCrrr.r.�s���A�	�J�|�,��G����H�H�	�R�u�$�
'�(�	�B�e��-�.�	�"�D�d�+�,�	�2�T�t�,�-�	�B�d��-�.�	�R�t��.�/�
�Irr.c���eZdZ	edd��ed�gZgd�Zdedd�	�fd
edd�	�fdedd�	�fd
edd�	�fdedd�	�fdedd�	�fdedd�	�fgZy)�"TestOptionalsDoubleDashPrefixMatchr/rrr2)r0r1r2r3r4rFN)r5�baz--ba Xr7z--ba=Xr8Tr9r:r�rCrrr<r<�s���I�	�J�|�,��F����>�H�	�R�u��
&�'�	�2�U�s�+�,�	�2�U�s�+�,�	�"�D�T�*�+�	�2�T�d�+�,�	�B�d�t�,�-�	�R�t��-�.��Irr<c���eZdZ	edd��ed�eddd��gZgd	�Zd
eddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fdeddd�
�fgZy)�TestOptionalsSingleDoubleDashrrrr0�-bazrrr)r0�-fbarz-fbazz-bazf�-b B�BrFN�r�bar�bazTz--ba BrCz
-f --bar Bz-f -bz-ba -fr�rCrrr?r?�s���F�	�D��&��G���F�=��3���
A�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�Irr?c��eZdZ	edd��Zedd��ed�edd	d
��gZgd�Zd
eddd��fdeddd��fdeddd��fdeddd��fdeddd
��fdeddd
��fgZy)�!TestOptionalsAlternatePrefixChars�+:/F��prefix_chars�add_help�+frr�::bar�/bazrrr)r0rArBrCr�--bar Br@r7�--helpz+hz::helpz/helprNrDT�::ba BrC�
+f ::bar B�+f /b�/ba +f�	r!r"r#rvr�r�r�r}r�rCrrrHrH�s���C����>���D��&��G���F�=��3���
q�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�IrrHc��eZdZ	edd��Zedd��ed�edd	d
��gZgd�Zd
eddd��fdeddd��fdeddd��fdeddd��fdeddd
��fdeddd
��fgZy)�*TestOptionalsAlternatePrefixCharsAddedHelprITrJrMrrrNrOrrr)r0rArBrCrrPr@rFNrDrRrCrSrTrUrVrCrrrXrX�s���+����=���D��&��G���F�=��3���
H�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�IrrXc	���eZdZ	edd��Zedd��edd��edd��gZgd	�Zd
eddd��fdeddd��fd
eddd��fdeddd��fgZy)�2TestOptionalsAlternatePrefixCharsMultipleShortArgsz+-FrJr�rrz+yz+z)�-wz-xyzz+xrz+xyzr�r��yr	Tz+y -xz+yz -xNrVrCrrrZrZs���J���u�=���D��&��D��&��D��&���
�H�
�R�%�5�E�
*�+�	
�r�D�E�U�+�,�	�"�t�t�u�-�.�	�2����-�.�	�IrrZc��eZdZ	eddddd��gZgd�Zded	�
�fded�
�fded�
�fded�
�fded�
�fgZy)
�TestOptionalsShortLong�-v�	--verbose�-nz--noisyrr)z
--x --verbosez-Nr�z-v xrF)�verboseTNr�rCrrr_r_(sn��F�	�D�+�t�Y�|�D���4�H�	�R��
��	
�r�$�� �	�b��&�'�	
�r�$�� �	�B�t�$�%��Irr_c��eZdZ	ed�edd��gZdgZdedd�	�fd
edd�	�fded
d�	�fdedd�	�fgZy)�TestOptionalsDestz	--foo-bar�--baz�zabbazr(r�z--foo-bar frN)�foo_barrgz--baz g�gz--foo-bar h --baz i�hr�z--baz j --foo-bar k�k�jr�rCrrrere8sf��4��{�+�S��x�-H�I���u�H�	��3�t�4�5�	�B�t�C�0�1�	��3�s� ;�<�	��3�s� ;�<�	�Irrec�~�eZdZ	ed�edd��gZdgZdedd��fd	ed
d��fdedd��fgZy)
�TestOptionalsDefaultr�rr��defaultr�rN�r�r]z-xxr�z-yyr]r�rCrrrnrnEsU��4��t�9�c�$��&;�<���u�H�	�R�$�"�
��	��S�B�� �	��T�S�!�"��Irrnc�T�eZdZ	ed�gZddgZded��fded��fgZy)�TestOptionalsNargsDefaultr�r�rNr�r�r�rCrrrsrsQs9��A��t�9�+���T�{�H�	�R�$�Z��	��c����Irrsc�Z�eZdZ	edd��gZddgZded��fdedg��fgZy)	�TestOptionalsNargs1r����nargsr�rNr�r�r�rCrrruru\s?��0��t�1�-�.���T�{�H�	�R�$�Z��	��s�e����Irruc�\�eZdZ	edd��gZgd�Zded��fdegd	���fgZy)
�TestOptionalsNargs3r��rw)r�r�r��-x a b�a -x�a -x brNr�z-x a b c�r��b�cr�rCrrrzrzgs:��1��t�1�-�.��>�H�	�R�$�Z��	�R�/�*�+��Irrzc�X�eZdZ	edd��eddd��eddd�	�ed
dedd�
�gZdgZdedddd��fdedddd��fdedddd��fdedddd��fdedddd��fdedddd��fdedddd��fd
edddd��fdedddd��fg	Zy)�TestOptionalsNargsOptionalr[�?rwr�r)rxrr�spam�rxrpr�42�84)rxr�rrp�2rN�T�rir�r]r	z-w 2z-x 2z-y 2z-z 2��	r!r"r#rv�intr�r�r}r�rCrrr�r�rs���:�	�D����D��2�&��D��V�,��D��#�T�4�@�	���u�H�	�R�$�$�&�B�
/�0�	
�r�D�D�F�b�1�2�	��c�T�V�r�2�3�	
�r�D�B�&�B�/�0�	��d�c�V�r�2�3�	
�r�D�D�D�B�/�0�	��d�d�c�R�0�1�	
�r�D�D�F�b�1�2�	��d�d�f��2�3�
�Irr�c���eZdZ	edd��eddd��gZdgZded	d�
�fdegd�
�fdedgd�
�fdedd
gd�
�fded	g�
�fded	dg�
�fded	dd
g�
�fgZy	)�TestOptionalsNargsZeroOrMorer��*rwrr�r�r�rNrqr�r|r��-y a�-y a br�rCrrr�r��s���I�	�D����D��V�,����u�H�	�R�$�&�
!�"�	
�r�B�&�!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	
�r�D�B�� �	��d�s�e�$�%�	�2���c�
�+�,��Irr�c
��eZdZ	edd��eddd��gZgd�Zded	d�
�fdedgd�
�fd
eddgd�
�fded	dg�
�fded	ddg�
�fgZy	)�TestOptionalsNargsOneOrMorer��+rwrr�r�)r�r�rr}za -y brNrqr�r�r|r�r�r�r�rCrrr�r��s���H�	�D����D��V�,���3�H�	�R�$�&�
!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	��d�s�e�$�%�	�2���c�
�+�,��Irr�c
���eZdZ	edd��edeed���gZgd�Zded	d	�
�fdedd	�
�fd
edd	�
�fded	d�
�fded	d�
�fdedd�
�fgZ	y	)�TestOptionalsChoicesr�abc��choicesz-g��r�r�)r�z-f dz-f abz-fadz-gaz-g 6rN)rrirr�z-f cr�z-g 0rz-g 03r{z-fb -g4r���
r!r"r#rvr��ranger�r�r}r�rCrrr�r��s���6�	�D�%� ��D�s�E�!�H�-�/��=�H�	�R�$�$�
� �	��c�T�"�#�	��c�T�"�#�	��d�a��!�	�"�t�q�/�"�	�B���N�#�
�Irr�c�Z�eZdZ	eded��gZddgZded��fd	ed
��fgZy)�TestOptionalsRequiredr�T�r��requiredr�r�-x 1rvr�z-x42rNr�rCrrr�r��sE��3�	�D�s�T�*����R�y�H�	��a���	��b����Irr�c�X�eZdZ	edd��gZddgZded��fd	ed
��fgZy)�TestOptionalsActionStorer��storerr�r}rNr�z-xfoor*r�rCrrr�r��s=��0��t�G�4�5���V�}�H�	�R�$�Z��	�"�u�+���Irr�c�X�eZdZ	edde��gZdgZded��fdee��fgZy)�TestOptionalsActionStoreConstrrrr�rN�r])	r!r"r#rvr�r�r�r}r�rCrrr�r��s=��6��t�M��H�I���u�H�	�R�$�Z��	
�r�F�|���Irr�c�X�eZdZ	edd��gZgd�Zded��fded��fgZy	)
�TestOptionalsActionStoreFalser�store_falser)r�r
rrT)r	FNr�rCrrr�r��s9��6��t�M�:�;��#�H�	�R�$�Z��	
�r�E�{���Irr�c�X�eZdZ	edd��gZgd�Zded��fded��fgZy	)
�TestOptionalsActionStoreTruez--applerr)r�z	--apple=bz	--apple brF)�appleTNr�rCrrr�r��s9��5��y��>�?��.�H�	�R�e�_��	�B�T�N�#��Irr�c��eZdZ	edej
��gZddgZded��fded��fd	ed
��fded
��fded��fgZ	d
�Z
d�Zy)�TestBooleanOptionalActionr�r�	--foo bar�	--foo=barrNrT�--no-fooFz--foo --no-fooz--no-foo --fooc��tj�}|jt�5}|j	ddtj
��ddd�|j
dtj��y#1swY�/xYw)Nr�T�rrz*got an unexpected keyword argument 'const')	r-r.r�r�r��BooleanOptionalAction�assertInr��	exception�rr4�cms   r�
test_constz$TestBooleanOptionalAction.test_constsc���(�(�*��
�
�
�y�
)�R�����t�H�<Z�<Z��[�*�	
�
�
�B�C����DU�V�*�
)�s�#A;�;Bc���tj�}|jt�5|j	dtj
d��ddd�|jt�5|j	dtj
t��ddd�|jt�5|j	dtj
d��ddd�|jt�5|j	dtj
d��ddd�|jt�5|j	dtj
d�	�ddd�|jt�5|j	d
tj
d�	�ddd�y#1swY��OxYw#1swY��xYw#1swY��xYw#1swY��xYw#1swY�|xYw#1swYyxYw)N�-a)rr��-b�-c)r�metavar�-d�d�-e)rr�rrC)r-r.�assertWarns�DeprecationWarningr�r��boolr3s  r�test_deprecated_init_kwz1TestBooleanOptionalAction.test_deprecated_init_kws����(�(�*��
�
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2��
�
�0�
1������5�5��
 �
�2�
1�A2�
1��2�
1��2�
1��2�
1��2�
1��2�
1�sG�#F�*'F'�.#F4�.#G�.#G�.#G�F$�'F1�4F=�G	�G�G!)r!r"r#rvr-r�r�r�r}r�r�r�rCrrr�r��ss��%��w�x�/M�/M�N�O���[�)�H�	�R�D�\��	�"��,��	�R�E�]�#�	�2�%�=�)�	�2�$�<�(��I�W�)rr�c�l�eZdZ	eddej
��gZdgZded��fded��fgZ	y)	�!TestBooleanOptionalActionRequiredr�T)r�rrrr�FN)
r!r"r#rvr-r�r�r�r}r�rCrrr�r�6sI��.�	�G�d�8�+I�+I�J����t�H�	�"��,��	�R�E�]�#��Irr�c�r�eZdZ	edd��gZgd�Zded��fded	g��fd
ed	dg��fgZy)�TestOptionalsActionAppendrf�appendr�r�rf�a --baz�	--baz a brN�rF�--baz ar��--baz a --baz br�r�rCrrr�r�BsL��1��w�x�8�9��5�H�	�R�D�\��	�B�C�5�M�"�	�B�C��:�.�/��Irr�c�z�eZdZ	edddg��gZgd�Zdedg��fdedd	g��fd
egd���fgZy)
�$TestOptionalsActionAppendWithDefaultrfr�r7�rrpr�rr�r�r�r�)r7r�r�Nr�rCrrr�r�NsQ��1��w�x�#��G�H��5�H�	�R�S�E�]��	�B�C��:�&�'�	�B�?�3�4��Irr�c���eZdZ	edd��edd��edd��edd��gZgd�Zd	ed
d
d
d
��fded
gd
d
d
��fded
d
gd
d
��fded
d
d
d
��fded
d
d
d
��fgZy
)�!TestConstActionsMissingConstKwargr�append_constrr�r�rr0)z-f vr�r�rN)rr*r�rEr�rCrrr�r�Zs���G�	�D��(��G�N�+��D��'��G�M�*�	��2�H�	�R�$�D�D�d�
3�4�	
�r�T�F���$�7�8�	�"�t�$��4�T�:�;�	
�r�D�d�d��5�6�	�"�t���4�8�9��Irr�c	��eZdZ	edde��eddd��gZgd�Zd	ed
��fdeeg��fdeed
edg��fgZy
)�TestOptionalsActionAppendConstr�r�rr�r�r��rr)�r�r�za -cz-bxz-b xrN�r��-b -cx -b -cyzr��yz�	r!r"r#rvr�r�r�r}r�rCrrr�r�msf��7�	�D��y�9��D���,���2�H�	�R�$�Z��	
�r�Y�K� �!�	�2��C��D� A�B�C��Irr�c
��eZdZ	eddedg��eddd��gZgd	�Zd
edg��fdedeg��fdeded
edg��fgZy)�)TestOptionalsActionAppendConstWithDefaultr�r�r7)rrrpr�r�r�r�r�rr�r�r�r�Nr�rCrrr�r�|sq��7�	�D��y�3�%�H��D���,���2�H�	�R�3�%�[��	
�r�S�)�$�%�&�	�2��i��i�� F�G�H��Irr�c�X�eZdZ	edd��gZgd�Zded��fded��fgZy)	�TestOptionalsActionCountr��countr)r�r�z-x bz	-x a -x brNr�rvr�rCrrr�r��s8��0��t�G�4�5��1�H�	�R�$�Z��	
�r�A�w���Irr�c���eZdZ	ed�ed�edd��gZddgZded	d	d
��fded
d	d
��fded
d	d
��fded	dd
��fded	dd
��fdedd	d��fgZy	)�"TestOptionalsAllowLongAbbreviationr��--foobaz�--fooblerrz--foob 5�--foobrNF)r*�foobaz�fooblez--foo 7�7z--foo=7z	--fooba ar�z	--fooba=az--foobl --foo griTr�rCrrr�r��s���<�	�G���J���J�|�,���
�H�%�H�	�R�D��e�
4�5�	�B�3�t�E�:�;�	�B�3�t�E�:�;�	�b�T�#�e�<�=�	�b�T�#�e�<�=�	�B�3�t�D�A�B�
�Irr�c��eZdZ	ed��Zed�edd��ed�gZgd�Zd	ed
dd
��fded
dd
��fdeddd��fgZy
)�%TestOptionalsDisallowLongAbbreviationF��allow_abbrevr��--foodlerr�--foonly)�-foon 3z--foon 3�--foodz--food --foo 2rN�r*�foodle�foonlyz--foo 3�3z--foonly 7 --foodle --foo 2r�Tr�rVrCrrr�r��sr��;���.���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr�c��eZdZ	edd��Zed�edd��ed�gZgd	�Zd
eddd��fd
eddd��fdeddd��fgZy)�0TestOptionalsDisallowLongAbbreviationPrefixCharsr�F�rKr�z++fooz++foodlerrz++foonly)z+foon 3z++foon 3z++foodz++food ++foo 2rNr�z++foo 3r�z++foonly 7 ++foodle ++foo 2r�Tr�rVrCrrr�r��st��L���%�@���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr�c��eZdZ	ed��Zed�edd��ed�gZgd�Zd	ed
dd
��fded
dd
��fdeddd��fgZy
)�/TestOptionalsDisallowSingleDashLongAbbreviationFr�rz-foodlerrz-foonly)r�z-foodz-food -foo 2rNr�z-foo 3r�z-foonly 7 -foodle -foo 2r�Tr�rVrCrrrr�sq��;���.���F���I�l�+��I����
4�H�	�R�D��t�
4�5�	�2�#�e�D�9�:�	#�R�C��S�%I�J��Irrc
���eZdZ	ed��Zed�edd��gZddgZded	d	�
�fdedd	�
�fd
edd	�
�fded	d�
�fdedd�
�fdedd�
�fgZy	)�/TestDisallowLongAbbreviationAllowsShortGroupingFr�z-rr�r�rz-c -rrN��rr�z-rar�z-rcc�ccz-ccr�z-cc -raz-ccrccrVrCrrrr�s���;���.���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irrc
���eZdZ	edd��Zed�edd��gZddgZd	ed
d
��fded
d
��fdedd
��fded
d��fded
d��fdedd��fgZy
)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixr�Fr�z+rz+cr�rz+c +rrNrz+rar�z+rccrz+ccr�z+cc +raz+ccrccrVrCrrrr�s���O���%�@���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irrc�4�eZdZGd�de�Zd�Zd�Zd�Zy)�TestStrEnumChoicesc��eZdZdZdZdZy)�TestStrEnumChoices.Color�red�green�blueN)r!r"r#�RED�GREEN�BLUErCrr�Colorrs�������rrc���tj�}|jd|j��|j	ddg�}|j|j|jj�y)N�--colorr�r
)r-r.r�rr=r��colorr�rr4rxs   r�test_parse_enum_valuez(TestStrEnumChoices.test_parse_enum_valuesX���(�(�*�����I�t�z�z��:�� � �)�U�!3�4��������T�Z�Z�^�^�4rc���tj�}|jd|jd��|j	d|j��|j	d|j
��y)NrzChoose a color�r��helpz[--color {red,green,blue}]z  --color {red,green,blue})r-r.r�rr��format_usage�format_helpr3s  r�'test_help_message_contains_enum_choicesz:TestStrEnumChoices.test_help_message_contains_enum_choicessZ���(�(�*�����I�t�z�z�@P��Q��
�
�2�F�4G�4G�4I�J��
�
�2�F�4F�4F�4H�Irc���tjd��}|jd|j��|j	tj
d|jddg�y)NF��
exit_on_errorrr�z9invalid choice: 'yellow' \(choose from red, green, blue\)�yellow)r-r.r�r�assertRaisesRegex�
ArgumentErrorr=r3s  r�$test_invalid_enum_value_raises_errorz7TestStrEnumChoices.test_invalid_enum_value_raises_errorsT���(�(�u�=�����I�t�z�z��:�����"�"�H����
��!�		
rN)r!r"r#rrrrr%rCrrr
r
s�����
5�J�
rr
c�@�eZdZ	ed�gZgd�Zded��fgZy)�TestPositionalsNargsNoner*�rr��a br�rNr�rCrrr'r'"s)��6��u�:�,�� �H�	�b�S�k���Irr'c�F�eZdZ	edd��gZgd�Zdedg��fgZy)�TestPositionalsNargs1r*rvrwr(r�rNr�rCrrr+r+,s/��8��u�A�.�/�� �H�	�b�c�U�m���Irr+c�H�eZdZ	edd��gZgd�Zdeddg��fgZy	)
�TestPositionalsNargs2r*r�rw)rr�r��a b cr)r�r�rNr�rCrrr-r-6s2��8��u�A�.�/��'�H�	���S�z�"�#��Irr-c�p�eZdZ	edd��gZdgZdeg��fdedg��fdedd	g��fgZy
)�TestPositionalsNargsZeroOrMorer*r�rwr�rrr�r)r�Nr�rCrrr0r0@sN��:��u�C�0�1���v�H�	�R�B�Z��	�b�c�U�m��	���S�z�"�#��Irr0c�r�eZdZ	eddd��gZdgZded��fdedg��fd	edd
g��fgZy)�%TestPositionalsNargsZeroOrMoreDefaultr*r�rEr�r�rrr�r)r�Nr�rCrrr2r2LsP��H��u�C��?�@���v�H�	�R�E�]��	�b�c�U�m��	���S�z�"�#��Irr2c�^�eZdZ	edd��gZddgZdedg��fdedd	g��fgZy
)�TestPositionalsNargsOneOrMorer*r�rwrr�r�rr)r�Nr�rCrrr4r4XsD��<��u�C�0�1���D�z�H�	�b�c�U�m��	���S�z�"�#��Irr4c�X�eZdZ	edd��gZddgZded��fd	ed	��fgZy)
�TestPositionalsNargsOptionalr*r�rwr�r)rNrr�r�rCrrr6r6cs=��&��u�C�0�1���e�}�H�	�R�D�\��	�b�S�k���Irr6c�Z�eZdZ	eddd��gZddgZded��fd	ed	��fgZy
)�#TestPositionalsNargsOptionalDefaultr*r�rr�r�r)rrr�Nr�rCrrr8r8ns?��;��u�C��<�=���e�}�H�	�R�B�Z��	�b�S�k���Irr8c�\�eZdZ	edded��gZgd�Zded��fd	ed
��fgZy)�,TestPositionalsNargsOptionalConvertedDefaultr*r�r��rxr�rp)r�r)�1 2rrr�1rvNr�rCrrr:r:ysE���
	�E��3��5���$�H�	�R�B�Z��	�b�Q�i���Irr:c�P�eZdZ	ed�ed�gZgd�Zdedd��fgZy)	�TestPositionalsNargsNoneNoner*rE)rr�r�r.r)r�r��r*rENr�rCrrr?r?�s3��7��u�:�s�5�z�2��'�H�	��s��$�%��Irr?c�V�eZdZ	ed�edd��gZgd�Zdeddg�	�fgZy
)�TestPositionalsNargsNone1r*rErvrw)rr�r�r.r)r�r�r@Nr�rCrrrBrB�s8��@��u�:�s�5��':�;��*�H�	��s���&�'��IrrBc�X�eZdZ	edd��ed�gZgd�Zdeddgd	�
�fgZy)�TestPositionalsNargs2Noner*r�rwrE�rr�r�r)�a b c dr.r�r�r�r@Nr�rCrrrDrD�s:��B��u�A�.��E�
�;��3�H�	�"�#�s���-�.��IrrDc�l�eZdZ	ed�ed�edd��gZgd�Zdeddg�	�fd
edddg�	�fdedddd
g�	�fdeddg�	�fdeddg�	�fdedddg�	�fdedddg�	�fdedddg�	�fdedddd
g�	�fdedddd
g�	�fdedddd
g�	�fgZy)�"TestPositionalsNargsNoneZeroOrMorer�r*rEr�rw)rr��
a b -x X cr�N�r�r*rEr)r�r.r��-x X ar7�a -x X�-x X a b�a -x X b�a b -x X�
-x X a b c�
a -x X b c�
a b c -x Xr�rCrrrHrH�s��H��t�9�c�%�j�#�e�3�2G�H��*�H�	�b�4�S�b�)�*�	��T�s���.�/�	�"�t��3��*�5�6�	�2���"�-�.�	�2���"�-�.�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:��IrrHc�$�eZdZ	ed�ed�edd��gZgd�Zdedd	d
g��fdedd	d
d
g��fdedd	d
g��fdedd	d
g��fdedd	d
g��fdedd	d
d
g��fdedd	d
d
g��fdedd	d
d
g��fgZy)�!TestPositionalsNargsNoneOneOrMorer�r*rEr�rw�rr�r�rIr)Nr�r�rJr.r�rMr7rNrOrPrQrRr�rCrrrTrT�s���J��t�9�c�%�j�#�e�3�2G�H��/�H�	��T�s���.�/�	�"�t��3��*�5�6�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�R�#�3�S�E�2�3�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:�	�r�C�S�s�C�j�9�:�	�IrrTc���eZdZ	ed�ed�edd��gZgd�Zdeddd�	�fd
eddd�	�fded
dd�	�fded
dd�	�fded
dd�	�fded
dd�	�fded
dd�	�fgZy)� TestPositionalsNargsNoneOptionalr�r*rEr�rw�rr�r.r�NrJr)r�rKr7rLrMrNrOr�rCrrrWrW�s���J��t�9�c�%�j�#�e�3�2G�H��%�H�	�b�4�S�d�+�,�	��T�s��,�-�	�2���$�/�0�	�2���$�/�0�	�R�#�3�C�0�1�	�R�#�3�C�0�1�	�R�#�3�C�0�1��IrrWc�6�eZdZ	ed�edd��ed�gZgd�Zdedgd�	�fd
eddgd�	�fdedddgd
�	�fdedgd�	�fdedgd�	�fdeddgd�	�fdeddgd�	�fdedddgd
�	�fdedddgd
�	�fg	Zy)�"TestPositionalsNargsZeroOrMoreNoner�r*r�rwrE)rr�rNrQrIr�NrJr)r�r.r�rKr7rLrMrOrPrRr�rCrrrZrZ�s���J��t�9�c�%�s�&;�S��Z�H��D�H�	�b�4�R�S�)�*�	��T��u�#�.�/�	�"�t�#�s���5�6�	�2����-�.�	�2����-�.�	�R�#�C�5�c�2�3�	�R�#�C�5�c�2�3�	�r�C�c�3�Z�S�9�:�	�r�C�c�3�Z�S�9�:�
�IrrZc��eZdZ	ed�edd��ed�gZgd�Zdedd	gd
��fdedd	d
gd
��fdedd	gd
��fdedd	gd
��fdedd	gd
��fdedd	d
gd
��fdedd	d
gd
��fgZy)�!TestPositionalsNargsOneOrMoreNoner�r*r�rwrE)rr�r�rQrIr)Nr�r�rJr.r�rMr7rNrOrPrRr�rCrrr\r\�s���L��t�9�c�%�s�&;�S��Z�H��=�H�	��T��u�#�.�/�	�"�t�#�s���5�6�	�R�#�C�5�c�2�3�	�R�#�C�5�c�2�3�	�R�#�C�5�c�2�3�	�r�C�c�3�Z�S�9�:�	�r�C�c�3�Z�S�9�:��Irr\c�l�eZdZ	eddd��ed�gZgd�Zdedd��fd	edd
��fgZy)� TestPositionalsNargsOptionalNoner*r�rr�rErXr�r@r)r�Nr�rCrrr^r^�sG��L��u�C��<�c�%�j�I��%�H�	�b�R�S�!�"�	��s��$�%��Irr^c�x�eZdZ	edd��edd��gZgd�Zdedd	gg�
�fdedd	gdg�
�fgZy
)�TestPositionalsNargs2ZeroOrMorer*r�rwrEr��rr�r�r)r�r�r@r.r�Nr�rCrrr`r`sR��G��u�A�.��E��0E�F��!�H�	���S�z�r�*�+�	�"�#�s��#��/�0��Irr`c�^�eZdZ	edd��edd��gZgd�Zdedd	gd
g��fgZy)
�TestPositionalsNargs2OneOrMorer*r�rwrEr�)rr�r�r)r.r�r�r�r@Nr�rCrrrcrcs?��I��u�A�.��E��0E�F��(�H�	�"�#�s��#��/�0��Irrcc�v�eZdZ	edd��edd��gZgd�Zdedd	gd
��fdedd	gd
��fgZy
)�TestPositionalsNargs2Optionalr*r�rwrEr�)rr�r�rFr)r�r�Nr@r.r�r�rCrrreresP��A��u�A�.��E��0E�F��,�H�	���S�z�t�,�-�	�"�#�s���-�.��Irrec��eZdZ	edd��edd��gZddgZdegdg�	�fd
edgdg�	�fdeddgd
g�	�fgZy)�TestPositionalsNargsZeroOrMore1r*r�rwrErvrr�r�r@r)r�r.r�Nr�rCrrrgrg(sg��G��u�C�0�#�e�1�2E�F���G��H�	�b�R�c�U�#�$�	���u�3�%�(�)�	�"�#�s��#��/�0��Irrgc�x�eZdZ	edd��edd��gZgd�Zdedgd	g�
�fdedd	gdg�
�fgZy
)�TestPositionalsNargsOneOrMore1r*r�rwrErvrar)r�r�r@r.r�Nr�rCrrriri4sR��I��u�C�0�#�e�1�2E�F��!�H�	���u�3�%�(�)�	�"�#�s��#��/�0��Irric�r�eZdZ	edd��edd��gZgd�Zdeddg�	�fd
eddg�	�fgZy)�TestPositionalsNargsOptional1r*r�rwrErvrXr�Nr@r)r�r�rCrrrkrk?sL��I��u�C�0�#�e�1�2E�F��%�H�	�b�T��u�%�&�	��s���&�'��Irrkc�F�eZdZ	ed�ed�edd��edd��gZgd�Zd	ed
dgdg�
�fded
ddgdg�
�fdeddgdg�
�fdeddgdg�
�fdeddgdg�
�fdedddgdg�
�fdedddgdg�
�fdedddgdg�
�fgZy
)�#TestPositionalsNargsNoneZeroOrMore1r�r*rEr�rwrFrvrUr)Nr�r��r�r*rErFr.r�rMr7rNrOrPrQrRr�rCrrrmrmJs���G�	�D�	��E�
��E����E���	��0�H�	��T�s����6�7�	�"�t��3�%�c�U�;�<�	�R�#�3�B�S�E�:�;�	�R�#�3�B�S�E�:�;�	�R�#�3�B�S�E�:�;�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�Irrmc�t�eZdZ	ed�ed�edd��edd��gZgd�Zd	ed
ddgd
g��fded
ddd
gdg��fdedddgd
g��fdedddgd
g��fdedddgd
g��fdedddgd
g��fdedddd
gdg��fdedddd
gdg��fdedddd
gdg��fg	Zy
)�"TestPositionalsNargsNoneOneOrMore1r�r*rEr�rwrFrv)rr�r�r�za b -x X c dza b c -x X dr.Nr�r�r�rnrFr�rPr7rQrIrRz-x X a b c dza -x X b c dza b c d -x Xr�rCrrrprp`s��I�	�D�	��E�
��E����E���	��G�H�	�"�t��3�%�c�U�;�<�	�B��3�S�#�J�S�E�B�C�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	�r�C�S�s�e�#��?�@�	��c�s��c�
���F�G�	��c�s��c�
���F�G�	��c�s��c�
���F�G�
�Irrpc�@�eZdZ	ed�ed�eddd��edd�	�gZgd
�Zdedd
ddg��fdedd
ddg��fdedd
ddg��fdedd
ddg��fdedd
ddg��fdedd
ddg��fdedd
ddg��fdedd
ddg��fgZy)�!TestPositionalsNargsNoneOptional1r�r*rEr���?r�rFrvrwrUr)Nr�r�rnr.r�rMr7rNrOrPrQrRr�rCrrrrrrws���E�	�D�	��E�
��E��e�,��E���	��0�H�	��T�s��C�5�9�:�	�"�t��#�C�5�9�:�	�R�#�3�E��u�=�>�	�R�#�3�E��u�=�>�	�R�#�3�E��u�=�>�	�r�C�S�c��u�=�>�	�r�C�S�c��u�=�>�	�r�C�S�c��u�=�>�	�Irrrc��eZdZ	edd��eddd��gZddgZd	ed
d��fdedd��fd
edd��fgZy
)�$TestPositionalsNargsOptionalOptionalr*r�rwrErr�r�r.rNr@r�r)r�r�rCrrruru�se��!�	�E����E��b�)�����!�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s��$�%��Irruc	��eZdZ	edd��edd��gZdgZdedg�	�fd
ed
g�	�fded
dg�	�fd
ed
ddg�	�fgZy)�&TestPositionalsNargsOptionalZeroOrMorer*r�rwrEr�r�rNr@r�r)r�r.r�r�rCrrrwrw�sn��;��u�C�0�#�e�3�2G�H���y�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s���&�'�	�"��3��*�-�.�	�Irrwc��eZdZ	edd��edd��gZddgZded	dg�
�fdeddg�
�fd
edddg�
�fgZy	)�%TestPositionalsNargsOptionalOneOrMorer*r�rwrEr�rr�r�Nr@r)r�r.r�r�rCrrryry�sc��=��u�C�0�#�e�3�2G�H���G�}�H�	�b�T��u�%�&�	��s���&�'�	�"��3��*�-�.��Irryc�d�eZdZ	eded���gZgd�Zded��fded��fgZy)	�TestPositionalsChoicesStringr��abcdefgr��rr�rjr��efr��r�riN)	r!r"r#rv�setr�r�r}r�rCrrr{r{�s=��0��v�s�9�~�>�?��-�H�	�b�c�l��	�b�c�l���Irr{c�f�eZdZ	edeed���gZgd�Zded��fded	��fgZ	y
)�TestPositionalsChoicesIntr��r�r}�4r�r�15�Nr�rCrrr�r��s?��'��v�C��r��C�D��-�H�	�b�a�j��	
�r�r�{���Irr�c�`�eZdZ	edd��eddd��gZgd�Zdedd	d
gg��fgZy)
�TestPositionalsActionAppendr�r�rr��rrxrEr.r�r�r�rNr�rCrrr�r��sI��"�	�F�8�$��F�8�1�-���4�H�	�"�3��c�
�+�,�-��Irr�c��eZdZ	edd��eddd��gZdd	gZd
edd�
�fdedd�
�fdedd�
�fdedd�
�fgZy)�"TestOptionalsNumericAndPositionalsr�r�rwz-4r]r�r)rr*z-315rNFrqr�Tz-4 ar�rCrrr�r��ss��E�	�C�s���D�s�<�0����f�~�H�	�R�$�%�
 �!�	�b�3�%� �!�	
�r�D�D�!�"�	��c�T�"�#�	�Irr�c	��eZdZ	edd��eddd��gZdgZd	ed
d��fd
ed
d��fdedd��fded
d��fdedd��fgZy
)�(TestOptionalsAlmostNumericAndPositionalsr�r�rwz-k4r]rr�z-k3rNFrqr*r�Tz-k4 ar�rCrrr�r��s���L�	�C�s���E��L�1����w�H�	�R�$�%�
 �!�	
�r�D�E�"�#�	�b�3�%� �!�	��T�T�"�#�	�"�s�d�#�$��Irr�c��eZdZedd��eddd��gZdgZdgedd	�
�fdgedd	�
�fdgedd	�
�fddged	d�
�fddged	d�
�fddged	d�
�fd
ged	d�
�fdged	d�
�fgZy	)�$TestEmptyAndSpaceContainingArgumentsr�r�rwrz--yyyr]r(rNrqza badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr�rCrrr�r��s���	�C�s���D�'��$����v�H�
��r�B�$�� �
��r�J�$�/�0�
���[�D�1�2�
���R�$�"�%�&�
�
�	�R�$�*�5�6�
��	�b�4�;�7�8�
�	�R�$�*�5�6�
�	�b�4�;�7�8�	�Irr�c��eZdZed��Zedddd��edd	ed
��edd
d��gZddgZdedd
d��fdedd
d��fdedd
d��fdeddd��fdedd
d��fdedd
d��fgZ	y)� TestPrefixCharacterOnlyArgumentsz-+�rK�-r�r�r5)r)rxrr�r]r)r)r�rpz-+-r	rr�rz+ -rNFr\z- Xr7z+ -3���Tz- ===z===)
r!r"r#rvr�r�r�r�r}r�rCrrr�r�s�����-���C�c��H�5��C�c��R�0��E��L�1���
�e�}�H�	�R�$�"��
&�'�	�b�8�r�U�+�,�	��S�B�%�(�)�	��d�b�E�*�+�	��T�R�4�(�)�	�"�u��e�,�-�
�Irr�c���eZdZ	edd��edd��gZgZdedg��fdegg��fded	gg��fd
ed	gdg��fd	edd	g��fdegd	g��fd
edgd	g��fgZy)�TestNargsZeroOrMorer�r�rwr]rNrqr�r�z	-x a -- br�r}r~r�rCrrr�r�"s���I��t�3�/��S��1D�E���H�	�R�$�"�
��	
�r�B�"�~��	��s�e�r�"�#�	�b�C�5�S�E�*�+�	�b�4�C�5�!�"�	��b�S�E�"�#�	�2���#��'�(��Irr�c��eZdZ	ed�edd��ed�gZgd�Zdedgd�	�fd
edgd�	�fdedd
dgd�	�fdedgd�d�	�fdedgd�d�	�fdedgd�d�	�fdedddgd�	�fgZy)�TestNargsRemainderr�r]�...rwr)rrz-z Zr7Nr\z-z Z X�Zz
-z Z X A B�ArCz
X -z Z A B)rr�r�rCz
X A -z Z B)r�rr�rC�
X A B -z Z)r�rCrr�z	X Y --foo�Yr�r�rCrrr�r�2s���<��s�8�S��E�%:�C��I�F��!�H�	�b�3�"��%�&�	�2��r�S�)�*�	�r�C�C��:��5�6�	�r�C�#8�D�A�B�	�r�C�#8�D�A�B�	�r�C�#8�D�A�B�	�b�3�3��.�D�9�:��Irr�c�j�eZdZ	ede��eded��edd��gZgd	�Zd
eddg��fd
eddg��fdedddg��fdeddg��fdeddg��fdeddg��fdedddg��fdedddg��fdedddg��fdedddg��fdedddg��fgZy)�TestOptionLiker��r�z-3r])r�r)r	r�rw)
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)	r!r"r#rv�floatr�r�r}r�rCrrr�r�Bs��8�	�D�u���D�u�3�'��C�s����
0�H�

�R�$�$�"�
%�&�	�2��t�r�*�+�	�R�#��#��/�0�	��d�c�R�(�)�	�"�t�t�r�*�+�	�"�t�s�b�)�*�	�2����u�-�.�	�b�4�4�C�5�)�*�	�2��t��u�-�.�	�2��t��u�-�.�	�2����u�-�.��Irr�c���eZdZ	eddeej��eddeej��eddej��ed	deej��ed
deej��gZgd�Zde	�fd
e	d��fde	ddg��fde	d��fde	dd��fde	ddgd��fd	e	d��fde	d��fd
e	g��fde	ddg��fg
Z
y)�TestDefaultSuppressr*r�r;rEr�rfrr�z--qux�--quux)r�r�z1 arr=rvrr<r�r@Tr�z1 --baz�r*rFz	--baz 1 2�r*rErFN)�quxz--qux 1)�quuxz
--quux 1 2)r!r"r#rvr�r-�SUPPRESSr�r�r}r�rCrrr�r�]s��/�	�E��3��0A�0A�B��E��3��0A�0A�B��G�L�(�2C�2C�D��G�3�S�(�2C�2C�D��H�C�c�8�3D�3D�E���"�H�	�R�T�
�	�b�Q�i��	��q�q�c�"�#�	�"��,��	�B�1�$�'�(�	�b�Q�Q�C�T�2�3�	�"��,��	�B�1�I��	�2�2�;��	�r��1�v��'��Irr�c��eZdZ	eej
��Zedd��edd��edd�	�gZd
gZde	�fde	d�
�fde	ddg��fde	d��fde	dd��fde	ddgd��fgZ
y)�TestParserDefaultSuppress��argument_defaultr*r�rwrEr�rfrrr�rr�rr)r�r@Tr�r�r�r�r�N)r!r"r#rvr-r�r�r�r�r}r�rCrrr�r�vs���>��H�,=�,=�>���E����E����G�L�)���
�v�H�	�R�T�
�	�b�S�k��	��s���&�'�	�"��,��	�B�3�D�)�*�	�b�S�s�e��6�7�
�Irr�c��eZdZ	ed��Zeddd��edd�	�ed
d�	�edd
��gZdgZdedddd��fdedddd��fdeddgdd��fdedddd��fdedddd��fdeddgdd��fgZy)�TestParserDefault42rr��	--version�version�1.0�rr�r*r�rwrEr�rfrrr�r)r*rErFr�r�r)r�Tr�r�NrVrCrrr�r��s���8��B�/���K�	�5�9��E����E����G�L�)�	���v�H�	�R�B�B�B��
3�4�	�b�S�b�b�"�5�6�	��s���2�r�:�;�	�"����r�:�;�	�B�3�B�D�"�=�>�	�b�S�s�e��r�B�C�
�Irr�c�
��eZdZ	�fd�Zed��Zed�ed�edd��gZgd	�Zd
ejzZ
dedd
dg��fdedd
ddg��fdede
d
g��fdedd
e
g��fdede
ddg��fdedd
e
dg��fgd�edd
dg��fgZejrPejjd�Zej"e�Zededed
g��fdedd
eg��fgz
Z�xZSdZ�xZS)�TestArgumentsFromFilec���tt|��dtj|j
�dzfddd|jdzfg}|D]+\}}t|d�5}|j|�ddd��-y#1swY�8xYw)N�hello�
)�	recursives-a
A
@hello)�invalids@no-such-path
�undecodable�wb)	rr�rMrU�fsencoder�r�rlrm�r�
file_textsr]�textrprs     �rrMzTestArgumentsFromFile.setUp�s����
�#�T�0�2�
�b�k�k�$�*�*�-��5�6�
%�
,�
�D�,�,�u�4�5�

�
�%�J�D�$��d�D�!�T��
�
�4� �"�!�%�!�!�s�A<�<B	�@��fromfile_prefix_charsr�r�r]r�rw)rr�r7z@invalidz@missingzhello world!zX YNr7r�)r�r�r]z
X -a A Y Zr�r��@hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a BrC)r�rr7r�r�@z@undecodable XzX @undecodabler)r!r"r#rMrvr�r�r�r�FS_NONASCIIr�r}r��TESTFN_UNDECODABLE�lstripr�rU�fsdecode�decoded_undecodabler$r%s@rr�r��sR���,�!���5���D�	��C���C�s����
7�H��Y�2�2�2�E�	��T�S�S�E�*�+�	�r�C�3�3��*�5�6�	�R�$�%�C�5�1�2�	�R�$�#�%��1�2�	��S�E�c�3�Z� @�A�	��S�C�E�3�<� @�A�	�r�B�#�#��7�8��I��#�#��2�2�9�9�$�?��)�b�k�k�+�6���
�r�D�,?�C�5�I�J�
�r�D�C�4G�3H�I�J�
�	
�	�
�rr�c���eZdZ	�fd�ZGd�de�ZeZed��Zedd��gZ	gZ
d	egd
���fgZ�xZ
S)�TestArgumentsFromFileConverterc���tt|��dg}|D]+\}}t|d�5}|j	|�ddd��-y#1swY�8xYw)N)r�s
hello world!
r�)rr�rMrlrmr�s     �rrMz$TestArgumentsFromFileConverter.setUp�sR���
�,�d�9�;�(�
�
�%�J�D�$��d�D�!�T��
�
�4� �"�!�%�!�!�s�A�A	c��eZdZd�Zy)�>TestArgumentsFromFileConverter.FromFileConverterArgumentParserc#�`K�|j�D]}|j�s�|���y�wrQ)r��strip)r�arg_line�args   r�convert_arg_line_to_argszWTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_args�s(�����~�~�'���y�y�{���	�(�s�,.N)r!r"r#r�rCrr�FromFileConverterArgumentParserr��s��	rr�r�r�r]r�rwr�)r�zworld!r7r�)r!r"r#rMr�r�r�rvr�r�r�r}r�r$r%s@rr�r��sX���,�!��*D��3�L���5���C�s�����H�	�R�2�3�4��Irr�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�TestFileTypeReprc�d�tjd�}|jdt|��y)Nrz
FileType('r')�r-�FileTyper��repr�rr�s  r�test_rzTestFileTypeRepr.test_r�s&��� � ��%������$�t�*�5rc�f�tjdd�}|jdt|��y)Nr�rvzFileType('wb', 1)r�r�s  r�	test_wb_1zTestFileTypeRepr.test_wb_1�s)��� � ��q�)�����,�d�4�j�9rc�h�tjdd��}|jdt|��y)Nr�latin_1rjz!FileType('r', encoding='latin_1')r�r�s  r�test_r_latinzTestFileTypeRepr.test_r_latin�s)��� � ��y�9�����<�d�4�j�Irc�j�tjddd��}|jdt|��y)Nri�big5�ignore)rk�errorsz/FileType('w', encoding='big5', errors='ignore')r�r�s  r�test_w_big5_ignorez#TestFileTypeRepr.test_w_big5_ignore�s.��� � ��v�h�G�����J��d��	%rc�j�tjddd��}|jdt|��y)Nrrv�replace�r�z"FileType('r', 1, errors='replace')r�r�s  r�test_r_1_replacez!TestFileTypeRepr.test_r_1_replaces+��� � ��a�	�:�����=�t�D�z�JrN)r!r"r#r�r�r�r�r�rCrrr�r��s��6�:�J�%�
Krr�c��eZdZd�Zd�Zy)�StdStreamComparerc��tj|�|_|dk(rt|_y|dk(rt
|_yt
�|_y)N�
stdout.buffer�
stderr.buffer)�operator�
attrgetterr�r��
backupattrr�r�)rr�s  rrzStdStreamComparer.__init__s=�� �*�*�4�0����?�"�1�D�O�
�_�
$�1�D�O�$�h�D�Orc�p�	||jt�k(S#t$r||jk(cYSwxYwrQ)r�r��AttributeErrorr�r�s  rr�zStdStreamComparer.__eq__s9��	,��D�L�L��-�-�-���	,��D�O�O�+�+�	,�s��5�5N�r!r"r#rr�rCrrr�r�
s��'�,rr��stdinr�r�zstdin.bufferr�r�c��eZdZiZd�Zd�Zy)�RFilec��||_yrQ�rf�rrfs  rrzRFile.__init__+�	����	rc�&�||jvr|j|}n/|j�x}|j|<|j�t|t�s|jd�}|j|jcxk(xr|k(ScS)N�ascii)�seen�read�closer�r�rrf�rr�r�s   rr�zRFile.__eq__.st���D�I�I���9�9�U�#�D�&+�j�j�l�2�D�4�9�9�U�#��K�K�M��$��$��;�;�w�'�D��y�y�E�J�J�.�$�.�.�.�.rN)r!r"r#rrr�rCrrr�r�(s��
�D��/rr�c�H��eZdZ	�fd�Zedej���edejd���gZgd�Zde	de
d��	�fd
e	e
d�e
d��	�fde	e
d�e
d��	�fd
e	ee�	�fde	de
d��	�fgZ�xZ
S)�
TestFileTypeRc���tt|��dD]R}ttj
j
|j|�dd��5}|j|�ddd��T|jd�y#1swY�pxYw)Nr@rirrj�readonly)
rrrMrlrUr]r^rTrmrt�r�	file_namerprs   �rrMzTestFileTypeR.setUp<sp���
�m�T�(�*�'�I��b�g�g�l�l�4�=�=�)�<��G�-�04��
�
�9�%�-�-�(�	
�!�!�*�-�-�-�s�A=�=B	r�r�r�r)r�rznon-existent-file.txtr*N�r�r��
-x foo barrE�
bar -x foo�-x - -r
)r!r"r#rMrvr-r�r�r�r}r��eq_stdinr�r$r%s@rrr9s����B�.�	�D�(�x�(�(�*�+��F�*��*�*�3�/�0���3�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2��x�0�1�	�R�$�U�:�%6�7�8��Irrc���eZdZ	�fd�Zedejd�d��gZdgZde	e
d��	�fgZ�xZS)
�TestFileTypeDefaultsc����tt|��ttj
j
|jd�dd��}|jd�|j�y)N�goodrirrj)
rrrMrlrUr]r^rTrmr)rrprs  �rrMzTestFileTypeDefaults.setUpSsG���
�"�D�/�1��B�G�G�L�L�����7��w�O���
�
�6���
�
�rr�rzno-file.txt�r�rprz-c goodr)r�)
r!r"r#rMrvr-r�r�r�r}r�r�r$r%s@rrrQsN���F��	�D�(�x�(�(��-�}�E����t�H��R�%��-�0�1�2�Irrc	�(��eZdZ	�fd�Zedejd���edejd���gZddgZde	de
d��	�fd
e	e
d�e
d��	�fde	e
d�e
d��	�fd
e	ee�	�fgZ�xZ
S)�TestFileTypeRBc����tt|��dD]R}ttj
j
|j|�dd��5}|j|�ddd��Ty#1swY�_xYw)Nr@rirrj)	rrrMrlrUr]r^rTrmrs   �rrMzTestFileTypeRB.setUpes`���
�n�d�)�+�'�I��b�g�g�l�l�4�=�=�)�<��G�-�04��
�
�9�%�-�-�(�-�-�s�A,�,A5	r��rbr�r�rr*Nr
rrErr)r!r"r#rMrvr-r�r�r�r}r��	eq_bstdinr�r$r%s@rrrbs����B�&�	�D�(�x�(�(��.�/��F�*��*�*�4�0�1����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3�	�Irrc�&�eZdZe�Zd�Zd�Zy)�WFilec��||_yrQr�r�s  rrzWFile.__init__|rrc�
�||jvr]d}d|jvr|jd�}|j|�|j	�|jj|�|j|jk(S)NzCheck that file is writable.r�r)r�moder
rmr�addrfrs   rr�zWFile.__eq__se����	�	�!�1�D��e�j�j� ��{�{�7�+���K�K����K�K�M��I�I�M�M�%� ��y�y�E�J�J�&�&rN)r!r"r#r�rrr�rCrrrrys���5�D��'rrc
�J��eZdZ	�fd�Zedejd���edejd���gZgd�Zde	de
d��	�fd
e	de
d
��	�fde	e
d�e
d��	�fd
e	e
d�e
d��	�fde	ee�	�fgZ�xZ
S)�
TestFileTypeWc�f��t�|��|jd�|jd�y�Nr
�writable�rrMrtrq�rrs �rrMzTestFileTypeW.setUp��(���
��
���!�!�*�-��!�!�*�-rr�rir�r�)r�rr
r*Nr
r&rrErr�r!r"r#rMrvr-r�r�r�r}r�	eq_stdoutr�r$r%s@rr#r#�s����B�.�	�D�(�x�(�(��-�.��F�*��*�*�3�/�0���&�H�	��T��e��-�.�	�R�$�U�:�%6�7�8�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��Irr#c����eZdZ	�fd�Zedejd���edejd���gZgd�Zde	e
d�e
d	��
�fde	ee�
�fgZ�xZ
S)�
TestFileTypeXc�f��t�|��|jd�|jd�yr%r'r(s �rrMzTestFileTypeX.setUp�r)rr�r�r�r�)r�rr
r&rr*rEr
rr*r%s@rr-r-�sy���K�.�	�D�(�x�(�(��-�.��F�*��*�*�3�/�0���2�H�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��Irr-c	��eZdZ	edej
d���edej
d���gZddgZdede	d���fd	ee	d�e	d
���fdee	d�e	d
���fdee
e
��fgZy)
�TestFileTypeWBr�r�r�r�rr*Nr
rrErr)r!r"r#rvr-r�r�r�r}r�
eq_bstdoutr�rCrrr0r0�s���I�	�D�(�x�(�(��.�/��F�*��*�*�4�0�1����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�
��4�5�	�Irr0c��eZdZ	edej
d���edej
d���gZdeed�ed���fd	ee	e	��fgZ
y
)�TestFileTypeXBr��xbr�r�rr*rEr
rN)r!r"r#rvr-r�r�r}rr1r�rCrrr3r3�sn��N�	�D�(�x�(�(��.�/��F�*��*�*�4�0�1���

�r�E�%�L�u�U�|�<�=�	�2�
��4�5��Irr3c��eZdZ	d�Zy)�TestFileTypeOpenArgsc
�2�tj}|d�df|dd�df|dd��df|d	d
��df|dd
dd�dfg}tjd�5}|D] \}}|d�|jdg|����"	ddd�y#1swYyxYw)Nr)r���NNrirv)rirvNNr�r�)rir8Nr�r�r�rj)r�r8r�Nr�l1�strict)rirr9r:z
builtins.openr*)r-r�rr1�assert_called_with)r�FT�cases�mr�rxs      r�test_open_argsz#TestFileTypeOpenArgs.test_open_args�s���
�
�
��
��X�-�.�
��Q�Z�-�.�
��I�
&�(B�C�
��v�
&�(@�A�
��Q��h�
'�)A�B�
���Z�Z��
(�A�#�
��d��U��$��$�$�U�2�T�2�$�)�
(�
(�s�&B
�
BN)r!r"r#r?rCrrr6r6�s
��:�3rr6c��eZdZ	d�Zy)�!TestFileTypeMissingInitializationc�.�tj�}|jt�5}|j	dtj
��ddd�|j
tj
�d�tj��y#1swY�@xYw)Nr�r�z: 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�sq���(�(�*��
�
�
�z�
*�b�����8�+<�+<��=�+�	
���� � �
#������	
�+�
*�s�"B�BN�r!r"r#rDrCrrrArA�s���
	
rrAc��eZdZ	ede��ede��gZgd�Zdedd��fd	ed
d��fded
d��fgZ	y
)�TestTypeCallablez--eggsr�r�)r��42jz--eggs az	--eggs 2iz--eggs=42 42rgE@)�eggsr�z--eggs 2j -- -1.5y@���z1024.675Ng3333��@)
r!r"r#rv�complexr�r�r�r}r�rCrrrGrG�s^��6�	�H�7�#��F�����5�H�	���$�/�0�	�b�b�t�4�5�	�R�T��1�2��IrrGc��eZdZ	Gd�de�Zede��ede��gZgZdeed�ed��	�fd
eed�ed��	�fgZ	y
)�TestTypeUserDefinedc��eZdZd�Zd�Zy)�TestTypeUserDefined.MyTypec��||_yrQ��value�rrRs  rrz#TestTypeUserDefined.MyType.__init__�	���D�Jrc�`�t|�|jft|�|jfk(SrQ�r�rRr�s  rr�z!TestTypeUserDefined.MyType.__eq__�'����J��
�
�+��U��U�[�[�/I�I�IrNr�rCrr�MyTyperO
�
��	�	JrrXr�r�r�r~r�r�r
�-xf grriN)
r!r"r#rErXrvr�r�r}r�rCrrrMrMsm��2�J��J�	�D�v���F�� ����H�	�2��s��&��+�6�7�	�"�v�c�{����5�6��IrrMc��eZdZ	Gd�d�Zede��ede��gZgZdeed�ed��	�fd
eed�ed��	�fgZy
)�TestTypeClassicClassc��eZdZd�Zd�Zy)�TestTypeClassicClass.Cc��||_yrQrQrSs  rrzTestTypeClassicClass.C.__init__"rTrc�`�t|�|jft|�|jfk(SrQrVr�s  rr�zTestTypeClassicClass.C.__eq__%rWrNr�rCrr�Cr^ rYrrar�r�r�r~r�r�r
rZrriN)	r!r"r#rarvr�r�r}r�rCrrr\r\sk��#�J�J�	�D�q���F������H�	�2��#��Q�s�V�,�-�	�"�q��v�A�c�F�+�,��Irr\c��eZdZ	d�Zy)�TestTypeRegistrationc��d�}tj�}|jdd|�|jdd��|jdd��|j	|jdj
��tdd�	��|j	|jd
j
��tdd�	��y)Nc��d|zS)Nzmy_type{%s}rC��strings r�get_my_typez.TestTypeRegistration.test.<locals>.get_my_type8s
�� �6�)�)rr��my_typer�r�r]r=z
my_type{1}rqz-x 1 42zmy_type{42})r-r.�registerr�r�r=r�r})rrhr4s   rrDzTestTypeRegistration.test6s���	*��(�(�*������	�;�7����D�y��1����C�i��0�����*�*�3�9�9�;�7��d�l�3�	5�����*�*�9�?�?�+<�=��l�m�<�	>rNrErCrrrcrc3s
��4�
>rrcc��eZdZ	Gd�dej�ZGd�dej�Zeddeed��ed	ee	d
d��gZ
gZd
edd��fdedd��fdedd��fdedd��fgZ
y)�TestActionUserDefinedc��eZdZdd�Zy)�$TestActionUserDefined.OptionalActionNc���	td��}|dvrd|_n|dvrd|_ntd|z��t	|d	|�y#t$r}td|z��d}~wwxYw)
N��?r)��?rsr�)�@r��	value: %szopt_action failed: %sr�)r}r5�AssertionErrorr�r��rr4�	namespacerR�
option_stringr�r�s       r�__call__z-TestActionUserDefined.OptionalAction.__call__Osu��
G�!�d�m���N�*�)*�K�&��e�^�)+�K�&�(��u�)<�=�=�

�I�v�u�-��"�
G�)�*A�A�*E�F�F��
G�s�2A�	A�A�ArQ�r!r"r#rxrCrr�OptionalActionrnMs��	.rrzc��eZdZdd�Zy)�&TestActionUserDefined.PositionalActionNc���	td��}|dvrd|_n&|dvrd|_n|dvrd|_ntd	|z��t	|d|�y#t$r}td
|z��d}~wwxYw)Nr��r5)rr�rp)rvrs)r�rqrszarg_action failed: %sr5)r}r�rtr�r�rus       rrxz/TestActionUserDefined.PositionalAction.__call__es���
G�!��l���H�$�'+�K�$��c�\�',�K�$��c�\�',�K�$�(��u�)<�=�=�

�I�x��/��"�
G�)�*A�A�*E�F�F��
G�s�>A�	A*�A%�%A*rQryrCrr�PositionalActionr|cs��	0rrz-sr�rp)r)rr�rpr5r�r�)rr�rxrpz-s0.125rq)r�r5r�rz
-s 0.625 1rsrvz84 -s2rrr�N)r!r"r#r-�Actionrzrrvr�r�r�r�r}r�rCrrrlrlJs���4�.����.�,0�8�?�?�0�4	�D�v�n���	&��H�-��C��	,����H�	�B�E�!�,�-�	
�r�t�B�'�(�	�r�u�Q�/�0�	�2�3�r�*�+�	�Irrlc�>�eZdZ	Gd�dej�Zd�Zy)�TestActionRegistrationc��eZdZdd�Zy)�TestActionRegistration.MyActionNc�8�t||jd|z�y)Nzfoo[%s])r�r))rr4rv�valuesrws     rrxz(TestActionRegistration.MyAction.__call__�s���I�t�y�y�)�f�*<�=rrQryrCrr�MyActionr��s��	>rr�c�<�tj�}|jdd|j�|j	dd��|j|j
dg�td���|j|j
dg�td	���y)
Nr�	my_actionr5rr=zfoo[1]r~r�zfoo[42])r-r.rjr�r�r�r=r}r3s  rrDzTestActionRegistration.test�s{���(�(�*������+�t�}�}�=����H�[��9�����*�*�C�5�1�2�X�3F�G�����*�*�D�6�2�B�i�4H�IrN)r!r"r#r-r�r�rDrCrrr�r��s��?�>�8�?�?�>�
Jrr�c�F�eZdZeddde��gZdZdegd���fgZy	)
�TestActionExtendr��extendr�)rrxr�rCz--foo f1 --foo f2 f3 f4)�f1�f2�f3�f4rN)	r!r"r#rvr�r�r�r}r�rCrrr�r��s4���G�H�C�c�:����H�	"�B�+C�$D�E��Irr�c����eZdZ	d�Z		dd�Z�fd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z �xZ!S) �TestAddSubparsersc�8�|jtg|��i|��yrQ�r�r�rzs   r�assertArgumentParserErrorz+TestAddSubparsers.assertArgumentParserError��������-�?��?��?rc�|�|r,tdd|��}|j|ddzdzdd�	�n!tdd�
�}|jddd�	�|jdtd
��ddi}|rd|d<d|d<nd|d<|jd5i|��}|j	t
jd|j�td��}|rd|d<|rddg|d<|jd6i|��}|jdtd��|jd gd!�d"�#�td$��}	|rd%|	d<|jd7i|	��}
|
jd&gd'�d(�#�|
jd)td*d+�,�td-��}|rd.|d<|jd8i|��}|jd/td0��|jd1d2d3�4�|S)9N�PROG�main description)�prog�descriptionrKrr�r*r�foo help�rr�r�r�r�rE�bar help�r�rr�F�COMMANDr��commands�title�command helprz(cannot have multiple subparser argumentsz
1 description�r�z1 help�1alias1�1alias2�aliasesr[�w helpr�r�x helprz
2 descriptionz2 helpr�r=r�r��y helpr	r��z help)r�rxrz
3 descriptionz3 help�tzt help�ur�zu help�rxrrC�r=)r�)r�)r�r�r��add_subparsersr#r-r$�dict�
add_parserr�rK)
r�subparser_helprKr�r4�subparsers_kwargs�
subparsers�parser1_kwargs�parser1�parser2_kwargs�parser2�parser3_kwargs�parser3s
             rr�zTestAddSubparsers._get_parser�s���/��);�,�X�F�����Q��!�#�e�+�L�z�
 �
S�0��);�=�F������:�
 �
?������J�	�	0�(��/���+4��i�(�)3��g�&�(6��f�%�*�V�*�*�?�->�?�
����x�5�5�I�%�4�4�	6�
�/�:���%-�N�6�"��)2�I�(>�N�9�%�'�*�'�'�>�~�>�����T��(��;����S�/���I��/�:���%-�N�6�"�'�*�'�'�>�~�>�����T�?���J����S�w�c���I��/�:���%-�N�6�"�'�*�'�'�>�~�>�����S�s���:����S��H��=��
rc�z��t�|��|j�|_|jd��|_y)NT)r�)rrMr�r4�command_help_parserr(s �rrMzTestAddSubparsers.setUp�s2���
��
���&�&�(���#'�#3�#3�4�#3�#H�� rc�~�dD]8}|j�}|j|jj|��:y)N)rr�za az0.5 az0.5 1z0.5 1 -yz0.5 2 -w)r�r�r4r=)rr�rxs   r�test_parse_args_failuresz*TestAddSubparsers.test_parse_args_failures�s4��1�H��>�>�#�D��*�*�4�;�;�+A�+A�4�H�1rc
�<�|j|jjdj��t	dddd���|j|jjdj��t	dd	d
ddg�
��|j|jjdj��t	dddd���|j|jjdj��t	dddgd����y)N�0.5 1 b -w 7Fr��r��r*rErir�z0.25 --foo 2 -y 2 3j -- -1jTrpr�y@y��)r*rEr]r	z--foo 0.125 1 crqr�z-1.5 3 11 -- a --foo 7 -- brJ�)r�r�r��--r�)r*rEr�r�)r�r4r=r�r}rs r�test_parse_argsz!TestAddSubparsers.test_parse_args�s�������K�K�"�"�>�#7�#7�#9�:��5�c�Q�#�.�	
�	
����K�K�"�"�#@�#F�#F�#H�I��4�T�S�R��I�6�	
�	
����K�K�"�"�#4�#:�#:�#<�=��4�U�d�c�2�	
�	
����K�K�"�"�#@�#F�#F�#H�I��5�d�b�,J�K�	
rc	���|j|jjdj��t	dddd��gf�|j|jjdj��t	dddd��dgf�|j|jjd	j��t	dddd��dgf�|j|jjd
j��t	dddd��ddgf�|j|jjd
j��t	dddd��gd�f�y)Nr�Fr�r�r�r�z0.5 -p 1 b -w 7�-p�0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7z-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wz-Xr�r�)r�r4�parse_known_argsr�r}rs r�test_parse_known_argsz'TestAddSubparsers.test_parse_known_args	sC������K�K�(�(��)=�)=�)?�@�
�E�s�a�3�
/��4�	
�	
����K�K�(�(�):�)@�)@�)B�C�
�E�s�a�3�
/�$��8�	
�	
����K�K�(�(�):�)@�)@�)B�C�
�E�s�a�3�
/�$��8�	
�	
����K�K�(�(�)>�)D�)D�)F�G�
�E�s�a�3�
/�$���?�	
�	
����K�K�(�(�)A�)G�)G�)I�J�
�E�s�a�3�
/�1G�H�	
rc�t�Gd�d�}|j|jjdj�|��|dgf�|j	|j
d�|j|jd�|j|jd�|j|jd	�y)
Nc��eZdZy)�ETestAddSubparsers.test_parse_known_args_to_class_namespace.<locals>.CN�r!r"r#rCrrrar�	���rrar�)rvr�Fr�r�r�)	r�r4r�r��assertIsr*rErir�)rras  r�(test_parse_known_args_to_class_namespacez:TestAddSubparsers.test_parse_known_args_to_class_namespace	s���	�	�����K�K�(�(�):�)@�)@�)B�a�(�P�
���K�	
�	
�
�
�a�e�e�U�#��������$�������a� �������c�"rc	�:�t�}|jd�|jd�|j�}|jd�}|jd�|jd�|j	|jgd��t
dddd���|j	|jgd	��t
dddd���|j|j
gd
��|j	|jgd��t
dddd���|j	|jgd��t
dddd���|j	|jgd
��t
dddd���|j|j
gd��y)Nr�r�rE�--foz--foonew)r�rFrErF)r�r��fo�foonew)�--foonrFrE)r�rFrE)rEr�rF)rEr�rF)rEr�rF)rEr�rF)r�r�r�r�r�r=r}r��rr4r�r�s    r�test_abbreviationz#TestAddSubparsers.test_abbreviation*	se��+�-�����J�'����J�'��*�*�,�
��'�'��.�����V�$����Z�(�����*�*�+C�D��5��$�t�L�	N�����*�*�+C�D��4��$�t�L�	N��&�&�v�'8�'8�:P�Q�����*�*�+A�B��4���t�L�	N�����*�*�+B�C��4���e�L�	N�����*�*�+C�D��4���e�L�	N��&�&�v�'8�'8�:R�Src���t�}|jdddd��|jdddd��|j|jddg�t	d	d�
�dgf�|j|jddg�t	d	d�
�dgf�|j|jdg�t	d	d�
�dgf�|j|jdg�|j|jd
g�t	dd�
�d
gf�|j|jdg�t	dd�
�dgf�|j|jdg�t	d	d�
�dgf�|j|jdg�|j|jdg�t	d	d�
�dgf�|j|jdg�t	d	d	�
�dgf�|j|jdg�|j|jdg�|j|jdg�|j|jdg�t	d	d	�
�dgf�y)Nz-kz--knownr�rr�rbz--newz-urv)�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�r}r�r3s  r�-test_parse_known_args_with_single_dash_optionz?TestAddSubparsers.test_parse_known_args_with_single_dash_option@	sR��+�-�����D�)�G�Q��G����D�'�'�1��E�����0�0�$���>��1�!�,�t�f�5�	7�����0�0�$���>��1�!�,�t�f�5�	7�����0�0�%��9��1�!�,�t�f�5�	7��&�&�v�'>�'>���I�����0�0�%��9��1�!�,�u�g�6�	8�����0�0�&��:��1�!�,�v�h�7�	9�����0�0�+��?��1�!�,�z�l�;�	=��&�&�v�'>�'>���O�����0�0�,��@��1�!�,�{�m�<�	>�����0�0�'��;��1�!�,�u�g�6�	8��&�&�v�'>�'>��
�K��&�&�v�'>�'>��
�K��&�&�v�'>�'>��
�K�����0�0�(��<��1�!�,�v�h�7�	9rc��t�}|jdd��|jd��}|jd�}|jd�|j	tddd	�
�|j
dj���y)Nr�rrrEr(r=rFFr�r�r<)r�r�r�r�r�r}r=r�r�s    r�	test_destzTestAddSubparsers.test_dest\	s{��+�-�����G�L��9��*�*��*�6�
��'�'��,�����U�#������3�C�8��*�*�5�;�;�=�9�	;rc��|jdg�}|j|jd�|j|jd�y)N�runrC)r=r��commandr�)rr4�rets   r�_test_required_subparsersz+TestAddSubparsers._test_required_subparserse	s@�������(��������e�,�	
�&�&�v�'8�'8�"�=rc��t�}|jd��}d|_|jd�|j	|�y)Nr�r(Tr�)r�r�r�r�r��rr4r�s   r�&test_required_subparsers_via_attributez8TestAddSubparsers.test_required_subparsers_via_attributem	sA��+�-���*�*�	�*�:�
�"�
�����e�$��&�&�v�.rc��t�}|jdd��}|jd�|j|�y)Nr�T�r)r�r�)r�r�r�r�r�s   r�"test_required_subparsers_via_kwargz4TestAddSubparsers.test_required_subparsers_via_kwargt	s;��+�-���*�*�	�D�*�I�
����e�$��&�&�v�.rc��t�}|jd��}|jd�|jd�}|j	|j
�y)Nr�r(r�rC�r�r�r�r=�assertIsNoner��rr4r�r�s    r� test_required_subparsers_defaultz2TestAddSubparsers.test_required_subparsers_defaultz	sM��+�-���*�*�	�*�:�
����e�$�����#�����#�+�+�&rc�B�t�}|jd��}|jd�|jd�|jt�5}|jd�ddd�|j
jjd�y#1swY�0xYw)NT�r�r*rErCz8error: the following arguments are required: {foo,bar}
$�	r�r�r�r�r�r=r@r�r��rr4r��excinfos    r�-test_required_subparsers_no_destination_errorz?TestAddSubparsers.test_required_subparsers_no_destination_error�	s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�w����b�!�4�������$�$�G�	
�4�
3���B�Bc�B�t�}|jd��}|jd�|jd�|jt�5}|jd�ddd�|j
jjd�y#1swY�0xYw)NTr�r*rEr�zLerror: argument {foo,bar}: invalid choice: 'baz' \(choose from foo, bar\)\n$r�r�s    r�3test_wrong_argument_subparsers_no_destination_errorzETestAddSubparsers.test_wrong_argument_subparsers_no_destination_error�	s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�w����h�'�4�������$�$�[�	
�4�
3�r�c��t�}|jdd��}|jd�|jd�}|j	|j
�y)Nr�Fr�r�rCr�r�s    r�test_optional_subparsersz*TestAddSubparsers.test_optional_subparsers�	sO��+�-���*�*�	�E�*�J�
����e�$�����#�����#�+�+�&rc���|j|jj�d�|j|jj�t	j
d��y)N�)usage: PROG [-h] [--foo] bar {1,2,3} ...
a?            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

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

            main description

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

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            �r�r�rrr�rr3s  r�test_help_extra_prefix_charsz.TestAddSubparsers.test_help_extra_prefix_chars�	s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc��tdd��}|jddd��|j|j�t	j
d��y)	Nr�r�r�z--non-breakingr�uRhelp message containing non-breaking spaces shall not wrap at non-breaking spacesr�u7            usage: PROG [-h] [--non-breaking]

            main description

            options:
              -h, --help      show this help message and exit
              --non-breaking  help message containing non-breaking spaces shall not
                              wrap at non-breaking spaces
        �r�r�r�rr�rr3s  r�test_help_non_breaking_spacesz/TestAddSubparsers.test_help_non_breaking_spaces�	s[��+��%7�9������]�;�	�	<�	
����+�+�-�x���	@�	0
�		rc�R�tdd��}|jdd��|j|j�t	j
d��tdd��}|jdgd�	�|j|j�t	j
d
��y)Nr�r�r�r*z    �rz�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

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

            main description

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

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            rr3s  r� test_help_alternate_prefix_charsz2TestAddSubparsers.test_help_alternate_prefix_chars�	s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc���|j|jj�d�|j|jj�t	j
d��y)Nr�a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�r�rrr�rrs r�test_parser_command_helpz*TestAddSubparsers.test_parser_command_help
sU������1�1�>�>�@�E�	G�����1�1�=�=�?�!���*��	rc�~�tdd��}|jddd��|jdd	�
�|jddd
��}|jd�}|jd�}|j	|j�d�|j	|j
�tjd��y)Nr�r�r�r�rr�r�rEr�r	�subcommandsr�zadditional text)r�r�rr=r�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�r�r�r�rrr�r)rr4r�r�r�s     r�test_subparser_title_helpz+TestAddSubparsers.test_subparser_title_help!
s���+��8J�L�����G�L�z��J����E�
��3��*�*��7E�0A�+�C�
��'�'��,���'�'��,������,�,�.�C�	E�����+�+�-�x���@�0�	rc��|jt�5}|jj|j	��ddd�|j|jj�y#1swY�0xYwrQ)r�r�r4r=r�r�r�r�)rr��
expected_helpr�s    r�_test_subparser_helpz&TestAddSubparsers._test_subparser_help?
sT��
�
�
�2�
3�r��K�K�"�"�8�>�>�#3�4�4��������(;�(;�<�4�
3�s�*A/�/A8c�N�|jdtjd��y)Nz5.0 1 -ha            usage: PROG bar 1 [-h] [-w W] {a,b,c}

            1 description

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

            options:
              -h, --help  show this help message and exit
              -w W        w help
            �rr�rrs r�test_subparser1_helpz&TestAddSubparsers.test_subparser1_helpD
�"���!�!�*�h�o�o�?�/�	rc�N�|jdtjd��y)Nz5.0 2 -ha            usage: PROG bar 2 [-h] [-y {1,2,3}] [z ...]

            2 description

            positional arguments:
              z           z help

            options:
              -h, --help  show this help message and exit
              -y {1,2,3}  y help
            rrs r�test_subparser2_helpz&TestAddSubparsers.test_subparser2_helpR
rrc	� �|jd��}|j|jdj��t	dddd��gf�|j|jdj��t	dddd��gf�y)	NT�r�z
0.5 1alias1 bFr�r�r�z
0.5 1alias2 b)r�r�r�r�r}r3s  r�test_alias_invocationz'TestAddSubparsers.test_alias_invocation`
s����!�!�$�!�/������#�#�O�$9�$9�$;�<�
�E�s�d�c�
2�B�7�	
�	
����#�#�O�$9�$9�$;�<�
�E�s�d�c�
2�B�7�	
rc�|�|jd��}|j|jdj��y)NTrz
0.5 1alias3 b)r�r�r=r�r3s  r�test_error_alias_invocationz-TestAddSubparsers.test_error_alias_invocationk
s8���!�!�$�!�/���&�&�v�'8�'8�'6�'<�'<�'>�	@rc��|jdd��}d|_|j|j�t	j
d��y)NT)r�r�a	            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�rr�rr3s  r�test_alias_helpz!TestAddSubparsers.test_alias_helpp
sH���!�!�$�t�!�D���������+�+�-�x���@�0�	r)FNF)"r!r"r#r�r�rMr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
rrrrrrrrr"r$r%s@rr�r��s����(�@�>B�!�7�rI�
I�
�&
�,
#�T�,9�8;�>�/�/�'�

�

�'��"�&�$ �D�$�*�<=�
��	
�@�
rr�c� �eZdZ	d�Zd�Zd�Zy)�TestPositionalsGroupsc��t�}|jd�|jd�}|jd�|jd�tddd��}|j	d	j��}|j
||�y)
Nr*rirErFr=r�r�r��1 2 3)r�r�r�r}r=r�r��rr4r��expectedr�s     r�test_nongroup_firstz)TestPositionalsGroups.test_nongroup_first�
sx��+�-�����E�"��)�)�#�.��
���5�!����E�"��#�3�C�0���"�"�7�=�=�?�3������6�*rc��t�}|jd�}|jd�|jd�|jd�tddd��}|j	d	j��}|j
||�y)
N�xxxr*rErFr=r�r�r�r&�r�r�r�r}r=r�r�r's     r�test_group_firstz&TestPositionalsGroups.test_group_first�
sx��+�-���)�)�%�0��
���5�!����E�"����E�"��#�3�C�0���"�"�7�=�=�?�3������6�*rc�d�t�}|jd�}|jd�|jd�|jd�|jd�}|jd�tddd	d
��}|j	dj��}|j
||�y)
Nr+r*rErFr�frellr=r�r�r�)r*rErFr/z1 2 3 4r,r's     r�test_interleaved_groupsz-TestPositionalsGroups.test_interleaved_groups�
s���+�-���)�)�%�0�����E�"�
���5�!����E�"��)�)�%�0��
���7�#��#�3�C�s�;���"�"�9�?�?�#4�5������6�*rN)r!r"r#r)r-r0rCrrr$r$�
s��J�+�+�
+rr$c�z��eZdZ	d�Z�fd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Z�xZS)�TestParentParsersc�8�|jtg|��i|��yrQr�rzs   rr�z+TestParentParsers.assertArgumentParserError�
r�rc���t�|��td��|_|jj	d�|jjd�}|j	d�|jj	d�td��|_|jj	d�|jj	d�|jjd	�}|j	d
�td��|_|jj	d�td��|_|jj	d�td��|_	|jj�}|j	dd�
�|j	dd�
�tjjtjd�|_y)NF�rLz--wr�rr	r�r�r�z--dr�rrr)rrMr��wxyz_parentr�r��abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_grouprUr]�basenamer�r��main_program)r�x_group�c_groupr�rs    �rrMzTestParentParsers.setUp�
sb���
��
��5�u�E������%�%�e�,��"�"�5�5�c�:�����T�"����%�%�c�*�5�u�E������%�%�c�*����%�%�d�+��"�"�5�5�c�:�����U�#�2�E�B��
��
�
�"�"�5�)�2�E�B��
��
�
�"�"�3�'� :�5�I����$�$�A�A�C��
���4���5�
���4���5��G�G�,�,�S�X�X�a�[�9��rc��t|jg��}|j|jdj	��tddd���y)N��parentsz-y 1 2 --w 3r�r=r��rir]r	)r�r6r�r=r�r}r3s  r�test_single_parentz$TestParentParsers.test_single_parent�
sE��+�T�5E�5E�4F�G������*�*�>�+?�+?�+A�B��c�S�C�0�	2rc��|j|jj�t|jg��}|j|j�y�NrA)�_test_mutex_abr:r=r�r3s  r�test_single_parent_mutexz*TestParentParsers.test_single_parent_mutex�
sC�����D�0�0�;�;�<�+�T�5I�5I�4J�K�����F�-�-�.rc��|jg}td|��}t|g��}|j|j�y)NF)rLrBrA)r:r�rGr=�rrBr4s   r�test_single_granparent_mutexz.TestParentParsers.test_single_granparent_mutex�
s<���'�'�(��+�U�G�L��+�V�H�=�����F�-�-�.rc��|j|g�tdd���|j|dg�tdd���|j|dg�tdd���|j|ddg�|j|ddg�|j|dg�|j|ddg�|j|ddg�y)NF�r�r�r�Tr�r�)r�r}r�)rr=s  rrGz TestParentParsers._test_mutex_ab�
s�������B���e�u�)=�>�����T�F�+�R�$�%�-@�A�����T�F�+�R�%�4�-@�A��&�&�z�D�$�<�@��&�&�z�D�$�<�@��&�&�z�D�6�:��&�&�z�D�$�<�@��&�&�z�D�$�<�@rc���|j|jg}t|��}|j|j	dj��t
dddddd���y)NrAz--d 1 --w 2 3 4r�r=r�r�)r�r�r�rir]r	)r7r6r�r�r=r�r}rJs   r�test_multiple_parentsz'TestParentParsers.test_multiple_parents�
sZ���#�#�T�%5�%5�6��+�G�<������*�*�+<�+B�+B�+D�E��c�T�S�C�4�3�G�	Irc
�n�|j|jg}t|��}|j|j	dj��t
ddddd���|j|jdj��|j|jd	j��y)
NrAz
-a --w 2 3TFr�r�)r�r�rir]r	z
-a --w 2 3 -bz
-a -b --w 2 3)r:r6r�r�r=r�r}r�rJs   r�test_multiple_parents_mutexz-TestParentParsers.test_multiple_parents_mutex�
s����'�'��)9�)9�:��+�G�<������*�*�<�+=�+=�+?�@��d�e�s�d�c�B�	D��&�&�����4�4�6�	8��&�&�����4�4�6�	8rc��|jtjtj|j|j
g��yrF)r�r-r$r.r8r6rs r�test_conflicting_parentsz*TestParentParsers.test_conflicting_parents�
s9������"�"��#�#��]�]�D�$4�$4�5�	�	7rc��|jtjtj|j|j
g��yrF)r�r-r$r.r7r:rs r�test_conflicting_parents_mutexz0TestParentParsers.test_conflicting_parents_mutexs;������"�"��#�#��%�%�t�';�';�<�	�	>rc���|j|jg}t|��}|j|j	dj��t
ddd���y)NrAr<r�rC)r6r9r�r�r=r�r}rJs   r�test_same_argument_name_parentsz1TestParentParsers.test_same_argument_name_parents
sM���#�#�T�]�]�3��+�G�<������*�*�5�;�;�=�9��d�d�c�2�	4rc	��t�}|j�}|jd|jg��}|j	d�|j|j
dj��tdddd�	��y)
NrErAr�zbar -b 1 --d 2 3 4r�r=r�r�)r�r�r�r�)	r�r�r�r7r�r�r=r�r})rr4r��abcde_parsers    r�test_subparser_parentsz(TestParentParsers.test_subparser_parentssw��+�-���*�*�,�
�!�,�,�U�T�=M�=M�<N�,�O���!�!�#�&�����*�*�+?�+E�+E�+G�H��c�S�C�3�7�	9rc���t�}|j�}|jg}|jd|��}|j	d�}|jd�|j|jg}|jd|��}|jd�|j|jdj��tdd	d
���|j|jdj��td	dd
ddd
���|j|jdj��|j|jdj��y)Nr*rAr?r�rEr�zfoo -a 4TFr�rzbar -b  --w 2 3 4r�r�)r�r�rir]r	r�zfoo -a -b 4zbar -b -a 4)r�r�r:r�r�r�r6r�r=r�r}r�)rr4r�rB�
abc_parserr?�wxyzabe_parsers       r�test_subparser_parents_mutexz.TestParentParsers.test_subparser_parents_mutexs>��+�-���*�*�,�
��'�'�(���*�*�5�'�*�B�
��/�/�	�:�����S�!��#�#�T�%9�%9�:��#�.�.�u�g�.�F���#�#�C�(�����*�*�:�+;�+;�+=�>��d�e�s�3�	5�����*�*�+>�+D�+D�+F�G��e�t�s�d�c�S�I�	K��&�&����}�2�2�4�	6��&�&����}�2�2�4�	6rc	��|j|jg}t|��}|j�}|j}|j|t
jdj||rdnd���y)NrAaG            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)	r7r6r�rr=r�r�r�format)rrBr4�parser_help�prognames     r�test_parent_helpz"TestParentParsers.test_parent_help+sm���#�#�T�%5�%5�6��+�G�<���(�(�*���$�$������h�o�o�7�"
�F�8�H�S�"�6�#'8�	9rc	���td��}|jdd��}|jd�|jd�|j�}|jd�|jd	�t|g�
�}|j	t
|jgd��|j�}|j}|j|tjdj||rd
nd���y)NFr5ri�gd�r�r�r[r�rrrA�rr�rr�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
        r`r)
r�r�r�r;r�r�r=rr=r�r�rra)r�parentrir>r4rbrcs       r�test_groups_parentsz%TestParentParsers.test_groups_parentsCs���+�U�;���%�%�C�T�%�B��	���t��	���t���/�/�1��	���t��	���t��+�V�H�=�����-�v�/@�/@�"�	$��(�(�*���$�$������h�o�o�
7�
�F�8�H�S�"�6�
'8�
	9rc��td��}|jdd��}|jd�|jd�|j�}|jd�|jd	�td
|g��}|j	t
|jgd��|j�}|j|tjd
��y)NFr5rirfrgr[r�rrr�)r�rBrhz�            usage: PROG [-h] [-w W] [-x X] [-y Y | -z Z]

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

            g:
              gd

              -w W
              -x X
              -y Y
              -z Z
        )r�r�r�r;r�r�r=rr�r�r)rririr>r4rbs      r�test_mutex_groups_parentsz+TestParentParsers.test_mutex_groups_parentsas���+�U�;���%�%�C�T�%�B��	���t��	���t��
�*�*�,��	���t��	���t��+��&��J�����-�v�/@�/@�"�	$��(�(�*������h�o�o�
7�
'
�
	r)r!r"r#r�rMrDrHrKrGrOrQrSrUrWrZr^rdrjrlr$r%s@rr2r2�
sY���?�@�:�82�
/�
/�A�I�8�7�>�4�9�6�&9�09�<rr2c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)� TestMutuallyExclusiveGroupErrorsc�b�t�}|j}|t|jd��y)Nr*)r�)r�r�r�r;)rr4�raisess   r�test_invalid_add_argument_groupz@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_group�s'��+�-���"�"���y�&�=�=�U�Krc� �t�}|j�}|j}|j}|t|dd��|t|d�|t|dd��|t|dd��|t|dt
j��y)Nr�Tr�rEr�rwrv)r�r;r�r�rCr-�PARSER)rr4r�r�rps     r�test_invalid_add_argumentz:TestMutuallyExclusiveGroupErrors.test_invalid_add_argument�sv��+�-���3�3�5���)�)���"�"���z�<��4�@��z�<��/��z�<��c�:��z�<��a�8��z�<��h�o�o�Frc�^�td��}|j�}|jdd��|jdd��|j�}|jdd��|jd	d��d
}|j|j	�tj|��y)Nr��r�r�rrr0r�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�rr�r)rr4�group1�group2r(s     rrz*TestMutuallyExclusiveGroupErrors.test_help�s���+��8���4�4�6�����G�L��9����G�M��:��4�4�6�����H�\��:����H�]��;�	��	
����+�+�-�x���x�/H�Irc	���d|_td��}|jdd��}|jd�}|j	�}|jddtj�	�|jd
dtj�	�d}d}|j|�d
|�d|�d|�d|�d�	}|j|j�tj|��y)Nr�rvr�r�)r�r)r*rarr�z--quietz�--longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongڀLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGz>            usage: PROG foo [-h]
                            [r`zj]

            options:
              -h, --help            show this help message and exit
              z
              )r!r�r�r�r;r�r-r�r�rr�r)rr4r��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���(�(�z�	�(�J���%�%�e�,���4�4�6��
���;�|�(�BS�BS��T�
���9�\��@Q�@Q��R�"�������W�%��%�Y�a��z�2��i�q��
�#�
��	
����,�,�.�����0I�Jrc���tj�}|j�}|jt�5|jdg�ddd�y#1swYyxYw)Nr7)r-r.r;r�rCr=�rr4r�s   r�test_empty_groupz1TestMutuallyExclusiveGroupErrors.test_empty_group�sH���(�(�*���3�3�5��
�
�
�z�
*����t�f�%�+�
*�
*�s�A�AN)r!r"r#rqrtrr~r�rCrrrnrn�s��L�
	G�J�(K�*&rrnc�<�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�MEMixinc��|jd��j}t}|jD]>}|j	|��5|j|||j
��ddd��@y#1swY�KxYw�NFr�r���
get_parserr=r�r�r>r�r��rr=r��args_strings    r�test_failures_when_not_requiredz'MEMixin.test_failures_when_not_required�sc���_�_�e�_�4�?�?�
�#���=�=�K����;��/��!�!�%��[�5F�5F�5H�I�0�/�)�/�/�s�"A1�1A:	c��|jd��j}t}|jdgzD]>}|j	|��5|j|||j
��ddd��@y#1swY�KxYw)NTr�rr�r�r�s    r�test_failures_when_requiredz#MEMixin.test_failures_when_required�sj���_�_�d�_�3�>�>�
�#���=�=�B�4�/�K����;��/��!�!�%��[�5F�5F�5H�I�0�/�0�/�/�s�"A5�5A>	c� �|jd��j}|j|jz}|D]H\}}|j	|��5||j��}|j
||�ddd��Jy#1swY�UxYwr�)r�r=r��successes_when_not_requiredr>r�r�)rr=r�r�r��	actual_nss      r� test_successes_when_not_requiredz(MEMixin.test_successes_when_not_required�s{���_�_�e�_�4�?�?�
��N�N�T�%E�%E�E�	�(1�$�K�����;��/�&�{�'8�'8�':�;�	�� � ��K�8�0�/�)2�/�/�s�)B�B
	c��|jd��j}|jD]H\}}|j|��5||j	��}|j||�ddd��Jy#1swY�UxYw)NTr�r�)r�r=r�r>r�r�)rr=r�r�r�s     r�test_successes_when_requiredz$MEMixin.test_successes_when_required�sk���_�_�d�_�3�>�>�
�(,���$�K�����;��/�&�{�'8�'8�':�;�	�� � ��K�8�0�/�)7�/�/�s�)A5�5A>	c��|jd��j}|j}|j|�t	j
|��y�NFr�)r�r�usage_when_not_requiredr�r�r�rr�expected_usages   r�test_usage_when_not_requiredz$MEMixin.test_usage_when_not_required�s>�������6�C�C���5�5�����������)H�Irc��|jd��j}|j}|j|�t	j
|��y�NTr�)r�r�usage_when_requiredr�r�rr�s   r�test_usage_when_requiredz MEMixin.test_usage_when_required�s>�������5�B�B���1�1�����������)H�Irc���|jd��j}|j|jz}|j	|�tj|��yr�)r�rr�rr�r�r�rrrs   r�test_help_when_not_requiredz#MEMixin.test_help_when_not_required�sG���o�o�u�o�5�A�A���+�+�d�i�i�7�����������(=�>rc���|jd��j}|j|jz}|j	|�tj|��yr�)r�rr�rr�r�rr�s   r�test_help_when_requiredzMEMixin.test_help_when_required�sG���o�o�t�o�4�@�@���'�'�$�)�)�3�����������(=�>rN)r!r"r#r�r�r�r�r�r�r�r�rCrrr�r��s.��J�J�9�9�J�
J�
?�
?rr�c��eZdZdd�ZddgZdedd��fded	d��fd
edd��fdedd	��fgZd
edd��fgZdZdZ	dZ
y)�TestMutuallyExclusiveSimpleNc��td��}|j|��}|jdd��|jddd	d
��|S)Nr�rvr�r0r�r	rfr�r��baz help)rxrr�r�r;r��rr�r4r�s    rr�z&TestMutuallyExclusiveSimple.get_parser�sN��+��8���3�3�X�3�F��
���7���4�
���7�#�S�z��J��
r�--bar X --baz Yz
--bar X --baz�--bar Xr7�rErFz--bar X --bar Zr��--baz Yr�rfrz;        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
        rQ�r!r"r#r�r�r}r�r�r�r�rrCrrr�r��s����"�?�3�H�	�B�3�D�)�*�	�B�3�D�1�2�	�B�4�S�)�*�	�"��3�'�(�	�I�
�R�D�d�
#�$�#�������Drr�c
��eZdZdd�ZdgZdedddd��fdedddd��fd	edddd��fd
edddd��fgZdedddd��fgZdZd
Z	dZ
y)�TestMutuallyExclusiveLongNc���td��}|jdd��|jdd��|j|��}|jd	d
��|jdd��|S)
Nr�rvz--abcdez
abcde helpr	z--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�r�r�r;r�s    rr�z$TestMutuallyExclusiveLong.get_parsersp��+��8�����I�L��9����I�L��9��3�3�X�3�F��
���9�<��8�
���9�<��8��
rz--klmno X --pqrst Yz	--klmno Xr7)�abcde�fghij�klmno�pqrstz--abcde Y --klmno Xr�z	--pqrst Xz--pqrst X --fghij Yrzi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                [--klmno KLMNO | --pqrst PQRST]
    zi    usage: PROG [-h] [--abcde ABCDE] [--fghij FGHIJ]
                (--klmno KLMNO | --pqrst PQRST)
    z�
    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
    rQr�rCrrr�r�s����&�&�H�	�b�t�4�s�$�G�H�	��S��C�t�<�	>�	�b�t�4�t�3�G�H�	��T��D��<�	>��I�
�R�d�$�d�$�
?�@�#�������Drr�c��eZdZd�ZdgZdedd��fdedd��fd	ed
d��fgZded
d��fgZd
ZdZ	dZ
y
)�$TestMutuallyExclusiveFirstSuppressedc��td��}|j|��}|jdtj��|jddd�	�|S)
Nr�rvr�r�r	rr�r�r��r�r;r�r-r�r�s    rr�z/TestMutuallyExclusiveFirstSuppressed.get_parserHsR��+��8���3�3�X�3�F��
���4�h�&7�&7��8�
���4�
�H��E��
rz-x X -yz-x Xr7Trqz	-x X -x Yr�rNFrz&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r�rCrrr�r�Fst����{�H�	��c�T�"�#�	�b�3�$�'�(�	
�r�D�E�"�#��I�
�R�$�$�
� �#�������Drr�c	��eZdZd�Zgd�Zdeddd��fdeddd��fd	eddd
��fdeddd��fgZdeddd��fgZd
xZZ	dZ
y)�#TestMutuallyExclusiveManySuppressedc���td��}|j|��}|j}|ddtj��|ddtj��|d	tj�
�|S)Nr�rvr��--spamrr�r/r�z	--bladderr	r�)rr�r4r�r!s     rr�z.TestMutuallyExclusiveManySuppressed.get_parserisc��+��8���3�3�X�3�F��� � ���H�\��0A�0A�B��J�}�8�3D�3D�E��K�h�/�/�0��
r)z--spam --badgerz--badger --bladder Bz--bladder B --spamr�TN)r�r5�bladderr/Fz--bladder BrCz
--spam --spamrz!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        �r!r"r#r�r�r}r�r�r�r�rrCrrr�r�gs�����H�
�2�4��d�;�<�	�R�U�5�$�?�@�	���d�C�@�A�	�"�$�t�T�B�C�	�I�
�R�U�4��
6�7�#��5���1��Drr�c
��eZdZd�Zgd�Zdeddg��fdedd	g��fd
eddd
g��fdeddgd���fgZd
eddg��fgZdZdZ	dZ
y)�*TestMutuallyExclusiveOptionalAndPositionalc��td��}|j|��}|jddd��|jdd	�
�|jddd
��|S)Nr�rvr�r�r�FOOr�r��SPAMr	r5r��BADGERr�r�r�s    rr�z5TestMutuallyExclusiveOptionalAndPositional.get_parser�sa��+��8���3�3�X�3�F��
���7�<�e��D�
���8�&��1�
���8�3�X��>��
r)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam S�	--foo X Yr�TN�r*r�r5z--spam SF�Sr7zX Y Z)r7r�r�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
        r�rCrrr�r��s�����H�
�"��D��4�5�	�R�E��B�7�8�	�b�U��s�e�4�5�	�"��T�/�B�C�	�I�
�R�E��R�
0�1�#������	�Drr�c
�*�eZdZd�Zgd�Zdeddddd��fdeddddd��fdeddddd��fd	eddddd��fd
eddddd��fdeddddd��fgZdeddddd��fd
eddddd��fdeddddd��fgZdxZZ	dZ
y)�#TestMutuallyExclusiveOptionalsMixedc�
�td��}|jddd��|j|��}|jddd	��|jd
dd��|jddd
��|jddd��|S)Nr�rvr�rr�r�r�r��a helpr��b helprr�r��c helpr�r�s    rr�z.TestMutuallyExclusiveOptionalsMixed.get_parser�s���+��8�����D��H��E��3�3�X�3�F��
���4��8��D�
���4��8��D����D��H��E�
���4��8��D��
r)z-a -b�-b -cz-a -cz-a -b -cr�TF�r�r�r�r�r]r�r�z-a -xz-y -bz-x -y -crr�rz:        usage: PROG [-h] [-x] [-a] [-b] [-y] [-c]
        z�
        options:
          -h, --help  show this help message and exit
          -x          x help
          -a          a help
          -b          b help
          -y          y help
          -c          c help
        Nr�rCrrr�r��s����7�H�	
�r�D�E�U�e�u�=�>�	
�r�E�T�U�e�u�=�>�	
�r�E�U�d�e�u�=�>�	�"�t�u����?�@�	�"�u����$�?�@�	�R�%�5�D�D�D�A�B�
�I�
�R�%�5�E�U�e�
<�=�	
�r�E�U�e�t�u�=�>�	
�r�E�U�e�u��=�>�#��5���1�	�Drr�c�r�eZdZdd�ZddgZdedd��fdedd	��fgZd
edd��fgZdZdZ	d
Z
y)�TestMutuallyExclusiveInGroupNc��td��}|jdd��}|j|��}|jdd�	�|jd
d�	�|S)Nr�rvzTitled groupzGroup descriptionrgr�r0r�r	rfr�)r�r�r;r�)rr�r4�titled_group�mutex_groups     rr�z'TestMutuallyExclusiveInGroup.get_parser�sk��+��8���0�0� �.A�1�C��
�5�5�x�5�H�	�� � ��z� �:�� � ��z� �:��
rr�z--baz X --bar Yr�r7r�r�r�rz9        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
        rQr�rCrrr�r��si���"�#4�5�H�	�B�3�D�)�*�	�B�4�S�)�*��I�

�R�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
y	)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedc��td��}|jdd��|jddd�	�|j|�
�}|jddd
��|jddd�	�|jddd�	�|S)Nr�rvr�r�r	rrr�r�r�r�r�r�r�r�r�r�r�r�r�s    rr�z<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parser
s���+��8�����C�h��/����D��H��E��3�3�X�3�F��
���3�c���9�
���4��8��D�
���4��8��D��
r)zX A -br�z-c X AzX Ar�Fr7r�zX -bNTzX -czX A -yzX -y -bzX -yz6        usage: PROG [-h] [-y] [-b] [-c] x [a]
        a
        positional arguments:
          x           x help
          a           a help

        options:
          -h, --help  show this help message and exit
          -y          y help
          -b          b help
          -c          c help
        r�rCrrr�r�

s����-�H�	��S�E�U�c�U�;�<�	��d�d�e�s�e�<�=�	��d�e�t�s�e�<�=�	�2��u����=�>�	�B����#��>�?��I�

�b�4�5�E�S�E�:�;�	��d�e�u��t�<�=�#��
5���1��Drr�c�.�eZdZd�ZdZdZdZdZdZdZ	dZ
y)�TestMutuallyExclusiveNestedc�b�td��}|j|��}|jd�|jd�tj�5tj
dt�|j|��}ddd�jd�|jd�tj�5tj
dt�|j|��}ddd�jd	�|jd
�|S#1swY��xYw#1swY�9xYw)Nr�rvr�r�r�r�r�r�r�r)r�r;r��warnings�catch_warnings�simplefilterr�)rr�r4r�rx�group3s      rr�z&TestMutuallyExclusiveNested.get_parser:
s���+��8���3�3�X�3�F��
���4� �
���4� �
�
$�
$�
&��!�!�(�,>�?��7�7��7�J�F�'�	���D�!����D�!�
�
$�
$�
&��!�!�(�,>�?��8�8�(�8�K�F�'�	���D�!����D�!��
�'�
&��
'�
&�s�-D�-D%�D"�%D.zO        usage: PROG [-h] [-a A | -b B | [-c C | -d D | [-e E | -f F]]]
        zO        usage: PROG [-h] (-a A | -b B | (-c C | -d D | (-e E | -f F)))
        z�
        options:
          -h, --help  show this help message and exit
          -a A
          -b B
          -c C
          -d D
          -e E
          -f F
        N)r!r"r#r�r�r�rr�r�r�r�rCrrr�r�3
s8���"����
�D�'+�#�"&��'+�$�#'� rr�c��eZdZdd�ZddgZdedd��fdedd��fd	edd��fgZd
edd��fgZdZdZ	d
Z
y)�%TestMutuallyExclusiveOptionalOptionalNc��td��}|j|��}|jd�|jdd��|S)Nr�rvr�r�r0r�rwr�r�s    rr�z0TestMutuallyExclusiveOptionalOptional.get_parserf
sE��+��8���3�3�X�3�F��
���7�#�
���7�#��.��
r�--foo X --bar Yz
--foo X --bar�--foo Xr7r@r�r0rz;        usage: PROG [-h] (--foo FOO | --bar [BAR])
        z;        usage: PROG [-h] [--foo FOO | --bar [BAR]]
        z{
        options:
          -h, --help   show this help message and exit
          --foo FOO
          --bar [BAR]
        rQr�rCrrr�r�e
s|���	���H�

�B�3�D�)�*�	�B�4�S�)�*�	�"��4�(�)��I�
�R�D�d�
#�$�#�������Drr�c��eZdZdd�ZddgZdedd��fd	edd��fd
edd��fgZdedd��fgZd
ZdZ	dZ
y)�(TestMutuallyExclusiveOptionalWithDefaultNc��td��}|j|��}|jd�|jdtd��|S)Nr�rvr�r�r0Tr�r�r;r�r�r�s    rr�z3TestMutuallyExclusiveOptionalWithDefault.get_parser�
sG��+��8���3�3�X�3�F��
���7�#�
���7��t��<��
rr�z--foo X --bar=r�r7Tr@r�z--bar=Frz9        usage: PROG [-h] (--foo FOO | --bar BAR)
        z9        usage: PROG [-h] [--foo FOO | --bar BAR]
        zx
        options:
          -h, --help  show this help message and exit
          --foo FOO
          --bar BAR
        rQr�rCrrr�r��
s|���	���H�

�B�3�D�)�*�	�B�4�T�*�+�	�2�$�E�*�+��I�
�R�D�d�
#�$�#�������Drr�c�p�eZdZdd�ZdgZdedd��fdedd��fgZdedd��fgZd	Zd
Z	dZ
y)
�*TestMutuallyExclusivePositionalWithDefaultNc��td��}|j|��}|jd�|jddtd��|S)	Nr�rvr�r�rEr�Tr;r�r�s    rr�z5TestMutuallyExclusivePositionalWithDefault.get_parser�
sI��+��8���3�3�X�3�F��
���7�#�
���5��$���E��
rr�r�r7Tr@rz3        usage: PROG [-h] (--foo FOO | bar)
        z3        usage: PROG [-h] [--foo FOO | bar]
        z�
        positional arguments:
          bar

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rQr�rCrrr�r��
sj���	��H�
�B�3�D�)�*�	�b�T�t�$�%��I�

�R�D�d�
#�$�#�������Drr�c� ��eZdZd�fd�	Z�xZS)�MEPBasec�b��tt|�|��}t|jd|g��}|S)Nr�F)r�rLrB)rr�r�r�r�)rr�rir4rs    �rr�zMEPBase.get_parser�
s4����w��0�(�0�C��+����u�v�h�@���
rrQ)r!r"r#r�r$r%s@rr�r��
s
����rr�c��eZdZy)�&TestMutuallyExclusiveGroupErrorsParentNr�rCrrr�r��
���rr�c��eZdZy)�!TestMutuallyExclusiveSimpleParentNr�rCrrr�r��
r�rr�c��eZdZy)�TestMutuallyExclusiveLongParentNr�rCrrr�r��
r�rr�c��eZdZy)�*TestMutuallyExclusiveFirstSuppressedParentNr�rCrrr�r��
r�rr�c��eZdZy)�)TestMutuallyExclusiveManySuppressedParentNr�rCrrr�r��
r�rr�c��eZdZy)�0TestMutuallyExclusiveOptionalAndPositionalParentNr�rCrrr�r��
r�rr�c��eZdZy)�)TestMutuallyExclusiveOptionalsMixedParentNr�rCrrr�r��
r�rr�c��eZdZy)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParentNr�rCrrr�r��
r�rr�c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�TestSetDefaultsc
�
�t�}|jd��|jdd��|jtddd��|j	g��|jtddd��|j	gt���|jtddd��|j	gtd����|jtddd��|j	gtdd�	���y)
Nr*r�rErv)r]r	r\rFr�)r�r	�r��set_defaultsr�r}r=r3s  r�test_set_defaults_no_argsz)TestSetDefaults.test_set_defaults_no_argss���+�-�����e��$����e�q��)�����e�u��2��*�*�2�.�	0�����e�u��2��*�*�2�r�t�4�	6�����e�u��2��*�*�2�r�E�{�;�	=�����e�u��2��*�*�2�r�E�Q�/?�@�	Brc	��t�}|jdd��|jdd��|jt	dd��|jg��|jt	dd��|jgt	���|jt	dd��|jgt	d����|jt	d	d��|jd
j
���|jt	d	d��|jd
j
�t	���|jt	d	d��|jd
j
�t	d����y)Nr*rErqr��xfooxrorFr�r=r�)r�rr�r�r}r=r�r3s  r�test_set_defaults_with_argsz+TestSetDefaults.test_set_defaults_with_argss6��+�-�����e�u��-����D�'��2�����g��/��*�*�2�.�	0�����g��/��*�*�2�r�t�4�	6�����e�u�-��*�*�2�r�E�{�;�	=�����c�U�+��*�*�6�<�<�>�:�	<�����c�U�+��*�*�6�<�<�>�2�4�@�	B�����c�U�+��*�*�6�<�<�>�2��;�G�	Irc��t�}|jd��|j�}|jd�}|jd��|j	tdd��|j
dj���y)Nr*r�r�rEr�rq)r�rr�r�r�r}r=r�)rr4r��parser_as    r�test_set_defaults_subparsersz,TestSetDefaults.test_set_defaults_subparsers%su��+�-�����e��$��*�*�,�
��(�(��-�������&�����e�u�-��*�*�3�9�9�;�7�	9rc��td��}|jd��t|g��}|jtd��|j	g��y)NFr5r*r�rAr)rrir4s   r�test_set_defaults_parentsz)TestSetDefaults.test_set_defaults_parents.sH��+�U�;�����e��$�+�V�H�=������e��f�&7�&7��&;�<rc�
�tj�}|j�jd�}|j	d��|j	d��|jt
d��|jdg��y)Nr7rvrr�)r-r.r�r�rr�r}r=)rr4�xparsers   r�)test_set_defaults_on_parent_and_subparserz9TestSetDefaults.test_set_defaults_on_parent_and_subparser4sl���(�(�*���'�'�)�4�4�S�9�������"������#�������F�$5�$5�s�e�$<�=rc��t�}|jdddd��|jd�|jdd�	�|jd
d��|jd
dd��|jt	dddd��|jg��|jdddd��|jt	dddd��|jg��y)N�Wr7r�r�r�r[r��XXror]r�rwr	�ZZr��WW�YY)r�rr�r�r}r=r3s  r�&test_set_defaults_same_as_add_argumentz6TestSetDefaults.test_set_defaults_same_as_add_argument;s���+�-�����c�S�C�3��7����D�!����D�$��/����C�s��+����C�s�D��9�	
����c�T�S�D�9��*�*�2�.�	0�	���d�c�T�S��9�����d�c�T�S�9��*�*�2�.�	0rc���t�}|jdddd��|jd�}|jd�|jdd	�
�|jdd�
�|jddd��|j	tdd	dd��|j
g��|jdddd��|j	tdddd��|j
g��y)Nrr7r�r�r�r*r[r�rror]r�rwr	rr�rr)r�rr�r�r�r}r=r�s   r�,test_set_defaults_same_as_add_argument_groupz<TestSetDefaults.test_set_defaults_same_as_add_argument_groupLs���+�-�����c�S�C�3��7��)�)�%�0��
���4� �
���4���.�
���3�c��*�
���3�c�4��8�	
����c�T�S�D�9��*�*�2�.�	0�	���d�c�T�S��9�����d�c�T�S�9��*�*�2�.�	0rN)
r!r"r#rrrr
rrrrCrrrrs'��B�I�"9�=�>�0�"0rrc��eZdZd�Zy)�TestGetDefaultc��t�}|j|jd��|j|jd��|jd�|j|jd��|j|jd��|jdtd��|j|jd��|jd|jd��|j
d��|jd|jd��|jd|jd��y)	Nr*rEr�r0rrr5r)r�r��get_defaultr�r�r�rr3s  r�test_get_defaultzTestGetDefault.test_get_defaultes��+�-�����&�,�,�U�3�4����&�,�,�U�3�4����G�$����&�,�,�U�3�4����&�,�,�U�3�4����G�#�r��:����&�,�,�U�3�4�����V�/�/��6�7������)�����6�#5�#5�e�#<�=�����V�/�/��6�7rN)r!r"r#rrCrrrrcs��8rrc��eZdZd�Zd�Zy)�TestNamespaceContainsSimplec�t�tj�}|jd|�|jd|�y)Nrr�)r-�	Namespace�assertNotIn�r�nss  r�
test_emptyz&TestNamespaceContainsSimple.test_empty|s0��
�
�
�
!������R� �����b�!rc���tjdd��}|jd|�|jd|�|jd|�|jd|�|jd|�y)	Nrvr�rqrr�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)r!r"r#r&r)rCrrr r zs��"�
"rr c��eZdZd�Zy)�TestHelpFormattingMetaclassc�V�|dk(ryGd�dt�}dD]\}}||||��y)N�HelpTestCasec�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsc���||_||_|j|j|jfD]-}|j
�d|��}|fd�}	||_t|||��/y#t$rY�wxYw)Nr�c��||�yrQrCr�s  r�test_wrapperzUTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper�r�r)�func_suffix�std_name�test_format�
test_print�test_print_filer!r�r�)r�
test_classr3r4r�r�r2s       rrz?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__�s��#.�� � (��
�"&�"2�"2�"&�/�/�"&�"6�"6�"8�I�,5�+=�+=�{� K�I�5>�(��09��-��J�	�<�@�"8��%����s�A#�#	A/�.A/c�\�tj|jji|jj��}t|dg�D](}|j|ji|j���*t|dg�}|D]X\}}|j|ji|j��}|D](}|j|ji|j���*�Zt|dg�}|r=|j�}	|D](}
|	j|
ji|
j���*|S)Nr��argument_group_signatures�subparsers_signatures)
r-r.r�rxryr�r�r�r�r�)rr�r4�argument_sig�
group_sigs�	group_sig�
argument_sigsr��subparsers_sigsr��
subparser_sigs           rr�zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parser�sG��!�0�0��,�,�1�1�6��-�-�4�4�6��%,�F�4I�2�$N�L�'�F�'�'��):�):�?�*6�*=�*=�?�%O�%�V�-H�"�M�
�0:�,�I�}�5�F�5�5�y�~�~�J�8A�8H�8H�J�E�(5��*��*�*�L�,=�,=�B�-9�-@�-@�B�)6�1;�#*�&�2I�2�"N��"�!'�!6�!6�!8�J�)8�
�-�
�-�-�}�/A�/A�G�1>�1E�1E�G�*9��
rc��t||j�}tj|�}d|_|j||�yrQ)r�r3r�rr!r�)rr��parser_text�
expected_texts    r�_testz<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._test�s9�� '���0@�0@� A�
� (���
� >�
�!%����"�"�=�+�>rc��|j|�}t|d|jz�}|j||��y)Nz	format_%s)r�r�r3rE)rr�r4ras    rr5zBTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_format�s9���)�)�&�1�� ���t�7G�7G�)G�H���
�
�6�6�8�,rc���|j|�}t|d|jz�}tt|j�}tt|jt
��	|�tt|j�j�}tt|j|�|j||�y#tt|j|�wxYw�Nzprint_%s)	r�r�r3r�r4r�r	rrE)rr�r4�print_�
old_streamrCs      rr6zATestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print�s����)�)�&�1�� ���d�6F�6F�)F�G��$�S�$�-�-�8�
���T�]�]�K�M�:�<��H�")�#�t�}�}�"=�"F�"F�"H�K��C����
�;��
�
�6�;�/���C����
�;�s�)/C�C#c��|j|�}t|d|jz�}t�}||�|j	�}|j||�yrH)r�r�r3r	rrE)rr�r4rI�sfilerCs      rr7zFTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file�sQ���)�)�&�1�� ���d�6F�6F�)F�G��#�
���u�
�#�n�n�.���
�
�6�;�/rN)	r!r"r#rr�rEr5r6r7rCrrr�r/�s!��
A�"
�,
?�
-�


0�
0rr�))�usager�)rr�)r�)r�rfr�r�r�r3r4s       rrz$TestHelpFormattingMetaclass.__init__�s9���>�!��F	0�v�F	0�R&:�!�K���S�+�x�0�&:rNr{rCrrr+r+�s��O1rr+r-c��eZdZ	eddd��Zedddd�	�ed
dd�
�edd��edd��edd��gZgZdZedzZdZ	y)�TestHelpBiggerOptionalsr��DESCRIPTION�EPILOG�r�r��epilogr`r�r��0.1r�r�r�X HELPr��--y�Y HELPr	r*�FOO HELPrE�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�
r!r"r#rvr�r�r:rMrr�rCrrrOrO�s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���!#��
�E����D� �GrrOc��eZdZ	d�Zej
ZejZejZdZedzZ	ejZ
y)�TestShortColumnsc�n�|jtj��}|jdd�y)NrHr�)rIrrJr�rKs  rrMzTestShortColumns.setUps)�����	� =� =� ?�@�����	�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)r!r"r#rMrOr�r�r:rMrr�rCrrr]r]sW���
!�#:�"J�"J��"9�"M�"M��"9�"S�"S��
�E����D�:#:�"A�"A�Grr]c���eZdZ	eddd��Zedddd�	�ed
dd�
�edd��edd��edd��gZedd��edd��eddd��gfgZdZedzZd Z	y!)"�TestHelpBiggerOptionalGroupsr�rPrQrRr`r�r�rTr�r�rrUr�rVrWr	r*rXrErYzGROUP TITLEzGROUP DESCRIPTIONr�rFzBAZ HELPrr�zZ HELPr�zN        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
    rZNr[rCrrr`r`>s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���

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

�E����D�,�Grr`c��eZdZ	edd��Zeddd��edd	�
�edd�
�ed
d�
�gZgZdZedzZdZ	y)�TestHelpBiggerPositionals�USAGErP�rMr�r�rrUr�rVrWr	�ekiekiekifekangzEKI HELPrErY�        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[rCrrrbrbmsl��>���m�D���D��H�5��E��!���J�/��E�
�#�	��!#��
�E����D��Grrbc��eZdZ	edd��Zeddd��edd	d
��gZedd�
�eddd��gfgZdZedzZdZ	y)�TestHelpReformattingr�ze   oddly    formatted
description

that is so long that it should go onto multiple lines when wrappedr�r�rzoddly
    formatted -x help�r�rr]rz
normal y helpr�z'
    oddly formatted group

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

        positional arguments:
          yyy         normal y help

        options:
          -h, --help  show this help message and exit
          -x XX       oddly formatted -x help

        title:
          oddly formatted group description

          -a          oddly formatted -a help again, so long that it should be wrapped
                      over multiple lines
        rNr[rCrrrhrh�s���H��
�)�*��	�D�$�&=�	>��C��_�5���

�W�#0�
1��d�<�$�%�
&�		'�
!��
�E����D�(�Grrhc��eZdZ	edd��Zeddd��edd	d
��gZed�edd
d��gfgZdZedzZdZ	y)�TestHelpWrappingShortNamesr�zZD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
DD
Dr�r�rzxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXrir]r�dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YH�ALPHASr�rzPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAr�rja�
        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[rCrrrlrl�sz��H���[�A���D�$�]�3��C��\�2���


�X����\��@�B�	C�!��
�E����D�,�Grrlc��eZdZ	edd��Zedddd��ed	d
d��ed
dd��gZed�eddd��eddd��gfgZdZedzZdZ	y)�TestHelpWrappingLongNamesrczZD 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 Drdr`r�r�zZV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV VV Vr�r��XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHrir]�yyyyyyyyyyyyyyyyyyyyyyyyyrmrnr��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 ZHrfag
        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[rCrrrprp�s���F���z�B���D�+�i��D��D�(��6��C���5���

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

�E����D�<�Grrpc��eZdZ	ed��Zeddd��eddd	��ed
d
��eddd
��eddd��eddej��edddej��edddej��edejejd��g	Zed�ed dd!��ed"d#d$��ed%d%d��ed&d&d��gfgZ	d'Z
e
d(zZd)Zy*)+�
TestHelpUsager�rvr[r�rir�r�r�r�r�r	r�r�)rrxr�r�r�zWhether to foo)rrr0zWhether to barT)rrprrz--foobarz--barfoorz--bazzzBazz!)rrprr�rr]rr{r	r�r�a/        usage: PROG [-h] [-w W [W ...]] [-x [X ...]] [--foo | --no-foo]
                    [--bar | --no-bar]
                    [-f | --foobar | --no-foobar | --barfoo | --no-barfoo]
                    [--bazz | --no-bazz] [-y [Y]] [-z Z Z Z]
                    a b b [c] [d ...] e [e ...]
        az
        positional arguments:
          a                     a
          b                     b
          c                     c

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

        group:
          -y [Y]                y
          -z Z Z Z              z
          d                     d
          e                     e
        rN)
r!r"r#rvr�r-r�r�r�r:rMrr�rCrrrvrvs��#���'���D��#�&��D��#�&��C�c���C�c��#��C�c��%��G�*�8�3Q�3Q�R��G�*�D�$�:�:�	<��D�*�j��1O�1O�P��H�X�;�;�&�/�/�g�	?���

�W����C�c�*���A�C�(���#�S�)���#�S�)�	
�	�!��
�E����D�,�Grrvc�Z�eZdZed��Zedd��eddd��gZd	Zed
zZdZy)
�TestHelpUsageWithParenthesesr�rv�
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)	r!r"r#rvr�r�rMrr�rCrrrxrxWsL����'���L�"8�9��D�,�(F�G���

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

        yyyy:
          b     b
          -y Y  y
        rNr[rCrrr|r|ms���#����7����	�V����3����#��
�	�

�V����#����3��
�	�	!��
�E��	�	�D��Grr|c�z�eZdZ	ed��Zedd��edd��ed�ed	�gZgZd
ZedzZdZ	y
)�TestHelpUsageLongProg�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPrvr[rrzr�r7r�r�zz        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[rCrrr�r��sa��4���)���D�#���D�#���C���C��	��!#��
�E��
�
�D��Grr�c��eZdZ	ed��Zedd��edd��edd	��ed
d��ed�ed
�gZgZdZedzZdZ	y)� TestHelpUsageLongProgOptionsWrapr�rvr[�WWWWWWWWWWWWWWWWWWWWWWWWWrzr�rqr�YYYYYYYYYYYYYYYYYYYYYYYYYr�ZZZZZZZZZZZZZZZZZZZZZZZZZr�r�a        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[rCrrr�r��su��K���)���D�(�#��D�(�#��D�(�#��D�(�#��C���C��
��!#��
�E����D��Grr�c�f�eZdZ	edd��Zed�ed�ed�gZgZdZedzZd	Z	y
)�$TestHelpUsageLongProgPositionalsWrapr�Fr}�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccz�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        rNr[rCrrr�r��sV��M���5�9���H�
��H�
��H�
���
!#��
�E�
���D��Grr�c	��eZdZ	ed��Zedd��edd��edd	��ed
d��ed�ed
�ed�gZgZdZedzZdZ	y)�TestHelpUsageOptionalsWrapr�rvr[r�rzr�rqrr�rr�r�r�r�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[rCrrr�r��s|��6���'���D�(�#��D�(�#��D�(�#��D�(�#��C���C���C����!#��
�E��
�
�D��Grr�c��eZdZ	ed��Zed�ed�ed�ed�ed�ed�gZgZd	Zed
zZdZ	y)
�TestHelpUsagePositionalsWrapr�rvr�rrr�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[rCrrr�r�si��8���'���D�	��D�	��D�	��H�
��H�
��H�
�
��!#��
�E�
���D��Grr�c��eZdZ	ed��Zedd��edd��edd	��ed
�ed�ed�gZgZd
ZedzZdZ	y)�%TestHelpUsageOptionalsPositionalsWrapr�rvr�rqrzrr�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[rCrrr�r�.sr��F���'���D�(�#��D�(�#��D�(�#��H�
��H�
��H�
�
��!#��
�E����D��Grr�c�p�eZdZ	ed��Zedd��edd��edd	��gZgZd
ZedzZdZ	y
)�TestHelpUsageOptionalsOnlyWrapr�rvr�rqrzrr�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[rCrrr�r�Rs]��J���'���D�(�#��D�(�#��D�(�#���
!#��
�E�
���D��Grr�c�f�eZdZ	edd��Zed�ed�ed�gZgZdZedzZd	Z	y
)� TestHelpUsagePositionalsOnlyWrapr�Fr}r�r�r�z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r�rNr[rCrrr�r�lsV��L����7���H�
��H�
��H�
���
!#��
�E����D��Grr�c
��eZdZ	ed��Zeded��edddd	d
��edgd
�d��eddddgdd��edd��eddd��gZed�edd ��ed!d"d#��gfgZd$Zed%zZ	d&Z
y')(�TestHelpVariableExpansionr�rvr�z"x %(prog)s %(default)s %(type)s %%r�rrr�XXXz y %(prog)s %(default)s %(const)s)rrprrr�rz$foo %(prog)s %(default)s %(choices)srr0rFrvr��BBBz!bar %(prog)s %(default)s %(dest)s)rpr�r�rr�zspam %(prog)s %(default)sr	r5r�zbadger %(prog)s %(default)s)rprr�r�za %(prog)s %(default)sr�r8zb %(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)r!r"r#rvr�r�r�r:rMrr�rCrrr�r��s���D���'���D�s�5�	7��D���%�3�	5��G�_�7�	9��G�U�Q��F�E�4�	6��F�4�5��H�c�(E�F���

�W����3�4���b�'?�@�
�	�!���E����D�"�Grr�c�<�eZdZ	edd��ZgZgZdZedzZdZ	y)�&TestHelpVariableExpansionUsageSuppliedr�z%(prog)s FOO�r�rMz         usage: PROG FOO
        r�rNr[rCrrr�r��s=��J���n�=���� "���E����D�
�Grr�c�6�eZdZ	edd��ZgZgZdZeZdZ	y)�$TestHelpVariableExpansionNoArgumentsr�Fr}z        usage: PROG
        rNr[rCrrr�r��s1��E����7���� "���E��D��Grr�c�n�eZdZ	edej
��Zedd��edd��gZgZdZ	d	Z
d	Zy
)�TestHelpSuppressUsager�r�r�r�r	r��	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rN)r!r"r#rvr-r�r�r�r:rrMr�rCrrr�r��sO��=���h�.?�.?�@���G�*�%��F��%���!#���D�
�E��Grr�c�t�eZdZ	edd��Zedej��edd��gZgZdZ	e	d	zZ
d
Zy)�TestHelpSuppressOptionalr�Fr}r�r	r�r�z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        rN�r!r"r#rvr�r-r�r�r:rMrr�rCrrr�r��s[��I����7���G�(�+�+�,��F��%���!#��
�E����D�
�Grr�c��eZdZ	ed��Zedd��edd��gZed�ed	ej��gfgZd
Z	e	dzZ
dZy
)�TestHelpSuppressOptionalGroupr�rvr�r�r	r�r�r�r0�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)r!r"r#rvr�r�r-r�r:rMrr�rCrrr�r��sq��F���'���G�*�%��F��%���


�W���G�(�*;�*;�<�=�>�!��
�E����D��Grr�c�r�eZdZ	ed��Zedd��edej��gZgZdZ	e	dzZ
d	Zy
)�TestHelpSuppressPositionalr�rvr�r�r	r�z-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        rNr�rCrrr�r�sY��K���'���G�*�%��F��*�*�+���!#��
�E����D��Grr�c�N�eZdZ	ed��Zeddd��gZgZdZedzZd	Z	y
)�TestHelpRequiredOptionalr�rvr�Tr�)r�rz+        usage: PROG [-h] --foo FOO
        r�rNr[rCrrr�r�(sK��8���'���G�d��4���!#��
�E����D��Grr�c�f�eZdZ	eddd��Zeddd��ed	d
d��gZgZd
ZedzZdZ	y)�TestHelpAlternatePrefixCharsr�z^;F)r�rKrLz^^foorr�r�z;bz;;barr�r	z-        usage: PROG [^^foo] [;b BAR]
        zf
        options:
          ^^foo              foo help
          ;b BAR, ;;bar BAR  bar help
        rNr[rCrrr�r�<s[��D���T�E�J���G�L�z�:��D�'�
�+���!#��
�E����D��Grr�c�`�eZdZ	edd��Zedd��edd��gZgZd	Zed
zZdZ	y)
�TestHelpNoHelpOptionalr�Fr}r�r�r	r�r�z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        rNr[rCrrr�r�QsU��G����7���G�*�%��F��%���!#��
�E����D��Grr�c�V�eZdZ	ed��Zed�ed�gZgZdZedzZdZ	y)	�TestHelpNoner�rvr�r�r�z�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        rNr[rCrrr�r�hsM��;���'���G���F����!#��
�E����D��Grr�c	��eZdZ	ed��Zedddd��edd	d
d��edd
dd��edddd��gZgZdZedzZdZ	y)�TestHelpTupleMetavarOptionalr�rvr[rir���W1�W2�rrxr�r�r�r���X1�X2rr]r{��Y1�Y2�Y3rr	r���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[rCrrr�r��sx��,���'���D�s�#�|�<��D�s�#�|�<��D�s�!�-?�@��D�s�#�x�8�	��!#��
�E����D��Grr�c	��eZdZ	ed��Zedddd��edd	d
d��edd
dd��edddd��gZgZdZedzZdZ	y)�TestHelpTupleMetavarPositionalr�rvrir�r�r�r�r�r�r�r�r]r�r{r�r	r�r�r�zI        usage: PROG [-h] W1 [W2 ...] [X1 [X2 ...]] Y1 Y2 Y3 [Z1]
        z�
        positional arguments:
          W1 W2       w help
          X1 X2       x help
          Y1 Y2 Y3    y help
          Z1          z help

        options:
          -h, --help  show this help message and exit
        rNr[rCrrr�r��sx��<���'���C�h�c�<�@��C�h�c�<�@��C�h�a�1C�D��C�h�c�7�;�	��!#��
�E��
�
�D��Grr�c��eZdZ	edej
d��Zedd��edd��gZed	d
��edd
��gfgZdZ	e	dzZ
dZy)�TestHelpRawTextr��7Keep the formatting
    exactly as it is written

here
�r��formatter_classr�r�z-    foo help should also
appear as given herer	r�r�r��?    This text
  should be indented
    exactly like it is here
r�r0r��>        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)r!r"r#rvr-�RawTextHelpFormatterr�r�r:rMrr�rCrrr�r��s���'��
�X�%B�%B����	�G�1�	2��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�,�Grr�c��eZdZ	edej
d��Zedd��edd��gZed	d
��edd
��gfgZdZ	e	dzZ
dZy)�TestHelpRawDescriptionr�r�r�r�z4  foo help should not
    retain this odd formattingr	r�r�r�r�r�r0r�r�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 not retain this odd formatting

        title:
              This text
            should be indented
              exactly like it is here

          --bar BAR   bar help
        rN)r!r"r#rvr-�RawDescriptionHelpFormatterr�r�r:rMrr�rCrrr�r��s���'��
�X�%I�%I����	�G�;�	<��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�*�Grr�c�H�eZdZ	edej
d��Zedd��eddd	�
�edejdd
��edejdej��eddd��edd��edddd��gZ	edd��ede
dd� �gfgZd!Zed"zZ
d#Zy$)%�TestHelpArgumentDefaultsr�r�r�r�z)foo help - oh and by the way, %(default)sr	r0rr�r�z--tazzWhether to taz itT)rrrpz--corgezWhether to corge itr�zSet the quuxr)rrpr�r�r5r��woodenzbadger help�rxrprr�r�rfr�)r�rprz�        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)r!r"r#rvr-�ArgumentDefaultsHelpFormatterr�r�r�r�r�r:rMrr�rCrrr�r�s���0��
�X�%K�%K�!�#��
	�G�E�F��G�L�z�:��G�H�:�:�$�d�	4��I�h�<�<�&��0A�0A�	C��H�>�2�6��F��%��H�C��
�F�
��

�W�-�	0�

�g�C��*�
=�	>�	@�!��
�E�
���D�*�Grr�c�R�eZdZ	edd��Zedddd��gZgZd	Zed
zZdZ	y)
�TestHelpVersionActionr�r�r��-Vr�r�z3.6r�z&        usage: PROG [-h] [-V]
        z�
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        rNr[rCrrr�r�JsK��6���M�B���t�[��E�R�S�� "��
�E����D��Grr�c��eZdZ	ed��Zeddddej��edd	�
�edd�
�gZgZd
Z	e	dzZ
y)�TestHelpVersionActionSuppressr�rvr`r�r�r�)rr�rr�r�r	r�r�r�r�N)r!r"r#rvr�r-r�r�r:rMrrCrrr�r�^se��M���'���D�+�i���"�"�	$��G�*�%��F��%�	��!#��
�E����Drr�c��eZdZ	edd��Zedddd��gZd	D���cgc]}t|�
���c}}}ZdZedzZd
Z	ycc}}}w)�TestHelpSubparsersOrderingr��display some subcommandsr�r`r�r�rTr�)r�r�r�r�r�r��6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z�
        display some subcommands

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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rZN)
r!r"r#rvr�r�r;rMrr�)�.0rfrvs000rr�r�wsv��?���'A�C���t�[��E�R�S��*C�D�)B��!�d�^�)B�D��
�E��
�
�D��G��'Ds�Ar�c
��eZdZ	edd��Zedddd��gZd	ZeD����cgc]\}}t||�
���c}}}}ZdZedzZ	d
Z
ycc}}}}w)�"TestHelpSubparsersWithHelpOrderingr�r�r�r`r�r�rTr�))r�za subcommand help)r�zb subcommand help)r�zc subcommand help)r�zd subcommand help)r�ze subcommand help)rfrr�a�
        display some subcommands

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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        rZN)r!r"r#rvr�r��subcommand_datar;rMrr�)r�rfrrvs0000rr�r��s���?���'A�C���t�[��E�R�S���O�0?�@�/>���t�!�d��6�/>�@��
�E����D�"�G��1@s�A
r�c��eZdZd�Zeddej��Zede��ede��ede	d	�
�gZ
gZdZedzZ
d
Zy)�TestHelpMetavarTypeFormatterc��|SrQrCrfs r�custom_typez(TestHelpMetavarTypeFormatter.custom_type�s���
rr�r�)r�r�r�r�r�r�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)r!r"r#r�rvr-�MetavarTypeHelpFormatterr�r�r�r�r:rMrr�rCrrr�r��sr�����M�+3�+L�+L�N���s��-��t�+�6��t�%��F�H��!#��
�E����D��Grr�c��eZdZ	dZd�Zy)�!TestHelpUsageLongSubparserCommandNc�<�d�}tjd|��}|jddd��}|jdd	�
�|jdd�
�|jd
d�
�|j	�}|j|t
jd��y)Nc�0�tj|d��S)N�2)�max_help_position)r-r�rvs r�custom_formatterzLTestHelpUsageLongSubparserCommand.test_parent_help.<locals>.custom_formatter�s���0�0���L�Lrr�)r�r�r��CMDzcommand to use)r�r�rr!z
add somethingr	�removezremove somethingza-very-long-commandzcommand that does somethinga}            usage: PROG [-h] CMD ...

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

            commands:
              CMD                    command to use
                add                  add something
                remove               remove something
                a-very-long-command  command that does something
        )r-r.r�r�rr�r�r)rr��
parent_parser�cmd_subparsersrbs     rrdz2TestHelpUsageLongSubparserCommand.test_parent_help�s���	M�!�/�/�� 0�
�
�
'�5�5�J�>C�;K�6�M��	�!�!�%�'6�	"�	8�	�!�!�(�'9�	"�	;�	�!�!�"7�'D�	"�	F�$�/�/�1������h�o�o�7�'
�	r)r!r"r#r!rdrCrrr�r��s��F��G�!rr�c�t�eZdZ	dd�d�Zdd�d�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�Zd�Zd�Zd�Zy)�TestInvalidArgumentConstructorsN)�errmsgc�x�tj�}|jt||jg|��i|��yrQ)r-r.r#r�r��rr�rxryr4s     r�assertTypeErrorz/TestInvalidArgumentConstructors.assertTypeErrors<���(�(�*������y�&�&�2E�2E�	0� $�	0�(.�	0rc�x�tj�}|jt||jg|��i|��yrQ)r-r.r#rCr�r�s     r�assertValueErrorz0TestInvalidArgumentConstructors.assertValueErrors<���(�(�*������z�6�6�3F�3F�	0� $�	0�(.�	0rc��|jdd��|jdd��|jdd��|jdi��y)	Nr�)rErr*)�callbackrC)�
callback_args)�callback_kwargs�r�rs r�test_invalid_keyword_argumentsz>TestInvalidArgumentConstructors.test_invalid_keyword_argumentssN�����T�t��,����T�E��2����T���4����T�2��6rc��|j�dD]/}|j|��5|j|��ddd��1y#1swY�<xYw)N�r�r�r�r)r�r>�rrs  r�test_missing_destinationz8TestInvalidArgumentConstructors.test_missing_destinationsF������3�F����V��,��$�$�F�$�3�-�,�4�,�,�s�A�A	c�H�|jd�|jd�y)Nr�z---�r�rs r�test_invalid_option_stringsz;TestInvalidArgumentConstructors.test_invalid_option_strings!s�����d�#����e�$rc�d�|jdd��|jdttf��y)Nr�r�r�)r�r�r�rs r�test_invalid_typez1TestInvalidArgumentConstructors.test_invalid_type%s,�����g�E��2����g�S�%�L��9rc��|jdd��|jdd��|jdd��|jddd�	�y)
Nr�r*rrFr�)r�r�z
store-truezunknown action)rr�rrs r�test_invalid_actionz3TestInvalidArgumentConstructors.test_invalid_action)sV�����d�5��1����e�E��2����g�.A��B����g�l�%5�	�	7rc��tj�}|jd��|jt�5}|jdd��ddd�|jdt
j��y#1swY�/xYw)Nr*r(rErFz+dest supplied twice for positional argument)r-r.r�r�rCr�r�r�r�s   r�test_multiple_destz2TestInvalidArgumentConstructors.test_multiple_dest0sm���(�(�*�������'�
�
�
�z�
*�b�����E��2�+��
�
�C��"�,�,�'�	)�+�
*�s�A>�>Bc	��dD]�}|j|��5tt��td��tddg��fD]E}|j|�	�5|jdd|i|��|jdd|i|��ddd��G|jd
|d
��|jd|d
��ddd���y#1swY��xYw#1swY��xYw)N)rrr�r�r�rr�r�rwr�r�r�)�attrsr�rr�rr�)r�r�)r>r�r�r�)rrrs   r�test_no_argument_actionsz8TestInvalidArgumentConstructors.test_no_argument_actions8s���0�F����V��,�"��n�d��o�"�C��:�6�8�E����E��2�,��,�,�J�&�J�E�J�,��,�,�I��I�5�I�3�2�8�
�$�$�T�&��$�B��$�$�S��q�$�A�-�,�0�
3�2��-�,�s#�?C	�)B=	�2C	�=C
�C	�	C	c��dD]E}|j|��5|jdd|��|jdd|��ddd��Gy#1swY�RxYw)N)rr�r�rr�r*r�r��rxr�r>r�rs  r�!test_no_argument_no_const_actionszATestInvalidArgumentConstructors.test_no_argument_no_const_actionsDsU��<�F����V��,��$�$�T��v�$�F��$�$�T��V�$�D�-�,�=�,�,�s�)A�A	c
�:�dD]�}|j|��5|dk(rdn|}|jdd|d|�d��	�|jd
d|d|�d��	�dD],}|jdd||�
�|jd
d||�
��.	ddd���y#1swY��xYw)Nrrr�r�r�rz
nargs for z actions must be != 0)rxrr�r�)rvr�r�r*)rrxr)r>r�)rr�action_namerxs    r�#test_more_than_one_argument_actionszCTestInvalidArgumentConstructors.test_more_than_one_argument_actionsNs���3�F����V��,�*0�H�*<�h�&���%�%�d�!�F�'��}�4I�J�&�L��%�%�f�A�f�'��}�4I�J�&�L�+�E��)�)�$�e�05�f�*�F��)�)�&��05�f�*�F�+�-�,�4�,�,�s�A-B�B	c��dD]1}|j|��5|jdd|��ddd��3y#1swY�>xYw)N)rr�rr�r�rrrs  r�test_required_const_actionsz;TestInvalidArgumentConstructors.test_required_const_actions_s>��5�F����V��,��$�$�T��V�$�D�-�,�6�,�,�s	�8�A	c��|jdd��|jddd��|jddtj��y)Nr��parsersrr�)rr�)rr�)r�r-r.rs r�"test_parsers_action_missing_paramszBTestInvalidArgumentConstructors.test_parsers_action_missing_paramsesK�����Y�y��9����Y�y�v��F����Y�y�*2�*A�*A�	�	Crc�*�|jdd��y)Nr*Tr�rrs r�test_required_positionalz8TestInvalidArgumentConstructors.test_required_positionalks�����U�T��2rc����Gd�dt��G�fd�dt�}tj�}|j	�|j
d|����|j	�|j
d|����y)Nc��eZdZy)�ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessNr�rCrr�Successr"pr�rr#c�"��eZdZ	d�fd�	Zd�Zy)�HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Actionc�2��|dk(r|�ur|�ur���yyy)Nr�rC)r�option_stringsr)rrpr�r#s      �rrzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__us2����6�>���'�"�g�-�")�)�O�.�(�"rc��yrQrCrzs   rrxzQTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__�s��rN)F)r!r"r#rrx)r#s�rr�r%ss���#(�	
,�
rr�r�)rrprr�)r�r�r-r.r�r�)rr�r4r#s   @r�test_user_defined_actionz8TestInvalidArgumentConstructors.test_user_defined_actionnsy���	�i�	�	�V�	� �(�(�*�����'�6�#6�#6��!'���	�	I����'�6�#6�#6��!'���	�	Ir)r!r"r#r�r�rrrr
rrrrrrrrr)rCrrr�r�s^��7�,0�0�
.2�0�
7�4�%�:�7�)�
B�E�F�"E�C�3�Irr�c��eZdZd�Zd�Zy)�TestActionsReturnedc�>�tj�}|jd�}|j|jd�|jdd�}|j|jd�|jdd�}|j|jd�y)	Nr�r*r�r0rEr�rr�)r-r.r�r�r)�rr4rs   rr�zTestActionsReturned.test_dest�s����(�(�*���$�$�W�-��������e�,��$�$�T�7�3��������e�,��$�$�T�4�0��������c�*rc�8�tj�}|jddddtddgddd	�
�	}|j	|j
d�|j	|jd�|j	|jd�|j	|jt�|j	|jddg�|j	|jd�|j	|jd�|j	|jd	�y)Nr�r�rr�rvr�r��BARrF)rxrrpr�r�rr�r))
r-r.r�r�r�rxrrpr�r�rr�r)r-s   r�	test_misczTestActionsReturned.test_misc�s����(�(�*���$�$�W�C�r�-/�c�A�q�6�*/��U�%�L��	
������s�+�������r�*��������,�������c�*�������!�Q��0�������e�,��������/�������e�,rN)r!r"r#r�r0rCrrr+r+�s��+�-rr+c�$�eZdZd�Zd�Zd�Zd�Zy)�TestConflictHandlingc�P�|jttjd��y)Nr*)�conflict_handler)r�rCr-r.rs r�
test_bad_typez"TestConflictHandling.test_bad_type�s"�����*�h�&=�&=�+0�	�	2rc��tj�}|jd�|jtj|jd�|jd�|jtj|jd�y)Nr�r�)r-r.r�r�r$r3s  r�test_conflict_errorz(TestConflictHandling.test_conflict_error�sn���(�(�*�����D�!����(�0�0� �-�-�t�	5����H�%����(�0�0� �-�-�x�	9rc��tj}|dd��}|jdd��|jdd��|j|j	�tjd��|jd	d
��|jd	d��|j|j	�tjd
��y)Nr��resolve)r�r4r�zOLD Xr	zNEW Xz�            usage: PROG [-h] [-x X]

            options:
              -h, --help  show this help message and exit
              -x X        NEW X
            r��OLD_SPAMrz�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�rr�r)rr�r4s   r�test_resolve_errorz'TestConflictHandling.test_resolve_error�s����,�,�
���)�D�����D�w��/����D�w��/�����+�+�-�x���@�0�	�	���H�j��9����H�j��9�����+�+�-�x���@�0�	rc���tj�}|j�}|jddg��|j	tj
|jd�|j	tj
|jd�|j	tj
|jddg��|j	tj
|jddg��y)N�fullname�aliasrr�)r-r.r�r�r�r$)rr4�sps   r�test_subparser_conflictz,TestConflictHandling.test_subparser_conflict�s����(�(�*��
�
"�
"�
$��
�
�
�j�7�)�
�4����(�0�0��-�-��	5����(�0�0��-�-��	2����(�0�0��-�-��:�,�	�	H����(�0�0��-�-��7�)�	�	ErN)r!r"r#r5r7r<rArCrrr2r2�s��2�9��2Err2c�D�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zy
)�TestOptionalsHelpVersionActionsc��|jt�5}|j|j��ddd�|j	|j�jj�y#1swY�>xYwrQ)r�r�r=r�r�rr�r�)rr4r�r�s    r�assertPrintHelpExitz3TestOptionalsHelpVersionActions.assertPrintHelpExit�sY��
�
�
�2�
3�r����h�n�n�.�/�4�����+�+�-�r�|�|�/B�/B�C�4�
3�s� A3�3A<c�F�|jt|j|�yrQ)r�r�r=rs   rr�z9TestOptionalsHelpVersionActions.assertArgumentParserError�s�����-�v�/@�/@�$�Grc���t�}|jdddd��|j|d�|j|d�|jtt
|d�y)	Nr`r�r�r�r�r7rQ�format_version�r�r�rEr�r�r�r3s  r�test_versionz,TestOptionalsHelpVersionActions.test_version�sV��+�-�����D�+�i���O�� � ���.�� � ���2����.�'�6�;K�Lrc�
�td��}|jdddd��|jt�5}|j	dg�ddd�|jdjj�y#1swY�0xYw)	N�PPPrvr`r�r�z%(prog)s 3.5r�zPPP 3.5
�r�r�r�r�r=r�r�r�r�s   r�test_version_formatz3TestOptionalsHelpVersionActions.test_version_format�sl��+��7�����D�+�i���X�
�
�
�2�
3�r����t�f�%�4�����b�l�l�&9�&9�:�4�
3�s�A9�9Bc���td��}|jdddd��|j|d�|j|d	�|jtt
|d
�y)NFr5r`r�r�r�r�r7rQrH)r�r�r�r�r�r�r3s  r�test_version_no_helpz4TestOptionalsHelpVersionActions.test_version_no_help�sX��+�U�;�����D�+�i���O��&�&�v�t�4��&�&�v�x�8����.�'�6�;K�Lrc��td��}|jddd��|jt�5}|j	dg�ddd�|jdjj�y#1swY�0xYw)Nr�rvr�r�z%(prog)s 3.7r�zXXX 3.7
rMr�s   r�test_version_actionz3TestOptionalsHelpVersionActions.test_version_actionsj��+��7�����D��N��K�
�
�
�2�
3�r����t�f�%�4�����b�l�l�&9�&9�:�4�
3�s�A8�8Bc��td��}|j|d�|j|d�|j|d�|j|d�y)NFr5r7rQr`r�)r�r�r3s  r�test_no_helpz,TestOptionalsHelpVersionActions.test_no_helpsL��+�U�;���&�&�v�t�4��&�&�v�x�8��&�&�v�t�4��&�&�v�{�;rc��t�}|jdd��|jdd��|j|d�|j|d�|j|d�|j	t
t|d�y)	Nr�rrrr�r`r�rH)r�r�rEr�r�r�r�r3s  r�test_alternate_help_versionz;TestOptionalsHelpVersionActions.test_alternate_help_versionsu��+�-�����D���0����D���3�� � ���.��&�&�v�t�4��&�&�v�{�;����.�'�6�;K�Lrc�T�t�}|jddd��|jdd��|jd�gd	�}|d
dgz}|D]V}|D]	}|�d|��}�|j|d
z�|j||dz�|jtt
|d��Xy)Nr�r�r�r�r�rrr])rr�r*z-x barzbaz -xz--bad-optionzfoo bar bazz %s r7rQrHrI)rr4�valid_prefixes�valid_suffixes�prefix�suffixras       r�!test_help_version_extra_argumentszATestOptionalsHelpVersionActions.test_help_version_extra_argumentss���+�-�����K�	�5��I����D���6����C� �?��'�>�=�*I�I��$�F�(��(.��7��)��$�$�V�V�d�]�;��$�$�V�V�h�->�?����n�g�v�?O�P�%rN)r!r"r#rEr�rJrNrPrRrTrVr\rCrrrCrC�s8��+�D�
H�M�;�M�;�<�M�QrrCc�>�eZdZ	d�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
y	)
�TestStringsc�V�ttfD]}|j||�|��yrQ)r�r�r�)r�obj�
result_stringr8s    r�assertStringEqualzTestStrings.assertStringEqual4s$���$�K�D����T�#�Y�
�6� rc�p�tjgd�ddddgd�ddd	�
�	}d}|j||�y)N)r�r�r�r�r�r�r�rvr�r{F�HELP�METAVAR�	r'r)r�rxrpr�r�rr�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-r�rb)r�optionrgs   r�
test_optionalzTestStrings.test_optional8sH�����0���������	��
Q�	�	
���v�v�.rc��tjgdtddgd�ddd��	}d	tz}|j||�y)
Nr�r�r�)r�g�?r�TzH HH HzMV MV MVrgz�Action(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV'))r-r�r�rb)r�argumentrgs   r�
test_argumentzTestStrings.test_argumentIsQ���?�?������#����	 ��
@�BG�
H�	�	
���x��0rc�Z�tjdd��}d}|j||�y)Nrr�r@zNamespace(foo=42, bar='spam')�r-r"rb�rr%rgs   r�test_namespacezTestStrings.test_namespaceZs)��
�
�
�B�F�
3��0�����r�6�*rc�Z�tjdiddi��}d}|j||�y)N�"�quotezNamespace(**{'"': 'quote'})rCrnros   r�'test_namespace_starkwargs_notidentifierz3TestStrings.test_namespace_starkwargs_notidentifier_s.��
�
�
�
1�3��.�
1��2�����r�6�*rc�^�tjdddiddi��}d}|j||�y)Nr�rvrrrsz Namespace(a=1, **{'"': 'quote'})rCrnros   r�2test_namespace_kwargs_and_starkwargs_notidentifierz>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifierds3��
�
�
�
6�!�
6��W�~�
6��7�����r�6�*rc�Z�tjdiddi��}d}|j||�y)N�validTzNamespace(valid=True)rCrnros   r�$test_namespace_starkwargs_identifierz0TestStrings.test_namespace_starkwargs_identifieris.��
�
�
�
2�7�D�/�
2��(�����r�6�*rc�z�tjd��}dtjz}|j||�y)Nr�rvzvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r-r.�
HelpFormatterrb)rr4rgs   r�test_parserzTestStrings.test_parserns<���(�(�f�5��
�'�5�5�
6�	�	
���v�v�.rN)r!r"r#rbrirlrprtrvryr|rCrrr^r^1s-��=�7�/�"1�"+�
+�
+�
+�
/rr^c��eZdZd�Zd�Zd�Zy)�
TestNamespacec��tj�}|jtt|d�tjdd��}|j|jd�|j|jd�y)Nr�rr�rM)r-r"r�r�r�r�r�r�r$s  r�test_constructorzTestNamespace.test_constructor|s^��
�
�
�
!�����.�'�2�s�;�
�
�
�"��
/��������r�"�������v�&rc��tjdd��}tjdd��}tjd��}tjd��}|j||�|j||�|j||�|j||�|j||�|j	||k7�|j	||k7�|j	||k7�|j	||k7�y)Nrvr�rM)r�r�)r�r�)r-r"r��assertNotEqual�
assertTrue)r�ns1�ns2�ns3�ns4s     r�
test_equalityzTestNamespace.test_equality�s���� � �1��*��� � �1��*��� � �1�%��� � �1�%������c�"����C��%����C��%����C��%����C��%�����s�
�#�����s�
�#�����s�
�#�����s�
�#rc���tjdd��}|j|jd�t�|j|jd�t�y)Nrvr�rM)r-r"r�r��NotImplemented�__ne__r$s  r�$test_equality_returns_notimplementedz2TestNamespace.test_equality_returns_notimplemented�s@��
�
�
�!�q�
)���
�
�b�i�i��o�~�6��
�
�b�i�i��o�~�6rN)r!r"r#r�r�r�rCrrr~r~zs��'�$� 7rr~c��eZdZd�Zd�Zd�Zy)�TestEncodingc��tjj|�\}}|dz
}t|dd��5}|j	�ddd�y#1swYyxYw)Nz.pyrrrj)rUr]�splitextrlr)rr]r�rs    r�_test_module_encodingz"TestEncoding._test_module_encoding�sF���'�'�"�"�4�(���a���
��
�$��g�
.�!�
�F�F�H�/�
.�
.�s�A�Ac�B�|jtj�yrQ)r�r-�__file__rs r�test_argparse_module_encodingz*TestEncoding.test_argparse_module_encoding�s���"�"�8�#4�#4�5rc�.�|jt�yrQ)r�r�rs r�"test_test_argparse_module_encodingz/TestEncoding.test_test_argparse_module_encoding�s���"�"�8�,rN)r!r"r#r�r�r�rCrrr�r��s���6�-rr�c��eZdZd�Zy)�TestArgumentErrorc�j�d}tjd|�}|jt|�|�y)Nz
my error here)r-r$r�r�)rr�r�s   r�test_argument_errorz%TestArgumentError.test_argument_error�s-�����&�&�t�S�1������U��S�)rN)r!r"r#r�rCrrr�r��s��*rr�c��eZdZd�Zy)�TestArgumentTypeErrorc��d�}tdd��}|jd|��|jt�5}|j	dg�ddd�|jdjj�y#1swY�0xYw)	Nc�,�tjd��)N�spam!)r-�ArgumentTypeErrorrfs rr�z<TestArgumentTypeError.test_argument_type_error.<locals>.spam�s���,�,�W�5�5rr�Fr}r�r�r�z-usage: PROG x
PROG: error: argument x: spam!
)r�r�r�r�r=r�r�r�)rr�r4r�s    r�test_argument_type_errorz.TestArgumentTypeError.test_argument_type_error�su��	6�,��%�H�����C�d��+�
�
�
�2�
3�r����u�g�&�4����J����,�,�	.�4�
3�s�A;�;BN)r!r"r#r�rCrrr�r��s��
.rr�c��eZdZd�Zd�Zd�Zy)�TestMessageContentErrorc���tdd��}|jdt��|jdtd��|jd	td
��|j	t
�5}|j
g�ddd�tj�}|j|d�|j|d�|j|d	�|j	t
�5}|j
d
g�ddd�t|j�}|j|d�|j|d�|j|d	�|j	t
�5}|j
d
dg�ddd�t|j�}|j|d�|j|d�|j|d	�y#1swY��MxYw#1swY��xYw#1swY�nxYw)Nr�rr��req_posr��-req_optTr��need_oner�)r�rx�req_opt�myXargumentz
-req_opt=1)
r�r�r�r�r�r�r=r�r@r#�rr4r�r�s    r�%test_missing_argument_name_in_messagez=TestMessageContentError.test_missing_argument_name_in_message�s���+��r�B�����I�C��0����J�S�4��@����J�S���<�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�r����}�o�.�4��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�r����}�l�;�<�4��"�,�,�������i�(�����i�(�����j�)�#4�
3��4�
3��4�
3�s$�*G�$G�G �G�G� G)c���tdd��}|jdt��|jdtd��|jd	td
d��|jt�5}|jg�ddd�tj�}|j|d�|j|d�|j|d
�|jt�5}|jdg�ddd�t|j�}|j|d�|j|d�|j|d
�y#1swY��xYw#1swY�axYw)Nr�rr�r�r�z	--req_optTr�z	--opt_optr�)r�rxrpr��opt_optz--req_opt=1)r�r�r�r�r�r�r�r=r�r@r#r�s    r�%test_optional_optional_not_in_messagez=TestMessageContentError.test_optional_optional_not_in_message�s*��+��r�B�����I�C��0����K�c�D��A����K�d�#�$(�	�	*�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����i�(�����i�(�
�
�
�2�
3�r����}�o�.�4��"�,�,�������i�(�����i�(�����i�(�4�
3��4�
3�s�+E�%E�E�E!c�P�tdd��}|jd�|jddd��|jt�5}|j	g�ddd�tj�}|j|d�|j|d�y#1swY�CxYw)	Nr�rr�r��optional_positionalr�rIr�)	r�r�r�r�r=r�r�r@r#r�s    r�'test_optional_positional_not_in_messagez?TestMessageContentError.test_optional_positional_not_in_message�s���+��r�B�����I�&����1��f��M�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����3�4�	4�
3�s�B�B%N)r!r"r#r�r�r�rCrrr�r��s��*�2)�&5rr�c��eZdZd�Zy)�TestTypeFunctionCallOnlyOncec�����fd�}tj�}|jd|d��|jdj	��}�jt
d��|�y)Nc�*���j|d�y)Nr��
foo_converted�r�)�string_to_convertrs �rr�zLTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spams������.��8�"rr�rErz--foo spam!r�r)r-r.r�r=r�r�r}�rr�r4rxs`   r�!test_type_function_call_only_oncez>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_once
s[���	#��(�(�*�����G�$���>�� � ��!4�!4�!6�7�������0�$�7rN)r!r"r#r�rCrrr�r�s��8rr�c�$�eZdZd�Zd�Zd�Zd�Zy)�TestTypeFunctionCalledOnDefaultc����fd�}tj�}|jd|d��|jg�}�j	td��|�y)Nc�*���j|d�y)Nrr�r�)�int_to_convertrs �rr�z]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spams������^�Q�/�"rr�rrr�r-r.r�r=r�r}r�s`   r�/test_type_function_call_with_non_string_defaultzOTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_defaultsQ���	#��(�(�*�����G�$���:�� � ��$��������D�)rc��d�}tj�}|jd|d��|jg�}|j	td��|�y)Nc��y)Nr�rC)r�s rr�zYTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam)s��"rr��0rr�rr�r�s    r�+test_type_function_call_with_string_defaultzKTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default(sQ��	#��(�(�*�����G�$���<�� � ��$�������0�$�7rc��d�}tj�}|jd|d��|jg�}|j	td��|�y)Nc��|dzS)Nr�rC)�str_to_converts rr�zYTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend3s
��!�C�'�'r�--testr�rz**)rDr�)rr�r4rxs    r�)test_no_double_type_conversion_of_defaultzITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default2sR��	(��(�(�*�����H�6�3��?�� � ��$��	
�������-rc��tj�}|jddtgd��|j	g�}|j|jg�y)Nr�rDr�)r)r�rpr)r-r.r�r�r=r�rDrs   r�test_issue_15906z0TestTypeFunctionCalledOnDefault.test_issue_15906>sT���(�(�*�����H�6��$&�x�	�	9�� � ��$��������B�'rN)r!r"r#r�r�r�r�rCrrr�r�s��	*�8�
.�(rr�c�6�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	y)	�TestParseKnownArgsc�N�tj�}|jd�y)NrC�r-r.r=r3s  r�test_arguments_tuplez'TestParseKnownArgs.test_arguments_tupleN����(�(�*�����"�rc�N�tj�}|jg�yrQr�r3s  r�test_arguments_listz&TestParseKnownArgs.test_arguments_listRr�rc�p�tj�}|jd�|jd�y)Nr�r��r-r.r�r=r3s  r�test_arguments_tuple_positionalz2TestParseKnownArgs.test_arguments_tuple_positionalVs,���(�(�*�����C� ����&�!rc�r�tj�}|jd�|jdg�y)Nr�r�r3s  r�test_arguments_list_positionalz1TestParseKnownArgs.test_arguments_list_positional[s.���(�(�*�����C� ����3�%� rc���tj�}|jd�|jdj	��\}}|jt
d��|�|jddg|�y)Nr�z--foo F --bar --baz�Frr0rf)r-r.r�r�r�r�r})rr4rx�extrass    r�test_optionalsz!TestParseKnownArgs.test_optionals`se���(�(�*�����G�$��.�.�/D�/J�/J�/L�M���f�������d�+����'�7�+�V�4rc�:�tj�}|jdddt��|jdd��|jd�gd	�}|j	|�\}}|jt
d
dd�
�|�|jgd�|�y)Nr`r�rv)rxrr�r�r�rr5)rCrar�r`r�r�r{TrC)�vr�r5)rar�r�)r-r.r�r�r�r�r})rr4r�rxr�s     r�
test_mixedzTestParseKnownArgs.test_mixedgs����(�(�*�����D��1�3��?����H�]��;����H�%�2���.�.�t�4���f�����a�d�3�7��>����,�f�5rc��tj�}|jddd��|jg�}|j	tg��|�y)Nr�r�rq)rxr�r�r�rs   r�test_zero_or_more_optionalz-TestParseKnownArgs.test_zero_or_more_optionalrsI���(�(�*�����C�s�J��?�� � ��$������b��4�(rN)
r!r"r#r�r�r�r�r�r�r�rCrrr�r�Ls%����"�
!�
5�	6�)rr�c�0�eZdZd�Zd�Zd�Zd�Zd�Zd�Zy)�TestDoubleDashc�~�tjd��}|jdd�|jdd��|jdg�}|j	td	g�
�|�|j
tjd|jdd	g�|jdg�}|j	td	g�
�|�|j
tjd|jdd	g�|jgd
��}|j	tdddg�
�|�|jgd��}|j	tdddg�
�|�|jgd��}|j	tdgd��
�|�|jgd��}|j	tdgd��
�|�y)NFr rr�rEr�rw�--foo=--r�r@z(argument -f/--foo: expected one argument�-f--)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$rs   r�test_single_argument_optionz*TestDoubleDash.test_single_argument_optionzs����(�(�u�=�����D�'�*����E���-�� � �*��.�������"�-�t�4����x�5�5�6�������	0�� � �&��*�������"�-�t�4����x�5�5�6�����d�|�	-�� � �!?�@�������#�s��4�d�;�� � �!9�:�������#�s��4�d�;�� � �!?�@�������*B�C�T�J�� � �!J�K�������*M�N�PT�Urc���tjd��}|jddd��|jdd��|jdg�}|j	td	gg�
�|�|jdd	g�}|j	tgg�
�|�|jdg�}|j	td	gg�
�|�|jdd	g�}|j	tgg�
�|�|jgd��}|j	td
dgddg�
�|�|jgd��}|j	tddgd
dg�
�|�|jgd��}|j	tdgd��
�|�|j
gd��\}}|j	tdgd
dg�
�|�|j	|d	dg�y)NFr rr�r�rwrEr�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�)rr4rxr�s    r�test_multiple_argument_optionz,TestDoubleDash.test_multiple_argument_option�s����(�(�u�=�����D�'���5����E���-�� � �*��.��������B�/��6�� � �'�4��1��������+�T�2�� � �&��*��������B�/��6�� � �$���.��������+�T�2�� � �!D�E�������c�
��c�
�;�T�B�� � �!>�?�������c�
��c�
�;�T�B�� � �!D�E�������*G�H�$�O��,�,�-P�Q�
��d�������C��:�6��=������c�{�+rc�l�tjd��}|jd�|jdd��|jgd��}|j	tdd	d
g��|�|jgd��}|j	tdd	d
g��|�|jgd
��}|j	tdd	d
g��|�|jgd��}|j	tdgd���|�|jgd��}|j	tdgd���|�y)NFr r*rEr�rw�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�rs   r�test_multiple_double_dashesz*TestDoubleDash.test_multiple_double_dashes�s	���(�(�u�=�����E�"����E���-�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!<�=�������)9�:�D�A�� � �!B�C�������*?�@�$�Grc���tjd��}|jd�|jdd��|jgd��}|j	tdd	d
g��|�|jgd��}|j	tdd	d
g��|�|jgd
��}|j	tdgd���|�|jgd��}|j	tdgd���|�tjd��}|jd�|jdd��|jgd��}|j	tdgd���|�y)NFr r*rEr�rwr�r�r�r�r@r�r�r�r�r�)r�r�r�r�r�r�)r�r�r�r�r�rs   r�test_remainderzTestDoubleDash.test_remainder�s7���(�(�u�=�����E�"����E���/�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!6�7�������)9�:�D�A�� � �!<�=�������)9�:�D�A��(�(�u�=�����G�$����E���/�� � �!E�F�������)?�@�$�Grc�h�tjd��}|jd�|j�}|j	d�}|jd�|jdd��|jgd	��}|j
td
ddd
g��|�|jgd��}|j
td
dgd���|�|jgd��}|j
td
dgd���|�|jgd��}|j
td
dgd���|�|jgd��}|j
td
ddd
g��|�|jgd��}|j
td
ddd
g��|�|jgd��}|j
td
dgd���|�|jgd��}|j
td
dgd���|�|jtjd|j
gd��y)NFr r*r�rrEr�rw)r�r�r�r�rr�r�r�r�r��r*rrE)r�r�r�r�r�rr�)r�r�rr�)r�r�r�r�r�rr�)r�r�r�r�r�rr�)r�r�r�r�r�rr�)r�r�r�r�r�rr�)r�r�r�r�r�r�)r�r�r�)r�r�r�r�r�r�r��invalid choice: '--')r�r�r�r�r�r��
r-r.r�r�r�r=r�r}r#r$�rr4r�r�rxs     r�test_subparserzTestDoubleDash.test_subparser�s����(�(�u�=�����E�"��*�*�,�
��'�'��.�����T�"����U�#��.�� � �!B�C�������s��c�
�;�T�B�� � �!H�I�������t�1F�G��N�� � �!H�I�������t�1F�G��N�� � �!H�I�������t�1F�G��N�� � �!H�I�������s��c�
�;�T�B�� � �!H�I�������s��c�
�;�T�B�� � �!C�D�������t�1A�B�D�I�� � �!I�J�������t�1A�B�D�I����x�5�5�"����A�	Crc��tjd��}|jdd��|j�}|j	d�}|jd�|jdd��|jgd	��}|j
td
dgdd
dg��|�|jtjd|j
gd��y)NFr r�r�rwr�rrE)	r�r�r]r�r�r�r�rr�r�r]r�r�r�r�r�)r�r�r�r�r�r�r�r�r�s     r�-test_subparser_after_multiple_argument_optionz<TestDoubleDash.test_subparser_after_multiple_argument_option�s����(�(�u�=�����G�3��/��*�*�,�
��'�'��.�����T�"����U�#��.�� � �!V�W�������c�
�c��S�z�B�D�I����x�5�5�"����J�	LrN)	r!r"r#r�r�r�r�r�r�rCrrr�r�ys%��V�0,�.H� H�(C�8Lrr�c�$�eZdZd�Zd�Zd�Zd�Zy)�TestIntermixedArgsc	���tjd��}|jdd��|jddd�	�}|jd
�|jddt�
�dj	�}|j|�}|j
tdd
dgd���|�|j|�\}}|j
tdd
ddg��|�|j
ddg|�|j|�\}}|j
tdd
dgd���|�|j
g|�dj	�}|j|�\}}|j
tdd
dgd���|�|j
dg|�dj	�}|j|�\}}|j
tdd
dgd���|�|j
dg|�dj	�}|j|�\}}|j
tdd
dgd���|�|j
dg|�|j|j�|j
|jd�y)Nr�rvr�r*r(r0rETr��cmd�restr�)rxr�zcmd --foo x 1 --bar y 2 3r]r�rd)rEr�r*rrvr�r�z!cmd --foo x --error 1 2 --bar y 3z--errorz!cmd --foo x 1 --error 2 --bar y 3z!cmd --foo x 1 2 --error --bar y 3)
r-r.r�r�r��parse_intermixed_argsr�r}r��parse_known_intermixed_argsr�rMr�)rr4rEr�rxr�s      r�
test_basiczTestIntermixedArgs.test_basic�s3���(�(�f�5�����G�%��0��!�!�'���!�E�����E�"����F�#�C��8�*�0�0�2���+�+�D�1��������C�i�H�$�O��.�.�t�4���f�������C�q�c�B�D�I����#�s��V�,��9�9�$�?���f�������C�i�H�$�O�����V�$�3�8�8�:���9�9�$�?���f�������C�i�H�$�O����)��f�-�2�8�8�:���9�9�$�?���f�������C�i�H�$�O����)��f�-�2�8�8�:���9�9�$�?���f�������C�i�H�$�O����)��f�-�	
���&�,�,�'�������t�,rc�f�td��}|jd�|jd�|jdd��dj�}|jt�5}|j|�ddd�|j
tj�d	�y#1swY�/xYw)
Nr�rvrr�r]r�rwr�z\.\.\.)	r�r�r�r�r�rr@r�r�)rr4r�r�s    rr�z!TestIntermixedArgs.test_remainder#s���+��8�����D�!����C� ����C�u��-��!�!�#���
�
�y�
)�R��(�(��.�*�����R�\�\�*�I�6�*�
)�s�'B'�'B0c�v�tjdd��}|jd��}|jddd�	�|jd
d��|jd
ddd��|j	dj��}|j
tddgdd��|�|j	dj��}|j
tddgdd��|�|jtjd|jdj��|j
|jd�y)Nr�F�r�r!Tr�r�rr�r�r�r�r	r5r�r7r�r�z	--foo 1 2r=r�)r5r*r�z	1 --foo 2z-one of the arguments --foo --spam is requiredr<)r-r.r;r�rr�r�r}r#r$r��rr4r�rxs    r�test_required_exclusivez*TestIntermixedArgs.test_required_exclusive0s���(�(�f�E�J���3�3�T�3�B��
���7�<�e��D�
���8�&��1����H�C��8��L��+�+�K�,=�,=�,?�@������C��:�4�d�C�T�J��+�+�K�,=�,=�,?�@������C��:�4�d�C�T�J����x�5�5�?��,�,�e�k�k�m�	=�	
�������.rc���tjdd��}|jd��}|jddd�	�|jd
d��|jd
ddd��|j	dg�}|jt
ddd��|�|j	ddg�}|jt
ddddg��|�|jtjd|jg�|jtjd|jgd��|jtjd|jgd��|j|jd�y)Nr�FrTr�r�rr�r�r�r�r	r5r�r7r�r�r�r�r�z4one of the arguments --foo --spam badger is requiredz0argument badger: not allowed with argument --foo)r�r�r�)r�r�r�)
r-r.r;r�rr�r}r#r$r�rs    r�'test_required_exclusive_with_positionalz:TestIntermixedArgs.test_required_exclusive_with_positional@sL���(�(�f�E�J���3�3�T�3�B��
���7�<�e��D�
���8�&��1�
���8�3��(��K��+�+�W�I�6�������4��<�d�C��+�+�S�#�J�7�������D�#�s��D�d�K����x�5�5�F��,�,�b�	2�	
���x�5�5�B��,�,�.A�	C�	
���x�5�5�B��,�,�.A�	C�	
�������.rN)r!r"r#rr�rr
rCrrr�r��s��$-�L7�/� /rr�c��eZdZd�Zy)�!TestIntermixedMessageContentErrorc�L�tdd��}|jdt��|jdtd��|j	t
�5}|j
g�ddd�tj�}|j|d�|j|d	�|j	t
�5}|jg�ddd�t|j�}|j|d�|j|d	�y#1swY��xYw#1swY�OxYw)
Nr�rr�r�r�r�Tr�r�)
r�r�r�r�r�r�r=r�r@rr�s    rr�zGTestIntermixedMessageContentError.test_missing_argument_name_in_messageZs���+��r�B�����I�C��0����J�S�4��@�
�
�
�2�
3�r����b�!�4��"�,�,�������i�(�����i�(�
�
�
�2�
3�r��(�(��,�4��"�,�,�������i�(�����i�(�4�
3��4�
3�s�D�:D�D�D#N)r!r"r#r�rCrrrrWs��)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�Z2y1)2�TestAddArgumentMetavarz,length of metavar tuple does not match nargsc�T�tj�}|jd||��y)Nr��rxr�)r-r.r�)rrxr�r4s    r�do_test_no_exceptionz+TestAddArgumentMetavar.do_test_no_exceptionss%���(�(�*�����G�5�'��Brc��tj�}|jt�5}|j	d||��ddd�|jjjd|j�y#1swY�=xYw)Nr�rr)	r-r.r�rCr�r�r�rx�EXPECTED_MESSAGE)rrxr�r4r�s     r�do_test_exceptionz(TestAddArgumentMetavar.do_test_exceptionwsh���(�(�*��
�
�
�z�
*�b�����u�g��F�+�������*�*�1�-�t�/D�/D�E�+�
*�s�A;�;Bc�*�|jdd��y)Nr=r�rrs r�test_nargs_None_metavar_stringz5TestAddArgumentMetavar.test_nargs_None_metavar_strings���!�!��c�!�:rc�:�|jdt���y)Nr�r�tuplers r�test_nargs_None_metavar_length0z6TestAddArgumentMetavar.test_nargs_None_metavar_length0�s�����T�5�7��;rc�*�|jdd��y)Nr�rrrs r�test_nargs_None_metavar_length1z6TestAddArgumentMetavar.test_nargs_None_metavar_length1�s���!�!��f�!�=rc�*�|jdd��y)N�r=r�r�rrs r�test_nargs_None_metavar_length2z6TestAddArgumentMetavar.test_nargs_None_metavar_length2�s�����T�:��>rc�*�|jdd��y)Nr�rr!rs r�test_nargs_None_metavar_length3z6TestAddArgumentMetavar.test_nargs_None_metavar_length3�s�����T�?��Crc�*�|jdd��y)Nr�r=rrrs r�"test_nargs_optional_metavar_stringz9TestAddArgumentMetavar.test_nargs_optional_metavar_string�����!�!��S�!�9rc�:�|jdt���y)Nr�rrrs r�#test_nargs_optional_metavar_length0z:TestAddArgumentMetavar.test_nargs_optional_metavar_length0�������S�%�'��:rc�*�|jdd��y)Nr�r�rrrs r�#test_nargs_optional_metavar_length1z:TestAddArgumentMetavar.test_nargs_optional_metavar_length1�����!�!��V�!�<rc�*�|jdd��y)Nr�r rr!rs r�#test_nargs_optional_metavar_length2z:TestAddArgumentMetavar.test_nargs_optional_metavar_length2�s�����S�*��=rc�*�|jdd��y)Nr�r�rr!rs r�#test_nargs_optional_metavar_length3z:TestAddArgumentMetavar.test_nargs_optional_metavar_length3�������S�/��Brc�*�|jdd��y)Nr�r=rrrs r�$test_nargs_zeroormore_metavar_stringz;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_string�r'rc�:�|jdt���y)Nr�rrrs r�%test_nargs_zeroormore_metavar_length0z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0�r*rc�*�|jdd��y)Nr�r�rrrs r�%test_nargs_zeroormore_metavar_length1z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1�r-rc�*�|jdd��y)Nr�r rrrs r�%test_nargs_zeroormore_metavar_length2z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2�����!�!��Z�!�@rc�*�|jdd��y)Nr�r�rr!rs r�%test_nargs_zeroormore_metavar_length3z<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3�r2rc�*�|jdd��y)Nr�r=rrrs r�#test_nargs_oneormore_metavar_stringz:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string�r'rc�:�|jdt���y)Nr�rrrs r�$test_nargs_oneormore_metavar_length0z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length0�r*rc�*�|jdd��y)Nr�r�rr!rs r�$test_nargs_oneormore_metavar_length1z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length1�s�����S�&��9rc�*�|jdd��y)Nr�r rrrs r�$test_nargs_oneormore_metavar_length2z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length2�r;rc�*�|jdd��y)Nr�r�rr!rs r�$test_nargs_oneormore_metavar_length3z;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length3�r2rc�*�|jdd��y)Nr�r=rrrs r�#test_nargs_remainder_metavar_stringz:TestAddArgumentMetavar.test_nargs_remainder_metavar_string�s���!�!��s�!�;rc�:�|jdt���y)Nr�r)rrrs r�$test_nargs_remainder_metavar_length0z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0�s���!�!��u�w�!�?rc�*�|jdd��y)Nr�r�rrrs r�$test_nargs_remainder_metavar_length1z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1�s���!�!��v�!�>rc�*�|jdd��y)Nr�r rrrs r�$test_nargs_remainder_metavar_length2z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2�s���!�!��z�!�Brc�*�|jdd��y)Nr�r�rrrs r�$test_nargs_remainder_metavar_length3z;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3�s���!�!���!�Grc�*�|jdd��y)N�A...r=rrrs r� test_nargs_parser_metavar_stringz7TestAddArgumentMetavar.test_nargs_parser_metavar_string�s���!�!���!�<rc�:�|jdt���y)NrSrrrs r�!test_nargs_parser_metavar_length0z8TestAddArgumentMetavar.test_nargs_parser_metavar_length0�s�����V�U�W��=rc�*�|jdd��y)NrSr�rrrs r�!test_nargs_parser_metavar_length1z8TestAddArgumentMetavar.test_nargs_parser_metavar_length1�s���!�!���!�?rc�*�|jdd��y)NrSr rr!rs r�!test_nargs_parser_metavar_length2z8TestAddArgumentMetavar.test_nargs_parser_metavar_length2�s�����V�Z��@rc�*�|jdd��y)NrSr�rr!rs r�!test_nargs_parser_metavar_length3z8TestAddArgumentMetavar.test_nargs_parser_metavar_length3�s�����V�_��Erc�*�|jdd��y)Nrvr=rrrs r�test_nargs_1_metavar_stringz2TestAddArgumentMetavar.test_nargs_1_metavar_string�����!�!��3�!�7rc�:�|jdt���y)Nrvrrrs r�test_nargs_1_metavar_length0z3TestAddArgumentMetavar.test_nargs_1_metavar_length0�������Q����8rc�*�|jdd��y)Nrvr�rrrs r�test_nargs_1_metavar_length1z3TestAddArgumentMetavar.test_nargs_1_metavar_length1�s���!�!��6�!�:rc�*�|jdd��y)Nrvr rr!rs r�test_nargs_1_metavar_length2z3TestAddArgumentMetavar.test_nargs_1_metavar_length2�������Q�
��;rc�*�|jdd��y)Nrvr�rr!rs r�test_nargs_1_metavar_length3z3TestAddArgumentMetavar.test_nargs_1_metavar_length3�������Q���@rc�*�|jdd��y)Nr�r=rrrs r�test_nargs_2_metavar_stringz2TestAddArgumentMetavar.test_nargs_2_metavar_string�r_rc�:�|jdt���y)Nr�rrrs r�test_nargs_2_metavar_length0z3TestAddArgumentMetavar.test_nargs_2_metavar_length0�rbrc�*�|jdd��y)Nr�r�rr!rs r�test_nargs_2_metavar_length1z3TestAddArgumentMetavar.test_nargs_2_metavar_length1�������Q���7rc�*�|jdd��y)Nr�r rrrs r�test_nargs_2_metavar_length2z3TestAddArgumentMetavar.test_nargs_2_metavar_length2�s���!�!��:�!�>rc�*�|jdd��y)Nr�r�rr!rs r�test_nargs_2_metavar_length3z3TestAddArgumentMetavar.test_nargs_2_metavar_length3rjrc�*�|jdd��y)Nr{r=rrrs r�test_nargs_3_metavar_stringz2TestAddArgumentMetavar.test_nargs_3_metavar_stringr_rc�:�|jdt���y)Nr{rrrs r�test_nargs_3_metavar_length0z3TestAddArgumentMetavar.test_nargs_3_metavar_length0
rbrc�*�|jdd��y)Nr{r�rr!rs r�test_nargs_3_metavar_length1z3TestAddArgumentMetavar.test_nargs_3_metavar_length1
rqrc�*�|jdd��y)Nr{r rr!rs r�test_nargs_3_metavar_length2z3TestAddArgumentMetavar.test_nargs_3_metavar_length2rgrc�*�|jdd��y)Nr{r�rrrs r�test_nargs_3_metavar_length3z3TestAddArgumentMetavar.test_nargs_3_metavar_length3s���!�!��?�!�CrN)3r!r"r#rrrrrrr"r$r&r)r,r/r1r4r6r8r:r=r?rArCrErGrIrKrMrOrQrTrVrXrZr\r^rardrfrirlrnrprsrurwryr{r}rrCrrrros��E��C�F�;�<�>�?�D�
:�;�=�>�C�
:�;�=�A�C�
:�;�:�A�C�
<�@�?�C�H�
=�>�@�A�F�
8�9�;�<�A�
8�9�8�?�A�
8�9�8�<�Drrc�,�eZdZdZdZd�Zd�Zd�Zd�Zy)�TestInvalidNargszinvalid nargs valuez�nargs for store actions must be != 0; if you have nothing to store, actions such as store true or store const may be more appropriatec��tj�}|jt�5}|j	d|��ddd�|jjjd|j�y#1swY�=xYw�Nr�rwr)	r-r.r�rCr�r�r�rx�EXPECTED_RANGE_MESSAGE�rrxr4r�s    r�do_test_range_exceptionz(TestInvalidNargs.do_test_range_exceptionsf���(�(�*��
�
�
�z�
*�b�����u��5�+�������*�*�1�-�t�/J�/J�K�+�
*���A:�:Bc��tj�}|jt�5}|j	d|��ddd�|jjjd|j�y#1swY�=xYwr�)	r-r.r�rCr�r�r�rx�EXPECTED_INVALID_MESSAGEr�s    r�do_test_invalid_exceptionz*TestInvalidNargs.do_test_invalid_exception$sf���(�(�*��
�
�
�z�
*�b�����u��5�+�������*�*�1�-�t�/L�/L�M�+�
*�r�c�L�|jd��|jd��y)Nr�rw�abcd)r�rs r�test_nargs_alphabeticz&TestInvalidNargs.test_nargs_alphabetic,s$���&�&�S�&�1��&�&�V�&�4rc�(�|jd��y)Nrrw)r�rs r�test_nargs_zeroz TestInvalidNargs.test_nargs_zero0s���$�$�1�$�-rN)	r!r"r#r�r�r�r�r�r�rCrrr�r�s'��4��L��L�N�5�.rr�c��eZdZd�Zd�Zy)�TestImportStarc�l�tjD]!}|jtt|���#yrQ)r-�__all__r�r�r�s  rrDzTestImportStar.test9s%���$�$�D��O�O�G�H�d�3�4�%rc�(�tt�j�D��cgc]2\}}|jd�s|dk(st	j
|�s|��4}}}|j
t|�ttj��ycc}}w)Nr��ngettext)	r�r-r��
startswith�inspect�ismoduler�r�r�)rrfrRr�s    r�'test_all_exports_everything_but_modulesz6TestImportStar.test_all_exports_everything_but_modules=s|�� $�H�~�3�3�5�
�5���e��O�O�C�(�D�J�,>��#�#�E�*�
�5�	�
�	
�������x�/?�/?�(@�A��

s�7BN)r!r"r#rDr�rCrrr�r�7s
��5�Brr�c�$��eZdZ�fd�Zd�Z�xZS)�TestWrappingMetavarc���t�|��td�|_d}|jj	d|��y)N�9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyrz)rrMr�r4r�)rr�rs  �rrMzTestWrappingMetavar.setUpIs9���
��
��0�G�
���
-����� � ��G� �<rc��|jj�}|j|tjd��y)Na            usage: this_is_spammy_prog_with_a_long_name_sorry_about_the_name
                   [-h] [--proxy <http[s]://example:1234>]

            options:
              -h, --help            show this help message and exit
              --proxy <http[s]://example:1234>
            )r4rr�r�r)r�	help_texts  r�test_help_with_metavarz*TestWrappingMetavar.test_help_with_metavarSs4���K�K�+�+�-�	�����H�O�O�5�%�	r)r!r"r#rMr�r$r%s@rr�r�Gs
���=�	rr�c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zy)�TestExitOnErrorc��tjdd��|_|jjddt��y)NFr�)r!r�z
--integers�N)r�r�)r-r.r4r�r�rs rrMzTestExitOnError.setUpas3���-�-�E�DG�I������ � ��s�� �Erc��|jjdj��}|j|t	j
d���y)Nz--integers 4r�)�integers)r4r=r�r�r-r"r$s  r�!test_exit_on_error_with_good_argsz1TestExitOnError.test_exit_on_error_with_good_argsfs:��
�[�[�
#�
#�N�$8�$8�$:�
;������X�/�/��;�<rc��|jtj�5|jj	dj��ddd�y#1swYyxYw)Nz--integers a)r�r-r$r4r=r�rs r� test_exit_on_error_with_bad_argsz0TestExitOnError.test_exit_on_error_with_bad_argsjs=��
�
�
�x�5�5�
6��K�K�"�"�>�#7�#7�#9�:�7�
6�
6�s�*A�Ac��|jtjd|jjdj��y�Nz!unrecognized arguments: --foo barr�)r#r-r$r4r=r�rs r�test_unrecognized_argsz&TestExitOnError.test_unrecognized_argsns4�����x�5�5�B�#�{�{�5�5�{�7H�7H�7J�	Lrc��|jtjd|jjdj��yr�)r#r-r$r4rr�rs r�!test_unrecognized_intermixed_argsz1TestExitOnError.test_unrecognized_intermixed_argsss4�����x�5�5�B�#�{�{�@�@�+�BS�BS�BU�	Wrc���|jjd�|jjd�|jtjd|jj
g�y)NrErF�/the following arguments are required: bar, baz$�r4r�r#r-r$r=rs r�test_required_argsz"TestExitOnError.test_required_argsxsN����� � ��'���� � ��'����x�5�5�P�#�{�{�5�5�r�	;rc���|jjd�|jjdd��|jtjd|jj
g�y)NrErF�BaZrzz/the following arguments are required: bar, BaZ$r�rs r�test_required_args_with_metavarz/TestExitOnError.test_required_args_with_metavarsS����� � ��'���� � ��� �6����x�5�5�P�#�{�{�5�5�r�	;rc���|jjd�|jjdd��|jtjd|jj
g�y)NrErFr{rwr�r�rs r�test_required_args_nz$TestExitOnError.test_required_args_n�sS����� � ��'���� � ��a� �0����x�5�5�P�#�{�{�5�5�r�	;rc���|jjd�|jjddd��|jtjd|jj
g�y)NrErFr{)rCr�r�rz3the following arguments are required: bar, B, A, Z$r�rs r�!test_required_args_n_with_metavarz1TestExitOnError.test_required_args_n_with_metavar�sU����� � ��'���� � ��a�� �I����x�5�5�T�#�{�{�5�5�r�	;rc���|jjd�|jjdd��|jtjd|jj
g�y)NrErFr�rw�*the following arguments are required: bar$r�rs r�test_required_args_optionalz+TestExitOnError.test_required_args_optional��S����� � ��'���� � ��c� �2����x�5�5�K�#�{�{�5�5�r�	;rc���|jjd�|jjdd��|jtjd|jj
g�y)NrErFr�rwr�r�rs r�test_required_args_zero_or_morez/TestExitOnError.test_required_args_zero_or_more�r�rc���|jjd�|jjdd��|jtjd|jj
g�y)NrErFr�rwr�r�rs r�test_required_args_one_or_morez.TestExitOnError.test_required_args_one_or_more�sS����� � ��'���� � ��c� �2����x�5�5�P�#�{�{�5�5�r�	;rc���|jjd�|jjddd��|jtjd|jj
g�y)NrErFr�)�BaZ1�BaZ2rz9the following arguments are required: bar, BaZ1\[, BaZ2]$r�rs r�+test_required_args_one_or_more_with_metavarz;TestExitOnError.test_required_args_one_or_more_with_metavar�sV����� � ��'���� � ��c�;K� �L����x�5�5�[�#�{�{�5�5�r�	;rc���|jjd�|jjdd��|jtjd|jj
g�y)NrErFr�rwr�r�rs r�test_required_args_remainderz,TestExitOnError.test_required_args_remainder�sS����� � ��'���� � ��e� �4����x�5�5�K�#�{�{�5�5�r�	;rc���|jjd��}|jd�|jd�|jtj
d|jjg�y)NTr�r0rfz,one of the arguments --bar --baz is required�r4r;r�r#r-r$r=�rr�s  r�%test_required_mutually_exclusive_argsz5TestExitOnError.test_required_mutually_exclusive_args�s]�����8�8�$�8�G��
���7�#�
���7�#����x�5�5�M�#�{�{�5�5�r�	;rc�b�|jj�}|jd�|jddd��|jtj
d|jjgd��|jtj
d|jjgd	��y)
Nr0rFr�r�rz.argument BaZ: not allowed with argument --bar$�r0r�r�z.argument --bar: not allowed with argument BaZ$�r�r0r�r�r�s  r�>test_conflicting_mutually_exclusive_args_optional_with_metavarzNTestExitOnError.test_conflicting_mutually_exclusive_args_optional_with_metavar�s������8�8�:��
���7�#�
���5��U��;����x�5�5�O�#�{�{�5�5�7J�	L�	
���x�5�5�O�#�{�{�5�5�7J�	Lrc�b�|jj�}|jd�|jddd��|jtj
d|jjgd��|jtj
d|jjgd	��y)
Nr0rFr�)�BAZ1rz/argument BAZ1: not allowed with argument --bar$r�z/argument --bar: not allowed with argument BAZ1$r�r�r�s  r�Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1zSTestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1�s������8�8�:��
���7�#�
���5��Y��?����x�5�5�P�#�{�{�5�5�7J�	L�	
���x�5�5�P�#�{�{�5�5�7J�	Lrc�b�|jj�}|jd�|jddd��|jtj
d|jjgd��|jtj
d|jjgd	��y)
Nr0rFr�)r��BAZ2rz8argument BAZ1\[, BAZ2]: not allowed with argument --bar$r�z8argument --bar: not allowed with argument BAZ1\[, BAZ2]$r�r�r�s  r�Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2zSTestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2�s������8�8�:��
���7�#�
���5��5E��F����x�5�5�Z�#�{�{�5�5�7J�	L�	
���x�5�5�Z�#�{�{�5�5�7J�	Lrc�f�|jjd�|jjdd��|jjd�|jtjd|jj
dg�|jtjd|jj
d	g�|jtjd
|jj
gd��|jtjd|jj
gd��y)
Nr�r�rr�--fooglez7ambiguous option: --foob could match --foobaz, --foobler�z:ambiguous option: --foob=1 could match --foobaz, --fooble$�--foob=1z8ambiguous option: --foob could match --foobaz, --fooble$)r�r=r�r�)r�r�r�r�rs r�test_ambiguous_optionz%TestExitOnError.test_ambiguous_option�s������ � ��,���� � ��L� �A���� � ��,����x�5�5�I��K�K�"�"�X�J�	0�	
���x�5�5�L��K�K�"�"�Z�L�	2�	
���x�5�5�J��K�K�"�"�$D�	F�	
���x�5�5�L��K�K�"�"�$A�	Crc��|jjd�|jtjd|jj
dg�y)Nrpz)No such file or directory: 'no-such-file'z
@no-such-filer�rs r�
test_os_errorzTestExitOnError.test_os_error�s@����� � ��(����x�5�5�J�#�{�{�5�5��7H�	JrN)r!r"r#rMr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rCrrr�r�_sn��F�
=�;�L�
W�
;�;�;�;�;�;�;�;�;�;�	L�	L�	L�C�"Jrr�c��eZdZd�Zy)�TestTranslationsc�.�|jt�yrQ)�assertMsgidsEqualr-rs r�test_translationsz"TestTranslations.test_translations�s�����x�(rN)r!r"r#r�rCrrr�r��s��)rr�c�@�it_t�t_yrQ)r�rr�rrCrr�tearDownModuler�s���E�J���E�Jr�__main__rvz--snapshot-update(r/r;r�rr�rUrar_r�r�rR�unittestr-r��enumr�test.supportr�test.support.i18n_helperrrr�
TextIOWrapperr	rEr'�skip_unless_working_chmodr�rOrvr}r�r�r�r.r�r�r�r�r�r�r�rrr$r&r,r.r<r?rHrXrZr_rernrsrurzr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr
r'r+r-r0r2r4r6r8r:r?rBrDrHrTrWrZr\r^r`rcrergrirkrmrprrrurwryr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr+�	eq_stderrrr1�
eq_bstderrr�rrrr�skip_if_dac_overrider#r-r0r3r6rArGrMr\rcrlr�r�r�r$r2rnr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr r+r-rOr]r`rbrhrlrprvrxr|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+r2rCr^r~r�r�r�r�r�r�r�r�r�rrr�r�r�r�r�r�r!�lenr�r2�mainrCrr�<module>r�s�����	��	�
��
�������"�W��:�"�"�"�:�$F�H�%�%�F�:�x� � ���$�$�D�6�D�%�D�.�&��)��)�%�)�%�# �L>��!8�!8�>�q9�D�q9�f	�	��&�'7���C���n���n��4�.��
�^�
� �~��.
�>�
��n���.��$���&�N��&���(���,���.
�^�
� 
��
�	�>�	�����.���.�����.�>��&�.��"�>��"
�N�
��~���N���N���>��>��>�@
��
�	��	�	�>�	����&�^������~�����&�N��"�~��"�n��"�n��&�N��&
��
�@�~���N���N��	�^�	�	�N�	��N���>���.���>���>�����������(���"
�~�
� ���$
��
� �~���n���^���N��	�n�	��^���N���.��,���.���,�>��
�^�
�	�N�	��>�����
�.�
� 
��
� �~��"�>��&�~��&
�.�
� 
��
� �^��6�.��2���(�.��**�L�.�*�Z�\�>��DK�x�K�0�h���h��,�,�,�W�%���h�'�	��h�'�	��n�-�	�
��
/�
�
��
/�
�/�F�/�"�L�.��03�<��3�"�\�>��.'�F�'�"����L�.�� ��,����L�.�� ��&���
�\�>�
� �
� ���
�]�
� �
�3�8�3�$
��
�$�~���.��,�>��,>�8�>�.>�N�>�BJ�X�J�$�~��[��[�B!+�H�!+�NJ��J�`@&�x�@&�D1?�f�1?�h �'�8� �F(���(�V�7�H��B!�'�8�!�H*��(�*�Z'�'�8�'�T%�7�H�%�P'���'�R/(�'�8�/(�d �G�X� �F �w�� �F ��(� �L�f��	��
-�	�
	��
(�	�
	��
&�	�
	��
1�	�
	��
0�	�
	��
7�	�
	��
0�	�
	��
>�	�X0�h�X0�|8�X�8�.
"�(�
"�&Q1�$�Q1�f	�	��*�>�5�"�E��"�l�"�H3B�|�3B�l,�<�,�^���>1�<�1�h%��%�P3��3�l6�L�6�r�<��,�\��>�L��:!�|�!�H�<��2#��#�L�<��D!�L�!�H�\��4�|��0+��+�\�\��"
�<�
��L��*�|��(�L��4���*�|��(�<��*�\��.�<��0�<��6�\��8.�l�.�b-�\�-�`0�|�0�d�L��(�L��2���:'��'�V�<��:%��%�XI�h�I�J-�(�-�<3E�8�3E�tEQ�h�EQ�XC/�(�C/�R7�H�7�J-�8�-�$*��*�.�H�.�$65�h�65�z
8�8�
8� +(�h�+(�b*)��*)�Z|L�X�|L�FX/��X/�v)��)�0eD�X�eD�P.�x�.�@
B�X�
B� �(��0VJ�h�VJ�z)�+�)���z��
�3�8�8�}�q��S�X�X�a�[�,?�?�$�X�.��������H�M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit