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:/Python315/Lib/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python315/Lib/test/__pycache__/test_argparse.cpython-315.opt-1.pyc
R
>lqj�c��]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PHs]PH s]PH$s	]PH(s
]PH,s]PH0s]PH4s
]PH8s]QH<Gs]QHDGsGsGsGs]QHDGs]QHDGs]QHDGs]QHdGsGs]QH0Gs\O:O=\	O>2s QQ	\OB2s"Q
Q\OF2s$QQ
\OF2s%QQ\OF2s&QQ\OF2s'QQ\OF2s#\OPQQ\)22s*QQ\)2s+QQ\)2s,QQ\-2s.Qs/QQ\
O`2s1QQ \22s3\#1s4\3Q!\4-2s5Q"Q#\52s6Q$Q%\52s7Q&Q'\52s8Q(Q)\52s9Q*Q+\52s:Q,Q-\52s;Q.Q/\52s<Q0Q1\52s=Q2Q3\52s>Q4Q5\52s?Q6Q7\52s@Q8Q9\52sAQ:Q;\52sBQ<Q=\52sCQ>Q?\52sDQ@QA\52sEQBQC\52sFQDQE\52sGQFQG\52sHQHQI\52sIQJQK\52sJQLQM\52sKQNQO\52sLQPQQ\52sMQRQS\52sNQTQU\52sOQVQW\52sPQXQY\52sQQZQ[\52sRQ\Q]\52sSQ^Q_\52sTQ`Qa\52sUQbQc\52sVQdQe\52sWQfQg\52sXQhQi\52sYQjQk\52sZQlQm\52s[QnQo\52s\QpQq\52s]QrQs\52s^QtQu\52s_QvQw\52s`QxQy\52saQzQ{\52sbQ|Q}\#2scQ~Q\52sdQ�Q�\52seQ�Q�\52sfQ�Q�\52sgQ�Q�\52shQ�Q�\52siQ�Q�\52sjQ�Q�\52skQ�Q�\52slQ�Q�\52smQ�Q�\52snQ�Q�\52soQ�Q�\52spQ�Q�\52sqQ�Q�\52srQ�Q�\52ssQ�Q�\52stQ�Q�\52suQ�Q�\52svQ�Q�\52swQ�Q�\52sxQ�Q�\52syQ�Q�\52szQ�Q�\52s{Q�Q�\52s|Q�Q�\52s}Q�Q�\52s~Q�Q�\52sQ�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\52s�Q�Q�\*\52s�Q�Q�\*\52s�Q�s�Q�Q�\#2s�Q�Q�\#2s�\)2s�\)2s�Q�Q�2s�\�Q�2s�\�Q�2s�\�Q�2s�\�Q�2s�\�Q�2s�\�Q�2s�Q�Q�\)2s�Q�Q�\*\52s�Q�Q�\*\52s�Q�Q�\*\52s�Q�Q�\)2s�\COJQ�Q�\*\522s�\COJQ�Q�\*\522s�\COJQ�Q�\*\522s�\COJQ�Q�\�22s�Q�Q�\#2s�Q�CQ\#2s�CQCQ\52s�CQCQ\52s�CQCQ\52s�CQCQ\#2s�CQ	CQ
\52s�CQCQ\#2s�CQ
CQ\52s�CQCQ\52s�\CQCQ\#22s�CQCQ\#2s�\CQCQ\#22s�CQCQ\#2s�CQCQ\#2s�\CQCQ\#22s�\CQCQ\#22s�CQCQ \)2s�CQ!CQ"\�\#2s�CQ#CQ$\�\#2s�CQ%CQ&\�\#2s�CQ'CQ(\�\#2s�CQ)CQ*\�\#2s�CQ+CQ,\�\#2s�CQ-CQ.\�\#2s�CQ/CQ0\�\#2s�CQ1CQ2\�\#2s�CQ3CQ4\�\#2s�CQ5CQ6\�\#2s�CQ7CQ8\)2s�CQ9CQ:\�\�2s�CQ;CQ<\�\�2s�CQ=CQ>\�\�2s�CQ?CQ@\�\�2s�CQACQB\�\�2s�CQCCQD\�\�2s�CQECQF\�\�2s�CQGCQH\�\�2s�CQICQJ\#2s�CQKCQL\#2s�CQMCQN\#2s�CQOCQP\22s�\#1s4\�CQQ\4-2s�CQRCQS\�2s�CQTCQU\�2s�CQVCQW\�2s�CQXCQY\�2s�CQZCQ[\�2s�CQ\CQ]\�2s�CQ^CQ_\�2s�CQ`CQa\�2s�CQbCQc\�2s�CQdCQe\�2s�CQfCQg\�2s�CQhCQi\�2s�CQjCQk\�2s�CQlCQm\�2s�CQnCQo\�2s�CQpCQq\�2s�CQrCQs\�2s�CQtCQu\�2s�CQvCQw\�2s�\CQxCQy\#22s�CQzCQ{\�2s�CQ|CQ}\�2s�CQ~CQ\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�CQ�CQ�\�2s�\CQ�CQ�\#22s�CQ�CQ�\#2s�CQ�CQ�\#2CsCQ�CQ�\#2Cs\CQ�CQ�\#22CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2Cs	\CQ�CQ�\#22Cs
CQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2Cs
CQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2CsCQ�CQ�\#2Cs\CQ�CQ�\#22CsCQ�CQ�\2CsCQ�CQ�\#2CsCQ�CQ�\OF2CsCQ�CsC\CQ�6XccC\\	CO82]6�c6\	CO8]*CQ�6Xc\\
2\	CO:]2\CO<2P!P!(��)�StrEnum)�captured_stderr�force_not_colorized�force_not_colorized_test_class�	swap_attr)�
import_helper)�	os_helper)�
script_helper)�TestTranslationsBase�update_translation_snapshots)�mockc�B``�\sQs]$snQsQU1QkksQsQsUsU9s	!)�StdIOBufferz�Replacement for writable io.StringIO that behaves more like real file

Unlike StringIO, provides a buffer attribute that holds the underlying
binary data, allowing it to replace sys.stdout/sys.stderr in more
contexts.
c�:�UOQ2o[RU_	[O[O
U22QUQ5P!)�utf-8)�newline)�encode�super�__init__�io�BufferedWriter�BytesIO)�self�
initial_valuer�	__class__s&&&��'C:\Python315\\Lib\test\test_argparse.pyr�StdIOBuffer.__init__,s@���%�,�,�W�5�
�
����*�*�2�:�:�m�+D�E� �'�	�	3�c��UO2UOOO2O	Q2!)r)�flush�buffer�raw�getvalue�decode�rs&rr"�StdIOBuffer.getvalue1s-���
�
���{�{���'�'�)�0�0��9�9r�)��
)
�__name__�
__module__�__qualname__�__firstlineno__�__doc__rr"�__static_attributes__�__classdictcell__�
__classcell__�r�
__classdict__s@@rrr$s�����3�
:�:rrc�.`�\sQs]6snQsQsQsUsP!)�
StdStreamTestc	�B�[O2o[OP29^tt^2[O
Q29^tt^2UO
]QQ5PPP2PPP2P!)%fhK9h)%fhP!9h)N�argparse._sys.exit�foo)�status�message)�argparse�ArgumentParser�
contextlib�redirect_stderrr�patch�exit�r�parsers& r�test_skip_invalid_stderr�&StdStreamTest.test_skip_invalid_stderr8sa���(�(�*���&�&�t�,�,��J�J�+�,�,��K�K�q�%�K�0�
-�
-�,�,�,��
-�,�,�s/�B
�A:	�(B
�:B

�B

�B
�
B	�B	c�*�[O2oUOUO[O
UOQ,21FD�oUOUQ59^tt^2[OP29^tt^2[29^tt^2o[OU29^tt^2[OQ29^tt^2U2UOUO2Q2PPP2PPP2PPP2PPP2PPP2J�	P!)%fhK69h)%fhKA9h)%fhKL9h)%fhKW9h)%fhCJA9h)�-h)�funcr6zusage:)r:r;�print_usage�
print_help�	functools�partial�
parse_args�subTestr<�redirect_stdoutrr=rr>�assertRegexr")rrArF�
mocked_stderrs&   r�test_skip_invalid_stdout�&StdStreamTest.test_skip_invalid_stdout@s����(�(�*�����������f�/�/�$��8�
�D����$��'�'��*�*�4�0�0��
�
���*�*�=�9�9��
�
�/�0�0���� � ��!7�!7�!9�9�E�1�:��1�(�'�

�1�0��:�9���
��1�0��(�'�'�s��.F	�
E-
� E�?E�(D4�E�E�E-
�F	�4E�=E�?E�E�E�E�E*�#E*�%E-
�-E=�6E=�8F	�F
�	F
r&)r)r*r+r,rBrPr.r/�r2s@rr4r46s����1�F�Frr4c�B`�\sQs]Ssn.QlsQsQsQsQsQs	Us
P!)�TestLazyImportsc�J�[OQUO2P!)r:�r�ensure_lazy_imports�LAZY_IMPORTSr$s&r�test_module_import�"TestLazyImports.test_module_import\s���)�)�����	
rc�f�QoQ.o[OQUOU*
UQ5P!)zargparse.ArgumentParser()�shutilr:��additional_coderV)r�
create_parser�imported_moduless&  r�test_create_parser�"TestLazyImports.test_create_parserbs4��4�
�$�:���)�)����� 0�0�)�	
rc��[OQ2oQ.o[OQUOU*
UQ5P!)z~
            parser = argparse.ArgumentParser()
            parser.add_subparsers(dest='command', required=False)
            r\r:r]��textwrap�dedentrrWrX)r�
add_subparserr`s&  r�test_add_subparser�"TestLazyImports.test_add_subparsernsB�� ���
�
�
�%�:���)�)����� 0�0�)�	
rc��[OQ2oQ.o[OQUOU*
UQ5P!)z�
            parser = argparse.ArgumentParser(prog='PROG')
            parser.add_argument('-f', '--foo')
            parser.add_argument('bar')
            parser.parse_args(['BAR'])
            parser.parse_args(['BAR', '--foo', 'FOO'])
            r\r:r]rd)r�example_parserr`s&  r�test_parse_args�TestLazyImports.test_parse_args}sB��!���
�
��%�:���)�)����� 0�0�*�	
rr&>�copyr\�difflibre�warnings�	_colorize)r)r*r+r,rXrYrarhrlr.r/rRs@rrTrTSs%�����L�
�

�

�
�
rrTc�H`�\sQs]�snQs\Q2s\Q2sQsUs	P!)�TestArgumentParserCopiablec��[OP
Q5oUOQ[]*Q5UOQQQQ5U!)F��
exit_on_error�--foo��type�default�bar�?�baz��nargsrz)r:r;�add_argument�intr@s& r�_get_parser�&TestArgumentParserCopiable._get_parser�sA���(�(�u�=�����G�#�r��:����E��e��<��
rc��]PHoUO2oUOU2oUO,QN2oUOUO]{2UOUO
Q2UO,2oUOUO]*2UOUO
Q2UO
Q2UOQQ,2oUOUOQ2P!�r�quuxr}z--extrar{�rw�123r�)rnr�rK�assertEqualr7r{r��extra)rrnrA�parser2�ns�ns2�ns3s&      r�
test_copiable�(TestArgumentParserCopiable.test_copiable�s�����!�!�#���)�)�F�#��
�
�
� 8�
9���������%��������(�� � ��$��������"�%�������%�(�	���I�&�� � �)�U�!3�4��������E�*rc�J�]PHoUO2oUOU2oUO,QN2oUO	UO
]{2UO	UOQ2UO,2oUO	UO
]*2UO	UOQ2UOQ2UO[O29^tt^2UOQQ,2PPP2P!)%fhP!9hr�)rnr��deepcopyrKr�r7r{r��assertRaisesr:�
ArgumentError)rrnrAr�r�r�s&     r�test_deepcopiable�,TestArgumentParserCopiable.test_deepcopiable�s�����!�!�#���-�-��'��
�
�
� 8�
9���������%��������(�� � ��$��������"�%�������%�(�	���I�&�
�
�
�x�5�5�
6�
6����	�5�1�2�7�
6�
6�
6�s�3D�D"	�D"	r&)
r)r*r+r,r�rr�r�r.r/rRs@rrsrs�s2������+��+� �3��3rrsc�2`�\sQs]�sn\Q2sQsUsP!)�TestArgumentParserPickleablec��]PHo[OP
Q5oUOQ[]*Q5UOQQQQ5[UO]*2FD�oUOUQ59^tt^2UOUOV#Q52oUO,Q
N2oUOUO]{2UOUOQ	2UO,2oUOUO]*2UOUOQ2PPP2J�	P!)%fhJ�9h)rrurwrxr{r|r}r~)�protocolr�r�)�pickler:r;r�r��range�HIGHEST_PROTOCOLrL�loads�dumpsrKr�r7r{)rr�rA�protor�r�r�s&      r�test_pickle_roundtrip�2TestArgumentParserPickleable.test_pickle_roundtrip�s����(�(�u�=�����G�#�r��:����E��e��<��6�2�2�Q�6�7�E����u��-�-� �,�,�v�|�|�F�|�'K�L���'�'�(@�A��� � �����-�� � �����0��(�(��,��� � ����"�-�� � ����%�0�.�-�8�-�-�-�s�B6E	�E
�E
r&)r)r*r+r,rr�r.r/rRs@rr�r��s�����1��1rr�c�(`�\sQs]�snQsQsUsP!)�TestCasec�Z�UO[O22oQUQ$P!)�80�COLUMNS)�enterContextr�EnvironmentVarGuard�r�envs& r�setUp�TestCase.setUp�s&�����	� =� =� ?�@����I�rr&)r)r*r+r,r�r.r/rRs@rr�r��s�����rr�c�:`�\sQs]�snQsQsQsQsQsUs	P!)�TempDirMixinc��[O2Um[O2Um[OUO2P!�N)�tempfile�mkdtemp�temp_dir�os�getcwd�old_dir�chdirr$s&rr��TempDirMixin.setUp�s/�� �(�(�*��
��y�y�{���
������rc
��[OUO2[OUOP
Q5FD]vqoSFDPo[O
[OOUOU2[O2JR	J_	[OUOP	2P!)F)�topdown)r�r�r��walkr��chmod�path�join�stat�S_IWRITEr\�rmtree)r�root�dirs�files�names&    r�tearDown�TempDirMixin.tearDown�sw��
�������!#�������!F�!F��D������������d�m�m�T�:�D�M�M�J��"G�	�
�
�d�m�m�T�*rc���[OOUOU2o[	UQQQ59^tt^2oUOU2PPP2U!)%fhS!9h)�wr��encoding)r�r�r�r��open�write)r�filename�	file_path�files&&  r�create_writable_file�!TempDirMixin.create_writable_file�sQ���G�G�L�L�����9�	�
�)�S�7�
3�
3�t��J�J�x� �4���4�
3���s�A�A/	�'A/	c�p�[OUOU2[O2P!r�)r�r�r�r��S_IREAD)rr�s&&r�create_readonly_file�!TempDirMixin.create_readonly_file�s��
����*�*�8�4�d�l�l�Cr)r�r�)
r)r*r+r,r�r�r�r�r.r/rRs@rr�r��s ���� �
+��D�Drr�c�(`�\sQs]�snQsQsUsP!)�Sigc� �VmV mP!r���args�kwargs�rr�r�s&*,rr�Sig.__init__�s���	��rr��r)r*r+r,rr.r/rRs@rr�r��s�����rr�c�4`�\sQs]�snQsQsQsQsUsP!)�NSc�>�UOOU2P!r�)�__dict__�update)rr�s&,rr�NS.__init__�s���
�
���V�$rc���[UOO22oQOSTt,tFDoQU*MJ	to2o[	U2O
8QU8Q0!ttoh)�, z%s=%r�(�))�sortedr��itemsr�ryr))r�sorted_items�tup�	kwarg_strs&   r�__repr__�NS.__repr__�sW���d�m�m�1�1�3�4���I�I��E���w��}�}��E�F�	���:�.�.�	�:�:��Fs�A+c�2�[U2[U26H!r�)�vars�r�others&&r�__eq__�	NS.__eq__s���D�z�T�%�[�(�(rr&)	r)r*r+r,rr�r�r.r/rRs@rr�r��s����%�;�
)�)rr�c�,`�\sQsQsnQQksQsUsP!)�ArgumentParserError�c�d�[OVV#2VmV mV0mV@mP!r�)�	Exceptionrr9�stdout�stderr�
error_code)rr9r�r�r�s&&&&&rr�ArgumentParserError.__init__s&�����4�&�9�������$�r)r�r9r�r�)NNNr�rRs@rr�r�s����%�%rr�c�B�[[O[2%f%[[O[2%c
UU-U@![Oo[Oo[2[m[2[mUU-U@o[[
U22FD�o[VV2oU[OIc[VVU2J0U[OOIc[VV[UQ[22JkU[OIc[VVU2J�U[OOIfJ�[VV[UQ[22J�	UU[mU[m![c\oSOo	[OO2o
[OO2o[QX�S	2PgPo=hh9hS[mS[mh9h)r �
SystemExit)�
isinstance�sysr�rr��listr��getattr�setattrr �BIN_STDOUT_SENTINEL�BIN_STDERR_SENTINELr�coder"r�)rKr�r��
old_stdout�
old_stderr�result�key�attr�er
r�r�s&*,         r�stderr_to_parser_errorrs����#�*�*�k�*�*�j����[�.Q�.Q��4�*�6�*�*����J����J���C�J���C�J� �	>���0��0�F��D��L�)���v�+���3�:�:�%��F��4��S�Z�Z�.�.�.��F���X�GZ�)[�\��S�Z�Z�'��F��4��S�Z�Z�.�.�.��F���X�GZ�)[�\�*�� ��
���
���	>��6�6�D��Z�Z�(�(�*�F��Z�Z�(�(�*�F�%��f�d�4�9=�
>��		>�� ��
���
�sC�?F�+F�0F�8)F�& F�	H�'H�(AG>�>H�H�Hc�L``�\sQsQsnU1QksU1QksU1QksQsUsU9s	!)�ErrorRaisingArgumentParser�5c�B:�[[U_
o[U,UN3-U@!r�)rrrKr)rr�r�rKrs&*, �rrK�%ErrorRaisingArgumentParser.parse_args7s%����5�t�G�
�%�j�B�4�B�6�B�Brc�B:�[[U_
o[U,UN3-U@!r�)rrr?r)rr�r�r?rs&*, �rr?�ErrorRaisingArgumentParser.exit;s%����/��;��%�d�<�T�<�V�<�<rc�B:�[[U_
o[U,UN3-U@!r�)rr�errorr)rr�r�rrs&*, �rr� ErrorRaisingArgumentParser.error?s%����0�$�=��%�e�=�d�=�f�=�=rr&)
r)r*r+r,rKr?rr.r/r0r1s@@rrr5s����C�=�>�>rrc�,`�\sQsQsnQsQsQsUsP!)�ParserTesterMetaclass�DaQAdds parser tests using the class attributes.

Classes of this type should specify the following attributes:

argument_signatures -- a list of Sig objects which specify
    the signatures of Argument objects to be created
failures -- a list of args lists that should cause the parser
    to fail
successes -- a list of (initial_args, options, remaining_args) tuples
    where initial_args specifies the string args to be parsed,
    options is a dict that should match the vars() of the options
    parsed out of initial_args, and remaining_args should be any
    remaining unparsed arguments
c	��UQ6XcP![UQ2%f[2Um[UQ2%f[UmQoQoQoQoQoQQ	[
2o	VEU1FDo
Vx1FDoU	V
U2J	J	P!)
�ParserTestCase�parser_signature�parser_classc�j�SFD*oUOUO-UO@J,	P!)z(Add all arguments directly to the parser)r�r�r�)rA�argument_signatures�sigs&& r�	no_groups�1ParserTesterMetaclass.__init__.<locals>.no_groupsas'��*���#�#�S�X�X�<����<�+rc��UOQ2oSFD*oUOUO-UO@J,	P!)z4Add all arguments under a single group in the parserr7)�add_argument_groupr�r�r�)rAr$�groupr%s&&  r�	one_group�1ParserTesterMetaclass.__init__.<locals>.one_groupfs7���-�-�e�4�E�*���"�"�C�H�H�;��
�
�;�+rc��[U2FDDvq#UOQU*2oUOUO-UO@JF	P!)z0Add each argument in its own group to the parserzfoo:%i)�	enumerater)r�r�r�)rAr$�ir%r*s&&   r�many_groups�3ParserTesterMetaclass.__init__.<locals>.many_groupslsC��#�$7�8����1�1�(�Q�,�?���"�"�C�H�H�;��
�
�;�9rc�&�UOU2!)z#Parse the args by passing in a list)rK)rAr�s&&r�listargs�0ParserTesterMetaclass.__init__.<locals>.listargsus���$�$�T�*�*rc��[OoU]*,U*[mUO2U[m!S[mh9h)z(Parse the args by defaulting to sys.argv)r�argvrK)rAr��old_sys_argvs&& r�sysargs�/ParserTesterMetaclass.__init__.<locals>.sysargsys>���8�8�L�$�Q��(�4�/�C�H�
(��(�(�*�'����<���s�A�
Ac�:`�\sQsQsnQsQsQsQsQsUs	P!)�0ParserTesterMetaclass.__init__.<locals>.AddTests�c�N�V mV0mUOOoUOOoUOUO1FD=oUOoVtU1oQOU2o	U1Qko
V�m[VU
2J?	P![cKh9h)�_c��UU2P!r�r&�r�	test_funcs&&r�wrapper�JParserTesterMetaclass.__init__.<locals>.AddTests.__init__.<locals>.wrapper��	��!�$�r)�_add_arguments�_parse_argsr)�
test_failures�test_successesr��	TypeErrorr)r�
tester_cls�
add_argumentsrK�add_arguments_name�parse_args_namerA�	func_name�names�	test_namerBs&&&&       rr�9ParserTesterMetaclass.__init__.<locals>.AddTests.__init__�s���&3�#�#-� �%)�%8�%8�%A�%A�"�"&�"2�"2�";�";��"&�"4�"4�d�6I�6I�!J�I� )� 2� 2�I�%�?�J�E� #�����I�09�(��+4�(��J�7�;�"K��%����s�>B�	B$� B$�#B$c��UOOoUOOoUOU-U@oUO	VAO
2U!r�)r!r�r�r"rEr$)r�testerr�r�rAs&&   rr��<ParserTesterMetaclass.__init__.<locals>.AddTests._get_parser�sR���.�.�3�3���0�0�7�7���,�,�d�=�f�=���#�#�F�,F�,F�G��
rc�x�UOU2oUOFDooUO2oUOUQ59^tt^2UO	[
UQ59^tt^2UO
U2PPP2PPP2Jq	P!)%fhK9h)%fhJ�9h)�r�)�msg)r��failures�splitrLr�r�rK)rrSrA�args_strr�s&&   rrG�>ParserTesterMetaclass.__init__.<locals>.AddTests.test_failures�s����)�)�&�1�� &���H�#�>�>�+�D����T��2�2�#�0�0�1D�$�0�O�O�"�-�-�d�3�P�3�2�!0�P�O��3�2�2�s0�
 B(	�-B
�?B(	�B%�B%� B(	�(B9
�1B9
c	�T�UOU2oUOFDpvq4[U[2%cUO	2oUOUQ59^tt^2UO
V#2oUOVE2PPP2Jr	P!)%fhJ�9h)rV)r��	successesr�strrYrLrFr�)rrSrAr��expected_ns�	result_nss&&    rrH�?ParserTesterMetaclass.__init__.<locals>.AddTests.test_successes�s����)�)�&�1��)/�)9�)9�%�D�!�$��,�,�#�z�z�|�����T��2�2�$(�$4�$4�V�$B�	��*�*�;�B�3�2�*:�3�2�2�s�%#B	�B'
�B'
)rErF)
r)r*r+r,rr�rGrHr.r/rRs@r�AddTestsr;�s ����
<�&
�
4�
C�
Crrb)�hasattrr�r!rr"�object)�clsr��bases�bodydictr&r+r0r3r8rbrKrKs&&&&        rr�ParserTesterMetaclass.__init__Ts����#�#���s�.�/�/�#&�5�C� ��s�N�+�+�9�C��
	=�
	<�	<�	+�	(�+	C�v�+	C�^(�K�@�M�'�1�
���Z�8�2�Arr&)r)r*r+r,r-rr.r/rRs@rrrDs����
�a9�a9rrr c	��\sQsQsQs\Q2,s,QNsP\PQ51Q\QQ51Q\QQ51Q\Q	Q51Q
\Q	Q51,s	Qs
P!)
�TestOptionalsSingleDash��1Test an Optional with a single-dash option string�-x�a��x�-x a�-xaz-x -1�-1z-x-1r&)rmrnrw�-x --fooz-x -y�r)r*r+r,r-r�r$rXr�r]r.r&rrrjrj�sY��;��t�9�+��8�H�	�R�$�Z��	��c���	��S�	��	�"�t�*��	��d����Irrjc��\sQsQsQs\QQQ5\QQ]*Q5\Q	2,s,QNsP\P
PPQ51Q\P	PPQ51Q\P
PQ
Q51Q
\P
PQ
Q51Q\P	PQ
Q51Q\P	PQ
Q51Q\P	PQ
Q51Q\P	PQ
Q51Q\P
]*PQ51Q\P
]*PQ51Q\P	]*Q
Q51Q\P	]*Q
Q51,s	Qs
P!)�TestOptionalsSingleDashCombined��rlrm�
store_true��actionz-yyy�store_const�r{�const�-zrn)rp�yyy�z�-za�-z az-xzaz-xz az-x -zaz-x -z a�-yz-x -yyy -zaz-x -yyy -z ar&)rnrwrrrtz-x -zz-z -xz-yxz-yz az-yyyxz-yyyzaz-xyzaz-x=rur&rrrwrw�s	��;�	�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�
�Irrwc	��\sQsQsQs\Q2,s,QNsP\PQ51Q\QQ51Q\QQ51Q	\QQ51Q
\QQ51,s	Qs
P!)
�TestOptionalsSingleDashLong��zATest an Optional with a multi-character single-dash option string�-foorn�r7z-foo az-foo -1rsz-fo a�-f ar&)r�rnrwz
-foo --fooz-foo -y�-fooarur&rrr�r��sY��K��v�;�-��G�H�	�R�D�\��	�2�#�;��	�B�4�L�!�	�"��+��	������Irr�c
��\sQsQsQs\Q2\Q2\Q2,s,QNsP\PPPQ51Q\QPPQ51Q	\QPPQ51Q
\QPPQ51Q\Q
PPQ51Q\PQPQ51Q\PPQQ51,s	Qs
P!)�&TestOptionalsSingleDashSubsetAmbiguous��z=Test Optionals where option strings are subsets of each other�-f�-foobar�-foorab)�f�foobar�foorabr�rn�-fa�-foa�oar��ooa�	-foobar a�	-foorab ar&)r�r��-fo�-foo bz-foobz-foobaz-foorarur&rrr�r��s���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�:��Irr�c�f�\sQsQsQs\Q2\Q2,s,QNsP\PPQ51Q\QPQ51Q\QPQ51Q	\PQQ51Q
\PQQ51Q\QPQ51Q\QPQ51Q
\PQQ51Q\PQQ51Q\QPQ51Q\QPQ51Q\PQQ51Q\PQQ51,
s	Qs
P!)� TestOptionalsSingleDashAmbiguous�z7Test Optionals that partially match but are not subsetsr�r�)r�r�z-foob arnz-foob=az-foor az-foor=az-fooba az-fooba=az-foora az-foora=ar�z	-foobar=ar�z	-foorab=ar&)	r�r�r�r�r�r�r�z-f=az-foo=brur&rrr�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��\sQsQsQs\QQQ5,s,Q
NsP\PQ51Q\QQ51Q	\QQ51Q
\QQ51,s	Qs
P!)�TestOptionalsNumeric�z(Test an Optional with a short opt stringrs�one��destrn)r�z-1 az-1az-1-2�-2r&)rsrnz-1 --fooz-1 -yz-1 -1z-1 -2rur&rrr�r�sQ��2��t�%�0�1��A�H�	�R�D�\��	�����	��s���	�����	�Irr�c	��\sQsQsQs\Q2,s,QNsP\PQ51Q\QQ51Q\QQ51Q\Q	Q51Q
\Q	Q51,s	Qs
P!)
�TestOptionalsDoubleDash�(z1Test an Optional with a double-dash option stringrwrnr�z--foo az--foo=az
--foo -2.5z-2.5z
--foo=-2.5r&)rwr�r�rnz--foo -xz--foo --barrur&rrr�r�(sY��;��w�<�.��F�H�	�R�D�\��	�B�3�K� �	�B�3�K� �	�r�f�~�&�	�r�f�~�&��Irr�c���\sQsQsQs\QQQ5\Q2,s,QNsP\P
PQ51Q\P
Q	Q51Q
\P	PQ51Q\P	PQ51Q\P	PQ51Q\P	PQ51,s	Q
s
P!)�#TestOptionalsDoubleDashPartialMatch�6z7Tests partial matching with a double-dash option string�--badgerryrzz--bat)�badger�batz--bat X�X�--bad�--badg�--badger&)�--bar�--b�--ba�--b=2z--ba=4�	--badge 5rur&rrr�r�6s���A�	�J�|�,��G����H�H�	�R�u�$�
'�(�	�B�e��-�.�	�"�D�d�+�,�	�2�T�t�,�-�	�B�d��-�.�	�R�t��.�/�
�Irr�c���\sQsQsQs\QQQ5\Q2,s,QNsP\P
PQ51Q\P
Q	Q51Q
\P
Q	Q51Q\P	PQ51Q\P	PQ51Q
\P	PQ51Q\P	PQ51,s	Qs
P!)�"TestOptionalsDoubleDashPrefixMatch�Hz?Tests when one double-dash option string is a prefix of anotherr�ryrzr�)r��baz--ba Xr�z--ba=Xr�r�r�r&)r�r�r�r�r�rur&rrr�r�Hs���I�	�J�|�,��F����>�H�	�R�u��
&�'�	�2�U�s�+�,�	�2�U�s�+�,�	�"�D�T�*�+�	�2�T�d�+�,�	�B�d�t�,�-�	�R�t��-�.��Irr�c���\sQsQsQs\QQQ5\Q2\QQ]*Q	5,s,QNsP\P
PPQ51Q\P	PPQ51Q\P
Q
PQ51Q
\P	Q
PQ51Q\P	P]*Q51Q\P	P]*Q51,s	Qs
P!)�TestOptionalsSingleDoubleDash�[z<Test an Optional with single- and double-dash option stringsr�ryrzr��-bazr|r}�B�r�r{r}z--ba Bz
-f --bar Bz-f -bz-ba -fr&)r��-fbarz-fbazz-bazf�-b Br�rur&rrr�r�[s���F�	�D��&��G���F�=��3���
A�H�	�R�%�T�t�
,�-�	
�r�D�d��-�.�	�2��3�D�1�2�	�r�D�c�t�4�5�	�"�t��2�.�/�	�2��$�B�/�0�
�Irr�c��\sQsQsQs\QP
Q5s\QQQ5\Q2\Q	Q
]*Q5,s,QNsP\	P
PPQ
51Q\	P	PPQ
51Q\	P
QPQ
51Q\	P	QPQ
51Q\	P	P]*Q
51Q\	P	P]*Q
51,s
QsP!)�!TestOptionalsAlternatePrefixChars�nz9Test an Optional with option strings with custom prefixes�+:/��prefix_chars�add_help�+fryrz�::bar�/bazr|r}r�r��::ba B�
+f ::bar B�+f /b�/ba +fr&)r�r�r�r�r��--bar Br�rE�--helpz+hz::helpz/help�r)r*r+r,r-r�r!r$rXr�r]r.r&rrr�r�ns���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�
�Irr�c��\sQsQsQs\QP	Q5s\QQQ5\Q2\Q	Q
]*Q5,s,QNsP\	P
PPQ
51Q\	P	PPQ
51Q\	P
QPQ
51Q\	P	QPQ
51Q\	P	P]*Q
51Q\	P	P]*Q
51,s
QsP!)�*TestOptionalsAlternatePrefixCharsAddedHelp�z�When ``-`` not in prefix_chars, default operators created for help
should use the prefix_chars in use rather than - or --
http://bugs.python.org/issue9444r�r�r�ryrzr�r�r|r}r�r�r�r�r�r�r&)r�r�r�r�r�r�r�r�r&rrr�r��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�
�Irr�c
���\sQsQsQs\QP
Q5s\QQQ5\QQQ5\Q	QQ5,s,QNsP\	P
P
P
Q
51Q\	P	P
P
Q
51Q\	P	P	P
Q
51Q\	P	P	P	Q
51,s
Q
sP!)�2TestOptionalsAlternatePrefixCharsMultipleShortArgs�z@Verify that Optionals must be called with their defined prefixes�+-r�rmryrzz+yz+z�rp�yr�z+y -xz+yz -xr&)�-wz-xyz�+xr�z+xyzr�r&rrr�r��s���J���u�=���D��&��D��&��D��&���
�H�
�R�%�5�E�
*�+�	
�r�D�E�U�+�,�	�"�t�t�u�-�.�	�2����-�.�	�Irr�c	��\sQsQsQs\QQQQQQ5,s,QNsP\P
Q	51Q\P	Q	51Q\P	Q	51Q\P	Q	51Q\P	Q	51,s	Q
s
P!)�TestOptionalsShortLong�z<Test a combination of single- and double-dash option strings�-v�	--verbose�-nz--noisyryrz)�verboser&)z
--x --verbosez-Nrnz-v xrur&rrr�r��sn��F�	�D�+�t�Y�|�D���4�H�	�R��
��	
�r�$�� �	�b��&�'�	
�r�$�� �	�B�t�$�%��Irr�c�B�\sQsQsQs\QQQQQ2\QQ	Q
5\QQQ
2\Q2,sQ,sQ\QPPPQ51Q\QPPPQ51Q\PQPPQ51Q\QQPPQ51Q\QQPPQ51Q\PPQPQ51Q\PPQPQ51Q\PPPQ Q51,s	Q!s
P!)"�TestOptionalsDest�z*Tests various means of setting destinationrmr�z	--foo-barz-barfoo�-X�--baz�zabbazr�r�z-quxz-Yrrnz--foo-bar fr�)�foo_barr��quxr�z-x fz--baz g�gz--foo-bar h --baz i�hr/z--baz j --foo-bar k�k�jz-qux l�lz-y lz-z m�mr&rur&rrr�r��s���4�	�D�)�[�)�T�:��G�(�#��D�&�$���D�	�	���u�H�	��3�t���F�G�	��C��$�$�?�@�	�B�t�C�T�T�B�C�	��3�s��� M�N�	��3�s��� M�N�	�2�d�4�S�D�A�B�	��D��3�$�?�@�	��D��4�3�?�@�	�Irr�c��\sQsQsQs\Q2\Q]*Q5,sQ,sP\P]*Q51Q\Q	]*Q51Q
\PQQ51,s	Qs
P!)
�TestOptionalsDefault��z*Tests specifying a default for an Optionalrmr��rzrn�rpr�z-xxrpz-yyr�r&rur&rrr�r��sU��4��t�9�c�$��&;�<���u�H�	�R�$�"�
��	��S�B�� �	��T�S�!�"��Irr�c�b�\sQsQsQs\Q2,sQQ,sP\PQ51Q\QQ51,s	Qs
P!)�TestOptionalsNargsDefault��z7Tests not specifying the number of args for an Optionalrmrnrorqr&rur&rrr�r��s9��A��t�9�+���T�{�H�	�R�$�Z��	��c����Irr�c�h�\sQsQsQs\Q]Q5,sQQ,sP\PQ51Q\Q,Q51,s	Qs
P!)	�TestOptionalsNargs1��z&Tests specifying 1 arg for an Optionalrm�rrnrorqr&rur&rrr�r��s?��0��t�1�-�.���T�{�H�	�R�$�Z��	��s�e����Irr�c�j�\sQsQsQs\Q]Q5,s,QNsP\PQ51Q\,Q	NQ51,s	Qs
P!)
�TestOptionalsNargs3�z'Tests specifying 3 args for an Optionalrmrroz-x a b cr&)rnrmrq�-x a b�a -x�a -x b�rn�b�crur&rrrr�s:��1��t�1�-�.��>�H�	�R�$�Z��	�R�/�*�+��Irrc�n�\sQsQsQs\QQQ5\QQ]*Q5\QQQ	Q
5\QQ\QQ
]],Q5,s,QNsP\	PPQ	]TQ51Q\	PPQ	]TQ51Q\	QPQ	]TQ51Q\	P]*Q	]TQ51Q\	PQQ	]TQ51Q\	PPP]TQ51Q\	PPQ]TQ51Q\	PPQ	]*Q51Q\	PPQ	]Q51,	s
QsP!)�TestOptionalsNargsOptional�z0Tests specifying an Optional arg for an Optionalr�r|rrm)rr~r��spamr~r�42�84)rryr~rz�choices�2�r�rpr�r�z-w 2z-x 2z-y 2z-z 2r&)rr�z-z 42z-z 84�r)r*r+r,r-r�r�r$rXr�r]r.r&rrrrs��:�	�D����D��2�&��D��V�,��D��#�T�4�!�Q��P�	��/�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��\sQsQsQs\QQQ5\QQQQ5,sQ	,sP\PQQ
51Q\,QQ
51Q\Q	,QQ
51Q\Q	Q
,QQ
51Q\P,Q
51Q\PQ	,Q
51Q\PQ	Q
,Q
51,s	Qs
P!)�TestOptionalsNargsZeroOrMore��?Tests specifying args for an Optional that accepts zero or morerm�*rr�rr~rnr�rqrr	�-y a�-y a br&rur&rrrrs���I�	�D����D��V�,����u�H�	�R�$�&�
!�"�	
�r�B�&�!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	
�r�D�B�� �	��d�s�e�$�%�	�2���c�
�+�,��Irrc
���\sQsQsQs\QQQ5\QQQQ5,s,QNsP\PQQ
51Q\Q	,QQ
51Q\Q	Q
,QQ
51Q\PQ	,Q
51Q\PQ	Q
,Q
51,s	Qs
P!)�TestOptionalsNargsOneOrMore�,z>Tests specifying args for an Optional that accepts one or morerm�+rr�rr~rnr�rqrr	rrr&)rnrmr�rza -y brur&rrrr,s���H�	�D����D��V�,���3�H�	�R�$�&�
!�"�	��s�e�v�&�'�	�2��c�
�f�-�.�	��d�s�e�$�%�	�2���c�
�+�,��Irrc���\sQsQsQs\QQQ5\Q\\]2Q5,s,QNs	P\
PPQ	51Q
\
QPQ	51Q\
QPQ	51Q
\
P]Q	51Q\
P]Q	51Q\
Q]Q	51,sQsP!)�TestOptionalsChoices�=z,Tests specifying the choices for an Optionalr��abc�rz-g�ryrrn)r�r�r�z-f cr
z-g 0z-g 03z-fb -g4r	r&)rnz-f dz-f abz-fadz-gaz-g 6�
r)r*r+r,r-r�r�r�r$rXr�r]r.r&rrr!r!=s���6�	�D�%� ��D�s�E�!�H�-�/��=�H�	�R�$�$�
� �	��c�T�"�#�	��c�T�"�#�	��d�a��!�	�"�t�q�/�"�	�B���N�#�
�Irr!c�h�\sQsQsQs\Q\P	Q5,sQP,sQ\	]Q51Q\	]*Q51,s
Q	sP!)
�TestOptionalsRequired�Nz)Tests an optional action that is requiredrm�ry�requiredrn�-x 1roz-x42r&rr&rrr(r(NsE��3�	�D�s�T�*����R�y�H�	��a���	��b����Irr(c�f�\sQsQsQs\QQQ5,sQQ,sP\PQ51Q	\Q
Q51,s	Qs
P!)�TestOptionalsActionStore�[z&Tests the store action for an Optionalrm�storerzrnrroz-xfoor7r&rur&rrr.r.[s=��0��t�G�4�5���V�}�H�	�R�$�Z��	�"�u�+���Irr.c�f�\sQsQsQs\QQ\Q5,sQ,sP\	PQ51Q\	\Q51,s
QsP!)	�TestOptionalsActionStoreConst�fz,Tests the store_const action for an Optionalr�r|r}rn�r�r&)r)r*r+r,r-r�rdr$rXr�r]r.r&rrr2r2fs=��6��t�M��H�I���u�H�	�R�$�Z��	
�r�F�|���Irr2c�f�\sQsQsQs\QQQ5,s,QNsP\P	Q51Q\P
Q51,s	Qs
P!)	�TestOptionalsActionStoreFalse�qz,Tests the store_false action for an Optionalr�store_falserz)r�r&)rnr�r�rur&rrr6r6qs9��6��t�M�:�;��#�H�	�R�$�Z��	
�r�E�{���Irr6c�f�\sQsQsQs\QQQ5,s,QNsP\P
Q51Q\P	Q51,s	Qs
P!)	�TestOptionalsActionStoreTrue�|z+Tests the store_true action for an Optionalz--appleryrz)�appler&)rnz	--apple=bz	--apple brur&rrr:r:|s9��5��y��>�?��.�H�	�R�e�_��	�B�T�N�#��Irr:c	��`�\sQsQsnQs\Q\OQ5,sQQ,s	P\
PQ51Q\
P	Q51Q\
P
Q51Q	\
P
Q51Q
\
P	Q51,sQsQs
Q
sUsP!)�TestBooleanOptionalAction�zTests BooleanOptionalActionrwrz�	--foo bar�	--foo=barr��--no-fooz--foo --no-fooz--no-foo --fooc�2�[O2oUO[29^tt^2oUO	QP	[O
Q5PPP2UO
Q[WO22P!)%fhK79h)rw�r~r{z*got an unexpected keyword argument 'const')	r:r;r�rIr��BooleanOptionalAction�assertInr^�	exception�rrA�cms&  r�
test_const�$TestBooleanOptionalAction.test_const�sf���(�(�*��
�
�
�y�
)�
)�R�����t�H�<Z�<Z��[�*�	
�
�
�B�C����DU�V�*�
)�s�#B�B	�B	c�0�[O2oUO[29^tt^2oUO	Q[O
Q5PPP2UO
[WO2Q2P!)%fhK79h)rBrzz8invalid option name '--no-foo' for BooleanOptionalAction�	r:r;r��
ValueErrorr�rEr�r^rGrHs&  r�test_invalid_name�+TestBooleanOptionalAction.test_invalid_name�sg���(�(�*��
�
�
�z�
*�
*�b����
�8�3Q�3Q��R�+�����R�\�\�*�S�	U�+�
*���"B�B	�B	r&)r)r*r+r,r-r�r:rEr$rXr�r]rJrOr.r/rRs@rr>r>�s}����%��w�x�/M�/M�N�O���[�)�H�	�R�D�\��	�"��,��	�R�E�]�#�	�2�%�=�)�	�2�$�<�(��I�W�U�Urr>c�`�\sQsQsnQs\QQ\OQ5,s,Q
Ns	P\
PQ51Q\
P	Q51Q\
P
Q51Q\
P	Q51,sQsQ	s
UsP!)�#TestBooleanOptionalActionSingleDash�z,Tests BooleanOptionalAction with single dashr�rmrzr��-nofooc�0�[O2oUO[29^tt^2oUO	Q[O
Q5PPP2UO
[WO2Q2P!)%fhK79h)rUrzz6invalid option name '-nofoo' for BooleanOptionalActionrMrHs&  rrO�5TestBooleanOptionalActionSingleDash.test_invalid_name�sg���(�(�*��
�
�
�z�
*�
*�b������1O�1O��P�+�����R�\�\�*�Q�	S�+�
*�rQr&)rwrB�-no-foo�-no-x�-nox)r)r*r+r,r-r�r:rEr$rXr�r]rOr.r/rRs@rrSrS�so����6�	�F�D��!?�!?�@���A�H�	�R�D�\��	�����	�2�%�=�!�	
�r�d�|��	�I�S�SrrSc�`�\sQsQsnQs\QP
Q5s\Q\OQ5,s	QQ,s
P\PQ	51Q\P	Q	51Q
\P
Q	51,sQs
QsUsP!)
�-TestBooleanOptionalActionAlternatePrefixChars�z0Tests BooleanOptionalAction with custom prefixesr�r��++foorzrwrBr��++no-fooc���[OQQ5oUO[Q29^tt^2UO	Q[O
Q5PPP2UO
[29^tt^2oUO	Q[O
Q5PPP2UO[WO2Q2P!)%fhK~9h)%fhKJ9h)�+/�r��<BooleanOptionalAction.*is not valid for positional argumentsrwrzr_z8invalid option name '++no-foo' for BooleanOptionalAction�
r:r;�assertRaisesRegexrNr�rEr�r�r^rGrHs&  rrO�?TestBooleanOptionalActionAlternatePrefixChars.test_invalid_name�s����(�(�d�;��
�
#�
#�J�N�P�P������0N�0N��O�P��
�
�z�
*�
*�b����
�8�3Q�3Q��R�+�����R�\�\�*�S�	U�P�P��+�
*��#�"C�>"C"�C	�C	�"C2	�+C2	r&�r)r*r+r,r-r�r!r:rEr$rXr�r]rOr.r/rRs@rr\r\�sl����:���u�=���w�x�/M�/M�N�O����$�H�	�R�D�\��	�"��,��	�R�E�]�#��I�U�Urr\c��`�\sQsQsnQs\QP
Q5s\QQ\OQ5,s	,QNs
P\PQ51Q\P	Q51Q	\P
Q51Q\P	Q51,sQ
s
QsUsP!)
�2TestBooleanOptionalActionSingleAlternatePrefixChar��z=Tests BooleanOptionalAction with single alternate prefix charrar��+foor�rzr��+nofooc���[OQQ5oUO[Q29^tt^2UO	Q[O
Q5PPP2UO
[29^tt^2oUO	Q[O
Q5PPP2UO[WO2Q2P!)%fhK~9h)%fhKJ9h)rarbrcr�rzrmz6invalid option name '+nofoo' for BooleanOptionalActionrdrHs&  rrO�DTestBooleanOptionalActionSingleAlternatePrefixChar.test_invalid_name�s����(�(�d�;��
�
#�
#�J�N�P�P�����x�/M�/M��N�P��
�
�z�
*�
*�b������1O�1O��P�+�����R�\�\�*�Q�	S�P�P��+�
*�rgr&)r^r_z++nofoorXrUz+no-foorUz+no-xz+noxrYrZrhrRs@rrjrj�s{����G���u�=���F�D��!?�!?�@���2�H�
�R�D�\��	�����	�2�%�=�!�	
�r�d�|��	�I�S�Srrjc�z�\sQsQsQs\QP	\OQ5,sP,s	Q\
P	Q51Q\
P
Q51,sQsP!)�!TestBooleanOptionalActionRequired��z$Tests BooleanOptionalAction requiredrw)r+r{r�rBr&)
r)r*r+r,r-r�r:rEr$rXr�r]r.r&rrrqrq�sI��.�	�G�d�8�+I�+I�J����t�H�	�"��,��	�R�E�]�#��Irrqc��\sQsQsQs\QQQ5,s,QNsP\PQ51Q\Q,Q51Q	\QQ
,Q51,s	Qs
P!)
�TestOptionalsActionAppend���'Tests the append action for an Optionalr��appendrzrn�r}�--baz a�--baz a --baz br	r&�rnr��a --baz�	--baz a brur&rrrtrt�sL��1��w�x�8�9��5�H�	�R�D�\��	�B�C�5�M�"�	�B�C��:�.�/��Irrtc��\sQsQsQs\QQQ,Q5,s,QNsP\Q,Q51Q	\QQ,Q51Q
\,Q
NQ51,s	Qs
P!)�$TestOptionalsActionAppendWithDefault�rvr�rwr��r{rzrnrxryrzr&r{)r�rnr	rur&rrrrsQ��1��w�x�#��G�H��5�H�	�R�S�E�]��	�B�C��:�&�'�	�B�?�3�4��Irrc��\sQsQsQs\QQQ5\QQQ5\QQQ5\Q	QQ5,s,QNsP\PPPPQ
51Q\P,PPPQ
51Q\PP,PPQ
51Q\PPPPQ
51Q	\PPPPQ
51,s	Qs
P!)
�!TestConstActionsMissingConstKwargiz=Tests that const gets default value of None when not providedr��append_constrzrw�-br|r�)r�r7r	r{r&)z-f vrAr@rur&rrr�r�s���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	��\sQsQsQs\QQ\Q5\QQQQ	5,s,QNsP\	PQ
51Q\	\,Q
51Q\	\Q\Q
,Q
51,s
QsP!)�TestOptionalsActionAppendConsti�-Tests the append_const action for an Optionalr�r�r}�-crwr	�r{r��r	�-b -cx -b -cyzrp�yzr&�rnr�za -cz-bxz-b x�r)r*r+r,r-r�r�r$rXr�r]r.r&rrr�r�sf��7�	�D��y�9��D���,���2�H�	�R�$�Z��	
�r�Y�K� �!�	�2��C��D� A�B�C��Irr�c
��\sQsQsQs\QQ\Q,Q5\QQQ	Q
5,s,QNsP\	Q,Q51Q\	Q\,Q51Q\	Q\Q
\Q,Q51,s
QsP!)�)TestOptionalsActionAppendConstWithDefaulti.r�r�r�r�)r{r~rzr�rwr	r�r�r�rpr�r&r�r�r&rrr�r�.sq��7�	�D��y�3�%�H��D���,���2�H�	�R�3�%�[��	
�r�S�)�$�%�&�	�2��i��i�� F�G�H��Irr�c�f�\sQsQsQs\QQQ5,s,QNsP\PQ51Q\]Q51,s	Qs
P!)	�TestOptionalsActionCounti=z&Tests the count action for an Optionalrm�countrzror&)rnrqz-x bz	-x a -x brur&rrr�r�=s8��0��t�G�4�5��1�H�	�R�$�Z��	
�r�A�w���Irr�c���\sQsQsQs\Q2\Q2\QQQ5,sQQ	,sP\PPP
Q
51Q\QPP
Q
51Q
\QPP
Q
51Q\PQP
Q
51Q\PQP
Q
51Q\QPP	Q
51,s	Qs
P!)�"TestOptionalsAllowLongAbbreviationiHz2Allow long options to be abbreviated unambiguouslyrw�--foobaz�--foobleryrzz--foob 5�--foob)r7�foobaz�fooblez--foo 7�7z--foo=7z	--fooba arnz	--fooba=az--foobl --foo gr�r&rur&rrr�r�Hs���<�	�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	��\sQsQsQs\P
Q5s\Q2\QQQ5\Q2,s,QNsP\	PP
PQ	51Q
\	QP
PQ	51Q\	Q
P	QQ	51,s
QsP!)�%TestOptionalsDisallowLongAbbreviationi[�1Do not allow abbreviations of long options at all��allow_abbrevrw�--foodleryrz�--foonly�r7�foodle�foonlyz--foo 3�3z--foonly 7 --foodle --foo 2rr�r&)�-foon 3z--foon 3�--foodz--food --foo 2r�r&rrr�r�[sr��;���.���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr�c	��\sQsQsQs\QP
Q5s\Q2\QQQ5\Q	2,s,QNsP\	PP
PQ
51Q\	QP
PQ
51Q
\	QP	QQ
51,s
QsP!)�0TestOptionalsDisallowLongAbbreviationPrefixCharsilzBDisallowing abbreviations works with alternative prefix charactersr�r�r�r^z++foodleryrzz++foonlyr�z++foo 3r�z++foonly 7 ++foodle ++foo 2rr�r&)z+foon 3z++foon 3z++foodz++food ++foo 2r�r&rrr�r�lst��L���%�@���G���J�|�,��J����
C�H�	�R�D��t�
4�5�	�B�3�u�T�:�;�	&��s�4��(L�M��Irr�c	��\sQsQsQs\P
Q5s\Q2\QQQ5\Q2,s,QNsP\	PP
PQ	51Q
\	QP
PQ	51Q\	Q
P	QQ	51,s
QsP!)�/TestOptionalsDisallowSingleDashLongAbbreviationi}r�r�r�z-foodleryrzz-foonlyr�z-foo 3r�z-foonly 7 -foodle -foo 2rr�r&)r�z-foodz-food -foo 2r�r&rrr�r�}sq��;���.���F���I�l�+��I����
4�H�	�R�D��t�
4�5�	�2�#�e�D�9�:�	#�R�C��S�%I�J��Irr�c���\sQsQsQs\P
Q5s\Q2\QQQ5,sQQ,sP\	PPQ	51Q
\	QPQ	51Q\	Q
PQ	51Q\	P]Q	51Q\	Q]Q	51Q\	Q
]Q	51,s
QsP!)�/TestDisallowLongAbbreviationAllowsShortGroupingi�r�r�z-rr�r�rzz-c -r��rr
z-rarnz-rcc�ccz-ccz-cc -raz-ccrccr&r�r&rrr�r��s���;���.���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irr�c���\sQsQsQs\QP
Q5s\Q2\QQQ5,sQQ	,sP\	PPQ
51Q\	QPQ
51Q
\	QPQ
51Q\	P]Q
51Q\	Q]Q
51Q\	Q]Q
51,s
QsP!)�5TestDisallowLongAbbreviationAllowsShortGroupingPrefixi�zEShort option grouping works with custom prefix and allow_abbrev=Falserr�z+rz+cr�rzz+c +rr�z+rarnz+rccr�z+ccz+cc +raz+ccrccr&r�r&rrr�r��s���O���%�@���D�	��D��!����g��H�	�R�$�$�
� �	��S�D�!�"�	��d�d�#�$�	��T�Q�� �	�B���N�#�	�2���?�#�
�Irr�c�T`�\sQsQsnQQ\2sQs\Q2sQs	Qs
UsP!)�TestStrEnumChoicesi�c�$�\sQsQsQsQsQsQsP!)�TestStrEnumChoices.Colori��red�green�bluer&)r)r*r+r,�RED�GREEN�BLUEr.r&rr�Colorr��s�������rr�c���[O2oUOQUOQ5UO	QQ,2oUOUOUOO2P!)�--colorr$r�)r:r;r�r�rKr��colorr��rrAr�s&  r�test_parse_enum_value�(TestStrEnumChoices.test_parse_enum_value�sX���(�(�*�����I�t�z�z��:�� � �)�U�!3�4��������T�Z�Z�^�^�4rc���[O2oUOQUOQQ5UO	QUO22UO	QUO
22P!)r�zChoose a color�r�helpz[--color {red,green,blue}]z  --color {red,green,blue})r:r;r�r�rF�format_usage�format_helpr@s& r�'test_help_message_contains_enum_choices�:TestStrEnumChoices.test_help_message_contains_enum_choices�sZ���(�(�*�����I�t�z�z�@P��Q��
�
�2�F�4G�4G�4I�J��
�
�2�F�4F�4F�4H�Irc���[OP
Q5oUOQUOQ5UO	[O
QUOQQ,2P!)Frur�r$z?invalid choice: 'yellow' \(choose from 'red', 'green', 'blue'\)�yellow)r:r;r�r�rer�rKr@s& r�$test_invalid_enum_value_raises_error�7TestStrEnumChoices.test_invalid_enum_value_raises_error�sT���(�(�u�=�����I�t�z�z��:�����"�"�N����
��!�		
rr&)r)r*r+r,rr�r�rr�r�r.r/rRs@rr�r��s6�������
5��J��J�
�
rr�c�N�\sQsQsQs\Q2,s,QNsQ\QQ51,s	Qs
P!)�TestPositionalsNargsNonei�z,Test a Positional that doesn't specify nargsr7rnr�r&�r'rm�a brur&rrr�r��s)��6��u�:�,�� �H�	�b�S�k���Irr�c�T�\sQsQsQs\Q]Q5,s,QNsQ\Q,Q51,s	Qs
P!)	�TestPositionalsNargs1i�z.Test a Positional that specifies an nargs of 1r7rrnr�r&r�rur&rrr�r��s/��8��u�A�.�/�� �H�	�b�c�U�m���Irr�c�V�\sQsQsQs\Q]Q5,s,Q
NsQ\QQ,Q51,s	Q	s
P!)�TestPositionalsNargs2i�z.Test a Positional that specifies an nargs of 2r7rrnr�r	r�r&)r'rnrm�a b crur&rrr�r��s2��8��u�A�.�/��'�H�	���S�z�"�#��Irr�c�~�\sQsQsQs\QQQ5,sQ,sP\,Q51Q\Q,Q51Q	\QQ
,Q51,s	Qs
P!)�TestPositionalsNargsZeroOrMorei�z0Test a Positional that specifies unlimited nargsr7rrrmr�rnr�r	r&rur&rrr�r��sN��:��u�C�0�1���v�H�	�R�B�Z��	�b�c�U�m��	���S�z�"�#��Irr�c��\sQsQsQs\QQQQQ,Q5,s,QNsP\QQ	51Q\Q,Q	51Q
\QQ,Q	51,s	Qs
P!)
�%TestPositionalsNargsZeroOrMoreDefaulti�z>Test a Positional that specifies unlimited nargs and a defaultr7rr{rnr	�rrzrr�r�r&)rmr{za crur&rrr�r��sT��H��u�C���c�
�S�T��#�H�	�R�E�]��	�b�c�U�m��	���S�z�"�#��Irr�c�l�\sQsQsQs\QQQ5,sPQ,sQ\Q,Q51Q	\QQ
,Q51,s	Qs
P!)�TestPositionalsNargsOneOrMoreiz2Test a Positional that specifies one or more nargsr7rrrmrnr�r�r	r&rur&rrr�r�sD��<��u�C�0�1���D�z�H�	�b�c�U�m��	���S�z�"�#��Irr�c�f�\sQsQsQs\QQQ5,sQQ,sP\PQ51Q	\Q	Q51,s	Q
s
P!)�TestPositionalsNargsOptionalizTests an Optional Positionalr7r|rrmr�r�rnr&rur&rrr�r�s=��&��u�C�0�1���e�}�H�	�R�D�\��	�b�S�k���Irr�c�n�\sQsQsQs\QQ]*QQ,Q5,s,Q
NsP\]*Q51Q\QQ51,s	Q	s
P!)�#TestPositionalsNargsOptionalDefaulti!z1Tests an Optional Positional with a default valuer7r|rnr	r�r�r&)rmr�rrur&rrr�r�!sA��;��u�C��c�3�Z�P�Q��"�H�	�R�B�Z��	�b�S�k���Irr�c�p�\sQsQsQs\QQ\Q]],Q5,s,Q
NsP\	]*Q51Q\	]Q51,s
Q	sP!)�,TestPositionalsNargsOptionalConvertedDefaulti,zfTests an Optional Positional with a default value
that needs to be converted to the appropriate type.
r7r|r)rryrzrr��1r&)rmr��1 2rrr&rrr�r�,sK���
	�E��3��q�!�f�E���*�H�	�R�B�Z��	�b�Q�i���Irr�c�^�\sQsQsQs\Q2\Q2,s,Q
NsQ\QQQ51,s	Q	s
P!)�TestPositionalsNargsNoneNonei;z-Test two Positionals that don't specify nargsr7r{rnr�r	�r7r{r&)r'rmrnr�rur&rrr�r�;s3��7��u�:�s�5�z�2��'�H�	��s��$�%��Irr�c�d�\sQsQsQs\Q2\Q]Q5,s,QNsQ\QQ,Q	51,s	Q
s
P!)�TestPositionalsNargsNone1iEz6Test a Positional with no nargs followed by one with 1r7r{rrnr�r	r�r&)r'rwrnr�rur&rrr�r�Es8��@��u�:�s�5��':�;��*�H�	��s���&�'��Irr�c�f�\sQsQsQs\Q]Q5\Q2,s,QNsQ\QQ,Q	Q
51,s	Qs
P!)
�TestPositionalsNargs2NoneiOz8Test a Positional with 2 nargs followed by one with noner7rr{rnr�r	r
r�r&�r'rwrnr��a b c drur&rrr�r�Os:��B��u�A�.��E�
�;��3�H�	�"�#�s���-�.��Irr�c�z�\sQsQsQs\Q2\Q2\QQQ5,s,QNsQ\PQ,Q	51Q
\PQQ,Q	51Q\PQQQ
,Q	51Q\QQ,Q	51Q\QQ,Q	51Q\QQQ,Q	51Q\QQQ,Q	51Q\QQQ,Q	51Q\QQQQ
,Q	51Q\QQQQ
,Q	51Q\QQQQ
,Q	51,s	Qs
P!)�"TestPositionalsNargsNoneZeroOrMoreiYz>Test a Positional with no nargs followed by one with unlimitedrmr7r{rrrn�rpr7r{r�r	r�r
�-x X ar��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&)r'rw�
a b -x X crur&rrr�r�Ys��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�:��Irr�c�2�\sQsQsQs\Q2\Q2\QQQ5,s,QNsQ	\PQQ
,Q51Q\PQQ
Q
,Q51Q\QQQ
,Q51Q\QQQ
,Q51Q\QQQ
,Q51Q\QQQ
Q
,Q51Q\QQQ
Q
,Q51Q\QQQ
Q
,Q51,s	Qs
P!)�!TestPositionalsNargsNoneOneOrMoreimz@Test a Positional with no nargs followed by one with one or morermr7r{rrrnr�r	r�r�r
r�r�r�r�r�r�r�r&�r'rwrnr�rur&rrrrms���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�:�	�Irrc
��\sQsQsQs\Q2\Q2\QQQ5,s,QNsQ\PQPQ	51Q
\PQQQ	51Q\Q
QPQ	51Q\Q
QPQ	51Q\Q
QQQ	51Q\Q
QQQ	51Q\Q
QQQ	51,s	Qs
P!)� TestPositionalsNargsNoneOptionali~z@Test a Positional with no nargs followed by one with an Optionalrmr7r{r|rrnr�r�r	r�r�r�r�r�r�r&�r'rwr�rur&rrrr~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��Irrc�D�\sQsQsQs\Q2\QQQ5\Q2,s,QNsQ\P,QQ	51Q
\PQ,QQ	51Q\PQQ,Q
Q	51Q\Q,QQ	51Q\Q,QQ	51Q\QQ,QQ	51Q\QQ,QQ	51Q\QQQ,Q
Q	51Q\QQQ,Q
Q	51,	s	Qs
P!)�"TestPositionalsNargsZeroOrMoreNonei�z@Test a Positional with unlimited nargs followed by one with nonermr7rrr{rnr�r�r	r�r
r�r�r�r�r�r�r�r&)r'rwr�r�r�rur&rrrr�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�:�
�Irrc
��\sQsQsQs\Q2\QQQ5\Q2,s,QNsQ	\PQ,Q
Q51Q\PQQ
,Q
Q51Q\QQ,Q
Q51Q\QQ,Q
Q51Q\QQ,Q
Q51Q\QQQ
,Q
Q51Q\QQQ
,Q
Q51,s	Qs
P!)�!TestPositionalsNargsOneOrMoreNonei�zBTest a Positional with one or more nargs followed by one with nonermr7rrr{rnr�r	r�r�r
r�r�r�r�r�r�r&)r'rwrnr�r�rur&rrrr�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�:��Irrc�z�\sQsQsQs\QQ]*Q5\Q2,s,QNsQ\]*QQ51Q	\QQ
Q51,s	Qs
P!)
� TestPositionalsNargsOptionalNonei�zBTest a Positional with an Optional nargs followed by one with noner7r|r~r{rnr�r�r	r&rrur&rrr
r
�sG��L��u�C��<�c�%�j�I��%�H�	�b�R�S�!�"�	��s��$�%��Irr
c��\sQsQsQs\Q]Q5\QQQ5,s,QNsQ\QQ	,,Q
51Q\QQ	,Q,Q
51,s	Q
s
P!)�TestPositionalsNargs2ZeroOrMorei�z=Test a Positional with 2 nargs followed by one with unlimitedr7rr{rrnr�r	r�r�r
r&�r'rwrnrur&rrrr�sR��G��u�A�.��E��0E�F��!�H�	���S�z�r�*�+�	�"�#�s��#��/�0��Irrc�l�\sQsQsQs\Q]Q5\QQQ5,s,Q
NsQ\QQ	,Q
,Q51,s	Qs
P!)�TestPositionalsNargs2OneOrMorei�z?Test a Positional with 2 nargs followed by one with one or morer7rr{rrnr�r	r
r�r&)r'rwrnr�rur&rrrr�s?��I��u�A�.��E��0E�F��(�H�	�"�#�s��#��/�0��Irrc��\sQsQsQs\Q]Q5\QQQ5,s,QNsQ\QQ	,PQ
51Q\QQ	,QQ
51,s	Q
s
P!)�TestPositionalsNargs2Optionali�z7Test a Positional with 2 nargs followed by one optionalr7rr{r|rnr�r	r�r�r
r&)r'rwrnr�rur&rrrr�sP��A��u�A�.��E��0E�F��,�H�	���S�z�t�,�-�	�"�#�s���-�.��Irrc��\sQsQsQs\QQQ5\Q]Q5,sPQ,sQ\,Q,Q	51Q
\Q,Q,Q	51Q\QQ,Q
,Q	51,s	Qs
P!)�TestPositionalsNargsZeroOrMore1i�z=Test a Positional with unlimited nargs followed by one with 1r7rrr{rwrnr�r�r	r�r
r&rur&rrrr�sg��G��u�C�0�#�e�1�2E�F���G��H�	�b�R�c�U�#�$�	���u�3�%�(�)�	�"�#�s��#��/�0��Irrc��\sQsQsQs\QQQ5\Q]Q5,s,QNsQ\Q,Q	,Q
51Q\QQ	,Q,Q
51,s	Q
s
P!)�TestPositionalsNargsOneOrMore1i�z?Test a Positional with one or more nargs followed by one with 1r7rrr{rnr�r	r�r�r
r&r
rur&rrrr�sR��I��u�C�0�#�e�1�2E�F��!�H�	���u�3�%�(�)�	�"�#�s��#��/�0��Irrc��\sQsQsQs\QQQ5\Q]Q5,s,QNsQ\PQ,Q51Q	\QQ
,Q51,s	Qs
P!)
�TestPositionalsNargsOptional1i�z?Test a Positional with an Optional nargs followed by one with 1r7r|rr{rnr�r�r	r&rrur&rrrr�sL��I��u�C�0�#�e�1�2E�F��%�H�	�b�T��u�%�&�	��s���&�'��Irrc�T�\sQsQsQs\Q2\Q2\QQQ5\Q]Q5,s,QNsQ
\PQ	,Q,Q51Q
\PQ	Q,Q,Q51Q\QQ	,Q,Q51Q\QQ	,Q,Q51Q\QQ	,Q,Q51Q\QQ	Q,Q,Q51Q\QQ	Q,Q,Q51Q\QQ	Q,Q,Q51,s	Qs
P!)�#TestPositionalsNargsNoneZeroOrMore1i�z=Test three Positionals: no nargs, unlimited nargs and 1 nargsrmr7r{rrr}rnr�r	�rpr7r{r}r�r
r�r�r�r�r�r�r�r&rrur&rrrr�s���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�#��?�@�	�Irrc��\sQsQsQs\Q2\Q2\QQQ5\Q]Q5,s,QNsQ\PQ	Q
,Q,Q
51Q\PQ	Q
Q,Q,Q
51Q\QQ	Q
,Q,Q
51Q\QQ	Q
,Q,Q
51Q\QQ	Q
,Q,Q
51Q\QQ	Q
,Q,Q
51Q\QQ	Q
Q,Q,Q
51Q\QQ	Q
Q,Q,Q
51Q\QQ	Q
Q,Q,Q
51,	s	Qs
P!)�"TestPositionalsNargsNoneOneOrMore1iz?Test three Positionals: no nargs, one or more nargs and 1 nargsrmr7r{rrr}rnr	r�r
rr��dr�r�r�r�r�z-x X a b c dza -x X b c dza b c d -x Xr&)r'rwrnr	za b -x X c dza b c -x X drur&rrrrs��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�
�Irrc�N�\sQsQsQs\Q2\Q2\QQQQ5\Q	]Q
5,s,QNsQ\PQQQ
,Q51Q\PQQ
Q,Q51Q\QQQQ
,Q51Q\QQQQ
,Q51Q\QQQQ
,Q51Q\QQQ
Q,Q51Q\QQQ
Q,Q51Q\QQQ
Q,Q51,s	Qs
P!)�!TestPositionalsNargsNoneOptional1i*z;Test three Positionals: no nargs, optional narg and 1 nargsrmr7r{r|��?r~r}rrnr�r	rr�r
r�r�r�r�r�r�r�r&rrur&rrrr*s���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�=�>�	�Irrc��\sQsQsQs\QQQ5\QQ]*Q5,sQQ	,sP\P]*Q
51Q\Q]*Q
51Q\QQ
Q
51,s	Qs
P!)�$TestPositionalsNargsOptionalOptionali@zTest two optional nargsr7r|rr{r~rwr�r�rnr�r	r&rur&rrr"r"@se��!�	�E����E��b�)�����!�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s��$�%��Irr"c	��\sQsQsQs\QQQ5\QQQ5,sQ,sP\P,Q	51Q
\Q
,Q	51Q\Q
Q,Q	51Q
\Q
QQ,Q	51,s	Qs
P!)�&TestPositionalsNargsOptionalZeroOrMoreiOz1Test an Optional narg followed by unlimited nargsr7r|rr{rrwr�rnr�r	r�r
r&rur&rrr$r$Osn��;��u�C�0�#�e�3�2G�H���y�H�	�R�D�b�
!�"�	�b�S�b�!�"�	��s���&�'�	�"��3��*�-�.�	�Irr$c��\sQsQsQs\QQQ5\QQQ5,sPQ,sQ	\PQ	,Q
51Q\Q	Q,Q
51Q
\Q	QQ,Q
51,s	Qs
P!)�%TestPositionalsNargsOptionalOneOrMorei\z3Test an Optional narg followed by one or more nargsr7r|rr{rrwrnr�r�r	r�r
r&rur&rrr&r&\sc��=��u�C�0�#�e�3�2G�H���G�}�H�	�b�T��u�%�&�	��s���&�'�	�"��3��*�-�.��Irr&c�r�\sQsQsQs\Q\Q2Q5,s,Q
NsQ\	QQ51Q\	QQ51,s
Q	sP!)�TestPositionalsChoicesStringihz&Test a set of single-character choicesr�abcdefgr$rn�rr�r&�r'rwr�r�ef)r)r*r+r,r-r��setr$rXr�r]r.r&rrr(r(hs=��0��v�s�9�~�>�?��-�H�	�b�c�l��	�b�c�l���Irr(c�t�\sQsQsQs\Q\\]2Q5,s,Q	Ns	Q\
]Q51Q\
]Q51,sQsP!)
�TestPositionalsChoicesIntiszTest a set of integer choicesrr%�4r*�15r&r+r&r&rrr/r/ss?��'��v�C��r��C�D��-�H�	�b�a�j��	
�r�r�{���Irr/c�n�\sQsQsQs\QQQ5\QQ]Q5,s,Q
NsQ\QQ	Q
,,Q51,s	Qs
P!)�TestPositionalsActionAppendi~zTest the 'append' actionrrwrz�r{rrnr�r	r
r*r&r�rur&rrr3r3~sI��"�	�F�8�$��F�8�1�-���4�H�	�"�3��c�
�+�,�-��Irr3c�j�\sQsQsQs\QQQ5\QQ]Q5,s,Q
NsQ\,QNQ51,s	Q	s
P!)�TestPositionalsActionExtendi�zTest the 'extend' actionr�extendrzr4r�r*r&r�rrur&rrr6r6�s@��"�	�F�8�$��F�8�1�-���4�H�	�"�/�*�+��Irr6c	��\sQsQsQs\QQQ5\QQQQ	5,sQ
Q,sP\PP
Q51Q
\Q
P
Q51Q\PP	Q51Q\Q
P	Q51,s	Qs
P!)�"TestOptionalsNumericAndPositionalsi�z;Tests negative number args when numeric options are presentrpr|rz-4r�ry�r�r{r�z-315r�rnz-4 ar&rur&rrr9r9�ss��E�	�C�s���D�s�<�0����f�~�H�	�R�$�%�
 �!�	�b�3�%� �!�	
�r�D�D�!�"�	��c�T�"�#�	�Irr9c
��\sQsQsQs\QQQ5\QQQQ	5,sQ
,sP\PP
Q51Q\QP
Q51Q
\Q
P
Q51Q\PP	Q51Q\Q
P	Q51,s	Qs
P!)�(TestOptionalsAlmostNumericAndPositionalsi�zBTests negative number args when almost numeric options are presentrpr|rz-k4r�ryr:z-k3r�r�rnz-k4 ar&rur&rrr<r<�s���L�	�C�s���E��L�1����w�H�	�R�$�%�
 �!�	
�r�D�E�"�#�	�b�3�%� �!�	��T�T�"�#�	�"�s�d�#�$��Irr<c��\sQsQs\QQQQ5\Q2,sQ,sQ\Q	Q
,,PQ51Q\Q
,,Q	Q51Q
\Q	Q
,,QQ51,sQs	P!)�!TestOptionalsAndPositionalsAppendi�r7rrw�rr{r�r�r�rnr	r��	--bar a b�a b --bar cr
r&�
r)r*r+r,r�r$rXr�r]r.r&rrr>r>�sj���E��X�.��G�����x�H�	���c�
�|��.�/�	�b�s�e�W�#�.�/�	���c�
�|��5�6��Irr>c��\sQsQs\QQQQ5\Q2,sQ,sQ\Q	Q
,PQ51Q\Q
,Q	Q51Q
\Q	Q
,QQ51,sQs	P!)�!TestOptionalsAndPositionalsExtendi�r7rr7r?r�r�r�rnr	r�r@rAr
r&rBr&rrrDrD�sd���E��X�.��G�����x�H�	���S�z�t�,�-�	�b�c�U��,�-�	���S�z�s�3�4��IrrDc
��\sQsQs\QQQ5\QQQQ5,sQ,sP,\PPQ	51Q
,\Q
PQ	51Q,\QPQ	51QP,\PPQ	51QQ
,\PQ
Q	51QQ,\PQQ	51Q,\PQ
Q	51Q
,\PQQ	51,sQs	P!)�$TestEmptyAndSpaceContainingArgumentsi�rpr|rr�z--yyyr�r�r�za badgerz	-a badgerz--yyy=a badgerz--yyy=-a badgerr&rBr&rrrFrF�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�	�IrrFc�
�\sQsQs\QQ5s\QQQQQ5\Q	Q
\]*Q5\QQ
QQ5,sQQ,sP\	P]*P
Q51Q\	Q]*P
Q51Q\	Q]*P
Q51Q\	PQP
Q51Q\	P]*P	Q51Q\	Q]*P
Q51,s
QsP!)� TestPrefixCharacterOnlyArgumentsi��-+rb�-rpr|r�)r�rr~rr�)r�ryrzz-+-r�ryr:r�z+ -r�z- Xr�z+ -3z- ===z===r&���)r)r*r+r,r�r!r�r$rXr�r]r.r&rrrHrH�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�,�-�
�IrrHc���\sQsQsQs\QQQ5\QQQ5,s,sP\P,Q51Q\,,Q51Q\Q	,,Q51Q
\Q	,Q,Q51Q	\PQ	,Q51Q\,Q	,Q51Q
\Q,Q	,Q51,s	Qs
P!)�TestNargsZeroOrMorei�rrmrrr�r�rqrnz	-x a -- br	rrr&rur&rrrMrM�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���#��'�(��IrrMc
��\sQsQsQs\Q2\QQQ5\Q2,s,QNsQ\Q,PQ	51Q
\Q,QQ	51Q\QQ
Q,QQ	51Q\Q,QNPQ	51Q\Q,QNPQ	51Q\Q,QNPQ	51Q\QQQ,PQ	51,s	Qs
P!)�TestNargsRemainderiz2Tests specifying a positional with nargs=REMAINDERrpr��...rrr�r�z-z Z X�Zz
-z Z X A B�Ar�z
X -z Z A Bz
X A -z Z B�
X A B -z Zz	X Y --foo�Yrwr&)r'rz-z Z)rrQrRr�)rRrrQr�)rRr�rrQrur&rrrOrOs���<��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�:��IrrOc�x�\sQsQsQs\Q\Q5\Q\QQ5\QQ	Q
5,s,QNsP\	PP,Q51Q\	Q
P,Q51Q\	Q
PQ,Q51Q\	PQ,Q51Q\	PQ,Q51Q\	PQ,Q51Q\	PQQ,Q51Q\	PPQ,Q51Q\	QPQ,Q51Q\	QPQ,Q51Q\	PQQ,Q51,s
QsP!)�TestOptionLikeiz.Tests options that may or may not be argumentsrm�ryz-3r�)ryr�r�rrr�z-x 2.5�@z-x 2.5 arnz-3.5��?z-3-.5z-3 .5za -3.5za -x 1g�?z-x 1 az-3 1 ar&)
rmz-y2.5rrz-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 a��)r)r*r+r,r-r��floatr$rXr�r]r.r&rrrVrVs��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�-�.��IrrVc���\sQsQsQs\QQ\\OQ5\QQ\\OQ5\QQ	\OQ
5\QQ\\OQ5\QQ\\OQ5,s	,QNs
P\21Q
\]Q51Q\]],Q51Q\P	Q51Q\]P	Q51Q\]],P	Q51Q\PQ51Q\]Q51Q\,Q51Q\]],Q51,
sQs
P!)�TestDefaultSuppressi7z%Test actions with suppressed defaultsr7r|�rryrzr{rr�ryr�z--qux�--quuxr�r�r�r�rxz1 --baz�r7r}z	--baz 1 2�r7r{r})r�z--qux 1)r�z
--quux 1 2r&)rmrnz1 a)r)r*r+r,r-r�r�r:�SUPPRESSr$rXr�r]r.r&rrr]r]7s��/�	�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��\sQsQsQs\\OQ5s\QQQ5\QQQ5\Q	Q
Q5,s	Q,s
P\21Q
\Q
Q51Q\Q
Q,Q51Q	\P	Q51Q\Q
P	Q51Q\Q
Q,P	Q51,sQs
P!)�TestParserDefaultSuppressiPz4Test actions with a parser-level default of SUPPRESS��argument_defaultr7r|rr{rr�ryrzrmrnr�r�r	r�rxr|r`r}rar&)r)r*r+r,r-r�r:rbr!r$rXr�r]r.r&rrrdrdPs���>��H�,=�,=�>���E����E����G�L�)���
�v�H�	�R�T�
�	�b�S�k��	��s���&�'�	�"��,��	�B�3�D�)�*�	�b�S�s�e��6�7�
�Irrdc
�&�\sQsQsQs\]*Q5s\QQQQ5\QQ	Q
5\QQQ
5\Q
QQ5,sQ,sP\	]*]*]*]*Q51Q\	Q]*]*]*Q51Q\	QQ,]*]*Q51Q
\	]*]*P	]*Q51Q\	Q]*P	]*Q51Q\	QQ,P	]*Q51,s
QsP!)�TestParserDefault42idz.Test actions with a parser-level default of 42re�	--version�version�1.0�r{rjr7r|rr{rr�ryrzrm)r7r{r}rjrnr�r	r|r}r&r�r&rrrhrhds���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�
�Irrhc
�F``�\sQsQsnQsU1Qks\QQ5s\Q2\Q2\QQ	Q
5,s,QNs	Q\
O*sQ
\
PQQ,Q51Q\
QQQQ,Q51Q\
P\Q,Q51Q\
PQ\,Q51Q\
Q\QQ,Q51Q\
QQ\Q,Q51,QN\
PQQ,Q51,s\
O%cY\
OO!Q2s\O&\2s\Q\
P\Q,Q51Q\
PQ\,Q51,*
sQsUsU9s!QsQsUsU9s!)�TestArgumentsFromFileiy�"Test reading arguments from a filec	�J:�[[U_2Q[OUO
2Q*1QQQUOQ*1,oSFD3vq#[UQ29^tt^2oUOU2PPP2J5	P!)%fhJJ9h)�hello�
�undecodable�wb)�	recursives-a
A
@hello)�invalids@no-such-path
)	rrnr�r��fsencoderqrsr�r��r�
file_textsr��textr�rs&    �rr��TestArgumentsFromFile.setUp|s����
�#�T�0�2�
�b�k�k�$�*�*�-��5�6�
%�
,�
�D�,�,�u�4�5�

�
�%�J�D��d�D�!�!�T��
�
�4� �"�!�%�!�!�!�s�1B	�B"
�B"
�@��fromfile_prefix_chars�-arpr�rrr�zhello world!zX YrT)rnrpr�z
X -a A Y ZrRrQ�@hello XzX @helloz-a B @recursive Y ZzX @recursive Z -a Br��@z@undecodable XzX @undecodablerr&)r'r�r�z@invalidz@missing)rr'r�rT)r)r*r+r,r-r�r�r!r$rXr�FS_NONASCIIrqr�r]�TESTFN_UNDECODABLE�lstriprsr��fsdecode�decoded_undecodabler.r/r0r1s@@rrnrnysY����,�!���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�$�?�� �k�k�+�6���
�r�D�,?�C�5�I�J�
�r�D�C�4G�3H�I�J�
�	
�	�	�
��rrnc�``�\sQsQsnQsU1QksQQ\2s\s\	QQ5s
\	QQ	Q
5,s,sQ\
,QNQ51,sQ
sUsU9s!)�TestArgumentsFromFileConverteri�roc	��:�[[U_2Q,oSFD3vq#[UQ29^tt^2oUO	U2PPP2J5	P!)%fhJJ9h)rqrt)rqs
hello world!
)rr�r�r�r�rxs&    �rr��$TestArgumentsFromFileConverter.setUp�sV���
�,�d�9�;�(�
�
�%�J�D��d�D�!�!�T��
�
�4� �"�!�%�!�!�!�s�A	�A%
�A%
c�(`�\sQsQsnQsQsUsP!)�>TestArgumentsFromFileConverter.FromFileConverterArgumentParseri�c#�z �UO2FD oUO2%fJUw�	J"	P!3hr�)rY�strip)r�arg_line�args&& r�convert_arg_line_to_args�WTestArgumentsFromFileConverter.FromFileConverterArgumentParser.convert_arg_line_to_args�s)����~�~�'���y�y�{�{���	�(�s�+;�
;r&)r)r*r+r,r�r.r/rRs@r�FromFileConverterArgumentParserr��s����	�	rr�r|r}r�rrr�r4r&)rqzworld!r�)r)r*r+r,r-r�rr�r"r�r!r$rXr�r]r.r/r0r1s@@rr�r��s\����,�!��*D��3�L���5���C�s�����H�	�R�2�3�4��I�Irr�c���[O29^tt^2[OQQ[[2[
OU-U@ttPPP2!)%fhP!9h)�ignore�FileType is deprecated)rp�catch_warnings�filterwarnings�PendingDeprecationWarningr)r:�FileTyper�s*,rr�r��sL��	�	 �	 �	"�	"�����*B� 9�8�	E�� � �$�1�&�1�
#�	"�	"�	"�s�8A"�"A3	�+A3	c�(`�\sQsQsnQsQsUsP!)�TestFileTypeDeprecationi�c�.�UO[29^tt^2o[O2PPP2UO	Q[WO22UOUO[2P!)%fhKW9h)Nr�)
�assertWarnsr�r:r�rFr^�warningr�r��__file__�rrIs& r�test�TestFileTypeDeprecation.test�s[��
�
�
�7�
8�
8�B�����9��
�
�.��B�J�J��@�������h�/�9�
8�s�B�B	�
B	r&)r)r*r+r,r�r.r/rRs@rr�r��s����0�0rr�c�@`�\sQsQsnQsQsQsQsQsQs	Us
P!)�TestFileTypeRepri�c�T�[Q2oUOQ[U22P!)r�z
FileType('r')�r�r��repr�rrys& r�test_r�TestFileTypeRepr.test_r�s����}������$�t�*�5rc�V�[Q]2oUOQ[U22P!)rtzFileType('wb', 1)r�r�s& r�	test_wb_1�TestFileTypeRepr.test_wb_1�s#����a� �����,�d�4�j�9rc�X�[QQQ5oUOQ[U22P!)r��latin_1r�z!FileType('r', encoding='latin_1')r�r�s& r�test_r_latin�TestFileTypeRepr.test_r_latin�s#����i�0�����<�d�4�j�Irc�Z�[QQQQ5oUOQ[U22P!)r��big5r�)r��errorsz/FileType('w', encoding='big5', errors='ignore')r�r�s& r�test_w_big5_ignore�#TestFileTypeRepr.test_w_big5_ignore�s(����f�X�>�����J��d��	%rc�Z�[Q]QQ5oUOQ[U22P!)r��replace�r�z"FileType('r', 1, errors='replace')r�r�s& r�test_r_1_replace�!TestFileTypeRepr.test_r_1_replace�s%����Q�y�1�����=�t�D�z�Jrr&)r)r*r+r,r�r�r�r�r�r.r/rRs@rr�r��s&����6�:�J�%�
K�Krr�c�.`�\sQsQsnQsQsQsUsP!)�StdStreamCompareri�c��[OU2UmUQ6Xc[UmP!UQ6Xc[
UmP![
2UmP!)�
stdout.buffer�
stderr.buffer)�operator�
attrgetterrr�
backupattrr	rd)rrs&&rr�StdStreamComparer.__init__�s=�� �*�*�4�0����?�"�1�D�O�
�_�
$�1�D�O�$�h�D�Orc�r�VO[26H![cXO6Ht!h9hr�)rr�AttributeErrorr�r�s&&rr��StdStreamComparer.__eq__s5��	,��L�L��-�-�-���	,��O�O�+�+�	,�s��	6�6�6)r�r�r)r*r+r,rr�r.r/rRs@rr�r��s����'�,�,rr��stdinr�r�zstdin.bufferr�r�c�2`�\sQsQsn-sQsQsQsUsP!)�RFileic��VmP!r��r��rr�s&&rr�RFile.__init__����	rc�J�VO7cUOU*oL.UO29p OU$UO2[U[2%fUOQ2oUOUOt96H9%cU6H!t!)�ascii)�seen�read�closerr^r#r��rr�rzs&& rr��RFile.__eq__sv���I�I���9�9�U�#�D�&+�j�j�l�2�D�9�9�U�#��K�K�M��$��$�$��;�;�w�'�D��y�y�E�J�J�.�.�$�.�.�.�.rr�)	r)r*r+r,r�rr�r.r/rRs@rr�r�s����
�D��/�/rr�c�8``�\sQsQsnQsU1Qks\Q\2Q5\Q\Q2Q5,s,QNs	Q\
P\Q2Q	51Q
\
\Q2\Q2Q	51Q\
\Q2\Q2Q	51Q
\
\\Q	51Q\
P\Q2Q	51,s
QsUsU9s!)�
TestFileTypeRi"�8Test the FileType option/argument type for reading filesc	�<:�[[U_2QFD[o[[O
O
UOU2QQQ59^tt^2oUOU2PPP2J]	UOQ2P!)%fhJ�9h)r7r�rr��readonlyr�)
rr�r�r�r�r�r�r�r�r��r�	file_namer�rs&  �rr��TestFileTypeR.setUp%sz���
�m�T�(�*�'�I��b�g�g�l�l�4�=�=�)�<��G�-�-�04��
�
�9�%�-�-�(�	
�!�!�*�-�-�-�-�s�B
	�
B
�B
rmrWrr�r7�rpr�
-x foo barr{�
bar -x foo�-x - -r�r&)rmr'znon-existent-file.txt)r)r*r+r,r-r�r�r�r$rXr�r��eq_stdinr]r.r/r0r1s@@rr�r�"s�����B�.�	�D�x�z�"��F��#��'���3�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2��x�0�1�	�R�$�U�:�%6�7�8��I�Irr�c�``�\sQsQsnQsU1Qks\Q\Q2QQ5,sP,s	Q\
\Q	2Q
51,sQs
UsU9s!)�TestFileTypeDefaultsi:z<Test that a file is not created unless the default is neededc��:�[[U_2[[O
O
UOQ2QQQ5oUOQ2UO2P!)�goodr�rr�)
rr�r�r�r�r�r�r�r�r�)rr�rs& �rr��TestFileTypeDefaults.setUp<sG���
�"�D�/�1��B�G�G�L�L�����7��w�O���
�
�6���
�
�rr�r�zno-file.txtrxz-c goodr�)r
r&)r)r*r+r,r-r�r�r�r$rXr�r�r]r.r/r0r1s@@rr�r�:sH����F��	�D�x��}�m�<����t�H��R�%��-�0�1�2�I�Irr�c	�``�\sQsQsnQsU1Qks\Q\Q2Q5\Q\Q2Q5,sQP,s	Q\
P\Q2Q	51Q
\
\Q2\Q2Q	51Q\
\Q2\Q2Q	51Q
\
\\Q	51,s
QsUsU9s!)�TestFileTypeRBiKr�c	�:�[[U_2QFD[o[[O
O
UOU2QQQ59^tt^2oUOU2PPP2J]	P!)%fhJr9h)r7r�rr�r�)	rr�r�r�r�r�r�r�r�r�s&  �rr��TestFileTypeRB.setUpNsj���
�n�d�)�+�'�I��b�g�g�l�l�4�=�=�)�<��G�-�-�04��
�
�9�%�-�-�(�-�-�-�s�A9	�9B

�B

rm�rbrWrr7r�r�r{r�r�r&)r)r*r+r,r-r�r�r�r$rXr�r��	eq_bstdinr]r.r/r0r1s@@rr�r�Ks�����B�&�	�D�x��~�&��F��$��(����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3�	�I�Irr�c�<`�\sQsQsn\2sQsQsQsUs	P!)�WFileibc��VmP!r�r�r�s&&rr�WFile.__init__er�rc��VO7caQoQUO7cUOQ2oUOU2UO	2UOOU2UOUO6H!)zCheck that file is writable.r	r�)r��moderr�r��addr�r�s&& rr��WFile.__eq__hsc���	�	�!�1�D��e�j�j� ��{�{�7�+���K�K����K�K�M��I�I�M�M�%� ��y�y�E�J�J�&�&rr�)
r)r*r+r,r-r�rr�r.r/rRs@rr�r�bs�����5�D��'�'rr�c
�:``�\sQsQsnQsU1Qks\Q\Q2Q5\Q\Q2Q5,s,QNs	Q\
P\Q2Q	51Q
\
P\Q
2Q	51Q\
\Q2\Q2Q	51Q
\
\Q2\Q2Q	51Q\
\\Q	51,s
QsUsU9s!)�
TestFileTypeWisz8Test the FileType option/argument type for writing filesc�j:�[RU_2UOQ2UOQ2P!�r��writable�rr�r�r��rrs&�rr��TestFileTypeW.setUpw�(���
��
���!�!�*�-��!�!�*�-rrmr�rWrr7r�r�r�r{r�r�r&)rmr'r��r)r*r+r,r-r�r�r�r$rXr�r��	eq_stdoutr]r.r/r0r1s@@rr�r�ss�����B�.�	�D�x��}�%��F��#��'���&�H�	��T��e��-�.�	�R�$�U�:�%6�7�8�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��I�Irr�c��``�\sQsQsnQsU1Qks\Q\Q2Q5\Q\Q2Q5,s,QNs	Q\
\Q	2\Q
2Q51Q\
\\Q51,s
Q
sUsU9s!)�
TestFileTypeXi�zATest the FileType option/argument type for writing new files onlyc�j:�[RU_2UOQ2UOQ2P!r�r�r�s&�rr��TestFileTypeX.setUp�rrrmrprWrr�r7r{r�r�r&)rmr'r�r�rr1s@@rrr�si����K�.�	�D�x��}�%��F��#��'���2�H�	�r�E�%�L�u�U�|�<�=�	�2�	�	�2�3��I�Irrc	��\sQsQsQs\Q\Q2Q5\Q\Q2Q5,sQP,sQ\	P\
Q2Q51Q	\	\
Q2\
Q
2Q51Q\	\
Q2\
Q
2Q51Q\	\\Q51,sQ
s
P!)�TestFileTypeWBi�z?Test the FileType option/argument type for writing binary filesrmrtrWrr7r�r�r{r�r�r&)r)r*r+r,r-r�r�r$rXr�r��
eq_bstdoutr]r.r&rrr	r	�s���I�	�D�x��~�&��F��$��(����b�z�H�	��T��e��-�.�	�r�E�%�L�u�U�|�<�=�	�r�E�%�L�u�U�|�<�=�	�2�
��4�5�	�Irr	c��\sQsQsQs\Q\Q2Q5\Q\Q2Q5,sQ\\	Q2\	Q	2Q
51Q\\
\
Q
51,sQsP!)
�TestFileTypeXBi�zHTest the FileType option/argument type for writing new binary files onlyrm�xbrWrr�r7r{r�r�r&)
r)r*r+r,r-r�r�r$r�r�r
r]r.r&rrrr�sZ��N�	�D�x��~�&��F��$��(���

�r�E�%�L�u�U�|�<�=�	�2�
��4�5��Irrc�2`�\sQsQsnQsQsQsQsUsP!)�TestFileTypeOpenArgsi�z0Test that open (the builtin) is correctly calledc
�J�[oUQ2Q1UQ]2Q1UQQQ5Q
1UQQQ5Q1UQ]QQ2Q1,o[OQ	29^tt^2oSFD"vqEUQ
2UOQ
,UN3J$	PPP2P!)%fhP!9h)r�r�r�r�rtr�r��l1�strictz
builtins.openr7)r����NN)r��NN)r�rNr�)rtrr�N)r�rrr)r�rr>�assert_called_with)r�FT�casesr�ryr�s&     r�test_open_args�#TestFileTypeOpenArgs.test_open_args�s���
��
��X�-�.�
��Q�Z�-�.�
��I�
&�(B�C�
��v�
&�(@�A�
��Q��h�
'�)A�B�
���Z�Z��
(�
(�A�#�
���U���$�$�U�2�T�2�$�)�
(�
(�
(�s�*B�B"	�B"	c��UO[29^tt^2[Q2Q2PPP2P!)%fhP!9h)r	z-test)r�rNr�r$s&r�test_invalid_file_type�+TestFileTypeOpenArgs.test_invalid_file_type�s.��
�
�
�z�
*�
*��S�M�'�"�+�
*�
*�
*�s�;�A	�A	r&)	r)r*r+r,r-rrr.r/rRs@rrr�s����:�3�#�#rrc�,`�\sQsQsnQsQsQsUsP!)�!TestFileTypeMissingInitializationi�zl
Test that add_argument throws an error if FileType class
object was passed instead of instance of FileType
c�T�[O2oUO[29^tt^2oUO	Q[O
Q5PPP2UO
[O
8Q0[WO22P!)%fhKI9h)rmrWz: is a FileType class object, instance of it must be passed)	r:r;r�rIr�r�r�r^rGrHs&  rr��&TestFileTypeMissingInitialization.test�st���(�(�*��
�
�
�y�
)�
)�R�����8�+<�+<��=�*�	
���� � �
#������	
�*�
)�s�"B�B'	� B'	r&�r)r*r+r,r-r�r.r/rRs@rrr�s�����
	
�	
rrc��\sQsQsQs\Q\Q5\Q\Q5,s,QNs	Q\
]*QQ51Q	\
Q
QQ51Q\
PQQ51,sQ
sP!)�TestTypeCallablei�z,Test some callables as option/argument typesz--eggsrWrz--eggs=42 42gE@)�eggsrz--eggs 2j -- -1.5y@z1024.675g3333��@r&)rn�42jz--eggs az	--eggs 2i���)
r)r*r+r,r-r��complexr[r$rXr�r]r.r&rrr#r#�s^��6�	�H�7�#��F�����5�H�	���$�/�0�	�b�b�t�4�5�	�R�T��1�2��Irr#c��\sQsQsQsQQ\2s\Q\Q5\Q\Q5,s,s	Q\
\Q	2\Q
2Q51Q\
\Q
2\Q2Q51,sQsP!)�TestTypeUserDefinedi�z(Test a user-defined option/argument typec�.`�\sQsQsnQsQsQsUsP!)�TestTypeUserDefined.MyTypei�c��VmP!r���value�rr.s&&rr�#TestTypeUserDefined.MyType.__init__�����Jrc�b�[U2UO1[U2UO16H!r��ryr.r�s&&rr��!TestTypeUserDefined.MyType.__eq__��'����J��
�
�+��U��U�[�[�/I�I�Irr-r�rRs@r�MyTyper+������	�	J�	Jrr6rmrWrrr	rnr��-xf gr�r�r&)
r)r*r+r,r-r�r6r�r$rXr�r]r.r&rrr)r)�sm��2�J��J�	�D�v���F�� ����H�	�2��s��&��+�6�7�	�"�v�c�{����5�6��Irr)c��\sQsQsQsQQ2s\Q\Q5\Q\Q5,s,sQ\	\Q	2\Q
2Q51Q\	\Q
2\Q2Q51,s
QsP!)�TestTypeClassicClassi
	zTest a classic class typec�.`�\sQsQsnQsQsQsUsP!)�TestTypeClassicClass.Ci
	c��VmP!r�r-r/s&&rr�TestTypeClassicClass.C.__init__	r1rc�b�[U2UO1[U2UO16H!r�r3r�s&&rr��TestTypeClassicClass.C.__eq__	r5rr-r�rRs@r�Cr<
	r7rrArmrWrrr	rnr�r8r�r�r&)r)r*r+r,r-rAr�r$rXr�r]r.r&rrr:r:
	sk��#�J�J�	�D�q���F������H�	�2��#��Q�s�V�,�-�	�"�q��v�A�c�F�+�,��Irr:c�,`�\sQsQsnQsQsQsUsP!)�TestTypeRegistrationi 	z*Test a user-defined type by registering itc��Qo[O2oUOQQU2UOQQQ5UOQQQ5UO	UOQO
22[PQQ52UO	UOQ	O
22[QQ
Q52P!)c��QU*!)zmy_type{%s}r&��strings&r�get_my_type�.TestTypeRegistration.test.<locals>.get_my_type%	s
�� �6�)�)rry�my_typermrWr�r�z
my_type{1}r�z-x 1 42zmy_type{42})r:r;�registerr�r�rKrYr�)rrHrAs&  rr��TestTypeRegistration.test#	s���	*��(�(�*������	�;�7����D�y��1����C�i��0�����*�*�3�9�9�;�7��d�l�3�	5�����*�*�9�?�?�+<�=��l�m�<�	>rr&r!rRs@rrCrC 	s����4�
>�
>rrCc	��\sQsQsQsQQ\O2sQQ\O2s\	QQ\\
Q	Q
5\	Q\\Q]Q
5,s,s
Q\Q]Q51Q\Q	]*Q51Q\Q]Q51Q\Q]TQ51,sQsP!)�TestActionUserDefinedi7	z*Test a user-defined option/argument actionc�,`�\sQsQsnQQksQsUsP!)�$TestActionUserDefined.OptionalActioni:	c���[QQ5oUQ7c	]UmL!UQ7c	]TUmL[QU*2g[	UQU2P![co[QS*2gPo=hh9h)��?r*�	value: %szopt_action failed: %sr)��?r )�@)r�r��AssertionErrorr�r�rrA�	namespacer.�
option_stringr_rs&&&&&  r�__call__�-TestActionUserDefined.OptionalAction.__call__<	su��
G�!�d�m���N�*�)*�K�&��e�^�)+�K�&�(��u�)<�=�=�

�I�v�u�-��"�
G�)�*A�A�*E�F�F��
G�s1�A�A�A�A�A�	A0�A0�A+�+A0r&r��r)r*r+r,rZr.r/rRs@r�OptionalActionrP:	s����	.�	.rr]c�,`�\sQsQsnQQksQsUsP!)�&TestActionUserDefined.PositionalActioniP	c��[]Q5oUQ7c	QUmL0UQ	7c	QUmL!UQ
7c	QUmL[QU*2g[	UQU2P![co[QS*2gPo=hh9h)��r�rRr rTrSzarg_action failed: %sr�)�*�T)r)ra)r�rrVr�rrWs&&&&&  rrZ�/TestActionUserDefined.PositionalAction.__call__R	s���
G�!��l���H�$�'+�K�$��c�\�',�K�$��c�\�',�K�$�(��u�)<�=�=�

�I�x��/��"�
G�)�*A�A�*E�F�F��
G�s;�A�A�A�A�A�A�A�	A?�'A?�(A:�:A?r&r�r\rRs@r�PositionalActionr_P	s����	0�	0rrfz-srrR)r�r{ryrzr�r|)r{ryrrzz-s0.125rT)rr�rz
-s 0.625 1r z84 -s2rUr&)r)r*r+r,r-r:�Actionr]rfr�r[r�r$rXr�r]r.r&rrrNrN7	s���4�.����.�,0�8�?�?�0�4	�D�v�n���	&��H�-��C��	,����H�	�B�E�!�,�-�	
�r�t�B�'�(�	�r�u�Q�/�0�	�2�3�r�*�+�	�IrrNc�V`�\sQsQsnQsQQ\O2sQsQs	Us
P!)�TestActionRegistrationix	z5Test a user-defined action supplied by registering itc�,`�\sQsQsnQQksQsUsP!)�TestActionRegistration.MyActioni{	c�B�[V OQU*2P!)zfoo[%s])rr�)rrArX�valuesrYs&&&&&rrZ�(TestActionRegistration.MyAction.__call__}	s���I�y�y�)�f�*<�=rr&r�r\rRs@r�MyActionrk{	s����	>�	>rroc�B�[O2oUOQQUO2UO	QQQ5UOUO
Q,2[QQ52UOUO
Q,2[QQ52P!)	r{�	my_actionr�rzr�zfoo[1]rbrzfoo[42])r:r;rKror�r�rKr�r@s& rr��TestActionRegistration.test�	s{���(�(�*������+�t�}�}�=����H�[��9�����*�*�C�5�1�2�X�3F�G�����*�*�D�6�2�B�i�4H�Irr&)r)r*r+r,r-r:rgror�r.r/rRs@rririx	s$����?�>�8�?�?�>�
J�Jrric�R�\sQsQs\QQQ\Q5,sQsQ\,Q	NQ51,s	Qs
P!)
�TestActionExtendi�	rwr7r)r{rryz--foo f1 --foo f2 f3 f4r�r&)�f1�f2�f3�f4)r)r*r+r,r�r^r$rXr�r]r.r&rrrtrt�	s4���G�H�C�c�:����H�	"�B�+C�$D�E��Irrtc��\sQsQsQs\Q\Q5\Q\Q5\Q\Q5,s	,QNs
Q\QQPQ51Q	\QQPQ51Q
\QQPQ51Q\PQPQ51Q\PQPQ51Q
\PQPQ51Q\PQPQ51Q\PQPQ51Q\PQPQ51Q\PPQQ51Q\PPQQ51Q\PPQQ51Q\PPQQ51Q\PPQ Q51,sQs
P!)!�TestNegativeNumberi�	zTest parsing negative numbersz--intrWz--floatz	--complexz--int -1000 --float -1000.0)r�r[r'z--int -1_000 --float -1_000.0z%--int -1_000_000 --float -1_000_000.0z--float -1_000.0z--float -1_000_000.0_0z--float -.5z--float -.5_000z--float -1e3z
--float -1e-3z
--complex -1jz--complex -1_000jz--complex -1_000.0jz--complex -1e3jz--complex -1e-3jr&)z
--float -_.45z--float -1__000.0z--float -1.0.0z
--int -1__000z
--int -1.0z--complex -1__000.0jz--complex -1.0jjz--complex -_.45ji���g@��i���g��.�rZg����MbP����y�@��y�����MbP�)r)r*r+r,r-r�r�r[r'r$rXr�r]r.r&rrrzrz�	s,��'�	�G�#���I�E�"��K�g�&���
	�H�
'��u�G�T�(R�S�	(�"��g�t�*T�U�	0�"���]a�2b�c�	�R�D���F�G�	!�2�$�j�$�#O�P�	��t�4��>�?�	�B�4�t�T�B�C�	���E�4�@�A�	�"��V�T�B�C�	�"��T�3�?�@�	�b�T��v�F�G�	��t�4�� J�K�	�B�4�t�V�D�E�	�R�D��g�F�G��Irrzc�V`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
UsP!)�#TestArgumentAndSubparserSuggestionsi�	z;Test error handling and suggestion when a user makes a typoc�&�[2oUOQQQ,Q5UO[29^tt^2oUO	Q2PPP2UOQWOO2P!)%fhK89h)r7r{r}r$�^error: argument foo: invalid choice: 'bazz', maybe you meant 'baz'? (choose from 'bar', 'baz')��bazz�rr�r�r�rKrFrGr��rrA�excinfos&  r�*test_wrong_argument_error_with_suggestions�NTestArgumentAndSubparserSuggestions.test_wrong_argument_error_with_suggestions�	so��+�-�����E�E�5�>��:�
�
�
�2�
3�
3�w����i�(�4��
�
�l����$�$�	
�4�
3���B�B	�	B	c�*�[P
Q5oUOQQQ,Q5UO[29^tt^2oUO	Q2PPP2UOQWOO2P!)%fhK89h)F��suggest_on_errorr7r{r}r$zFerror: argument foo: invalid choice: 'bazz' (choose from 'bar', 'baz')r�r�r�s&  r�(test_wrong_argument_error_no_suggestions�LTestArgumentAndSubparserSuggestions.test_wrong_argument_error_no_suggestions�	sq��+�U�C�����E�E�5�>��:�
�
�
�2�
3�
3�w����i�(�4��
�
�T����$�$�	
�4�
3���B�B	�B	c�d�[2oUOP	Q5oUOQ2UOQ2UO[29^tt^2oUOQ2PPP2UO
QWOO2P!)%fhK89h)T�r+r7r{zcerror: argument {foo,bar}: invalid choice: 'baz', maybe you meant 'bar'? (choose from 'foo', 'bar')rx�	r�add_subparsers�
add_parserr�r�rKrFrGr��rrA�
subparsersr�s&   r�/test_wrong_argument_subparsers_with_suggestions�STestArgumentAndSubparserSuggestions.test_wrong_argument_subparsers_with_suggestions�	s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�
3�w����h�'�4��
�
�
2����$�$�	
�4�
3���B�B/	�(B/	c�h�[P
Q5oUOP	Q5oUOQ2UOQ2UO[29^tt^2oUOQ2PPP2UO
QWOO2P!)%fhK89h)Fr�r�r7r{zKerror: argument {foo,bar}: invalid choice: 'baz' (choose from 'foo', 'bar')rxr�r�s&   r�-test_wrong_argument_subparsers_no_suggestions�QTestArgumentAndSubparserSuggestions.test_wrong_argument_subparsers_no_suggestions�	s���+�U�C���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�
3�w����h�'�4��
�
�Y����$�$�	
�4�
3�s�B!�!B1	�*B1	c�*�[P	Q5oUOQQQ,Q5UO[29^tt^2oUO	Q2PPP2UOQWOO2P!)%fhK89h)Tr�r7r{r}r$rr�r�r�s&  r�,test_wrong_argument_with_suggestion_explicit�PTestArgumentAndSubparserSuggestions.test_wrong_argument_with_suggestion_explicit�	ss��+�T�B�����E�E�5�>��:�
�
�
�2�
3�
3�w����i�(�4��
�
�
2����$�$�	
�4�
3�r�c�"�[2oUOQ,Q5UO[29^tt^2oUO	Q2PPP2UOQWOO2P!)%fhK89h)r7r$z:error: argument foo: invalid choice: 'bazz' (choose from )r�r�r�s&  r�test_suggestions_choices_empty�BTestArgumentAndSubparserSuggestions.test_suggestions_choices_empty�	sk��+�-�����E�2��.�
�
�
�2�
3�
3�w����i�(�4��
�
�H����$�$�	
�4�
3�s�A>�>B	�B	c�&�[2oUOQ]],Q5UO[29^tt^2oUO	Q2PPP2UOQWOO2P!)%fhK89h)r7r$�?error: argument foo: invalid choice: '3' (choose from '1', '2')�r�r�r�s&  r�test_suggestions_choices_int�@TestArgumentAndSubparserSuggestions.test_suggestions_choices_int�	so��+�-�����E�A�q�6��2�
�
�
�2�
3�
3�w����f�%�4��
�
�M����$�$�	
�4�
3�r�c�&�[2oUOQ]Q,Q5UO[29^tt^2oUO	Q2PPP2UOQWOO2P!)%fhK89h)r7rr$r�r�r�r�s&  r�$test_suggestions_choices_mixed_types�HTestArgumentAndSubparserSuggestions.test_suggestions_choices_mixed_types
so��+�-�����E�A�s�8��4�
�
�
�2�
3�
3�w����f�%�4��
�
�M����$�$�	
�4�
3�r�r&)r)r*r+r,r-r�r�r�r�r�r�r�r�r.r/rRs@rr}r}�	s5����E�
�
�
�

�	
�
�
�
�
rr}c�\`�\sQsQsnQsQQ\O2sQsQs	Qs
UsP!)�TestInvalidActioni
z Test invalid user defined Actionc��\sQsQsQsP!)�#TestInvalidAction.ActionWithoutCalli
r&�r)r*r+r,r.r&rr�ActionWithoutCallr�
s��rr�c��[O2oUOQUOQ5UO	[
UOQQ,2P!)rwrzr{)r:r;r�r�r��NotImplementedErrorrKr@s& r�test_invalid_type�#TestInvalidAction.test_invalid_type
sG���(�(�*�����G�D�,B�,B��C����-�v�/@�/@�7�E�BR�Src�v�[OP
Q5oUOQ2o]UmUO	[
QUOQQ,2QUmUO	[
QUOQQ,2[UmUO	[OQUOQQ,2P!)Frurwz1 is not callabler{z\(\) is not callablez(argument --foo: invalid pow value: 'bar'r&)	r:r;r�ryrerIrK�powr��rrAr{s&  r�test_modified_invalid_action�.TestInvalidAction.test_modified_invalid_action
s����(�(�u�=���$�$�W�-��������y�*=�%�0�0�7�E�2B�	D�������y�*A�%�0�0�7�E�2B�	D�������x�5�5�I�%�0�0�7�E�2B�	Drr&)r)r*r+r,r-r:rgr�r�r�r.r/rRs@rr�r�
s*����*�
�H�O�O�
�T�D�Drr�c�``�\sQsQsnQsQsQ'QksU1QksQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQs Qs!Q s"Q!s#Q"s$Q#s%Q$s&Q%s'Q&s(Us)U9s*!)(�TestAddSubparsersi7
zTest the add_subparsers methodc�>�UO[,UN3-U@P!r��r�r�r�s&*,r�assertArgumentParserError�+TestAddSubparsers.assertArgumentParserError;
������-�?��?��?rc���U%c:[QQUUQ5oUOU]*]*Q*QQQ5L"[QQUQ5oUOQQQQ5UOQ	[Q
Q5QP
-oU%cQ
UQ$QUQ$LQUQ$UOQ1-U@oUO	[
QUO2[
QQ5oU%cQUQ$U%cQQ,UQ$UOQ2-U@o	U	OQ[QQ5U	OQ,Q3NQQ5[
QQ5o
U%cQ U
Q$UOQ4-U
@oUOQ!,Q5NQ"Q5UOQ#[Q$Q%Q&5[
Q'Q(Q)5oU%cQ*UQ$UOQ6-U@o
U
OQ+[Q,Q5U
OQ-Q.Q/Q05U!)7�PROG�main description)�prog�description�usager�r7ry�foo help�r{r�)r�r�r�rwr{�bar help�ryr�r+�COMMAND�metavar�commands�title�command helpr�z(cannot have multiple subparser argumentsz
1 description�r�z1 help�1alias1�1alias2�aliasesr��w helprp�x helpr�z
2 descriptionz2 helpr��y helpr�r�z help)ryrr�z
3 descriptionzPROG --foo bar 3 t ...)r�r�z3 help�tzt help�urPzu help�rr�r&�r�r)r�r�rr�r�)
rr�r[r�rerN�dictr�r�r')r�subparser_helpr�r�r�rA�subparsers_kwargsr��parser1_kwargs�parser1�parser2_kwargsr��parser3_kwargs�parser3s&&&&&         rr��TestAddSubparsers._get_parser>
s���/��);�5�)�+�F�
����Q��!�#�e�+�L�z�
 �
S�0��);�5�J�F������:�
 �
?������J�	�	0�(��/���+4��i�(�)3��g�&�(6��f�%��*�*�?�->�?�
����z�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�~:�[RU_2UO2UmUOP	Q5UmP!)T)r�)rr�r�rA�command_help_parserr�s&�rr��TestAddSubparsers.setUpy
s2���
��
���&�&�(���#'�#3�#3�4�#3�#H�� rc��QFD9oUO2oUOUOOU2J;	P!)r')r'rnza az0.5 az0.5 1�0.5 1 -yz0.5 2 -w)rYr�rArK)rrZr�s&  r�test_parse_args_failures�*TestAddSubparsers.test_parse_args_failures~
s4��1�H��>�>�#�D��*�*�4�;�;�+A�+A�4�H�1rc��QFD�vqoUOU29^tt^2UO2oUO[29^tt^2oUOOU2PPP2UO
WOO]*Q2UO
UOO]*UQUQ02PPP2J�	P!)%fhK~9h)%fhCJ9h)r'rr())r'z(usage: PROG [-h] [--foo] bar {1,2,3} ...�6PROG: error: the following arguments are required: bar�r�z%usage: PROG bar 1 [-h] [-w W] {a,b,c}z:PROG bar 1: error: the following arguments are required: x�z0.5 3zusage: PROG --foo bar 3 t ...z:PROG bar 3: error: the following arguments are required: t)	rLrYr�r�rArKr�rGr�)rrZ�	usage_str�	error_strr�rIs&     r� test_parse_args_failures_details�2TestAddSubparsers.test_parse_args_failures_details�
s���
/
�*�H�����h�'�'��~�~�'���&�&�':�;�;�r��K�K�*�*�4�0�<�� � ����!2�!2�1�!5�|�D�� � ����!2�!2�1�!5�)��B�y�k�QS�7T�U�(�'�
/
�<�;��(�'�'�s0�.C7	�C$
�.A(C7	�$C4�-C4�/C7	�7D	
�D	
c�&�UOQQ5oQFD�vq#oUOU29^tt^2UO2oUO[29^tt^2oUOU2PPP2UO
WOO]*Q2UO
UOO]*UQUQ02PPP2J�	P!)%fhK~9h)%fhJ�9h)z?PROG [--foo] bar 1 [-w W] {a,b,c}
       PROG --foo bar 3 t ...)r�rr())r'zFusage: PROG [--foo] bar 1 [-w W] {a,b,c}
       PROG --foo bar 3 t ...r�r�r�)	r�rLrYr�r�rKr�rGr�)rrArZr�r�r�rIs&      r�-test_parse_args_failures_details_custom_usage�?TestAddSubparsers.test_parse_args_failures_details_custom_usage�
s����!�!�)A�!�B��/
�*�H�����h�'�'��~�~�'���&�&�':�;�;�r��%�%�d�+�<�� � ����!2�!2�1�!5�|�D�� � ����!2�!2�1�!5�)��B�y�k�QS�7T�U�(�'�/
�<�;��(�'�'�s0�.C?	�$C,
�6A(C?	�,C<�5C<�7C?	�?D
�D
c
�@�UOUOOQO22[	P
Q]QQ52UOUOOQO22[	P	QQQQ,Q52UOUOOQ	O22[	P	Q
PQQ52UOUOOQO22[	P
Q],QNQ
52P!)�0.5 1 b -w 7rYr	�r7r{r�rpz0.25 --foo 2 -y 2 3j -- -1jrRry@)r7r{r�r�z--foo 0.125 1 crTr
z-1.5 3 11 -- a --foo 7 -- b)r7r{r�r�r{r&)rnrwr��--r	)r�rArKrYr�r$s&rrl�!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
���UOUOOQO22[	P
Q]QQ5,12UOUOOQO22[	P
Q]QQ5Q,12UOUOOQO22[	P
Q]QQ5Q,12UOUOOQO22[	P
Q]QQ5QQ	,12UOUOOQ
O22[	P
Q]QQ5,QN12P!)r�rYr	r�z0.5 -p 1 b -w 7�-p�0.5 1 b -w 7 -pz0.5 1 b -q -rs -w 7�-qz-rsz0.5 -W 1 b -X Y -w 7 Z)z-Wr�rTrQ)r�rA�parse_known_argsrYr�r$s&r�test_parse_known_args�'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�x�QQ2oUOUOOQO2UQ5UQ,12UO	UO
P
2UOUOQ2UOUO]2UOUOQ2P!)c��\sQsQsQsP!)�ETestAddSubparsers.test_parse_known_args_to_class_namespace.<locals>.Ci�
r&r�r&rrrAr�
���rrAr�)rXr�rYr	)	r�rAr�rY�assertIsr7r{r�rp)rrAs& r�(test_parse_known_args_to_class_namespace�:TestAddSubparsers.test_parse_known_args_to_class_namespace�
s���	�	�����K�K�(�(�):�)@�)@�)B�a�(�P�
���K�	
�	
�
�
�a�e�e�U�#��������$�������a� �������c�"rc
�>�[2oUOQ2UOQ2UO2oUOQ2oUOQ2UOQ2UO	UO,QN2[
QPPPQ52UO	UO,QN2[
PQPPQ52UOUO
,Q	N2UO	UO,Q
N2[
PPQPQ52UO	UO,QN2[
PPPQQ52UO	UO,QN2[
PPPQQ52UOUO
,Q
N2P!)r�r�r{�--foz--foonewr})r�r��fo�foonew)r�r}r{)�--foonr}r{)r
r}r{)r{r
r})r{rwr})r{r
r})r{r�r})rr�r�r�r�rKr�r��rrAr�r�s&   r�test_abbreviation�#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��[2oUOQQQ]Q5UOQQQ]Q5UOUOQQ,2[	]]Q5Q,12UOUOQQ,2[	]]Q5Q,12UOUOQ,2[	]]Q5Q,12UOUOQ	,2UOUOQ
,2[	]]Q5Q
,12UOUOQ,2[	]]Q5Q,12UOUOQ,2[	]]Q5Q
,12UOUOQ,2UOUOQ,2[	]]Q5Q,12UOUOQ,2[	]]Q5Q,12UOUOQ,2UOUOQ,2UOUOQ,2UOUOQ,2[	]]Q5Q,12P!)z-kz--knownr�r�r�z--newz-u)�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)rr�r�r�r�r�r@s& r�-test_parse_known_args_with_single_dash_option�?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� �[2oUOQQQ5UOQQ5oUOQ2oUOQ2UO	[P
QQQ5UO
Q	O222P!)
rwryrzr{r�r�r}rrar�)rr�r�r�r�r�rKrYrs&   r�	test_dest�TestAddSubparsers.test_dests{��+�-�����G�L��9��*�*��*�6�
��'�'��,�����U�#������3�C�8��*�*�5�;�;�=�9�	;rc��UOQ,2oUOUOQ2UOUOQ2P!)�runr&)rKr��commandr�)rrA�rets&& r�_test_required_subparsers�+TestAddSubparsers._test_required_subparserss@�������(��������e�,�	
�&�&�v�'8�'8�"�=rc��[2oUOQQ5oP	UmUOQ2UO	U2P!)rr�r)rr�r+r�r�rrAr�s&  r�&test_required_subparsers_via_attribute�8TestAddSubparsers.test_required_subparsers_via_attribute&sA��+�-���*�*�	�*�:�
�"�
�����e�$��&�&�v�.rc��[2oUOQP	Q5oUOQ2UOU2P!)r�r�r+r)rr�r�rr s&  r�"test_required_subparsers_via_kwarg�4TestAddSubparsers.test_required_subparsers_via_kwarg-s;��+�-���*�*�	�D�*�I�
����e�$��&�&�v�.rc��[2oUOQQ5oUOQ2UOQ2oUO	UO
2P!)rr�rr&�rr�r�rK�assertIsNoner�rrAr�rs&   r� test_required_subparsers_default�2TestAddSubparsers.test_required_subparsers_default3sM��+�-���*�*�	�*�:�
����e�$�����#�����#�+�+�&rc�d�[2oUOP	Q5oUOQ2UOQ2UO[29^tt^2oUOQ2PPP2UO
WOOQ2P!)%fhK89h)Tr�r7r{z8error: the following arguments are required: {foo,bar}
$r&)	rr�r�r�r�rKrNrGr�r�s&   r�-test_required_subparsers_no_destination_error�?TestAddSubparsers.test_required_subparsers_no_destination_error;s���+�-���*�*�D�*�9�
����e�$����e�$�
�
�
�2�
3�
3�w����b�!�4�������$�$�G�	
�4�
3�r�c��[2oUOQP
Q5oUOQ2UOQ2oUO	UO
2P!)rr$rr&r(r*s&   r�test_optional_subparsers�*TestAddSubparsers.test_optional_subparsersGsO��+�-���*�*�	�E�*�J�
����e�$�����#�����#�+�+�&rc��[QQ5oUOQP	Q5UOQ2UO2oUOQ2oUOQ2UO	UO2Q2P!)r��r�rwr�r��subr�z#usage: PROG --foo FOO sub [-h] arg
)rr�r�r�r�r�)rrAr��
parser_subs&   r�1test_subparser_help_with_parent_required_optional�CTestAddSubparsers.test_subparser_help_with_parent_required_optionalOsv��+��8�����G�d��3����G�$��*�*�,�
��*�*�5�1�
�����&�����0�0�2�?�	Arc���UOUOO2Q2UOUOO2[O
Q22P!)�)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�rAr�r�rerfr$s&r�	test_help�TestAddSubparsers.test_helpYsQ��������1�1�3�E�	G�������0�0�2�H�O�O�E�5�	rc���UOQQ5oUOUO2Q2UOUO2[O
Q22P!)z+:-rbz)usage: PROG [-h] [++foo] bar {1,2,3} ...
a?            usage: PROG [-h] [++foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              ++foo       foo help
            �r�r�r�r�rerfr@s& r�test_help_extra_prefix_chars�.TestAddSubparsers.test_help_extra_prefix_charsjs\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc��[QQQ5oUOQQQQ5UOUO2[O
Q22P!)r�r��r�r�z--non-breakingr8uRhelp 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
        �rr�r�r�rerfr@s& r�test_help_non_breaking_spaces�/TestAddSubparsers.test_help_non_breaking_spaces}s[��+��%7�9������]�;�	�	<�	
����+�+�-�x���	@�	0
�		rc�Z�[QQQ5oUOQQQ5UOUO2[O
Q22[QQQ5oUOQ,QQ5UOUO2[O
Q	22P!)
r�r�rBr7z    �r�z�            usage: PROG [-h] foo

            main description

            positional arguments:
              foo         

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

            main description

            positional arguments:
              {}          

            options:
              -h, --help  show this help message and exit
        rCr@s& r�test_help_blank�!TestAddSubparsers.test_help_blank�s���+��%7�9�������	�	�	
����+�+�-�x���	@�	0
�		�,��%7�9������2��	�	 �	
����+�+�-�x���	@�	0
�		rc���UOQQ5oUOUO2Q2UOUO2[O
Q22P!)r�rbz)usage: PROG [+h] [++foo] bar {1,2,3} ...
a?            usage: PROG [+h] [++foo] bar {1,2,3} ...

            main description

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

            options:
              +h, ++help  show this help message and exit
              ++foo       foo help
            r>r@s& r� test_help_alternate_prefix_chars�2TestAddSubparsers.test_help_alternate_prefix_chars�s\���!�!�u�!�5������,�,�.�E�	G�����+�+�-�x���@�0�	rc���UOUOO2Q2UOUOO2[O
Q22P!)r:a�            usage: PROG [-h] [--foo] bar {1,2,3} ...

            main description

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

            options:
              -h, --help  show this help message and exit
              --foo       foo help
            )r�r�r�r�rerfr$s&r�test_parser_command_help�*TestAddSubparsers.test_parser_command_help�sU������1�1�>�>�@�E�	G�����1�1�=�=�?�!���*��	rc���UO[Q29^tt^2oUU-U@PPP2UOWOOU2P!)%fhK89h)�badly formed help string)rerN�assertIsInstancerG�__context__)r�context_typerFr�r�rIs&&&*, r�assert_bad_help�!TestAddSubparsers.assert_bad_help�sO��
�
#�
#�J�0J�
K�
K�r��$�!�&�!�L����b�l�l�6�6��E�L�
K�s�
A�A*	�#A*	c��[QQ5oUO[UOQQ5[QQ5oUO[UOQQ5[QQ5oUO[
UOQQ5P!)r�r4�%Y-%m-%drG�%(spam)s�%(prog)d)rrUrNr��KeyErrorrIr@s& r�test_invalid_subparsers_help�.TestAddSubparsers.test_invalid_subparsers_help�sq��+��8�����Z��)>�)>�Z��P�+��8�����X�v�'<�'<�:��N�+��8�����Y��(=�(=�J��Orc��[QQ5oUO2oUO[UOQQQ5UO[
UOQQQ5UO[UOQQQ5P!)r�r4r�rXrGrYrZ)rr�rUrNr�r[rIr s&  r�test_invalid_subparser_help�-TestAddSubparsers.test_invalid_subparser_help�s���+��8���*�*�,�
����Z��)>�)>��",�	�	.����X�z�'<�'<�c�",�	�	.����Y�
�(=�(=�s�",�	�	.rc��[QQQ5oUOQQQQ5UOQQQ	5UOQ
QQQ
5oUOQ2oUOQ2oUO	UO2Q2UO	UO
2[OQ22P!)r�r�rBrwryr�r�r{r�rG�subcommandsr�zadditional text�r�r�r�r�rz'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
            )	rr�r�r�r�r�r�rerf)rrAr�r�r�s&    r�test_subparser_title_help�+TestAddSubparsers.test_subparser_title_help�s���+��8J�L�����G�L�z��J����E�
��3��*�*��7E�0A�+�C�
��'�'��,���'�'��,������,�,�.�C�	E�����+�+�-�x���@�0�	rc��UO[29^tt^2oUOOUO	22PPP2UOUWOO2P!)%fhK89hr�)r�r�rArKrYr�rGr�)rrZ�
expected_helprIs&&& r�_test_subparser_help�&TestAddSubparsers._test_subparser_help
sW��
�
�
�2�
3�
3�r��K�K�"�"�8�>�>�#3�4�4��������(;�(;�<�4�
3�s�*A9�9B		�B		c�T�UOQ[OQ22P!)z5.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
            �rhrerfr$s&r�test_subparser1_help�&TestAddSubparsers.test_subparser1_help�"���!�!�*�h�o�o�?�/�	rc�T�UOQ[OQ22P!)z5.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
            rkr$s&r�test_subparser2_help�&TestAddSubparsers.test_subparser2_help rnrc
�$�UOP	Q5oUOUOQO22[	P
QPQQ5,12UOUOQO22[	P
QPQQ5,12P!)T�r�z
0.5 1alias1 brYr	r�z
0.5 1alias2 b)r�r�r�rYr�r@s& r�test_alias_invocation�'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��UOP	Q5oUOUOQO22P!)Trsz
0.5 1alias3 b)r�r�rKrYr@s& r�test_error_alias_invocation�-TestAddSubparsers.test_error_alias_invocation9s8���!�!�$�!�/���&�&�v�'8�'8�'6�'<�'<�'>�	@rc��UOP	P	Q5oPUmUOUO2[O
Q22P!)T)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�r�rerfr@s& r�test_alias_help�!TestAddSubparsers.test_alias_help>sH���!�!�$�t�!�D���������+�+�-�x���@�0�	r)r�rzrA)FNFN)+r)r*r+r,r-r�r�r�r�r�r�rlrrrrrrr!r%r+r.r1r7r;r?rDrHrKrNrUr\r_rdrhrlrprtrwr{r.r/r0r1s@@rr�r�7
s�����(�@�9�vI�
I�V�&V�,
�&
�,
#�T�,9�8;�>�/�/�'�

�'�A��"�&�$ �D�$�*F�
P�.��<=�
��	
�@�
�rr�c�8`�\sQsQsnQsQsQsQsQsUs	P!)�TestPositionalsGroupsiYz@Tests that order of group positionals matches construction orderc� �[2oUOQ2UOQ2oUOQ2UOQ2[QQQQ5oUO	QO22oUO
V42P!)	r7r�r{r}r�rr�ra�1 2 3)rr�r)r�rKrYr��rrAr*�expectedr
s&    r�test_nongroup_first�)TestPositionalsGroups.test_nongroup_first\sv��+�-�����E�"��)�)�#�.��
���5�!����E�"��#�3�C�0���"�"�7�=�=�?�3������*rc� �[2oUOQ2oUOQ2UOQ2UOQ2[QQQQ5oUO	QO22oUO
V42P!)	�xxxr7r{r}r�rr�rar��rr)r�r�rKrYr�r�s&    r�test_group_first�&TestPositionalsGroups.test_group_firstfsv��+�-���)�)�%�0��
���5�!����E�"����E�"��#�3�C�0���"�"�7�=�=�?�3������*rc�f�[2oUOQ2oUOQ2UOQ2UOQ2UOQ2oUOQ2[QQQQ	Q
5oUO	QO22oUO
V42P!)r�r7r{r}r��frellr�rr�r0)r7r{r}r�z1 2 3 4r�r�s&    r�test_interleaved_groups�-TestPositionalsGroups.test_interleaved_groupsps���+�-���)�)�%�0�����E�"�
���5�!����E�"��)�)�%�0��
���7�#��#�3�C�s�;���"�"�9�?�?�#4�5������*rr&)
r)r*r+r,r-r�r�r�r.r/rRs@rr~r~Ys����J�+�+�
+�
+rr~c�4`�\sQsQsnQsQsQsQsUsP!)�TestGroupConstructori|c�@�[2oQoUO[29^tt^2oUOQQ5PPP2UO	U[WO22UO	UO[2P!)%fhKW9h)�jThe use of the undocumented 'prefix_chars' parameter in ArgumentParser.add_argument_group() is deprecated.rIrb�	rr��DeprecationWarningr)r�r^r�r�r��rrArWrIs&   r�test_group_prefix_chars�,TestGroupConstructor.test_group_prefix_chars}sv��+�-��
A�	��
�
�0�
1�
1�R��%�%�4�%�8�2�����c�"�*�*�o�.�������h�/�2�
1���B
�
B	�B	c�@�[2oQoUO[29^tt^2oUOQQ5PPP2UO	U[WO22UO	UO[2P!)%fhKW9h)r�rJrbr�r�s&   r�test_group_prefix_chars_default�4TestGroupConstructor.test_group_prefix_chars_default�sx��,�-��
A�	��
�
�0�
1�
1�R��%�%�3�%�7�2�����c�"�*�*�o�.�������h�/�2�
1�r�c��[O2oUO2oUO[QUO2P!)z argument groups cannot be nested)r:r;r)rerN�rrAr�s&  r�test_nested_argument_group�/TestGroupConstructor.test_nested_argument_group�s:���(�(�*���%�%�'�����z�!C�!"�!5�!5�	7rr&)	r)r*r+r,r�r�r�r.r/rRs@rr�r�|s����	0�0�7�7rr�c�``�\sQsQsnQsQsU1QksQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsUsU9s!)�TestParentParsersi�z5Tests that parsers can be created with parent parsersc�>�UO[,UN3-U@P!r�r�r�s&*,rr��+TestParentParsers.assertArgumentParserError�r�rc�D:�[RU_2[P
Q5UmUOO	Q2UOOQ2oUO	Q2UOO	Q2[P
Q5UmUOO	Q2UOO	Q2UOOQ2oUO	Q	2[P
Q5UmUOO	Q2[P
Q5UmUOO	Q2[P
Q5Um	UOO2oUO	Q
QQ5UO	QQQ5P!)
F�r�z--wrpr�r�rnr�r
z--drryrz)rr�r�wxyz_parentr�r)�abcd_parent�w_parent�z_parent�ab_mutex_parent�add_mutually_exclusive_group)r�x_group�c_groupr*rs&   �rr��TestParentParsers.setUp�sC���
��
��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���5rc	��[UO,Q5oUOUOQO	22[QQQQ52P!)��parentsz-y 1 2 --w 3r�r�r�r�r�r�)rr�r�rKrYr�r@s& r�test_single_parent�$TestParentParsers.test_single_parent�sE��+�T�5E�5E�4F�G������*�*�>�+?�+?�+A�B��c�S�C�0�	2rc��UOUOO2[UO,Q5oUOUO2P!�r�)�_test_mutex_abr�rKrr@s& r�test_single_parent_mutex�*TestParentParsers.test_single_parent_mutex�sC�����D�0�0�;�;�<�+�T�5I�5I�4J�K�����F�-�-�.rc��UO,o[P
UQ5o[U,Q5oUOUO2P!)F)r�r�r�)r�rr�rK�rr�rAs&  r�test_single_grandparent_mutex�/TestParentParsers.test_single_grandparent_mutex�s<���'�'�(��+�U�G�L��+�V�H�=�����F�-�-�.rc��UOU,2[P
P
Q52UOUQ,2[P	P
Q52UOUQ,2[P
P	Q52UOUQQ,2UOUQQ,2UOUQ,2UOUQQ,2UOUQQ,2P!)F�rnr	rr�r�)r�r�r�)rrKs&&rr�� 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���UOUO,o[UQ5oUOUO	QO22[
QPQQPQQ52P!)r�z--d 1 --w 2 3 4r�r�rr0)rnr	rr�r�r�)r�r�rr�rKrYr�r�s&  r�test_multiple_parents�'TestParentParsers.test_multiple_parents�sZ���#�#�T�%5�%5�6��+�G�<������*�*�+<�+B�+B�+D�E��c�T�S�C�4�3�G�	Irc�r�UOUO,o[UQ5oUOUO	QO22[
P	P
QPQQ52UOUOQO22UOUOQO22P!)r�z
-a --w 2 3rr�)rnr	r�r�r�z
-a --w 2 3 -bz
-a -b --w 2 3)r�r�rr�rKrYr�r�r�s&  r�test_multiple_parents_mutex�-TestParentParsers.test_multiple_parents_mutex�s����'�'��)9�)9�:��+�G�<������*�*�<�+=�+=�+?�@��d�e�s�d�c�B�	D��&�&�����4�4�6�	8��&�&�����4�4�6�	8rc��UO[O[OUOUO
,Q5P!r�)r�r:r�r;r�r�r$s&r�test_conflicting_parents�*TestParentParsers.test_conflicting_parents�s9������"�"��#�#��]�]�D�$4�$4�5�	�	7rc��UO[O[OUOUO
,Q5P!r�)r�r:r�r;r�r�r$s&r�test_conflicting_parents_mutex�0TestParentParsers.test_conflicting_parents_mutex�s;������"�"��#�#��%�%�t�';�';�<�	�	>rc	���UOUO,o[UQ5oUOUO	QO22[
PPQQ52P!)r�r�rr�)r�r�rr�rKrYr�r�s&  r�test_same_argument_name_parents�1TestParentParsers.test_same_argument_name_parents�sM���#�#�T�]�]�3��+�G�<������*�*�5�;�;�=�9��d�d�c�2�	4rc
��[2oUO2oUOQUO,Q5oUO	Q2UOUO
QO22[QQQQQ52P!)	r{r�rzbar -b 1 --d 2 3 4r�r�rr0)rnr	rr)	rr�r�r�r�r�rKrYr�)rrAr��abcde_parsers&   r�test_subparser_parents�(TestParentParsers.test_subparser_parents�sw��+�-���*�*�,�
�!�,�,�U�T�=M�=M�<N�,�O���!�!�#�&�����*�*�+?�+E�+E�+G�H��c�S�C�3�7�	9rc���[2oUO2oUO,oUOQUQ5oUO	Q2oUOQ2UOUO,oUOQUQ5oUOQ2UOUOQO22[P	P
QQ52UOUOQ	O22[P
P	Q
PQQQ52UOUOQ
O22UOUOQO22P!)r7r�r�r
r{rzfoo -a 4r0rzbar -b  --w 2 3 4rr�)rnr	r�r�r�rzfoo -a -b 4zbar -b -a 4)rr�r�r�r)r�r�r�rKrYr�r�)rrAr�r��
abc_parserr��wxyzabe_parsers&      r�test_subparser_parents_mutex�.TestParentParsers.test_subparser_parents_mutex
s>��+�-���*�*�,�
��'�'�(���*�*�5�'�*�B�
��/�/�	�:�����S�!��#�#�T�%9�%9�:��#�.�.�u�g�.�F���#�#�C�(�����*�*�:�+;�+;�+=�>��d�e�s�3�	5�����*�*�+>�+D�+D�+F�G��e�t�s�d�c�S�I�	K��&�&����}�2�2�4�	6��&�&����}�2�2�4�	6rc��UOUO,o[QUQ5oUO2oUO	U[
OQ22P!)r��r�r�aH            usage: PROG [-h] [-b B] [--d D] [--w W] [-y Y] a z

            positional arguments:
              a
              z

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

            c:
              --d D

            x:
              -y Y
        )r�r�rr�r�rerf)rr�rA�parser_helps&   r�test_parent_help�"TestParentParsers.test_parent_help
sR���#�#�T�%5�%5�6��+���I���(�(�*������h�o�o�7�'
�	rc��[P
Q5oUOQQQ5oUOQ2UOQ2UO2oUOQ2UOQ2[Q	U,Q
5oUO	[
UO,QN2UO2oUOU[OQ22P!)
Fr�r��gd�r�r�r�rmr�rr�r�z�            usage: PROG [-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�rTrrQ�rr)r�r�r�r�rKr�r�rerf�r�parentr�r�rAr�s&     r�test_groups_parents�%TestParentParsers.test_groups_parents/
s���+�U�;���%�%�C�T�%�B��	���t��	���t���/�/�1��	���t��	���t��+��&��J�����-�v�/@�/@�"�	$��(�(�*������h�o�o�
7�
'
�
	rc�B�UO[[],Q5P!)rr�)r�rIrr$s&r�test_wrong_type_parents�)TestParentParsers.test_wrong_type_parentsL
s�����)�%?�!���Mrc��[P
Q5oUOQQQ5oUOQ2UOQ2UO2oUOQ2UOQ2[Q	U,Q
5oUO	[
UO,QN2UO2oUOU[OQ22P!)
Fr�r�r�r�r�rmr�rr�r�z�            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�s&     r�test_mutex_groups_parents�+TestParentParsers.test_mutex_groups_parentsO
s���+�U�;���%�%�C�T�%�B��	���t��	���t��
�*�*�,��	���t��	���t��+��&��J�����-�v�/@�/@�"�	$��(�(�*������h�o�o�
7�
'
�
	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/r0r1s@@rr�r��sf����?�@�6�42�
/�
/�A�I�8�7�>�4�9�6�&�.�:N��rr�c�L`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sUsP!)
� TestMutuallyExclusiveGroupErrorsip
c�f�[2oUOoU[UOQQ5P!)r7)r�)rr�rIr�)rrA�raisess&  r�test_invalid_add_argument_group�@TestMutuallyExclusiveGroupErrors.test_invalid_add_argument_groups
s'��+�-���"�"���y�&�=�=�U�Krc�$�[2oUO2oUOoUOoU[UQP	Q5U[UQ2U[UQQQ5U[UQ]Q5U[UQ[
OQ5P!)rwr�r{rr)rr�r�r�rNr:�PARSER)rrAr*r�r�s&    r�test_invalid_add_argument�:TestMutuallyExclusiveGroupErrors.test_invalid_add_argumentx
sv��+�-���3�3�5���)�)���"�"���z�<��4�@��z�<��/��z�<��c�:��z�<��a�8��z�<��h�o�o�Frc�d�[QQ5oUO2oUOQQQ5UOQQQ5UO2oUOQQQ5UOQQQ5Q	oUOUO	2[
OU22P!)
r�r4rwryrzr�r8z--soupz--nutsz�            usage: PROG [-h] [--foo | --bar] [--soup | --nuts]

            options:
              -h, --help  show this help message and exit
              --foo
              --bar
              --soup
              --nuts
              �rr�r�r�r�rerf)rrA�group1�group2r�s&    rr;�*TestMutuallyExclusiveGroupErrors.test_help�
s���+��8���4�4�6�����G�L��9����G�M��:��4�4�6�����H�\��:����H�]��;�	��	
����+�+�-�x���x�/H�Irc���[QQ5oUOP	Q5oUOQ2UOQQQ5QoUOUO	2[
OU22[QQ5oUOP	Q5oUOQQQ5UOQ2UOUO	2[
OU22P!)r�r4r�rwr{r|rz�            usage: PROG [-h] (--foo FOO | bar)

            positional arguments:
              bar

            options:
              -h, --help  show this help message and exit
              --foo FOO
              r�)rrAr*r�s&   r�test_optional_order�4TestMutuallyExclusiveGroupErrors.test_optional_order�
s���+��8���3�3�T�3�B��
���7�#�
���5���,�	��	
����+�+�-�x���x�/H�I�+��8���3�3�T�3�B��
���5���,�
���7�#�����+�+�-�x���x�/H�Irc	���PUm[QQ5oUOQQQ5oUOQ2oUO	2oUOQQ[OQ	5UOQ
Q[OQ	5QoQoUOU2QUQUQ
UQUQ0	oUOUO2[OU22P!)Nr�r4r�r)r�r�r7r�ryr��--quietz>            usage: PROG foo [-h]
                            [� zj]

            options:
              -h, --help            show this help message and exit
              z
              z�--longlonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglonglongڀLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONGLONG)rzrr�r�r�r�r:rbr�r�rerf)rrAr��cmd_foor*�longopt�longmetar�s&       r�Ctest_help_subparser_all_mutually_exclusive_group_members_suppressed�dTestMutuallyExclusiveGroupErrors.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��[QQ5oUO2oUOUO2Q2P!)r�r4�usage: PROG [-h]
)rr�r�r��rrAr*s&  r�test_usage_empty_group�7TestMutuallyExclusiveGroupErrors.test_usage_empty_group�
s4��+��8���3�3�5������,�,�.�0D�Erc��[OQQ5oUO2oUOQ2UO	[
QUO2P!)r�r4�--spamz*mutually exclusive groups cannot be nested)r:r;r�r�rerNr�s&  r�test_nested_mutex_groups�9TestMutuallyExclusiveGroupErrors.test_nested_mutex_groups�
sH���(�(�f�5���/�/�1��	���x� ����z�K� �=�=�	?r)rz)
r)r*r+r,r�r�r;r�rr
rr.r/rRs@rr�r�p
s3����L�
	G�J�(J�.K�*F�?�?rr�c�z`�\sQsQsnQsQsQsQs\Q2s	\Q2s
\Q2s\Q	2sQ
s
UsP!)�MEMixini�
c
�"�UOP
Q5Oo[oUOFDFoUO	UQ59^tt^2UOV!UO
22PPP2JH	P!)%fhJ]9h�Fr�rV��
get_parserrKr�rXrLr�rY�rrKr�args_strings&   r�test_failures_when_not_required�'MEMixin.test_failures_when_not_required�
sg���_�_�e�_�4�?�?�
�#���=�=�K����;��/�/��!�!�%�[�5F�5F�5H�I�0�/�)�/�/�/�s�!A=	�=B
�B
c
�2�UOP	Q5Oo[oUOP,*FDFoUO	UQ59^tt^2UOV!UO
22PPP2JH	P!)%fhJ]9h�Tr�rVrrs&   r�test_failures_when_required�#MEMixin.test_failures_when_required�
sq���_�_�d�_�3�>�>�
�#���=�=�B�4�/�/�K����;��/�/��!�!�%�[�5F�5F�5H�I�0�/�0�/�/�/�s�!B	�B
�B
c	�N�UOP
Q5OoUOUO*oSFDOvq4UO	UQ59^tt^2UUO22oUO
VT2PPP2JQ	P!)%fhJf9hr)rrKr]�successes_when_not_requiredrLrYr�)rrKr]rr_�	actual_nss&     r� test_successes_when_not_required�(MEMixin.test_successes_when_not_required�
s}���_�_�e�_�4�?�?�
��N�N�T�%E�%E�E�	�(1�$�K����;��/�/�&�{�'8�'8�':�;�	�� � ��8�0�/�)2�/�/�/�s�(B	�B$
�B$
c	�(�UOP	Q5OoUOFDOvq#UOUQ59^tt^2UUO	22oUOVC2PPP2JQ	P!)%fhJf9hr)rrKr]rLrYr�)rrKrr_r s&    r�test_successes_when_required�$MEMixin.test_successes_when_required�
sm���_�_�d�_�3�>�>�
�(,���$�K����;��/�/�&�{�'8�'8�':�;�	�� � ��8�0�/�)7�/�/�/�s�
(B	�B
�	B
c��UOP
Q5OoUOoUOU2[O
U22P!�Fr�)rr��usage_when_not_requiredr�rerf�rr��expected_usages&  r�test_usage_when_not_required�$MEMixin.test_usage_when_not_required�
s>�������6�C�C���5�5�����������)H�Irc��UOP	Q5OoUOoUOU2[O
U22P!�Tr�)rr��usage_when_requiredr�rerfr)s&  r�test_usage_when_required� MEMixin.test_usage_when_required�
s>�������5�B�B���1�1�����������)H�Irc���UOP
Q5OoUOUO*oUO	U2[
OU22P!r')rr�r(r�r�rerf�rr�r�s&  r�test_help_when_not_required�#MEMixin.test_help_when_not_required�
sG���o�o�u�o�5�A�A���+�+�d�i�i�7�����������(=�>rc���UOP	Q5OoUOUO*oUO	U2[
OU22P!r.)rr�r/r�r�rerfr3s&  r�test_help_when_required�MEMixin.test_help_when_requiredsG���o�o�t�o�4�@�@���'�'�$�)�)�3�����������(=�>rr&)r)r*r+r,rrr!r$rr+r0r4r7r.r/rRs@rrr�
so����J�J�9�9��J��J�
�J��J�
�?��?�
�?��?rrc	�`�\sQsQsnQQksQQ,sQ\QPQ51Q\Q	PQ51Q
\PQQ51Q\PQ	Q51,sP\PPQ51,sQ
s	Qs
QsQsUs
P!)�TestMutuallyExclusiveSimplei	c��[QQ5oUOUQ5oUOQQQ5UOQQQQ	Q
5U!)r�r4r�r�r�rGr�r|rQ�baz help)rr~r��rr�r��rr+rAr*s&&  rr�&TestMutuallyExclusiveSimple.get_parsersN��+��8���3�3�X�3�F��
���7���4�
���7�#�S�z��J��
r�--bar X --baz Yz
--bar X --baz�--bar Xr��r{r}z--bar X --bar ZrQ�--baz YrTr�z;        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
        r&r��r)r*r+r,rrXr�r]rr(r/r�r.r/rRs@rr:r:	s������"�?�3�H�	�B�3�D�)�*�	�B�3�D�1�2�	�B�4�S�)�*�	�"��3�'�(�	�I�
�R�D�d�
#�$�#�������Drr:c��`�\sQsQsnQQksQ,sQ\PPQPQ51Q\QPQPQ51Q	\PPPQQ51Q
\PQPQQ51,sP\PPPPQ51,sQs	Qs
Q
sQsUs
P!)�TestMutuallyExclusiveLongi,c���[QQ5oUOQQQ5UOQQQ5UOUQ5oUOQQ	Q5UOQ
QQ5U!)r�r4z--abcdez
abcde helprGz--fghijz
fghij helpr�z--klmnoz
klmno helpz--pqrstz
pqrst help�rr�r�r>s&&  rr�$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 Xr�)�abcde�fghij�klmno�pqrstz--abcde Y --klmno XrTz	--pqrst Xz--pqrst X --fghij Yzi    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
    r&r�rDrRs@rrFrF,s������&�&�H�	�b�t�4�s�$�G�H�	��S��C�t�<�	>�	�b�t�4�t�3�G�H�	��T��D��<�	>��I�
�R�d�$�d�$�
?�@�#�������DrrFc�`�\sQsQsnQsQ,sQ\QP	Q51Q\QP	Q51Q	\PP
Q51,sP\PP	Q51,sQ
s	Qs
QsQ
sUs
P!)�$TestMutuallyExclusiveFirstSuppressediWc��[QQ5oUOUQ5oUOQ[OQ5UOQQQQ5U!)	r�r4r�rmrGr�r8r�r��rr�r�r:rbr>s&&  rr�/TestMutuallyExclusiveFirstSuppressed.get_parserYsR��+��8���3�3�X�3�F��
���4�h�&7�&7��8�
���4�
�H��E��
rz-x X -yz-x Xr�r�z	-x X -x YrTr�z&        usage: PROG [-h] [-y]
        z$        usage: PROG [-h] -y
        zm
        options:
          -h, --help  show this help message and exit
          -y          y help
        r&rDrRs@rrOrOWsw������{�H�	��c�T�"�#�	�b�3�$�'�(�	
�r�D�E�"�#��I�
�R�$�$�
� �#�������DrrOc
�`�\sQsQsnQs,QNsQ\P	P	PQ51Q\P
P
PQ51Q\P
P	QQ51Q\P	P	PQ51,sP\P
P	PQ51,sQ	9s	s
Q
sQsUs
P!)
�#TestMutuallyExclusiveManySuppressedixc���[QQ5oUOUQ5oUOoUQQ[OQ5UQQ[OQ5UQ[OQ	5U!)
r�r4r�r
ryr�r�r8z	--bladderrGrQ)rr+rAr*r�s&&   rr�.TestMutuallyExclusiveManySuppressed.get_parserzsc��+��8���3�3�X�3�F��� � ���H�\��0A�0A�B��J�}�8�3D�3D�E��K�h�/�/�0��
rr
)rr��bladderr�z--bladder Br�z
--spam --spamz!        usage: PROG [-h]
        �P
        options:
          -h, --help  show this help message and exit
        r&)z--spam --badgerz--badger --bladder Bz--bladder B --spam�r)r*r+r,rrXr�r]rr/r(r�r.r/rRs@rrTrTxs�������H�
�2�4��d�;�<�	�R�U�5�$�?�@�	���d�C�@�A�	�"�$�t�T�B�C�	�I�
�R�U�4��
6�7�#��5���1��DrrTc
��`�\sQsQsnQs,Q
NsQ\P	P,Q51Q\P
Q,Q51Q\P
PQ,Q51Q\P
P,QNQ51,sP\P
P,Q51,sQ	s	Q
s
QsQsUs
P!)�*TestMutuallyExclusiveOptionalAndPositionali�c��[QQ5oUOUQ5oUOQQQQ5UOQQQ	5UOQ
QQQ
5U!)r�r4r�rwry�FOOr�r
�SPAMrGr�r�BADGERr�r=r>s&&  rr�5TestMutuallyExclusiveOptionalAndPositional.get_parser�sa��+��8���3�3�X�3�F��
���7�<�e��D�
���8�&��1�
���8�3�X��>��
rrw�r7rr�z--spam S�Sr�zX Y ZzD        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&)z--foo --spam Sz
--spam S XzX --foozX Y Z --spam S�	--foo X Y�r�rTrQrDrRs@rr[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�R`�\sQsQsnQs,QNsQ\P	P
P
P
P
P
Q51Q\P
P	P
P
P
P
Q51Q\P
P
P	P
P
P
Q51Q\P	P
P
P	P
P
Q51Q\P
P	P
P
P	P
Q51Q	\P
P
P	P	P	P
Q51,sP\P
P
P
P
P
P
Q51Q
\P
P
P
P	P
P
Q51Q\P
P
P
P
P	P
Q51,sQs	Q
s
QsQsUs
P!)�#TestMutuallyExclusiveOptionalsMixedi�c�4�[QQ5oUOQQQQ5UOUQ5oUOQQQQ5UOQ	QQ
Q5UOQQQQ5UOQ
QQQ5UOQQQQ5U!)r�r4rmryr�r�r�r�a helpr��b helpr�r�r��c helprr�rHr>s&&  rr�.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����D��H��E��
rr�rnr	r
rpr�r�r�r�z-a -xz-y -bz-x -y -crmr�z?        usage: PROG [-h] [-x] [-a | -b | -c] [-y] [-z]
        z?        usage: PROG [-h] [-x] (-a | -b | -c) [-y] [-z]
        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
          -z          z help
        r&)z-a -b�-b -cz-a -cz-a -b -crDrRs@rrfrf�s����	�7�H�	
�r�D�E�U�e�u��F�G�	
�r�E�T�U�e�u��F�G�	
�r�E�U�d�e�u��F�G�	�"�t�u����%�H�I�	�"�u����$�%�H�I�	�R�%�5�D�D�D�E�J�K�
�I�
�R�%�5�E�U�e�u�
E�F�	
�r�E�U�e�t�u��F�G�	
�r�E�U�e�u���F�G�#������
�Drrfc�`�\sQsQsnQQksQQ,sQ\QPQ51Q\PQ	Q51,sP\PPQ51,sQ
s	Qs
QsQ
sUs
P!)�TestMutuallyExclusiveInGroupi�c��[QQ5oUOQQQ5oUOUQ5oUOQQQ5UOQ	Q
Q5U!)r�r4zTitled groupzGroup descriptionr�r�r�r�rGr�r<)rr)r�r�)rr+rA�titled_group�mutex_groups&&   rr�'TestMutuallyExclusiveInGroup.get_parser�sk��+��8���0�0� �.A�1�C��
�5�5�x�5�H�	�� � ��z� �:�� � ��z� �:��
rr@z--baz X --bar YrAr�rBrCrTz9        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
        r&r�rDrRs@rroro�sl�����"�#4�5�H�	�B�3�D�)�*�	�B�4�S�)�*��I�

�R�D�d�
#�$�#������
�Drroc�`�\sQsQsnQs,QNsQ\QP
P
QP
P
Q51Q\PP	P
QP
P
Q51Q\PP
P	QP
P
Q51Q	\QP
P
QP	P
Q51Q
\PP	P
QP	P
Q51,sQ\PP
P
QP
P
Q51Q\PP
P
QP	P
Q51,sQs	Q
s
QsQsUs
P!)�1TestMutuallyExclusiveOptionalsAndPositionalsMixedi c�2�[QQ5oUOQQQ5UOQQQQ5UOUQ	5oUOQ
QQQ
5UOQQQQ5UOQQQQ5UOQQQQ5U!)r�r4rpr�rGr�ryr�r�r�rnr|rhr�r�rir�rjrr�rHr>s&&  rr�<TestMutuallyExclusiveOptionalsAndPositionalsMixed.get_parser"s���+��8�����C�h��/����D��H��E��3�3�X�3�F��
���3�c���9�
���4��8��D�
���4��8��D����D��H��E��
rzX ArRr�rlzX -bzX -czX A -yzX -y -bzX -yz;        usage: PROG [-h] [-y] [-z] x [-b | -c | a]
        z;        usage: PROG [-h] [-y] [-z] x (-b | -c | 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
          -z          z help
        r&)zX A -brmz-c X ArDrRs@rruru s�����	�-�H�	��S�E�U�c�U�e�D�E�	��d�d�e�s�e�u�E�F�	��d�e�t�s�e�u�E�F�	�2��u�����F�G�	�B����#���G�H��I�

�b�4�5�E�S�E�U�C�D�	��d�e�u��t�u�E�F�#��
�����Drruc�`�\sQsQsnQQksQQ,sQ\QPQ51Q\PQQ51Q	\PPQ51,sP\PPQ51,sQ
s	Qs
QsQ
sUs
P!)�%TestMutuallyExclusiveOptionalOptionaliOc��[QQ5oUOUQ5oUOQ2UOQQQ5U!)r�r4r�rwr�r|rr=r>s&&  rr�0TestMutuallyExclusiveOptionalOptional.get_parserPsE��+��8���3�3�X�3�F��
���7�#�
���7�#��.��
r�--foo X --bar Yz
--foo X --bar�--foo Xr�r�rAr�z;        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]
        r&r�rYrRs@rryryOs�����	���H�

�B�3�D�)�*�	�B�4�S�)�*�	�"��4�(�)��I�
�R�D�d�
#�$�#�������Drryc�`�\sQsQsnQQksQQ,sQ\QP	Q51Q\PP	Q51Q	\PP
Q51,sP\PP	Q51,sQ
s	Qs
QsQ
sUs
P!)�(TestMutuallyExclusiveOptionalWithDefaultirc��[QQ5oUOUQ5oUOQ2UOQ[P	Q5U!)r�r4r�rwr�rx�rr�r��boolr>s&&  rr�3TestMutuallyExclusiveOptionalWithDefault.get_parserssG��+��8���3�3�X�3�F��
���7�#�
���7��t��<��
rr|z--foo X --bar=r}r�r�rAz--bar=z9        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
        r&r�rYrRs@rrrrs�����	���H�

�B�3�D�)�*�	�B�4�T�*�+�	�2�$�E�*�+��I�
�R�D�d�
#�$�#�������Drrc�`�\sQsQsnQQksQ,sQ\QP	Q51Q\PP	Q51,sP\PP	Q51,sQs	Qs
Q	sQ
sUs
P!)�*TestMutuallyExclusivePositionalWithDefaulti�c��[QQ5oUOUQ5oUOQ2UOQQ[P	Q5U!)r�r4r�rwr{r|r^r�r>s&&  rr�5TestMutuallyExclusivePositionalWithDefault.get_parser�sI��+��8���3�3�X�3�F��
���7�#�
���5��$���E��
rrcr}r�r�z3        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
        r&r�rYrRs@rr�r��sm�����	��H�
�B�3�D�)�*�	�b�T�t�$�%��I�

�R�D�d�
#�$�#�������Drr�c�8``�\sQsQsnQU1QkksQsUsU9s!)�MEPBasei�c�d:�[[U_UQ5o[UOP
U,Q5oU!)r�)r�r�r�)rr�rrr�)rr+r�rArs&&  �rr�MEPBase.get_parser�s4����w��0�(�0�C��+����u�v�h�@���
rr&r�)r)r*r+r,rr.r/r0r1s@@rr�r��s�����rr�c��\sQsQsQsP!)�&TestMutuallyExclusiveGroupErrorsParenti�r&r�r&rrr�r�����rr�c��\sQsQsQsP!)�!TestMutuallyExclusiveSimpleParenti�r&r�r&rrr�r��r�rr�c��\sQsQsQsP!)�TestMutuallyExclusiveLongParenti�r&r�r&rrr�r��r�rr�c��\sQsQsQsP!)�*TestMutuallyExclusiveFirstSuppressedParenti�r&r�r&rrr�r��r�rr�c��\sQsQsQsP!)�)TestMutuallyExclusiveManySuppressedParenti�r&r�r&rrr�r��r�rr�c��\sQsQsQsP!)�0TestMutuallyExclusiveOptionalAndPositionalParenti�r&r�r&rrr�r��r�rr�c��\sQsQsQsP!)�)TestMutuallyExclusiveOptionalsMixedParenti�r&r�r&rrr�r��r�rr�c��\sQsQsQsP!)�7TestMutuallyExclusiveOptionalsAndPositionalsMixedParenti�r&r�r&rrr�r��r�rr�c�L`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sUsP!)
�TestSetDefaultsi�c��[2oUOQQ5UOQ]Q5UO[QQ]Q5UO	,22UO[QQ]Q5UO	,[222UO[QQ]Q5UO	,[QQ522UO[QQ]Q5UO	,[Q]Q522P!)r7ror{)r�r�r�r})rpr��r�set_defaultsr�r�rKr@s& r�test_set_defaults_no_args�)TestSetDefaults.test_set_defaults_no_args�s���+�-�����e��$����e�q��)�����e�u��2��*�*�2�.�	0�����e�u��2��*�*�2�r�t�4�	6�����e�u��2��*�*�2�r�E�{�;�	=�����e�u��2��*�*�2�r�E�Q�/?�@�	Brc
��[2oUOQQQ5UOQQQ5UO[	QQQ5UO,22UO[	QQQ5UO,[	222UO[	QQQ5UO,[	QQ522UO[	QQQ5UOQ	O
222UO[	QQQ5UOQ	O
2[	222UO[	QQQ5UOQ	O
2[	QQ522P!)
r7r{r�rm�xfooxr�r}ror�r,)rr�r�r�r�rKrYr@s& r�test_set_defaults_with_args�+TestSetDefaults.test_set_defaults_with_args�s6��+�-�����e�u��-����D�'��2�����g��/��*�*�2�.�	0�����g��/��*�*�2�r�t�4�	6�����e�u�-��*�*�2�r�E�{�;�	=�����c�U�+��*�*�6�<�<�>�:�	<�����c�U�+��*�*�6�<�<�>�2�4�@�	B�����c�U�+��*�*�6�<�<�>�2��;�G�	Irc��[2oUOQQ5UO2oUOQ2oUOQQ5UO	[QQQ5UO
QO222P!)r7rornr{r4r�)rr�r�r�r�r�rKrY)rrAr��parser_as&   r�test_set_defaults_subparsers�,TestSetDefaults.test_set_defaults_subparserssu��+�-�����e��$��*�*�,�
��(�(��-�������&�����e�u�-��*�*�3�9�9�;�7�	9rc��[P
Q5oUOQQ5[U,Q5oUO[QQ5UO	,22P!)Fr�r7ror�r�)rr�rAs&  r�test_set_defaults_parents�)TestSetDefaults.test_set_defaults_parentssH��+�U�;�����e��$�+�V�H�=������e��f�&7�&7��&;�<rc��[O2oUO2OQ2oUO	]Q5UO	]Q5UO[
]Q5UOQ,22P!)r�r�)r:r;r�r�r�r�r�rK)rrA�xparsers&  r�)test_set_defaults_on_parent_and_subparser�9TestSetDefaults.test_set_defaults_on_parent_and_subparsersl���(�(�*���'�'�)�4�4�S�9�������"������#�������F�$5�$5�s�e�$<�=rc	��[2oUOQQQQQ5UOQ2UOQQQ5UOQ	Q
Q5UOQQ
Q
Q5UO[	QQQQ
Q5UO,22UOQQQQQ5UO[	QQQQQ5UO,22P!)�Wr�rTrQrr�rm�XXr�r�r|rr��ZZr~�WW�YY)rr�r�r�r�rKr@s& r�&test_set_defaults_same_as_add_argument�6TestSetDefaults.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	���[2oUOQQQQQ5UOQ2oUOQ2UOQQQ	5UOQ
QQ5UOQ
QQQ5UO	[QQQQQ5UO
,22UOQQQQQ5UO	[QQQQQ5UO
,22P!)r�r�rTrQrr7r�rmr�r�r�r|rr�r�r~r�r�)rr�r)r�r�r�rKr	s&  r�,test_set_defaults_same_as_add_argument_group�<TestSetDefaults.test_set_defaults_same_as_add_argument_group6s���+�-�����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�.�	0rr&)
r)r*r+r,r�r�r�r�r�r�r�r.r/rRs@rr�r��s/����B�I�"9�=�>�0�"0�0rr�c�(`�\sQsQsnQsQsUsP!)�TestGetDefaultiMc��[2oUOUOQ22UOUOQ22UOQ2UOUOQ22UOUOQ22UOQ[]*Q5UOUOQ22UO]*UOQ22UO
QQ5UOQUOQ22UO]*UOQ22P!)r7r{rwr�rxr�r�)rr)�get_defaultr�r�r�r�r@s& r�test_get_default�TestGetDefault.test_get_defaultOs��+�-�����&�,�,�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�7rr&)r)r*r+r,r�r.r/rRs@rr�r�Ms����8�8rr�c�.`�\sQsQsnQsQsQsUsP!)�TestNamespaceContainsSimpleidc�z�[O2oUOPU2UOQU2P!)r'rp)r:�	Namespace�assertNotIn�rr�s& r�
test_empty�&TestNamespaceContainsSimple.test_emptyfs0��
�
�
�
!������R� �����b�!rc���[O]]Q5oUOPU2UOQU2UOQU2UOQU2UOQU2P!)rr�rpr��xxr�)r:r�r�rFr�s& r�test_non_empty�*TestNamespaceContainsSimple.test_non_emptyks`��
�
�
�!�q�
)������R� ��
�
�c�2���
�
�c�2������r�"�����b�!rr&)r)r*r+r,r�r�r.r/rRs@rr�r�ds����"�
"�"rr�c�(`�\sQsQsnQsQsUsP!)�TestHelpFormattingMetaclassiwc�b�UQ6XcP!QQ[2oQFDvqVUVU2J	P!)�HelpTestCasec�d`�\sQsQsnQsQsQs\Q2s\Q2s	\Q2s
QsUsP!)	�6TestHelpFormattingMetaclass.__init__.<locals>.AddTestsi}c���V mV0mUOUOUO1FD/oUO
8QU80oU1QkoVVm[VU2J1	P![cKh9h)r>c��UU2P!r�r&r@s&&r�test_wrapper�UTestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__.<locals>.test_wrapper�rDr)�func_suffix�std_name�test_format�
test_print�test_print_filer)rIr)r�
test_classr�r�rArPr�s&&&&   rr�?TestHelpFormattingMetaclass.__init__.<locals>.AddTests.__init__sw��#.� � (�
�"&�"2�"2�"&�/�/�"&�"6�"6�"8�I�,5�+=�+=�{� K�I�5>�(��09�-��J�<�@�"8��%����s�A'�'	A5�1A5�4A5c	��[OUOO-UOO@o[UQ,2FD*oUOUO-UO@J,	[UQ,2oSFD]vqVUOUO-UO@oSFD*oUOUO-UO@J,	J_	[UQ,2oU%cBUO2o	SFD*o
U	OU
O-U
O@J,	U!)r$�argument_group_signatures�subparsers_signatures)
r:r;r!r�r�rr�r)r�r�)rrSrA�argument_sig�
group_sigs�	group_sig�
argument_sigsr*�subparsers_sigsr��
subparser_sigs&&         rr��BTestHelpFormattingMetaclass.__init__.<locals>.AddTests._get_parser�s=��!�0�0��,�,�1�1�6��-�-�4�4�6��%,�F�4I�2�$N�L��'�'��):�):�?�*6�*=�*=�?�%O�%�V�-H�"�M�
�0:�,�I�"�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��[VO2o[OU2oPUmUOV22P!r�)rr�rerfrzr�)rrS�parser_text�
expected_texts&&& r�_test�<TestHelpFormattingMetaclass.__init__.<locals>.AddTests._test�s5�� '��0@�0@� A�
� (���
� >�
�!%����"�"�=�>rc��UOU2o[UQUO*2oUOV22P!)z	format_%s)r�rr�r�)rrSrA�formats&&  rr��BTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_format�s9���)�)�&�1�� ���t�7G�7G�)G�H���
�
�6�6�8�,rc���UOU2o[UQUO*2o[[UO2o[[UO[
22U2[[UO2O2o[[UOU2UOV2P![[SOS2h9h�zprint_%s)	r�rr�rr�rrr"r�)rrSrA�print_�
old_streamr�s&&    rr��ATestHelpFormattingMetaclass.__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���UOU2o[UQUO*2o[2oUU2UO	2oUOV2P!r�)r�rr�rr"r�)rrSrAr��sfiler�s&&    rr��FTestHelpFormattingMetaclass.__init__.<locals>.AddTests.test_print_file�sO���)�)�&�1�� ���d�6F�6F�)F�G��#�
���u�
�#�n�n�.���
�
�6�/r)r�r�)
r)r*r+r,rr�r�rr�r�r�r.r/rRs@rrbr�}sQ����
A�"
�,
?�!�
-�!�
-�
!�

0�!�

0�!�
0�!�
0rrb))r�r�)r�r�)rd)rer�rfrgrbr�r�s&&&&   rr�$TestHelpFormattingMetaclass.__init__ys5���>�!��I	0�v�I	0�X&:�!�K��S�x�0�&:rr&r�rRs@rr�r�ws����R1�R1rr�r�c	��\sQsQsQs\QQQQ5s\QQQ	Q
Q5\QQ
QQ5\QQQ5\QQQ5\QQQ5,s,sQs	\	Q*s
QsQsP!)�TestHelpBiggerOptionalsi��;Make sure that argument help aligns when options are longerr��DESCRIPTION�EPILOG�r�r��epilogr�rirj�0.1rlrmry�X HELPr��--y�Y HELPrGr7�FOO HELPr{�BAR HELPz;        usage: PROG [-h] [-v] [-x] [--y Y] foo bar
        aW
        DESCRIPTION

        positional arguments:
          foo            FOO HELP
          bar            BAR HELP

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

        EPILOG
    �        0.1
        r&�
r)r*r+r,r-r�r!r$r�r�r�rjr.r&rrr�r��s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���!#��
�E����D� �Grr�c�`�\sQsQsnQsQs\Os\Os\Os	Qs
\
Q*s\OsQs
UsP!)�TestShortColumnsi�z�Test extremely small number of columns.

TestCase prevents "COLUMNS" from being too small in the tests themselves,
but we don't want any exceptions thrown in such cases. Only ugly representation.
c�t�UO[O22oUOQQ2P!)r�r1)r�rr�r-r�s& rr��TestShortColumns.setUp�s)�����	� =� =� ?�@�����	�4� rz�        usage: PROG
               [-h]
               [-v]
               [-x]
               [--y Y]
               foo
               bar
        a�
        DESCRIPTION

        positional arguments:
          foo
            FOO HELP
          bar
            BAR HELP

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

        EPILOG
    r&)r)r*r+r,r-r�r�r!r$r�r�r�rjr.r/rRs@rrr�sZ�����
!�#:�"J�"J��"9�"M�"M��"9�"S�"S��
�E����D�:#:�"A�"A�Grrc	���\sQsQsQs\QQQQ5s\QQQ	Q
Q5\QQ
QQ5\QQQ5\QQQ5\QQQ5,s\QQQ5\QQQ5\QQQQ5,1,sQ s	\	Q!*s
Q"sQ#sP!)$�TestHelpBiggerOptionalGroupsi+r�r�r�rrr�rirjrrlrmryrr�rrrGr7rr{rzGROUP TITLEzGROUP DESCRIPTIONr�r}zBAZ HELPrrzZ 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
    r	r&r
r&rrrr+s���E���M�"*�,��	�D�+�i��?��D��H�5��E��!��E�
�#��E�
�#���

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

�E����D�,�Grrc��\sQsQsQs\QQQ5s\QQQQ	5\Q
QQ5\Q
QQ5\QQQ5,s,sQs	\	Q*s
PsQsP!)�TestHelpBiggerPositionalsiZz4Make sure that help aligns when arguments are longer�USAGEr��r�r�rmryrr�rrrG�ekiekiekifekangzEKI HELPr{r�        usage: USAGE
        a
        DESCRIPTION

        positional arguments:
          ekiekiekifekang  EKI HELP
          bar              BAR HELP

        options:
          -h, --help       show this help message and exit
          -x               X HELP
          --y Y            Y HELP
        r&r
r&rrrrZsl��>���m�D���D��H�5��E��!���J�/��E�
�#�	��!#��
�E����D��Grrc��\sQsQsQs\QQQ5s\QQQQ	5\Q
QQQ	5,s\Q
QQ5\QQQQ5,1,sQs	\	Q*s
PsQsP!)�TestHelpReformattingiy�>Make sure that text after short names starts on the first liner�ze   oddly    formatted
description

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

descriptionr�rryz` 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
        r&r
r&rrrrys���H��
�)�*��	�D�$�&=�	>��C��_�5���

�W�#0�
1��d�<�$�%�
&�		'�
!��
�E����D�(�Grrc��\sQsQsQs\QQQ5s\QQQQ5\QQ	QQ5,s\Q
2\QQQQ
5,1,sQs	\	Q*s
PsQsP!)�TestHelpWrappingShortNamesi�rr�rBrmr�rr�r��ALPHASrryr�ra�
        D DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD DD
        DD DD DD DD D

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

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

        ALPHAS:
          -a          AHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH
                      HHAAHHH HHAAHHH HHA
        r&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
DzxXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HXXHH HX�dYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHYH YHzPAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAAHHH HHAr
r&rrrr�sz��H���[�A���D�$�]�3��C��\�2���


�X����\��@�B�	C�!��
�E����D�,�Grrc���\sQsQsQs\QQQ5s\QQQQQ5\Q	QQQ
5\QQQQ
5,s\Q2\Q
QQQ
5\QQQQ
5,1,sQs	\	Q*s
QsQsP!)�TestHelpWrappingLongNamesi�z<Make sure that text after long names starts on the next linerrr�rirjrlrmrr�rrr�rag
        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
        r&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 DzZV 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�XXXXXXXXXXXXXXXXXXXXXXXXXzdXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XHXH XH�yyyyyyyyyyyyyyyyyyyyyyyyyr�AAAAAAAAAAAAAAAAAAAAAAAAAzdAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AHAH AH�zzzzzzzzzzzzzzzzzzzzzzzzzzdZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHZH ZHr
r&rrr!r!�s���F���z�B���D�+�i��D��D�(��6��C���5���

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

�E����D�<�Grr!c���\sQsQsQs\QQ5s\QQQQ5\Q	Q
QQ5\QQQ
5\QQ]Q5\QQQQ5\QQ\OQ5\QQP	\OQ5\QQQ\OQ5\Q\O\OQQ5,	s
\Q2\Q QQ!Q5\Q"]Q#Q5\Q$Q$Q
Q5\Q%Q%QQ5,1,sQ&s\Q'*s
PsQ(sP!))�
TestHelpUsagei�Test basic usage messagesr�r4r�rr�r�rmrrprnrGr	)r�rr
r|rwzWhether to foo�r�r{r�zWhether to bar)r�rzr{r�z--foobarz--barfoorzz--bazzzBazz!)r{rzr�r*r�r�rr�rra/        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
        r&)r)r*r+r,r-r�r!r:rErbr$r�r�r�rjr.r&rrr'r's��#���'���D��#�&��D��#�&��C�c���C�c��#��C�c��%��G�*�8�3Q�3Q�R��G�*�D�$�:�:�	<��D�*�j��1O�1O�P��H�X�;�;�&�/�/�g�	?���

�W����C�c�*���A�C�(���#�S�)���#�S�)�	
�	�!��
�E����D�,�Grr'c�n�\sQsQs\QQ5s\QQQ5\QQQ	Q5,sQ
s\Q*sPs	Qs
P!)
�TestHelpUsageWithParenthesesiDr�r4�
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, --optional {1 (option A), 2 (option B)}
        r&�r)r*r+r,r�r!r$r�r�rjr.r&rrr+r+DsL����'���L�"8�9��D�,�(F�G���

�E����D��Grr+c��\sQsQsQs\QP
Q5s,s\Q2\QQQ5\Q	Q	Q5,1\Q
2\QQQ5\QQ
Q5,1,sQs	\	Q*s
PsQsP!)�TestHelpOnlyUserGroupsiZr(r��r�r��xxxxrmrprGrn�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
        r&r
r&rrr0r0Zs���#����7����	�V����3����#��
�	�

�V����#����3��
�	�	!��
�E��	�	�D��Grr0c��\sQsQsQs\QQ5s\QQQ5\QQQ5\Q	2\Q
2,s,sQs	\	Q*s
PsQ
sP!)�TestHelpUsageLongProgiyz*Test usage messages where the prog is longr4r�r�r-rmr�rnr	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
        r&�<PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPr
r&rrr5r5ysa��4���)���D�#���D�#���C���C��	��!#��
�E��
�
�D��Grr5c��\sQsQsQs\QQ5s\QQQ5\QQQ5\QQQ5\QQQ5\Q	2\Q
2,s,sQs	\	Q*s
PsQ
sP!)� TestHelpUsageLongProgOptionsWrapi�zATest usage messages where the prog is long and the optionals wrapr4r�r-rmr�rrnr	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
        r&r6�WWWWWWWWWWWWWWWWWWWWWWWWWr"�YYYYYYYYYYYYYYYYYYYYYYYYY�ZZZZZZZZZZZZZZZZZZZZZZZZZr
r&rrr8r8�su��K���)���D�(�#��D�(�#��D�(�#��D�(�#��C���C��
��!#��
�E����D��Grr8c�|�\sQsQsQs\QP
Q5s\Q2\Q	2\Q
2,s,sQs	\	Q*s
PsQsP!)�$TestHelpUsageLongProgPositionalsWrapi�zCTest usage messages where the prog is long and the positionals wrapr1z�        usage: PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
               aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
               ccccccccccccccccccccccccc
        ��
        positional arguments:
          aaaaaaaaaaaaaaaaaaaaaaaaa
          bbbbbbbbbbbbbbbbbbbbbbbbb
          ccccccccccccccccccccccccc
        r&r6�aaaaaaaaaaaaaaaaaaaaaaaaa�bbbbbbbbbbbbbbbbbbbbbbbbb�cccccccccccccccccccccccccr
r&rrr=r=�sV��M���5�9���H�
��H�
��H�
���
!#��
�E�
���D��Grr=c	���\sQsQsQs\QQ5s\QQQ5\QQQ5\QQQ5\Q	QQ5\Q
2\Q2\Q2,s,sQ
s	\	Q*s
PsQsP!)�TestHelpUsageOptionalsWrapi�z,Test usage messages where the optionals wrapr�r4r�r-rmr�rrnr	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
        r&r9r"r:r;r
r&rrrCrC�s|��6���'���D�(�#��D�(�#��D�(�#��D�(�#��C���C���C����!#��
�E��
�
�D��GrrCc��\sQsQsQs\QQ5s\Q2\Q2\Q2\Q2\Q2\Q
2,s,sQs	\	Q	*s
PsQ
sP!)�TestHelpUsagePositionalsWrapi�z.Test usage messages where the positionals wrapr�r4rmr�rz�        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
        r&r?r@rAr
r&rrrErE�si��8���'���D�	��D�	��D�	��H�
��H�
��H�
�
��!#��
�E�
���D��GrrEc��\sQsQsQs\QQ5s\QQQ5\QQ
Q5\QQQ5\Q2\Q2\Q2,s,sQ	s	\	Q
*s
PsQsP!)�%TestHelpUsageOptionalsPositionalsWrapiz<Test usage messages where the optionals and positionals wrapr�r4rmr-r�ra        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
        r&r"r:r;r?r@rAr
r&rrrGrGsr��F���'���D�(�#��D�(�#��D�(�#��H�
��H�
��H�
�
��!#��
�E����D��GrrGc��\sQsQsQs\QQ5s\QQQ5\QQ
Q5\QQQ5,s,sQ	s	\	Q
*s
PsQsP!)�TestHelpUsageOptionalsOnlyWrapi?z@Test usage messages where there are only optionals and they wrapr�r4rmr-r�rz�        usage: PROG [-h] [-x XXXXXXXXXXXXXXXXXXXXXXXXX] [-y YYYYYYYYYYYYYYYYYYYYYYYYY]
                    [-z ZZZZZZZZZZZZZZZZZZZZZZZZZ]
        z�
        options:
          -h, --help            show this help message and exit
          -x XXXXXXXXXXXXXXXXXXXXXXXXX
          -y YYYYYYYYYYYYYYYYYYYYYYYYY
          -z ZZZZZZZZZZZZZZZZZZZZZZZZZ
        r&r"r:r;r
r&rrrIrI?s]��J���'���D�(�#��D�(�#��D�(�#���
!#��
�E�
���D��GrrIc�|�\sQsQsQs\QP
Q5s\Q2\Q	2\Q
2,s,sQs	\	Q*s
PsQsP!)� TestHelpUsagePositionalsOnlyWrapiYzBTest usage messages where there are only positionals and they wrapr�r1z~        usage: PROG aaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbb
                    ccccccccccccccccccccccccc
        r>r&r?r@rAr
r&rrrKrKYsV��L����7���H�
��H�
��H�
���
!#��
�E����D��GrrKc��\sQsQs\QQ5s\QQQQ5\QQ	Q
Q5\QQQ
Q5\QQQQ5\QQQQ5\QQQQ5\QQQQ5\QQQQ5\QQQQ5\Q Q!Q"Q5\Q#Q$Q%Q5\Q&Q'Q(Q5\Q)Q*Q+Q5\Q,Q-Q.Q5\Q/Q0Q1Q5\Q2Q3Q4Q5,sQ5s\Q6*sPs	Q7s
P!)8�&TestHelpUsageMetavarsSpacesParenthesesiqr�r4z-n1z()�n1rz-o1z(1, 2)�o1z-u1z (uu) �u1z-v1z( vv )�v1z-w1z(w)w�w1z-x1zx(x)�x1z-y1zyy)�y1z-z1z(zz�z1z-n2z[]�n2z-o2z[1, 2]�o2z-u2z [uu] �u2z-v2z[ vv ]�v2z-w2z[w]w�w2z-x2zx[x]�x2z-y2zyy]�y2z-z2z[zz�z2z�        usage: PROG [-h] [-n1 ()] [-o1 (1, 2)] [-u1  (uu) ] [-v1 ( vv )] [-w1 (w)w]
                    [-x1 x(x)] [-y1 yy)] [-z1 (zz] [-n2 []] [-o2 [1, 2]] [-u2  [uu] ]
                    [-v2 [ vv ]] [-w2 [w]w] [-x2 x[x]] [-y2 yy]] [-z2 [zz]
        a�
        options:
          -h, --help  show this help message and exit
          -n1 ()      n1
          -o1 (1, 2)  o1
          -u1  (uu)   u1
          -v1 ( vv )  v1
          -w1 (w)w    w1
          -x1 x(x)    x1
          -y1 yy)     y1
          -z1 (zz     z1
          -n2 []      n2
          -o2 [1, 2]  o2
          -u2  [uu]   u2
          -v2 [ vv ]  v2
          -w2 [w]w    w2
          -x2 x[x]    x2
          -y2 yy]     y2
          -z2 [zz     z2
        r&r.r&rrrMrMqs�����'���E�4�d�+��E�8�$�/��E�8�$�/��E�8�$�/��E�6��-��E�6��-��E�5�t�,��E�5�t�,��E�4�d�+��E�8�$�/��E�8�$�/��E�8�$�/��E�6��-��E�6��-��E�5�t�,��E�5�t�,�!��&
�E�
���D�*�GrrMc�F`�\sQsQsnQsQsQsQsQsQs	Qs
UsP!)	�TestHelpUsageNoWhitespaceCrashi�c�&�[OQQ5oUO2oUOQ[OQ5UOQ2[
OQ2oUOUO2U2P!)r�r4r
rGz--eggs-eggs-eggs-eggs-eggs-eggszu        usage: PROG [-h]
                    [--eggs-eggs-eggs-eggs-eggs-eggs EGGS_EGGS_EGGS_EGGS_EGGS_EGGS]
        )	r:r;r�r�rbrerfr�r��rrA�mutexr�s&   r�.test_all_suppressed_mutex_followed_by_long_arg�MTestHelpUsageNoWhitespaceCrash.test_all_suppressed_mutex_followed_by_long_arg�sx���(�(�f�5���3�3�5��
���8�(�*;�*;��<����=�>����!�
��	
����,�,�.��6rc��,Q
No[OQ2oUOQQQQQ5UOQQQ	Q
OU2Q5[O
Q2oUO
UO2U2P!)�123456�11111111111111r�r�zverbose moderyr)�targetszinstallation targetsrr(�r�rr�z�        usage: 11111111111111 [-h] [-v]
                              123456
        12345
        12345
        123 [123456
        12345
        12345
        123 ...]
        )rf�12345rjr�)r:r;r�r�rerfr�r�)r�mappingrAr�s&   r�test_newline_in_metavar�6TestHelpUsageNoWhitespaceCrash.test_newline_in_metavar�s���5���(�(�)9�:�����D�+�!/��	�	F����I�!7�"%�$(�I�I�g�$6�	�	8����	!�	
��	
����,�,�.��6rc���[OQQ5oUOQPP	Q5UOQQQ5QoUOUO	2U2P!)r�r4z--nil)r�r+z--ar-zqusage: PROG [-h] --nil 
            [--a AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA]
�FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA)r:r;r�r�r�)rrAr�s&  r�test_empty_metavar_required_arg�>TestHelpUsageNoWhitespaceCrash.test_empty_metavar_required_arg�s_���(�(�f�5�����G�R�$��?����E�8��4�
)�	�
	
����,�,�.��6rc�*�[OQQ5oUO2oUOQQQQ[OQ5UOQQQQ[OQ5QoUOUO
2U2P!)	r�r4z--param1r|rz�NAME)rr~r�r�z--param2r)r:r;r�r�rbr�r�ras&   r�-test_all_suppressed_mutex_with_optional_nargs�LTestHelpUsageNoWhitespaceCrash.test_all_suppressed_mutex_with_optional_nargs�s����(�(�f�5���3�3�5��
�����Y��X�=N�=N�	�	P�	�����Y��X�=N�=N�	�	P�%������,�,�.��6rc���[OQQ5oUO2oUOQQQQ5UOQQQQ5UOQQQ	5UOQ
QQQ5UOQQQ	5UOQ
]Q	5UOQQ]Q5[O
Q2oUO
UO2U2P!)r�r4z--op1�METr|)r�rz--op2rz--op3rz--op4rz--op5z--op6z--op7z�        usage: PROG [-h] [--op1 [MET] | --op2 [MET1 [MET2 ...]] | --op3 [OP3 ...] |
                    --op4 MET1 [MET2 ...] | --op5 OP5 [OP5 ...] | --op6 OP6 OP6 OP6 |
                    --op7 MET1 MET2 MET3]
        )�MET1�MET2)rxry�MET3�r:r;r�r�rerfr�r��rrAr�r�s&   r�test_long_mutex_groups_wrap�:TestHelpUsageNoWhitespaceCrash.test_long_mutex_groups_wrap�s����(�(�f�5���/�/�1��	���w��S��9�	���w�(8���D�	���w�c��*�	���w�(8���D�	���w�c��*�	���w�a��(�	���w�(@���J����!�
��
	
����,�,�.��6rc��[OQQ5oUO2oUOQQQQ5UOQQQQ5UOQQ	Q
Q5UOQQ
Q
Q5UOQQ
Q5[O
Q2oUO
UO2U2P!)r�r4r�r�ryrzr�r�rmz--extra-long-option-namer|rr�z--yet-another-long-optionr,z�        usage: PROG [-h]
                    [-v | -q | -x [EXTRA_LONG_OPTION_NAME] |
                    -y [YET_ANOTHER_LONG_OPTION] | positional]
        r{r|s&   r�7test_mutex_groups_with_mixed_optionals_positionals_wrap�VTestHelpUsageNoWhitespaceCrash.test_mutex_groups_with_mixed_optionals_positionals_wrap�s����(�(�f�5���/�/�1��	���t�[���>�	���t�Y�|��<�	���t�7�s��C�	���t�8���D�	���|�3��/����!�
��
	
����,�,�.��6rr&)r)r*r+r,rcrlrprtr}r�r.r/rRs@rr_r_�s(����7�7�,
7�7�7�$7�7rr_c��\sQsQsQs\QQ5s\Q\QQ5\QQ	]*Q
QQ5\Q
,Q$NQQ5\QQ]],QQQ5\QQQ5\QQQQ5,s\Q2\QQQ5\QPQ Q5,1,s	Q!s
\
Q"*sPsQ#s
P!)%�TestHelpVariableExpansioni
z:Test that variables are expanded properly in help messagesr�r4rmz"x %(prog)s %(default)s %(type)s %%r�r�r|�XXXz y %(prog)s %(default)s %(const)s)r{rzr~r�rwz$foo %(prog)s %(default)s %(choices)sr�r�r}�BBBz!bar %(prog)s %(default)s %(dest)s)rzrr�r�rzspam %(prog)s %(default)srGr�rYzbadger %(prog)s %(default)s�rzr�r*rza %(prog)s %(default)sr�zb %(prog)s %(default)szw        usage: PROG [-h] [-x X] [-y] [--foo {a,b,c}] [--bar BBB] [-a A] [-b B]
                    spam badger
        a�
        positional arguments:
          spam           spam PROG None
          badger         badger PROG 0.5

        options:
          -h, --help     show this help message and exit
          -x X           x PROG None int %
          -y             y PROG 42 XXX
          --foo {a,b,c}  foo PROG None a, b, c
          --bar BBB      bar PROG baz bar

        group:
          -a A           a PROG None
          -b B           b PROG -1
        r&r)r)r*r+r,r-r�r!r�r$r�r�r�rjr.r&rrr�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�R�\sQsQsQs\QQQ5s,s,sQs	\	Q*s
PsQsP!)	�&TestHelpVariableExpansionUsageSuppliedi8z@Test that variables are expanded properly when usage= is presentr�z%(prog)s FOO�r�r�z         usage: PROG FOO
        rXr&r
r&rrr�r�8s=��J���n�=���� "���E����D�
�Grr�c�D�\sQsQsQs\QP
Q5s,s,sQs	\	s
PsQsP!)�$TestHelpVariableExpansionNoArgumentsiIz;Test that variables are expanded properly with no argumentsr�r1z        usage: PROG
        r&r
r&rrr�r�Is1��E����7���� "���E��D��Grr�c�|�\sQsQsQs\Q\OQ5s\QQQ5\QQ	Q5,s	,s
Q
sPsPs
QsP!)�TestHelpSuppressUsageiVz3Test that items can be suppressed in usage messagesr�r�rwr�rGr�	spam helpz�        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r&)r)r*r+r,r-r�r:rbr!r$r�r�r�rjr.r&rrr�r�VsO��=���h�.?�.?�@���G�*�%��F��%���!#���D�
�E��Grr�c��\sQsQsQs\QP
Q5s\Q\OQ5\QQQ5,s	,s
Q	s\Q
*sPs
QsP!)�TestHelpSuppressOptionalikz?Test that optional arguments can be suppressed in help messagesr�r1rwrGrr�z!        usage: PROG spam
        zA
        positional arguments:
          spam  spam help
        r&�r)r*r+r,r-r�r!r:rbr$r�r�r�rjr.r&rrr�r�ks[��I����7���G�(�+�+�,��F��%���!#��
�E����D�
�Grr�c��\sQsQsQs\QQ5s\QQQ5\QQ	Q5,s\Q
2\Q\OQ5,1,s
Qs\Q
*sPs
QsP!)�TestHelpSuppressOptionalGroupiz<Test that optional groups can be suppressed in help messagesr�r4rwr�rGrr�r*r��2        usage: PROG [-h] [--foo FOO] spam
        ��
        positional arguments:
          spam        spam help

        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r&)r)r*r+r,r-r�r!r$r:rbr�r�r�rjr.r&rrr�r�sq��F���'���G�*�%��F��%���


�W���G�(�*;�*;�<�=�>�!��
�E����D��Grr�c��\sQsQsQs\QQ5s\QQQ5\Q\OQ5,s	,s
Q	s\Q
*sPs
QsP!)�TestHelpSuppressPositionali�zATest that positional arguments can be suppressed in help messagesr�r4rwr�rGrz-        usage: PROG [-h] [--foo FOO]
        �o
        options:
          -h, --help  show this help message and exit
          --foo FOO   foo help
        r&r�r&rrr�r��sY��K���'���G�*�%��F��*�*�+���!#��
�E����D��Grr�c�d�\sQsQsQs\QQ5s\QP	QQ5,s,sQs	\	Q	*s
PsQ
sP!)�TestHelpRequiredOptionali�z.Test that required options don't look optionalr�r4rwr��r+r�z+        usage: PROG [-h] --foo FOO
        r�r&r
r&rrr�r��sK��8���'���G�d��4���!#��
�E����D��Grr�c�|�\sQsQsQs\QQP
Q5s\QQQQ	5\Q
QQQ
5,s,sQs	\	Q*s
PsQsP!)�TestHelpAlternatePrefixCharsi�z:Test that options display with different prefix charactersr�z^;)r�r�r�z^^fooryr�r�z;bz;;barr�rGz-        usage: PROG [^^foo] [;b BAR]
        z^
        options:
          ^^foo          foo help
          ;b, ;;bar BAR  bar help
        r&r
r&rrr�r��s[��D���T�E�J���G�L�z�:��D�'�
�+���!#��
�E����D��Grr�c�v�\sQsQsQs\QP
Q5s\QQQ5\QQ	Q5,s,sQ
s	\	Q*s
PsQsP!)
�TestHelpNoHelpOptionali�z=Test that the --help argument can be suppressed help messagesr�r1rwr�rGrr�z-        usage: PROG [--foo FOO] spam
        zv
        positional arguments:
          spam       spam help

        options:
          --foo FOO  foo help
        r&r
r&rrr�r��sU��G����7���G�*�%��F��%���!#��
�E����D��Grr�c�l�\sQsQsQs\QQ5s\Q2\Q2,s,sQs	\	Q*s
PsQ	sP!)
�TestHelpNonei�z1Test that no errors occur if no help is specifiedr�r4rwrr�z�
        positional arguments:
          spam

        options:
          -h, --help  show this help message and exit
          --foo FOO
        r&r
r&rrr�r��sM��;���'���G���F����!#��
�E����D��Grr�c
��\sQsQsQs\QQ5s\QQQQQ5\Q	Q
QQQ5\QQ
]QQ5\QQQQQ5,s,sQs	\	Q*s
PsQsP!)�TestHelpTupleMetavarOptionaliz"Test specifying metavar as a tupler�r4r�r�rrirmrprr�r�rr�r|z]        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
        r&��W1�W2��X1�X2��Y1�Y2�Y3��Z1r
r&rrr�r�sx��,���'���D�s�#�|�<��D�s�#�|�<��D�s�!�-?�@��D�s�#�x�8�	��!#��
�E����D��Grr�c
��\sQsQsQs\QQ5s\QQQQQ5\Q	Q
QQQ5\QQ
]QQ5\QQQQQ5,s,sQs	\	Q*s
PsQsP!)�TestHelpTupleMetavarPositionali!z2Test specifying metavar on a Positional as a tupler�r4r�r�rrirpr�rr�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
        r&r�r�r�r�r
r&rrr�r�!sx��<���'���C�h�c�<�@��C�h�c�<�@��C�h�a�1C�D��C�h�c�7�;�	��!#��
�E��
�
�D��Grr�c��\sQsQsQs\Q\OQQ5s\QQQ5\Q	Q
Q5,s	\QQQ
5\QQQ5,1,s
Qs\Q*sPs
QsP!)�TestHelpRawTexti=�Test the RawTextHelpFormatterr��7Keep the formatting
    exactly as it is written

here
�r��formatter_classr�rwz-    foo help should also
appear as given hererGrr�r��?    This text
  should be indented
    exactly like it is here
r�r�r��>        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
        r&)r)r*r+r,r-r�r:�RawTextHelpFormatterr!r$r�r�r�rjr.r&rrr�r�=s���'��
�X�%B�%B����	�G�1�	2��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�,�Grr�c��\sQsQsQs\Q\OQQ5s\QQQ5\Q	Q
Q5,s	\QQQ
5\QQQ5,1,s
Qs\Q*sPs
QsP!)�TestHelpRawDescriptioninr�r�r�r�rwz4  foo help should not
    retain this odd formattingrGrr�r�r�r�r�r�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
        r&)r)r*r+r,r-r�r:�RawDescriptionHelpFormatterr!r$r�r�r�rjr.r&rrr�r�ns���'��
�X�%I�%I����	�G�;�	<��F��%���

�W�#B�
C��g�J�
'�	(�	*�!��
�E����D�*�Grr�c�r�\sQsQsQs\Q\OQQ5s\QQQ5\Q	Q
QQ5\Q
P	QQ5\Q\OQP	Q5\Q\OQ\OQ5\QQ]*Q5\QQQ5\QQQQQ5,s\QQQ 5\Q!\]*Q"Q#5,1,s
Q$s\Q%*sPsQ&sP!)'�TestHelpArgumentDefaultsi�z&Test the ArgumentDefaultsHelpFormatterr�r�r�rwz)foo help - oh and by the way, %(default)srGr�ryr�r�z
--requiredz	some helpr�z--tazzWhether to taz it)r{r�rzz--corgezWhether to corge itr_zSet the quux)r�rzrr�r�r|�woodenzbadger help�rrzr�r�r�r�r<�ryrzr�z�        usage: PROG [-h] [--foo FOO] [--bar] --required REQUIRED [--taz | --no-taz]
                    [--corge | --no-corge] [--quux QUUX] [--baz BAZ]
                    spam [badger]
        a�
        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)
          --required REQUIRED  some help
          --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)
        r&)r)r*r+r,r-r�r:�ArgumentDefaultsHelpFormatterr!rErbr$r�r�r�r�rjr.r&rrr�r��s���0��
�X�%K�%K�!�#��
	�G�E�F��G�L�z�:��L�4�k�:��G�H�:�:�$�d�	4��I�h�<�<�&��0A�0A�	C��H�>�2�6��F��%��H�C��
�F���

�W�-�	0�

�g�C��*�
=�	>�	@�!��
�E�
���D�,�Grr�c�h�\sQsQsQs\QQQ5s\QQQQ	Q
5,s,sQs	\	Q*s
PsQ
sP!)�TestHelpVersionActioni�z,Test the default help for the version actionr�r�rB�-Vrirjz3.6rlz&        usage: PROG [-h] [-V]
        z�
        description

        options:
          -h, --help     show this help message and exit
          -V, --version  show program's version number and exit
        r&r
r&rrr�r��sK��6���M�B���t�[��E�R�S�� "��
�E����D��Grr�c��\sQsQsQs\QQ5s\QQQQ\OQ	5\Q
QQ5\Q
QQ5,s	,s
Qs\Q*sQs
P!)�TestHelpVersionActionSuppressi�zCTest that the --version argument can be suppressed in help messagesr�r4r�rirjrk)r{rjr�rwr�rGrr�r�r�r&)r)r*r+r,r-r�r!r:rbr$r�r�r�r.r&rrr�r��se��M���'���D�+�i���"�"�	$��G�*�%��F��%�	��!#��
�E����Drr�c��\sQsQsQs\QQQ5s\QQQQ	Q
5,sQTt,tFDo[UQ5MJ	tosQs	\	Q
*s
QsQsP!ttoh)�TestHelpSubparsersOrderingi��5Test ordering of subcommands in help matches the coder��display some subcommandsrBr�rirjrrlr��6        usage: PROG [-h] [-v] {a,b,c,d,e} ...
        z�
        display some subcommands

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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r	r&)rnr	r
rr)
r)r*r+r,r-r�r!r$r�r�r�rjr.r�s0rr�r��sv��?���'A�C���t�[��E�R�S��*C�D�)B��!�d�^�)B�D��
�E��
�
�D��G��'Ds�Ar�c
��\sQsQsQs\QQQ5s\QQQQ	Q
5,sQs\TTt,tFDvq[VQ5MJ	toos	Qs
\
Q
*sQsQs
P!ttooh)�"TestHelpSubparsersWithHelpOrderingir�r�r�rBr�rirjrrl�r�r�r�a�
        display some subcommands

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

        options:
          -h, --help     show this help message and exit
          -v, --version  show program's version number and exit
        r	r&))rnza subcommand help)r	zb subcommand help)r
zc subcommand help)rzd subcommand help)rze subcommand help)r)r*r+r,r-r�r!r$�subcommand_datar�r�r�rjr.r�s00rr�r�s��?���'A�C���t�[��E�R�S���O�0?�@�/>���!�d�6�/>�@��
�E����D�"�G��1@s�Ar�c�`�\sQsQsnQs\QQ\OQ5s\Q\	Q5\Q\Q5\Q	\
Q
Q5,s,sQs
\
Q
*sPsQsUsP!)�TestHelpMetavarTypeFormatteriGc��U!r�r&rFs&r�custom_type�(TestHelpMetavarTypeFormatter.custom_typeIs���
rr�r�)r�r�r�rnrWr�r�z
SOME FLOAT)ryr�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
        r&)r)r*r+r,r�r�r:�MetavarTypeHelpFormatterr!r�r[r$r�r�r�rjr.r/rRs@rr�r�Gsu�������M�+3�+L�+L�N���s��-��t�+�6��t�%��F�H��!#��
�E����D��Grr�c�>`�\sQsQsnPsQsQsQsQsQs	Us
P!)�TestHelpCustomHelpFormatteridc��Qo[OQQUQ5oUOQQQQ5UOQQ	Q5UO2oUO	U[
OQ
22P!)c�4�[OU]Q5!��)�indent_increment�r:r�r4s&r�custom_formatter�TTestHelpCustomHelpFormatter.test_custom_formatter_function.<locals>.custom_formatteri����0�0���J�Jrr�rI�r�r�r�r�r^r�rGrr���            usage: PROG [-h] [+f FOO] spam

            positional arguments:
                 spam           spam help

            options:
                 -h, --help     show this help message and exit
                 +f, ++foo FOO  foo help
        )r:r;r�r�r�rerf)rr�rAr�s&   r�test_custom_formatter_function�:TestHelpCustomHelpFormatter.test_custom_formatter_functionhs{��	K��(�(��!� 0�
��
	���D�'�
��;����F���5��(�(�*������h�o�o�	7�	'
�		rc�&�QQ[O2o[OQQUQ5oUOQQQQ5UOQ	Q
Q5UO	2oUOU[OQ22P!)c�4``�\sQsQsnU1QksQsUsU9s!)�PTestHelpCustomHelpFormatter.test_custom_formatter_class.<locals>.CustomFormatteri�c�,:�[RU_U]Q5P!r��rr�rr�rs&&�rr�YTestHelpCustomHelpFormatter.test_custom_formatter_class.<locals>.CustomFormatter.__init__������� ��� �:rr&�r)r*r+r,rr.r/r0r1s@@r�CustomFormatterr�������
;�
;rr�r�rIr�r�r^r�rGrr�r�)r:r�r;r�r�r�rerf)rr�rAr�s&   r�test_custom_formatter_class�7TestHelpCustomHelpFormatter.test_custom_formatter_class�s���	;�h�;�;�	;��(�(��!� /�
��
	���D�'�
��;����F���5��(�(�*������h�o�o�	7�	'
�		rc�D�Qo[OQUQ5oUOQQQQ5oUOQQ	Q
5UOQQQ
5UOQ
QQ
5UO	2oUOU[OQ22P!)z<Test that subparser commands are formatted correctly in helpc�4�[OU]2Q5!)�2)�max_help_positionr�r4s&rr��WTestHelpCustomHelpFormatter.test_usage_long_subparser_command.<locals>.custom_formatter�s���0�0���L�Lrr�)r�r�r��CMDzcommand to use)r�r�r�r�z
add somethingrG�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�r�r�rerf)rr��
parent_parser�cmd_subparsersr�s&    r�!test_usage_long_subparser_command�=TestHelpCustomHelpFormatter.test_usage_long_subparser_command�s���	M�!�/�/�� 0�
�
�
'�5�5�J�>C�;K�6�M��	�!�!�%�'6�	"�	8�	�!�!�(�'9�	"�	;�	�!�!�"7�'D�	"�	F�$�/�/�1������h�o�o�7�'
�	rc��[OQQ5oUOP,,Q5UO2oUO	UQ2P!)�programr4)r��actions�groupszusage: program
)r:�
HelpFormatter�	add_usager�r�)r�	formatter�	help_texts&  r�#test_direct_formatter_instantiation�?TestHelpCustomHelpFormatter.test_direct_formatter_instantiation�sF���*�*�	�:�	����$��2��>��)�)�+�	�����$6�7rr&)r)r*r+r,rzr�r�r�rr.r/rRs@rr�r�ds$�����G��0�2"�H8�8rr�c�`�\sQsQsnQsQP-QksQP-QksQsQsQs	Q	s
Q
sQsQs
Q
sQsQsQsQsQsQsQsQsQsUsP!)�TestInvalidArgumentConstructorsi�z-Test a bunch of invalid Argument constructors�errmsgc�~�[O2oUO[VO,UN3-U@P!r�)r:r;rerIr��rrr�r�rAs&$*, r�assertTypeError�/TestInvalidArgumentConstructors.assertTypeError�s8���(�(�*�����y�&�2E�2E�	0� $�	0�(.�	0rc�~�[O2oUO[VO,UN3-U@P!r�)r:r;rerNr�r
s&$*, r�assertValueError�0TestInvalidArgumentConstructors.assertValueError�s8���(�(�*�����z�6�3F�3F�	0� $�	0�(.�	0rc��UOQPQ5UOQQQ5UOQQQ5UOQ-Q5P!)rm)r{r�r7)�callback)�
callback_args)�callback_kwargsr&�rr$s&r�test_invalid_keyword_arguments�>TestInvalidArgumentConstructors.test_invalid_keyword_arguments�sN�����T�t��,����T�E��2����T���4����T�2��6rc	���UO2QFD8oUOUQ59^tt^2UOUQ5PPP2J:	P!)%fhJO9h)r0rz�r0rwr7)rrL�rr{s& r�test_missing_destination�8TestInvalidArgumentConstructors.test_missing_destination�sL������3�F����V��,�,��$�$�F�$�3�-�,�4�,�,�,�s�A	�A$
�A$
c��UOQQQ5UOQQQ5UOQQQ5UOQQQQQ5P!)rJzdest= is required�rr�z---z3dest= is required for options like '-', '--', '---'rr$s&r�test_invalid_option_strings�;TestInvalidArgumentConstructors.test_invalid_option_strings�s[�����S�)<��=����T�*=��>����U�+>��?����S�$��L�	�	Nrc�0�UOQQQQ5P!)rwrlzmust start with a characterr �rr$s&r�test_invalid_prefix�3TestInvalidArgumentConstructors.test_invalid_prefix�s�����g�v�%B�	�	Drc�l�UOQQQQ5UOQ[[1QQ5P!)rwr�z'int' is not callable)ryrzis not callable)rr�r[r$s&rr��1TestInvalidArgumentConstructors.test_invalid_type�s:�����W�5�$;�	�	=����W�C��<�$5�	�	7rc��UOQQQQ5UOQQQQ5UOQQQQ5UOQQQQ5P!)rmr7zunknown action�r{rr}rwz
store-true)r0rwr$r$s&r�test_invalid_action�3TestInvalidArgumentConstructors.test_invalid_action�sk�����d�5�%5�	�	7����e�E�%5�	�	7����g�.A�%5�	�	7����g�l�%5�	�	7rc��UOQQQQ5UOQQQQ5UOQQQQ5P!)rwrXrQ)r�rrYrZr$r$s&r�test_invalid_help�1TestInvalidArgumentConstructors.test_invalid_help�sS�����g�J�%?�	�	A����g�J�%?�	�	A����g�J�%?�	�	Arc�8�[O2oUOQQ5UO[29^tt^2oUOQQQ5PPP2UOQ[
WO22P!)%fhK79h)r7r�r{r}zBdest supplied twice for positional argument, did you mean metavar?)r:r;r�r�rIrFr^rGrHs&  r�test_multiple_dest�2TestInvalidArgumentConstructors.test_multiple_destsr���(�(�*�������'�
�
�
�y�
)�
)�R�����E��2�*��
�
�/��"�,�,�'�	)�*�
)�s�B	�	B	�B	c
�2�QFD�oUOUQ59^tt^2[[Q5[QQ5[QQ,Q51FDPoUOUQ59^tt^2UOQQ
U-U@UOQQ
U-U@PPP2JR	UO	QUQUQ
0Q5UOQ	U]Q5UO	QU]QQ5PPP2J�	P!)%fhJ�9h)%fhCJ9h)r|rzrWrrrnr	r$)�attrsrmr{rpzaction 'z'' is not valid for positional argumentsr*r4�"nargs for positionals must be != 0)r{rr)r|ryr8r�r�)rmro)rLr�r�rr)rr{r4s&  r�test_no_argument_actions�8TestInvalidArgumentConstructors.test_no_argument_actionss��0�F����V��,�,�"��n�d��o�"�C��:�6�8�E����E��2�2��,�,�J�&�J�E�J��,�,�I��I�5�I�3�2�8�
�%�%�c�&�%�f�X�-T�U�&�W��$�$�T�&��$�B��%�%�c�&��?�&�A�-�,�0�
3�2�2��-�,�,�s1�AD	�*+C0�A
D	�0D�9D�;	D	�D
�
D
c
���QFDNoUOUQ59^tt^2UOQQUQ5UOQQUQ5PPP2JP	P!)%fhJe9h)ryrzrmr7rDrr?)ryr8r��rLrrs& r�!test_no_argument_no_const_actions�ATestInvalidArgumentConstructors.test_no_argument_no_const_actionss[��<�F����V��,�,��$�$�T��v�$�F��$�$�T��V�$�D�-�,�=�,�,�,�s�)A	�A*
�"A*
c
�`�QFD�oUOUQ59^tt^2UQ6XcQLSoUOQ]UQUQ0Q5UOQ]UQ	Q5Q
FD+oUOQQ
V1Q5UOQQ
V1Q5J-	PPP2J�	P!)%fhJ�9h)r0rwr7rzrmz
nargs for z actions must be != 0)rr{rrr5r7)r~rr{r)rrr)rLr)rr{�action_namers&   r�#test_more_than_one_argument_actions�CTestInvalidArgumentConstructors.test_more_than_one_argument_actions%s���3�F����V��,�,�*0�H�*<�h�&���%�%�d�!�F�'��}�4I�J�&�L��%�%�f�A�f�?�&�A�+�E��)�)�$�e�05�*�F��)�)�&��05�*�F�+�-�,�4�,�,�,�s�B	�A$B	�B-
�%B-
c
��QFD:oUOUQ59^tt^2UOQQUQ5PPP2J<	P!)%fhJQ9h)r|rzrmrr?)r|r�r9rs& r�test_required_const_actions�;TestInvalidArgumentConstructors.test_required_const_actions6sD��5�F����V��,�,��$�$�T��V�$�D�-�,�6�,�,�,�s�A	�A
�A
c��UOQQQ5UOQQQQ5UOQQ[OQ5P!)r�parsersrzr�)r{r�)r{r")rr:r;r$s&r�"test_parsers_action_missing_params�BTestInvalidArgumentConstructors.test_parsers_action_missing_params<sK�����Y�y��9����Y�y�v��F����Y�y�*2�*A�*A�	�	Crc�.�UOQQQ5P!)rrjrzrr$s&r�test_version_missing_params�;TestInvalidArgumentConstructors.test_version_missing_paramsBs�����Y�y��9rc�.�UOQP	Q5P!)r7r�rr$s&r�test_required_positional�8TestInvalidArgumentConstructors.test_required_positionalEs�����U�T��2rc	�`�QQ[2nU1QkQ[2o[O2oUO	RUO
QURRQ5UO	RUO
QURRQ5P!)c��\sQsQsQsP!)�ITestInvalidArgumentConstructors.test_user_defined_action.<locals>.SuccessiJr&r�r&rr�SuccessrOJrrrPc�::`�\sQsQsnQU1QkksQsQsUsP!)�HTestInvalidArgumentConstructors.test_user_defined_action.<locals>.ActioniMc�F:�UQ6XcURIcURIcR2gP!P!P!r*r&)r�option_stringsr�r~rzr+rPs&&&&&&�rr�QTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__init__Os2����6�>���'�"�g�-�")�)�O�.�(�"rc��P!r�r&r�s&*,rrZ�QTestInvalidArgumentConstructors.test_user_defined_action.<locals>.Action.__call__Zs��rr&�F)r)r*r+r,rrZr.r/)r2rPs@�rrgrRMs����	
,�
�
rrgr
)r{rzr~r)r�rdr:r;r�r�)rrgrArPs&  @r�test_user_defined_action�8TestInvalidArgumentConstructors.test_user_defined_actionHsy���	�i�	�	�V�	� �(�(�*�����'�6�#6�#6��!'���	�	I����'�6�#6�#6��!'���	�	Irr&)r)r*r+r,r-rrrrr!r%r�r+r.r1r6r:r>rArErHrKrYr.r/rRs@rr
r
�s����7�0�D�0�
0�T�0�
7�4�N�D�7�7�A�)�
A�E�F�"E�C�:�3�I�Irr
c�.`�\sQsQsnQsQsQsUsP!)�TestActionsReturnedigc�D�[O2oUOQ2oUOUOQ2UOQQ2oUOUOQ2UOQQ2oUOUOQ2P!)rwr7r�r�r{rmr�rp)r:r;r�r�r�r�s&  rr�TestActionsReturned.test_destis����(�(�*���$�$�W�-��������e�,��$�$�T�7�3��������e�,��$�$�T�4�0��������c�*rc�>�[O2oUOQQ]*]T[]],QQQQ5	oUO	UO
Q2UO	UO]*2UO	UO]T2UO	UO[2UO	UO]],2UO	UOQ2UO	UOQ2UO	UOQ2P!)rwr|r]�BARr})rr~rzryrr�r�r�)
r:r;r�r�r�rr~rzryrr�r�r�r�s&  r�	test_misc�TestActionsReturned.test_miscrs����(�(�*���$�$�W�C�r�-/�c�A�q�6�*/��U�%�L��	
������s�+�������r�*��������,�������c�*�������!�Q��0�������e�,��������/�������e�,rr&)r)r*r+r,rrar.r/rRs@rr\r\gs����+�-�-rr\c�D`�\sQsQsnQsQs\Q2sQsQs	Us
P!)�TestConflictHandlingi�c�T�UO[[OQQ5P!)r7)�conflict_handler)r�rNr:r;r$s&r�
test_bad_type�"TestConflictHandling.test_bad_type�s"�����*�h�&=�&=�+0�	�	2rc�"�[O2oUOQ2UO[OUOQ2UOQ2UO[OUOQ2P!)rmr
)r:r;r�r�r�r@s& r�test_conflict_error�(TestConflictHandling.test_conflict_error�sn���(�(�*�����D�!����(�0�0� �-�-�t�	5����H�%����(�0�0� �-�-�x�	9rc��[OoUQQQ5oUOQQQ5UOQQQ5UOUO	2[
OQ22UOQQ	Q
5UOQQQ
5UOUO	2[
OQ22P!)
r��resolve)r�rfrmzOLD XrGzNEW Xz�            usage: PROG [-h] [-x X]

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

            options:
              -h, --help       show this help message and exit
              -x X             NEW X
              --spam NEW_SPAM
            )r:r;r�r�r�rerf)rrrAs&  r�test_resolve_error�'TestConflictHandling.test_resolve_error�s����,�,�
���)�D�����D�w��/����D�w��/�����+�+�-�x���@�0�	�	���H�j��9����H�j��9�����+�+�-�x���@�0�	rc��[O2oUO2oUOQQ,Q5UO	[
QUOQ2UO	[
QUOQ2UO	[
QUOQQ,Q5UO	[
QUOQQ,Q5P!)�fullname�aliasrszconflicting subparser: fullnamezconflicting subparser: aliasz%conflicting subparser alias: fullnamer�z"conflicting subparser alias: alias)r:r;r�r�rerN)rrA�sps&  r�test_subparser_conflict�,TestConflictHandling.test_subparser_conflict�s����(�(�*��
�
"�
"�
$��
�
�
�j�7�)�
�4����z�@�!�}�}�j�	:�	
���z�=�!�}�}�g�	7�	
���z�F�!�}�}�g�
�|�	�	M�	
���z�C�!�}�}�g��y�	�	Jrr&)r)r*r+r,rgrjrrprvr.r/rRs@rrdrd�s/����2�9�����2J�Jrrdc�\`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsUsP!)
�TestOptionalsHelpVersionActionsi�z!Test the help and version actionsc� �UO[29^tt^2oUOUO22PPP2UO	UO2WOO2P!)%fhKF9hr�)r�r�rKrYr�r�rGr�)rrArZrIs&&& r�assertPrintHelpExit�3TestOptionalsHelpVersionActions.assertPrintHelpExit�s\��
�
�
�2�
3�
3�r����h�n�n�.�/�4�����+�+�-�r�|�|�/B�/B�C�4�
3�s� A=�=B
	�B
	c�J�UO[UOU2P!r�)r�r�rKr�s&&*rr��9TestOptionalsHelpVersionActions.assertArgumentParserError�s�����-�v�/@�/@�$�Grc���[2oUOQQQQQ5UOUQ2UOUQ2UO[[
UQ2P!)r�rirjrkrlrEr��format_version�rr�r{r�r�rr@s& r�test_version�,TestOptionalsHelpVersionActions.test_version�sV��+�-�����D�+�i���O�� � ���.�� � ���2����.�'�6�;K�Lrc�,�[QQ5oUOQQQQQ5UO[29^tt^2oUO	Q,2PPP2UOQWOO2P!)%fhK89h)�PPPr4r�rirjz%(prog)s 3.5rlzPPP 3.5
�rr�r�r�rKr�rGr�rHs&  r�test_version_format�3TestOptionalsHelpVersionActions.test_version_format�so��+��7�����D�+�i���X�
�
�
�2�
3�
3�r����t�f�%�4�����b�l�l�&9�&9�:�4�
3�s�B�B	�B	c���[P
Q5oUOQQQQQ5UOUQ2UOUQ2UO[[
UQ	2P!)
Fr�r�rirjrkrlrEr�r�)rr�r�r�r�rr@s& r�test_version_no_help�4TestOptionalsHelpVersionActions.test_version_no_help�sX��+�U�;�����D�+�i���O��&�&�v�t�4��&�&�v�x�8����.�'�6�;K�Lrc�*�[QQ5oUOQQQQ5UO[29^tt^2oUO	Q,2PPP2UOQWOO2P!)%fhK89h)r�r4r�rjz%(prog)s 3.7rlzXXX 3.7
r�rHs&  r�test_version_action�3TestOptionalsHelpVersionActions.test_version_action�sm��+��7�����D��N��K�
�
�
�2�
3�
3�r����t�f�%�4�����b�l�l�&9�&9�:�4�
3�s�B�B	�B	c��[P
Q5oUOUQ2UOUQ2UOUQ2UOUQ2P!)Fr�rEr�r�ri)rr�r@s& r�test_no_help�,TestOptionalsHelpVersionActions.test_no_help�sL��+�U�;���&�&�v�t�4��&�&�v�x�8��&�&�v�t�4��&�&�v�{�;rc��[2oUOQQQ5UOQQQ5UOUQ2UOUQ2UOUQ2UO	[
[UQ2P!)rmr�rzr�rjr�rir�)rr�r{r�r�r�rr@s& r�test_alternate_help_version�;TestOptionalsHelpVersionActions.test_alternate_help_version�su��+�-�����D���0����D���3�� � ���.��&�&�v�t�4��&�&�v�{�;����.�'�6�;K�Lrc�~�[2oUOQQQQ5UOQQQ5UOQ2,QNoUQQ	,*oSFDcoSFDoU8Q
U80oJ	UOUWQ*2UOVQ*2UO[[
UQ
2Je	P!)rirjrkrlrmryrzr�z--bad-optionzfoo bar bazz %s rEr�r�)r'rmr7z-x barzbaz -xr�)rrA�valid_prefixes�valid_suffixes�prefix�suffixr�s&      r�!test_help_version_extra_arguments�ATestOptionalsHelpVersionActions.test_help_version_extra_arguments�s���+�-�����K�	�5��I����D���6����C� �?��'�>�=�*I�I��$�F�(��(.��7��)��$�$�V�V�d�]�;��$�$�V�h�->�?����n�g�v�?O�P�%rr&)r)r*r+r,r-r{r�r�r�r�r�r�r�r�r.r/rRs@rryry�sA����+�D�
H�M�;�M�;�<�M�Q�Qrryc�V`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
UsP!)�TestStringsiz3Test str()  and repr() on Optionals and Positionalsc�`�[[1FDoUOUU2U2J	P!r�)r^r�r�)r�obj�
result_stringrFs&&& r�assertStringEqual�TestStrings.assertStringEquals$���$�K�D����T�#�Y�
�6� rc�t�[O,QNQQQ]*,Q	NP
QQQ5	oQoUOV2P!)
rwr	r�r�HELP�METAVAR�	rTr�ryrrzrr+r�r�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', deprecated=False))rwrr��rra�)r:rgr�)r�optionrGs&  r�
test_optional�TestStrings.test_optionalsE�����0���������	��
3�	�
	
���v�.rc��[O,Q[QQ,QNP	QQQ5	oQ[*oUOV2P!)rpr|rXzH HH HzMV MV MVr�z�Action(option_strings=[], dest='x', nargs='?', const=None, default=2.5, type=%r, choices=[0.5, 1.5, 2.5], required=True, help='H HH H', metavar='MV MV MV', deprecated=False))rYg�?rX)r:rgr[r�)r�argumentrGs&  r�
test_argument�TestStrings.test_argument*sO���?�?������#����	 ��
 �#(�
(�	�
	
���x�0rc�^�[O]*QQ5oQoUOV2P!)rcrr�zNamespace(foo=42, bar='spam')�r:r�r��rr�rGs&  r�test_namespace�TestStrings.test_namespace<s'��
�
�
�B�F�
3��0�����r�*rc�`�[OQ-QQ-@oQoUOV2P!)�"�quotezNamespace(**{'"': 'quote'})r&r�r�s&  r�'test_namespace_starkwargs_notidentifier�3TestStrings.test_namespace_starkwargs_notidentifierAs,��
�
�
�
1�3��.�
1��2�����r�*rc�d�[OQQ]-QQ-@oQoUOV2P!)rnr�r�z Namespace(a=1, **{'"': 'quote'})r&r�r�s&  r�2test_namespace_kwargs_and_starkwargs_notidentifier�>TestStrings.test_namespace_kwargs_and_starkwargs_notidentifierFs1��
�
�
�
6�!�
6��W�~�
6��7�����r�*rc�`�[OQ-QP	-@oQoUOV2P!)�validzNamespace(valid=True)r&r�r�s&  r�$test_namespace_starkwargs_identifier�0TestStrings.test_namespace_starkwargs_identifierKs,��
�
�
�
2�7�D�/�
2��(�����r�*rc��[OQQ5oQ[O*oUOV2P!)r�r4zvArgumentParser(prog='PROG', usage=None, description=None, formatter_class=%r, conflict_handler='error', add_help=True))r:r;rr�)rrArGs&  r�test_parser�TestStrings.test_parserPs:���(�(�f�5��
�'�5�5�
6�	�	
���v�.rr&)r)r*r+r,r-r�r�r�r�r�r�r�r�r.r/rRs@rr�r�s5����=�7�/�$1�$+�
+�
+�
+�
/�/rr�c�4`�\sQsQsnQsQsQsQsUsP!)�
TestNamespacei\c�
�[O2oUO[[UQ2[O]*QQ5oUOUO]*2UOUOQ2P!)rprr�)r:r�r�r�rr�rnr	r�s& r�test_constructor�TestNamespace.test_constructor^s^��
�
�
�
!�����.�'�2�s�;�
�
�
�"��
/��������r�"�������v�&rc��[O]]Q5o[O]]Q5o[O]Q5o[O]Q5oUOV2UOV2UOV2UOV#2UOV$2UO	V6g2UO	V6g2UO	V#6g2UO	V$6g2P!)rr�)r	rn)rnr�)r:r�r��assertNotEqual�
assertTrue)r�ns1r�r��ns4s&    r�
test_equality�TestNamespace.test_equalityfs���� � �1��*��� � �1��*��� � �1�%��� � �1�%������"����C�%����C�%����C�%����C�%�����
�#�����
�#�����
�#�����
�#rc���[O]]Q5oUOUOP2[2UOUOP2[2P!)rr�)r:r�rr��NotImplemented�__ne__r�s& r�$test_equality_returns_notimplemented�2TestNamespace.test_equality_returns_notimplementedvs@��
�
�
�!�q�
)���
�
�b�i�i��o�~�6��
�
�b�i�i��o�~�6rr&)	r)r*r+r,r�r�r�r.r/rRs@rr�r�\s����'�$� 7�7rr�c�4`�\sQsQsnQsQsQsQsUsP!)�TestEncodingi�c���[OOU2vqUQ*
o[UQQQ59^tt^2oUO	2PPP2P!)%fhP!9h)�.pyr�rr�)r�r��splitextr�r�)rr�r>r�s&&  r�_test_module_encoding�"TestEncoding._test_module_encoding�sJ���'�'�"�"�4�(�����
��
�$��g�
.�
.�!�
�F�F�H�/�
.�
.�
.�s�A�A.	�&A.	c�F�UO[O2P!r�)r�r:r�r$s&r�test_argparse_module_encoding�*TestEncoding.test_argparse_module_encoding�s���"�"�8�#4�#4�5rc�2�UO[2P!r�)r�r�r$s&r�"test_test_argparse_module_encoding�/TestEncoding.test_test_argparse_module_encoding�s���"�"�8�,rr&)	r)r*r+r,r�r�r�r.r/rRs@rr�r��s�����6�-�-rr�c�(`�\sQsQsnQsQsUsP!)�TestArgumentErrori�c�p�Qo[OPU2oUO[U2U2P!)z
my error here)r:r�r�r^)rrWrs&  r�test_argument_error�%TestArgumentError.test_argument_error�s-�����&�&�t�S�1������U��S�)rr&)r)r*r+r,r�r.r/rRs@rr�r��s����*�*rr�c�2`�\sQsQsn\Q2sQsUsP!)�TestArgumentTypeErrori�c�0�Qo[QP
Q5oUOQUQ5UO[29^tt^2oUO	Q,2PPP2UOQWOO2P!)%fhK89h)c�0�[OQ2g)�spam!)r:�ArgumentTypeErrorrFs&rr�<TestArgumentTypeError.test_argument_type_error.<locals>.spam�s���,�,�W�5�5rr�r1rprWr�z-usage: PROG x
PROG: error: argument x: spam!
)rr�r�r�rKr�rGr�)rrrArIs&   r�test_argument_type_error�.TestArgumentTypeError.test_argument_type_error�sx��	6�,��%�H�����C�d��+�
�
�
�2�
3�
3�r����u�g�&�4����J����,�,�	.�4�
3�s�B�B	�B	r&)r)r*r+r,rr�r.r/rRs@rr�r��s�����
.��
.rr�c�4`�\sQsQsnQsQsQsQsUsP!)�TestMessageContentErrori�c�6�[QPQ5oUOQ[Q5UOQ[P	Q5UOQ[QQ5UO	[
29^tt^2oUO
,2PPP2[WO2oUOUQ2UOUQ	2UOUQ2UO	[
29^tt^2oUO
Q
,2PPP2[UO2oUOUQ2UOUQ	2UOUQ2UO	[
29^tt^2oUO
Q
Q,2PPP2[UO2oUOUQ2UOUQ	2UOUQ2P!)%fhCKe9h)%fhK�9h)%fhK�9h)r�r��req_posrW�-req_optr*�need_oner)ryr�req_opt�myXargumentz
-req_opt=1)
rr�r^r�r�r�rKrGrNr��rrArIrWs&   r�%test_missing_argument_name_in_message�=TestMessageContentError.test_missing_argument_name_in_message�s���+��r�B�����I�C��0����J�S�4��@����J�S���<�
�
�
�2�
3�
3�r����b�!�4��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�
3�r����}�o�.�4��"�,�,�������i�(�����i�(�����j�)�
�
�
�2�
3�
3�r����}�l�;�<�4��"�,�,�������i�(�����i�(�����j�)�#4�
3�
3��4�
3��4�
3�s6�3G!�5G5�8H�!G2	�*G2	�5H	�>H	�H	�H	c��[QPQ5oUOQ[Q5UOQ[P	Q5UOQ[QP	Q5UO[29^tt^2oUO,2PPP2[WO2oUOUQ2UOUQ	2UOUQ
2UO[29^tt^2oUOQ,2PPP2[UO2oUOUQ2UOUQ	2UOUQ
2P!)%fhK�9h)%fhKp9h)r�r�r�rWz	--req_optr*z	--opt_optr|)ryrrzr��opt_optz--req_opt=1)rr�r^r�r�r�r�rKrGrNr�r�s&   r�%test_optional_optional_not_in_message�=TestMessageContentError.test_optional_optional_not_in_message�s0��+��r�B�����I�C��0����K�c�D��A����K�d�#�$(�	�	*�
�
�
�2�
3�
3�r����b�!�4��"�,�,�������i�(�����i�(�����i�(�
�
�
�2�
3�
3�r����}�o�.�4��"�,�,�������i�(�����i�(�����i�(�4�
3��4�
3�s$�4E�6E1�E.	�'E.	�1F	�:F	c�r�[QPQ5oUOQ2UOQQQQ5UO[29^tt^2oUO	,2PPP2[WO2oUOUQ2UOUQ2P!)%fhKK9h)r�r�r��optional_positionalr|r$r~)	rr�r�r�rKr^rGrNr�r�s&   r�'test_optional_positional_not_in_message�?TestMessageContentError.test_optional_positional_not_in_message�s���+��r�B�����I�&����1��f��M�
�
�
�2�
3�
3�r����b�!�4��"�,�,�������i�(�����3�4�	4�
3�s�B&�&B6	�/B6	r&)	r)r*r+r,r�r�r	r.r/rRs@rr�r��s����*�2)�&5�5rr�c�(`�\sQsQsnQsQsUsP!)�TestTypeFunctionCallOnlyOncei�c��`�U1Qko[O2oUOQUQQ5UOQO	22oRO[
QQ5U2P!)c�.:�ROUQ2Q!)r��
foo_converted�r�)�string_to_convertrs&�rr�LTestTypeFunctionCallOnlyOnce.test_type_function_call_only_once.<locals>.spam�s������.��8�"rrwr{rxz--foo spam!r	r�)r:r;r�rKrYr�r��rrrAr�sf   r�!test_type_function_call_only_once�>TestTypeFunctionCallOnlyOnce.test_type_function_call_only_once�s[���	#��(�(�*�����G�$���>�� � ��!4�!4�!6�7�������0�$�7rr&)r)r*r+r,r	r.r/rRs@rr	r	�s����8�8rr	c�@`�\sQsQsnQsQsQsQsQsQs	Us
P!)�TestDeprecatedArgumentsi�c��[O2oUOQQP	Q5[29^tt^2oUO	QQ,2PPP2WO2oUO
UQ2UOUOQ2]2[29^tt^2oUO	QQ,2PPP2UO2oUO
UQ2UOUOQ2]2[29^tt^2oUO	,QN2PPP2UO2oUO
UQ2UO
UQ2UOUOQ2]2[29^tt^2oUO	,QN2PPP2UO2oUO
UQ2UOUOQ2]2P!)%fhCK�9h)%fhCK^9h)%fhCK9h)%fhK�9h)	r�rw)�
deprecatedr�%warning: option '--foo' is deprecated�
is deprecated�"warning: option '-f' is deprecated)rwrr��ham)rwrrwr	)	r:r;r�rrKr"rNr�r��rrAr�s&  r�test_deprecated_option�.TestDeprecatedArguments.test_deprecated_options����(�(�*�����D�'�d��;�
�
�
�&����w��/�0�����"������!H�I�������o�6��:�
�
�
�&����t�V�n�-�����"������!E�F�������o�6��:�
�
�
�&����<�=�����"������!H�I�����!E�F�������o�6��:�
�
�
�&����?�@�����"������!H�I�������o�6��:�/�
�
���
�
���
�
���
�sG�H�.H�H+�"H?�H	�H	�H(	� H(	�+H<	�4H<	�?I	�I	c��[O2oUOQQ[OP	Q5[	29^tt^2oUOQ,2PPP2WO
2oUOUQ2UOUOQ2]2[	29^tt^2oUOQ,2PPP2UO
2oUOUQ2UOUOQ2]2[	29^tt^2oUOQ,2PPP2UO
2oUOUQ2UOUOQ2]2[	29^tt^2oUOQQ,2PPP2UO
2oUOUQ2UOUQ2UOUOQ2]2P!)%fhCK�9h)%fhCK]9h)%fhCK9h)%fhK�9h)r�rw�r{r	r	r	r	rBz(warning: option '--no-foo' is deprecated)
r:r;r�rErrKr"rNr�r�r	s&  r�test_deprecated_boolean_option�6TestDeprecatedArguments.test_deprecated_boolean_options����(�(�*�����D�'�(�2P�2P�]a��b�
�
�
�&����w�i�(�����"������!H�I�������o�6��:�
�
�
�&����t�f�%�����"������!E�F�������o�6��:�
�
�
�&����z�l�+�����"������!K�L�������o�6��:�
�
�
�&����w�
�3�4�����"������!H�I�����!K�L�������o�6��:�/�
�
���
�
���
�
���
�sH�H�<H#�,H7�I�H 	�H 	�#H4	�,H4	�7I	�I	�I	�I	c��[O2oUOQQP	Q5UOQQP	Q5[29^tt^2oUO	,2PPP2WO2oUO
UOQ2]2[29^tt^2oUO	Q,2PPP2UO2oUOUQ2UO
UOQ2]2[29^tt^2oUO	QQ,2PPP2UO2oUOUQ2UOUQ2UO
UOQ2]2P!)%fhCK79h)%fhK�9h)%fhK�9h)	r7r|�rr	r{r	r�%warning: argument 'foo' is deprecatedr	z%warning: argument 'bar' is deprecated�	r:r;r�rrKr"r�r�rNr	s&  r�test_deprecated_arguments�1TestDeprecatedArguments.test_deprecated_arguments<sZ���(�(�*�����E����>����E����>�
�
�
�&����b�!�����"��������o�6��:�
�
�
�&����v�h�'�����"������!H�I�������o�6��:�
�
�
�&����v�u�o�.�����"������!H�I�����!H�I�������o�6��:�!�
�
��
�
���
�s6�F�.F%�F8�F"	�F"	�%F5	�.F5	�8G	�G	c�J�[O2oUOQQP	Q5[29^tt^2oUO	,2PPP2WO2oUO
UOQ2]2[29^tt^2oUO	Q,2PPP2UO2oUOUQ2UO
UOQ2]2[29^tt^2oUO	QQ,2PPP2UO2oUOUQ2UO
UOQ2]2P!)%fhCK%9h)%fhK�9h)%fhK|9h)r7rr	r	rr	r	r 	r	s&  r�test_deprecated_varargument�3TestDeprecatedArguments.test_deprecated_varargumentSs4���(�(�*�����E����>�
�
�
�&����b�!�����"��������o�6��:�
�
�
�&����v�h�'�����"������!H�I�������o�6��:�
�
�
�&����v�u�o�.�����"������!H�I�������o�6��:��
�
��
�
���
�s5�E+�E?�
F�+E<	�4E<	�?F	�F	�F"	�F"	c��[O2oUO2oUOQQ,P	Q5UOQ2[	29^tt^2oUOQ,2PPP2WO
2oUOUOQ2]2[	29^tt^2oUOQ,2PPP2UO
2oUOUQ2UOUOQ2]2[	29^tt^2oUOQ,2PPP2UO
2oUOUQ2UOUOQ2]2P!)%fhCK$9h)%fhK�9h)%fhK|9h)r7r})r�r	r{r	z$warning: command 'foo' is deprecatedz$warning: command 'baz' is deprecated)
r:r;r�r�rrKr"r�r�rN)rrAr�r�s&   r�test_deprecated_subparser�1TestDeprecatedArguments.test_deprecated_subparserhsR���(�(�*���*�*�,�
����e�e�W���F����e�$�
�
�
�&����u�g�&�����"��������o�6��:�
�
�
�&����u�g�&�����"������!G�H�������o�6��:�
�
�
�&����u�g�&�����"������!G�H�������o�6��:��
�
��
�
���
�s6�F
�=F!�-F4�
F	�F	�!F1	�*F1	�4G	�=G	r&)r)r*r+r,r	r	r!	r$	r'	r.r/rRs@rr	r	�s#����;�:;�:;�.;�*;�;rr	c�:`�\sQsQsnQsQsQsQsQsUs	P!)�TestTypeFunctionCalledOnDefaulti�c��`�U1Qko[O2oUOQU]Q5UO,2oRO	[]Q5U2P!)c�.:�ROU]2Q!)rr	r	)�int_to_convertrs&�rr�]TestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default.<locals>.spam�s������^�Q�/�"rrwrxr��r:r;r�rKr�r�r	sf   r�/test_type_function_call_with_non_string_default�OTestTypeFunctionCalledOnDefault.test_type_function_call_with_non_string_default�sQ���	#��(�(�*�����G�$���:�� � ��$��������D�)rc��Qo[O2oUOQUQQ5UO,2oUO	[QQ5U2P!)c��Q!)r	r&)r-	s&rr�YTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default.<locals>.spam�s��"rrw�0rxr	r�r/	r	s&   r�+test_type_function_call_with_string_default�KTestTypeFunctionCalledOnDefault.test_type_function_call_with_string_default�sQ��	#��(�(�*�����G�$���<�� � ��$�������0�$�7rc��Qo[O2oUOQUQQ5UO,2oUO	[QQ5U2P!)c��UQ*!)rr&)�str_to_converts&rr7�YTestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default.<locals>.extend�s
��!�C�'�'r�--testrrxz**)r�r/	)rr7rAr�s&   r�)test_no_double_type_conversion_of_default�ITestTypeFunctionCalledOnDefault.test_no_double_type_conversion_of_default�sR��	(��(�(�*�����H�6�3��?�� � ��$��	
�������-rc��[O2oUOQQ[,QQ5UO	,2oUOUO,2P!)r<	r�rw)r�ryrzr{)r:r;r�r^rKr�r�r�s&  r�test_issue_15906�0TestTypeFunctionCalledOnDefault.test_issue_15906�sT���(�(�*�����H�6��$&�x�	�	9�� � ��$��������B�'rr&)
r)r*r+r,r0	r6	r=	r@	r.r/rRs@rr*	r*	�s����	*�8�
.�(�(rr*	c�L`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sUsP!)
�TestParseKnownArgsi�c�T�[O2oUOQ2P!)Nr&�r:r;rKr@s& r�test_arguments_tuple�'TestParseKnownArgs.test_arguments_tuple�����(�(�*�����"�rc�T�[O2oUO,2P!r�rE	r@s& r�test_arguments_list�&TestParseKnownArgs.test_arguments_list�rH	rc�v�[O2oUOQ2UOQ2P!)rpro�r:r;r�rKr@s& r�test_arguments_tuple_positional�2TestParseKnownArgs.test_arguments_tuple_positional�s,���(�(�*�����C� ����&�!rc�x�[O2oUOQ2UOQ,2P!rorM	r@s& r�test_arguments_list_positional�1TestParseKnownArgs.test_arguments_list_positional�s.���(�(�*�����C� ����3�%� rc��[O2oUOQ2UOQO	22vq#UO[
QQ5U2UOQQ,U2P!)rwz--foo F --bar --baz�Fr�r�r�)r:r;r�r�rYr�r�)rrAr��extrass&   r�test_optionals�!TestParseKnownArgs.test_optionals�sc���(�(�*�����G�$��.�.�/D�/J�/J�/L�M���������d�+����'�7�+�V�4rc�>�[O2oUOQQ][Q5UOQQQ5UOQ2,Q	NoUO	U2vq4UO[
]P	QQ5U2UO,Q
NU2P!)r�r|)rr~ryr
r8rzr�r�)�vrr�)r�rArwr�r�r0)rArwr0)r:r;r�r�r�r�r�)rrAr6r�rU	s&    r�
test_mixed�TestParseKnownArgs.test_mixed�s����(�(�*�����D��1�3��?����H�]��;����H�%�2���.�.�t�4�������a�d�3�7��>����,�f�5rc��[O2oUOQQQQ5UO,2oUO	[,Q5U2P!)rpr)rrror�r/	r�s&  r�test_zero_or_more_optional�-TestParseKnownArgs.test_zero_or_more_optional�sI���(�(�*�����C�s�J��?�� � ��$������b��4�(rr&)
r)r*r+r,rF	rJ	rN	rQ	rV	rZ	r]	r.r/rRs@rrC	rC	�s-������"�
!�
5�	6�)�)rrC	c�L`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sUsP!)
�TestDoubleDashi�c��[OP
Q5oUOQQ2UOQQQ5UOQ,2oUO	[Q,Q	5U2UO
[OQ
UOQQ,2UOQ,2oUO	[Q,Q	5U2UO
[OQ
UOQQ,2UO,QN2oUO	[QQ
Q,Q	5U2UO,QN2oUO	[QQQ
,Q	5U2UO,QN2oUO	[P,QNQ	5U2UO,QN2oUO	[P,QNQ	5U2P!)Frur�rwr{rr�--foo=--r�r�z(argument -f/--foo: expected one argument�-f--rnr	r
)rwrnr�r	r
)rnr	rwr
)rnr�r	rwr
)rnr�r	r�r
rwr)rnr	r�r
rwr)r:r;r�rKr�r�rer�r�s&  r�test_single_argument_option�*TestDoubleDash.test_single_argument_option�s����(�(�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���[OP
Q5oUOQQQQ5UOQQQ5UOQ,2oUO	[Q,,Q	5U2UOQQ,2oUO	[,,Q	5U2UOQ
,2oUO	[Q,,Q	5U2UOQQ,2oUO	[,,Q	5U2UO,QN2oUO	[QQ,Q
Q,Q	5U2UO,QN2oUO	[Q
Q,QQ,Q	5U2UO,QN2oUO	[P,QNQ	5U2UO
,QN2vq#UO	[Q
,QQ,Q	5U2UO	UQQ,2P!)Frur�rwrrr{rb	r�r�rc	rnr	r
r)rwrnr	r�r
r)rnr	rwr
r)rnr�r	rwr
r)rnr	rwr
r�r)r:r;r�rKr�r�r�)rrAr�r6s&   r�test_multiple_argument_option�,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�
��������C��:�6��=������c�{�+rc�r�[OP
Q5oUOQ2UOQQQ5UO,QN2oUO	[QQQ	,Q
5U2UO,QN2oUO	[QQQ	,Q
5U2UO,Q
N2oUO	[QQQ	,Q
5U2UO,QN2oUO	[Q,QNQ
5U2UO,QN2oUO	[Q,QNQ
5U2P!)Frur7r{rrr�rnr	r
r��r�rnr	r
�rnr�r	r
�rnr	r�r
�rnr�r	r�r
�r	r�r
)r�r�rnr�r	r
r/	r�s&  r�test_multiple_double_dashes�*TestDoubleDash.test_multiple_double_dashess	���(�(�u�=�����E�"����E���-�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!6�7�������#�s��4�d�;�� � �!<�=�������)9�:�D�A�� � �!B�C�������*?�@�$�Grc���[OP
Q5oUOQ2UOQQQ5UO,QN2oUO	[QQQ,Q	5U2UO,QN2oUO	[QQQ,Q	5U2UO,Q
N2oUO	[Q,QNQ	5U2UO,QN2oUO	[Q,QNQ	5U2[OP
Q5oUOQ
2UOQQQ5UO,QN2oUO	[Q,QNQ	5U2P!)Frur7r{rPrrnr	r
r�rwrj	rk	rl	rn	rm	)rwrnr�r	r�r
)r�r	r�r
r/	r�s&  r�test_remainder�TestDoubleDash.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��[OP
Q5oUOQQQ5UOQQQ5UO,QN2oUO	[P,Q	NQ5U2UO,Q
N2oUO	[,QN,Q5U2UO,QN2oUO	[,Q
N,Q5U2UO,QN2oUO	[,QN,Q5U2P!)FrurwrPrr{rr�)r�rwrnr	�rwrnr	)rwr�rnr	)r�rnr	)rwrnr�r	�rnr�r	)rwrnr	r�)rnr	r�r/	r�s&  r�test_optional_remainder�&TestDoubleDash.test_optional_remainder6s����(�(�u�=�����G�5��1����E���-�� � �!:�;�������*=�>��E�� � �!:�;������ 0�b�9�4�@�� � �!:�;������ 0�b�9�4�@�� � �!:�;������ 0�b�9�4�@rc�n�[OP
Q5oUOQ2UO2oUO	Q2oUOQ2UOQQQ5UO,QN2oUO
[QQQ	Q
,Q5U2UO,QN2oUO
[QP,QNQ5U2UO,QN2oUO
[QP,QNQ5U2UO,QN2oUO
[QP,QNQ5U2UO,QN2oUO
[QQQ	Q
,Q5U2UO,QN2oUO
[QQQ	Q
,Q5U2UO,QN2oUO
[QP,QNQ5U2UO,QN2oUO
[QP,QNQ5U2UO[OQ
UO
,QN2P!)Frur7rr�r{rrrprnr	r
�r7r�r{�invalid choice: '--')rprrnr	r�r
)rprrnr	r�r�r
)rnr	r�r
)rprrnr�r	r�r
)rprr�rnr	r�r
)rpr�rrnr	r�r
)r�rprrnr	r�r
)rprr�rnr�r	rv	)rpr�rr�rnr�r	)r�rpr�rrnr	�
r:r;r�r�r�rKr�r�rer��rrAr�r�r�s&    r�test_subparser�TestDoubleDash.test_subparserDs����(�(�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��[OP
Q5oUOQQQ5UO2oUO	Q2oUOQ2UOQQQ5UO,QN2oUO
[QQ	,QQ
Q,Q
5U2UO[OQUO
,QN2P!)Frurwrrrr�r{rpr�rnr	r
rz	r{	)	rwrpr�r�rrnr	r�r
)rwrpr�r�rrnr	r|	r}	s&    r�-test_subparser_after_multiple_argument_option�<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�	Lrr&)
r)r*r+r,rd	rg	ro	rr	rw	r~	r�	r.r/rRs@rr`	r`	�s4����V�0,�.H� H�(A�C�8L�Lrr`	c�@`�\sQsQsnQsQsQsQsQsQs	Us
P!)�TestIntermixedArgsisc	���[OQQ5oUOQQQ5UOQQP	Q5oUOQ2UOQ	Q
[Q5QO	2oUOU2oUO
[Q
QQ,QNQ5U2UOU2vqEUO
[Q
QQ],Q5U2UO
QQ,U2UOU2vqEUO
[Q
QQ,QNQ5U2UO
,U2QO	2oUOU2vqEUO
[Q
QQ,QNQ5U2UO
Q,U2QO	2oUOU2vqEUO
[Q
QQ,QNQ5U2UO
Q,U2QO	2oUOU2vqEUO
[Q
QQ,QNQ5U2UO
Q,U2UOUO2UO
UOP	2P!)r�r4rwr7r�r�r{r$�cmd�restr)rryzcmd --foo x 1 --bar y 2 3r�rp)r{r�	r7r�	rr�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 3r�)
r:r;r�r�rY�parse_intermixed_argsr�r�r��parse_known_intermixed_argsr)r�r+)rrAr{r6r�rU	s&     r�
test_basic�TestIntermixedArgs.test_basicts)���(�(�f�5�����G�%��0��!�!�'���!�E�����E�"����F�#�C��8�*�0�0�2���+�+�D�1��������C�i�H�$�O��.�.�t�4���������C�q�c�B�D�I����#�s��V�,��9�9�$�?���������C�i�H�$�O�����V�$�3�8�8�:���9�9�$�?���������C�i�H�$�O����)��f�-�2�8�8�:���9�9�$�?���������C�i�H�$�O����)��f�-�2�8�8�:���9�9�$�?���������C�i�H�$�O����)��f�-�	
���&�,�,�'�������t�,rc��[QQ5oUOQ2UOQ2UOQQQ5QO2oUO[29^tt^2oUOU2PPP2UO
[WO2Q2P!)%fhK79h)	r�r4rrpr�rPrrSz\.\.\.)	rr�rYr�rIr�	rNr^rG)rrAr6rIs&   rrr	�!TestIntermixedArgs.test_remainder�s���+��8�����D�!����C� ����C�u��-��!�!�#���
�
�y�
)�
)�R��(�(��.�*�����R�\�\�*�I�6�*�
)�s�0B1�1C	�:C	c�|�[OQP
Q5oUOP	Q5oUOQQQQ5UOQQQ	5UOQ
QQQ
Q5UO	QO22oUO
[QQ,P	PQ5U2UO	QO22oUO
[QQ,P	PQ5U2UO[OQUOQO22UO
UOP	2P!)r��r�rvr�rwryr]r�r
r^rGr�rr�r_r�z	--foo 1 2r�r)r�r7rz	1 --foo 2z-one of the arguments --foo --spam is requiredr�)r:r;r�r�r�	rYr�r�rer�r+�rrAr*r�s&   r�test_required_exclusive�*TestIntermixedArgs.test_required_exclusive�s���(�(�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���[OQP
Q5oUOP	Q5oUOQQQQ5UOQQQ	5UOQ
QQQ
Q5UO	Q,2oUO[
P	PQQ5U2UO	QQ,2oUO[
P
PQQ,Q5U2UO[OQUO,2UO[OQUO,QN2UO[OQUO,QN2UOUOP	2P!)r�r�	r�rwryr]r�r
r^rGr�rr�r_r�rarnr	z4one of the arguments --foo --spam badger is requiredz0argument badger: not allowed with argument --fooru	)rnrwr	)
r:r;r�r�r�	r�r�rer�r+r�	s&   r�'test_required_exclusive_with_positional�: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�	
�������.rc�d�[QQ5oUO[UOQ,2P!)r�r4rn)rr�r�r�	r@s& r�test_invalid_args�$TestIntermixedArgs.test_invalid_args�s'��+��8�����-�v�/K�/K�c�U�Srr&)r)r*r+r,r�	rr	r�	r�	r�	r.r/rRs@rr�	r�	ss&����$-�L7�/� /�,T�Trr�	c�(`�\sQsQsnQsQsUsP!)�!TestIntermixedMessageContentErrori�c��[QPQ5oUOQ[Q5UOQ[P	Q5UO	[
29^tt^2oUO
,2PPP2[WO2oUOUQ2UOUQ2UO	[
29^tt^2oUO,2PPP2[UO2oUOUQ2UOUQ2P!)%fhK�9h)%fhK^9h)r�r�r�rWr�r*r�)
rr�r^r�r�r�rKrGrNr�	r�s&   rr��GTestIntermixedMessageContentError.test_missing_argument_name_in_message�s���+��r�B�����I�C��0����J�S�4��@�
�
�
�2�
3�
3�r����b�!�4��"�,�,�������i�(�����i�(�
�
�
�2�
3�
3�r��(�(��,�4��"�,�,�������i�(�����i�(�4�
3��4�
3�s$�D �D3� D0	�)D0	�3E	�<E	r&)r)r*r+r,r�r.r/rRs@rr�	r�	�s����)�)rr�	c�@`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQs Qs!Q s"Q!s#Q"s$Q#s%Q$s&Q%s'Q&s(Q's)Q(s*Q)s+Q*s,Q+s-Q,s.Q-s/Q.s0Q/s1Q0s2Q1s3Q2s4Us5P!)3�TestAddArgumentMetavari�z,length of metavar tuple does not match nargsc�X�[O2oUOQVQ5P!�rw�rr��r:r;r�)rrr�rAs&&& r�do_test_no_exception�+TestAddArgumentMetavar.do_test_no_exception�s#���(�(�*�����G�5��Brc�8�[O2oUO[29^tt^2oUO	QVQ5PPP2UOWOO]*UO2P!)%fhKI9hr�	)	r:r;r�rNr�r�rGr��EXPECTED_MESSAGE)rrr�rArIs&&&  r�do_test_exception�(TestAddArgumentMetavar.do_test_exception�si���(�(�*��
�
�
�z�
*�
*�b�����u��F�+�������*�*�1�-�t�/D�/D�E�+�
*���B	�	B	�B	c�.�UOPQQ5P!)Nr�r�	�r�	r$s&r�test_nargs_None_metavar_string�5TestAddArgumentMetavar.test_nargs_None_metavar_string�s���!�!��c�!�:rc�>�UOP[2Q5P!)Nr�	�r�	�tupler$s&r�test_nargs_None_metavar_length0�6TestAddArgumentMetavar.test_nargs_None_metavar_length0�s�����T�5�7��;rc�.�UOPQQ5P!)Nr�	r�r�	r$s&r�test_nargs_None_metavar_length1�6TestAddArgumentMetavar.test_nargs_None_metavar_length1s���!�!��f�!�=rc�.�UOPQQ5P!)Nr�	�r�r�r�	r$s&r�test_nargs_None_metavar_length2�6TestAddArgumentMetavar.test_nargs_None_metavar_length2s�����T�:��>rc�.�UOPQQ5P!)Nr�	r�r�	r$s&r�test_nargs_None_metavar_length3�6TestAddArgumentMetavar.test_nargs_None_metavar_length3s�����T�?��Crc�.�UOQQQ5P!)r|r�r�	r�	r$s&r�"test_nargs_optional_metavar_string�9TestAddArgumentMetavar.test_nargs_optional_metavar_string����!�!��S�!�9rc�>�UOQ[2Q5P!)r|r�	r�	r$s&r�#test_nargs_optional_metavar_length0�:TestAddArgumentMetavar.test_nargs_optional_metavar_length0������S�%�'��:rc�.�UOQQQ5P!)r|r�	r�r�	r$s&r�#test_nargs_optional_metavar_length1�:TestAddArgumentMetavar.test_nargs_optional_metavar_length1����!�!��V�!�<rc�.�UOQQQ5P!)r|r�	r�	r�	r$s&r�#test_nargs_optional_metavar_length2�:TestAddArgumentMetavar.test_nargs_optional_metavar_length2s�����S�*��=rc�.�UOQQQ5P!)r|r�	r�r�	r$s&r�#test_nargs_optional_metavar_length3�:TestAddArgumentMetavar.test_nargs_optional_metavar_length3������S�/��Brc�.�UOQQQ5P!)rr�r�	r�	r$s&r�$test_nargs_zeroormore_metavar_string�;TestAddArgumentMetavar.test_nargs_zeroormore_metavar_stringr�	rc�>�UOQ[2Q5P!)rr�	r�	r$s&r�%test_nargs_zeroormore_metavar_length0�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length0r�	rc�.�UOQQQ5P!)rr�	r�r�	r$s&r�%test_nargs_zeroormore_metavar_length1�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length1"r�	rc�.�UOQQQ5P!)rr�	r�	r�	r$s&r�%test_nargs_zeroormore_metavar_length2�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length2%����!�!��Z�!�@rc�.�UOQQQ5P!)rr�	r�r�	r$s&r�%test_nargs_zeroormore_metavar_length3�<TestAddArgumentMetavar.test_nargs_zeroormore_metavar_length3(r�	rc�.�UOQQQ5P!)rr�r�	r�	r$s&r�#test_nargs_oneormore_metavar_string�:TestAddArgumentMetavar.test_nargs_oneormore_metavar_string-r�	rc�>�UOQ[2Q5P!)rr�	r�	r$s&r�$test_nargs_oneormore_metavar_length0�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length00r�	rc�.�UOQQQ5P!)rr�	r�r�	r$s&r�$test_nargs_oneormore_metavar_length1�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length13s�����S�&��9rc�.�UOQQQ5P!)rr�	r�	r�	r$s&r�$test_nargs_oneormore_metavar_length2�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length26r�	rc�.�UOQQQ5P!)rr�	r�r�	r$s&r�$test_nargs_oneormore_metavar_length3�;TestAddArgumentMetavar.test_nargs_oneormore_metavar_length39r�	rc�.�UOQQQ5P!)rPr�r�	r�	r$s&r�#test_nargs_remainder_metavar_string�:TestAddArgumentMetavar.test_nargs_remainder_metavar_string>s���!�!��s�!�;rc�>�UOQ[2Q5P!)rPr�	)r�	r�	r$s&r�$test_nargs_remainder_metavar_length0�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length0As���!�!��u�w�!�?rc�.�UOQQQ5P!)rPr�	r�r�	r$s&r�$test_nargs_remainder_metavar_length1�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length1Ds���!�!��v�!�>rc�.�UOQQQ5P!)rPr�	r�	r�	r$s&r�$test_nargs_remainder_metavar_length2�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length2Gs���!�!��z�!�Brc�.�UOQQQ5P!)rPr�	r�r�	r$s&r�$test_nargs_remainder_metavar_length3�;TestAddArgumentMetavar.test_nargs_remainder_metavar_length3Js���!�!���!�Grc�.�UOQQQ5P!)�A...r�r�	r�	r$s&r� test_nargs_parser_metavar_string�7TestAddArgumentMetavar.test_nargs_parser_metavar_stringOs���!�!���!�<rc�>�UOQ[2Q5P!)r
r�	r�	r$s&r�!test_nargs_parser_metavar_length0�8TestAddArgumentMetavar.test_nargs_parser_metavar_length0Rs�����V�U�W��=rc�.�UOQQQ5P!)r
r�	r�r�	r$s&r�!test_nargs_parser_metavar_length1�8TestAddArgumentMetavar.test_nargs_parser_metavar_length1Us���!�!���!�?rc�.�UOQQQ5P!)r
r�	r�	r�	r$s&r�!test_nargs_parser_metavar_length2�8TestAddArgumentMetavar.test_nargs_parser_metavar_length2Xs�����V�Z��@rc�.�UOQQQ5P!)r
r�	r�r�	r$s&r�!test_nargs_parser_metavar_length3�8TestAddArgumentMetavar.test_nargs_parser_metavar_length3[s�����V�_��Erc�.�UO]QQ5P!)rr�r�	r�	r$s&r�test_nargs_1_metavar_string�2TestAddArgumentMetavar.test_nargs_1_metavar_string`����!�!��3�!�7rc�>�UO][2Q5P!)rr�	r�	r$s&r�test_nargs_1_metavar_length0�3TestAddArgumentMetavar.test_nargs_1_metavar_length0c������Q����8rc�.�UO]QQ5P!)rr�	r�r�	r$s&r�test_nargs_1_metavar_length1�3TestAddArgumentMetavar.test_nargs_1_metavar_length1fs���!�!��6�!�:rc�.�UO]QQ5P!)rr�	r�	r�	r$s&r�test_nargs_1_metavar_length2�3TestAddArgumentMetavar.test_nargs_1_metavar_length2i������Q�
��;rc�.�UO]QQ5P!)rr�	r�r�	r$s&r�test_nargs_1_metavar_length3�3TestAddArgumentMetavar.test_nargs_1_metavar_length3l������Q���@rc�.�UO]QQ5P!)rar�r�	r�	r$s&r�test_nargs_2_metavar_string�2TestAddArgumentMetavar.test_nargs_2_metavar_stringqr
rc�>�UO][2Q5P!)rar�	r�	r$s&r�test_nargs_2_metavar_length0�3TestAddArgumentMetavar.test_nargs_2_metavar_length0tr
rc�.�UO]QQ5P!)rar�	r�r�	r$s&r�test_nargs_2_metavar_length1�3TestAddArgumentMetavar.test_nargs_2_metavar_length1w������Q���7rc�.�UO]QQ5P!)rar�	r�	r�	r$s&r�test_nargs_2_metavar_length2�3TestAddArgumentMetavar.test_nargs_2_metavar_length2zs���!�!��:�!�>rc�.�UO]QQ5P!)rar�	r�r�	r$s&r�test_nargs_2_metavar_length3�3TestAddArgumentMetavar.test_nargs_2_metavar_length3}r!
rc�.�UO]QQ5P!)r�r�r�	r�	r$s&r�test_nargs_3_metavar_string�2TestAddArgumentMetavar.test_nargs_3_metavar_string�r
rc�>�UO][2Q5P!)r�r�	r�	r$s&r�test_nargs_3_metavar_length0�3TestAddArgumentMetavar.test_nargs_3_metavar_length0�r
rc�.�UO]QQ5P!)r�r�	r�r�	r$s&r�test_nargs_3_metavar_length1�3TestAddArgumentMetavar.test_nargs_3_metavar_length1�r+
rc�.�UO]QQ5P!)r�r�	r�	r�	r$s&r�test_nargs_3_metavar_length2�3TestAddArgumentMetavar.test_nargs_3_metavar_length2�r
rc�.�UO]QQ5P!)r�r�	r�r�	r$s&r�test_nargs_3_metavar_length3�3TestAddArgumentMetavar.test_nargs_3_metavar_length3�s���!�!��?�!�Crr&)6r)r*r+r,r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r�	r
r
r
r

r
r
r
r
r
r
r#
r&
r)
r-
r0
r3
r6
r9
r<
r?
r.r/rRs@rr�	r�	�s
����E��C�F�;�<�>�?�D�
:�;�=�>�C�
:�;�=�A�C�
:�;�:�A�C�
<�@�?�C�H�
=�>�@�A�F�
8�9�;�<�A�
8�9�8�?�A�
8�9�8�<�D�Drr�	c�B`�\sQsQsnQsQsQsQsQsQs	Qs
UsP!)	�TestInvalidNargsi�zinvalid 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�8�[O2oUO[29^tt^2oUO	QUQ5PPP2UOWOO]*UO2P!)%fhKI9h�rwr)	r:r;r�rNr�r�rGr��EXPECTED_RANGE_MESSAGE�rrrArIs&&  r�do_test_range_exception�(TestInvalidNargs.do_test_range_exception�si���(�(�*��
�
�
�z�
*�
*�b�����u��5�+�������*�*�1�-�t�/J�/J�K�+�
*�r�	c�8�[O2oUO[29^tt^2oUO	QUQ5PPP2UOWOO]*UO2P!)%fhKI9hrD
)	r:r;r�rNr�r�rGr��EXPECTED_INVALID_MESSAGErF
s&&  r�do_test_invalid_exception�*TestInvalidNargs.do_test_invalid_exception�si���(�(�*��
�
�
�z�
*�
*�b�����u��5�+�������*�*�1�-�t�/L�/L�M�+�
*�r�	c�P�UOQQ5UOQQ5P!)rnr�abcd)rK
r$s&r�test_nargs_alphabetic�&TestInvalidNargs.test_nargs_alphabetic�s$���&�&�S�&�1��&�&�V�&�4rc�,�UO]Q5P!)rr)rG
r$s&r�test_nargs_zero� TestInvalidNargs.test_nargs_zero�s���$�$�1�$�-rr&)r)r*r+r,rJ
rE
rG
rK
rO
rR
r.r/rRs@rrB
rB
�s/����4��L��L�N�5�.�.rrB
c�.`�\sQsQsnQsQsQsUsP!)�TestImportStari�c�d�[OFDoUO[U2J	P!r�)r:�__all__�
assertHasAttrr�s& rr��TestImportStar.test�s"���$�$�D����x��.�%rc�Z�[[2O2TTt,tFDGvqUOQ2%cJUQ6XcJ'[O
U2%cJEUMJI	oooUO
[U2[[O22P!ttooh)r>�ngettext)	r�r:r��
startswith�inspect�ismoduler�r�rW
)rr�r.r�s&   r�'test_all_exports_everything_but_modules�6TestImportStar.test_all_exports_everything_but_modules�s��� $�H�~�3�3�5�
�5����O�O�C�(�
�,0�J�,>�
��#�#�E�*�
�D�5�	�
�	
�������x�/?�/?�(@�A��

s�B'�B'�B'�*B'r&)r)r*r+r,r�r_
r.r/rRs@rrU
rU
�s����/�B�BrrU
c�D``�\sQsQsnU1Qks\Q2sQsUsU9s	!)�TestWrappingMetavari�c�:�[RU_2[Q2UmQoUOO	QUQ5P!)�9this_is_spammy_prog_with_a_long_name_sorry_about_the_namez<http[s]://example:1234>z--proxyr-)rr�rrAr�)rr�rs& �rr��TestWrappingMetavar.setUp�s9���
��
��0�G�
���
-����� � ��G� �<rc��UOO2oUOU[OQ22P!)a            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>
            )rAr�r�rerf)rrs& r�test_help_with_metavar�*TestWrappingMetavar.test_help_with_metavar�s4���K�K�+�+�-�	�����H�O�O�5�%�	r�rA)
r)r*r+r,r�rrg
r.r/r0r1s@@rrb
rb
�s#����=��	��	�	rrb
c�`�\sQsQsnQsQsQsQsQsQs	Qs
Q	sQ
sQs
QsQ
sQsQsQsQsQsQsQsQsQsUsP!)�TestExitOnErrori�c��[OP
QQ5UmUOOQQ[Q5P!)Fr|)rvr~z
--integers�N)r�ry)r:r;rAr�r�r$s&rr��TestExitOnError.setUp�s3���-�-�E�DG�I������ � ��s�� �Erc��UOOQO22oUOU[O
]Q52P!)z--integers 4)�integers)rArKrYr�r:r�r�s& r�!test_exit_on_error_with_good_args�1TestExitOnError.test_exit_on_error_with_good_args�s:��
�[�[�
#�
#�N�$8�$8�$:�
;������X�/�/��;�<rc���UO[O29^tt^2UOO	QO22PPP2P!)%fhP!9h)z--integers a)r�r:r�rArKrYr$s&r� test_exit_on_error_with_bad_args�0TestExitOnError.test_exit_on_error_with_bad_args�sC��
�
�
�x�5�5�
6�
6��K�K�"�"�>�#7�#7�#9�:�7�
6�
6�
6�s�*A�A.	�&A.	c��UO[OQUOOQO22P!�z!unrecognized arguments: --foo barr@)rer:r�rArKrYr$s&r�test_unrecognized_args�&TestExitOnError.test_unrecognized_args�s4�����x�5�5�B�#�{�{�5�5�{�7H�7H�7J�	Lrc��UO[OQUOOQO22P!rw
)rer:r�rAr�	rYr$s&r�!test_unrecognized_intermixed_args�1TestExitOnError.test_unrecognized_intermixed_args�s4�����x�5�5�B�#�{�{�@�@�+�BS�BS�BU�	Wrc���UOOQ2UOOQ2UO[OQUOO
,2P!)r{r}�/the following arguments are required: bar, baz$�rAr�rer:r�rKr$s&r�test_required_args�"TestExitOnError.test_required_args�sN����� � ��'���� � ��'����x�5�5�P�#�{�{�5�5�r�	;rc���UOOQ2UOOQQQ5UO[OQUOO
,2P!)r{r}�BaZr-z/the following arguments are required: bar, BaZ$r
r$s&r�test_required_args_with_metavar�/TestExitOnError.test_required_args_with_metavar�sS����� � ��'���� � ��� �6����x�5�5�P�#�{�{�5�5�r�	;rc���UOOQ2UOOQ]Q5UO[OQUOO
,2P!)r{r}rr~
r
r$s&r�test_required_args_n�$TestExitOnError.test_required_args_nsS����� � ��'���� � ��a� �0����x�5�5�P�#�{�{�5�5�r�	;rc���UOOQ2UOOQ]QQ5UO[OQUOO
,2P!)r{r}r�	z3the following arguments are required: bar, B, A, Z$)r�rRrQr
r$s&r�!test_required_args_n_with_metavar�1TestExitOnError.test_required_args_n_with_metavar	sU����� � ��'���� � ��a�� �I����x�5�5�T�#�{�{�5�5�r�	;rc���UOOQ2UOOQQQ5UO[OQUOO
,2P!)r{r}r|r�*the following arguments are required: bar$r
r$s&r�test_required_args_optional�+TestExitOnError.test_required_args_optional�S����� � ��'���� � ��c� �2����x�5�5�K�#�{�{�5�5�r�	;rc���UOOQ2UOOQQQ5UO[OQUOO
,2P!)r{r}rrr�
r
r$s&r�test_required_args_zero_or_more�/TestExitOnError.test_required_args_zero_or_morer�
rc���UOOQ2UOOQQQ5UO[OQUOO
,2P!)r{r}rrr~
r
r$s&r�test_required_args_one_or_more�.TestExitOnError.test_required_args_one_or_moresS����� � ��'���� � ��c� �2����x�5�5�P�#�{�{�5�5�r�	;rc���UOOQ2UOOQQQQ5UO[OQUOO
,2P!)r{r}rr�	z9the following arguments are required: bar, BaZ1\[, BaZ2]$)�BaZ1�BaZ2r
r$s&r�+test_required_args_one_or_more_with_metavar�;TestExitOnError.test_required_args_one_or_more_with_metavar%sV����� � ��'���� � ��c�;K� �L����x�5�5�[�#�{�{�5�5�r�	;rc���UOOQ2UOOQQQ5UO[OQUOO
,2P!)r{r}rPrr�
r
r$s&r�test_required_args_remainder�,TestExitOnError.test_required_args_remainder,sS����� � ��'���� � ��e� �4����x�5�5�K�#�{�{�5�5�r�	;rc���UOOP	Q5oUOQ2UOQ2UO[O
QUOO,2P!)Tr�r�r�z,one of the arguments --bar --baz is required�rAr�r�rer:r�rK�rr*s& r�%test_required_mutually_exclusive_args�5TestExitOnError.test_required_mutually_exclusive_args3s]�����8�8�$�8�G��
���7�#�
���7�#����x�5�5�M�#�{�{�5�5�r�	;rc�f�UOO2oUOQ2UOQQQQ5UO[O
QUOO,QN2UO[O
QUOO,QN2P!)	r�r}r|r�
r�	z.argument BaZ: not allowed with argument --bar$z.argument --bar: not allowed with argument BaZ$�r�rnr	�rnr�r	r�
r�
s& r�>test_conflicting_mutually_exclusive_args_optional_with_metavar�NTestExitOnError.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�f�UOO2oUOQ2UOQQQQ5UO[O
QUOO,QN2UO[O
QUOO,QN2P!)	r�r}rr�	z/argument BAZ1: not allowed with argument --bar$z/argument --bar: not allowed with argument BAZ1$)�BAZ1r�
r�
r�
r�
s& r�Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1�STestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar1Fs������8�8�:��
���7�#�
���5��Y��?����x�5�5�P�#�{�{�5�5�7J�	L�	
���x�5�5�P�#�{�{�5�5�7J�	Lrc�f�UOO2oUOQ2UOQQQQ5UO[O
QUOO,QN2UO[O
QUOO,QN2P!)	r�r}rr�	z8argument BAZ1\[, BAZ2]: not allowed with argument --bar$z8argument --bar: not allowed with argument BAZ1\[, BAZ2]$)r�
�BAZ2r�
r�
r�
r�
s& r�Ctest_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2�STestExitOnError.test_conflicting_mutually_exclusive_args_zero_or_more_with_metavar2Qs������8�8�:��
���7�#�
���5��5E��F����x�5�5�Z�#�{�{�5�5�7J�	L�	
���x�5�5�Z�#�{�{�5�5�7J�	Lrc�j�UOOQ2UOOQQQ5UOOQ2UO[OQUOO
Q,2UO[OQUOO
Q,2UO[OQ	UOO
,Q
N2UO[OQUOO
,QN2P!)r�r�ryrz�--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�
rr
r$s&r�test_ambiguous_option�%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��UOOQ2UO[OQUOO
Q,2P!)r�z)No such file or directory: 'no-such-file'z
@no-such-filer
r$s&r�
test_os_error�TestExitOnError.test_os_errorms@����� � ��(����x�5�5�J�#�{�{�5�5��7H�	Jrri
)r)r*r+r,r�rq
rt
rx
r{
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
r.r/rRs@rrk
rk
�sw����F�
=�;�L�
W�
;�;�;�;�;�;�;�;�;�;�	L�	L�	L�C�"J�Jrrk
c��`�\sQsQsn\O
Q2sQsQP
-QksQQks	Qs
QQksQ	sQQ
ks
QsQQksQ
sQQksQsQQksQsQQksQsQsUsP!)�TestProgNameitzc        import argparse
        parser = argparse.ArgumentParser()
        parser.parse_args()
    c���Q[O*UmUO[OUO2[
OUO2P!)�package)rr��dirname�
addCleanupr�r��mkdirr$s&rr��TestProgName.setUp|s<�� �9�#8�#8�8������	�(�(�$�,�,�7�
������r�compiledc��[OVUO2oU%fU![OUP	Q5o[
OU2U!)T)�
allow_compile)r	�make_script�sourcer�make_legacy_pycr�r�)rr�
�basenamer�
�script_name�pyc_files&&&$  rr�
�TestProgName.make_script�sD��#�/�/��4�;�;�O����� �0�0��D�Q��
�	�	�+���rc�P�[OUOQV2vq4U!)�test_zip)r	�make_zip_scriptr�
)rr�
�name_in_zip�zip_namer>s&&&  rr�
�TestProgName.make_zip_script�s%��#�3�3�D�L�L�*�4?�N����rc���[OQ,UNQM3-U@oUO[OUO
O
2]*2QUQ02P!)z-Xutf8rE�usage: z [-h])r	�assert_python_okr�r�r��out�
splitlines)rr�r�r��ress&&*, r�check_usage�TestProgName.check_usage�sX���,�,�X�M��M�d�M�f�M��������S�W�W�%7�%7�%9�!�%<�=�"�8�*�E�2�	4rc���[OoUOUOV!Q5oUO	[
OOU2UQ2P!)�r�
rE)r�TESTFNr�
r�
r�
r�r�r�
)rr�
r�
r�
s&&  r�test_script�TestProgName.test_script�sG���#�#���&�&�t�|�|�X�&�Q��������)�)�+�6��T�Jrc�,�UOP	Q5P!�Tr�
)r�
r$s&r�test_script_compiled�!TestProgName.test_script_compiled�������$��'rc��[OOUO[O
2o[OU2UOUQUQ5UO[QU0U2[OO[OU2oUO[QU0U2P!��__main__r�
r)r�r�r�r�
rr�
r�
r�
r�
�py�curdir)rr�
r�
�dirname2s&&  r�test_directory�TestProgName.test_directory�s����'�'�,�,�t�|�|�Y�-=�-=�>��
���������*�x��@����B�4�q��	�*�G�4��7�7�<�<��	�	�7�3�����B�4�q��
�+�X�6rc�,�UOP	Q5P!r�
)r�
r$s&r�test_directory_compiled�$TestProgName.test_directory_compiled�s�����T��*rc���Q[O*oUOQU0oUOUOV!Q5UO	[
QU0QU[OQ5P!)�module�.r�
� -m �-m��
PYTHONPATH)rr�r�
r�
r�
r�
r�r�
)rr�
r�
�
modulenames&&  r�test_module�TestProgName.test_module�si���i�3�3�3�����~�Q�x�j�1�
�������x��C����B�4�t�J�<�0��z�b�i�i�	�	Arc�,�UOP	Q5P!r�
)r�
r$s&r�test_module_compiled�!TestProgName.test_module_compiled�r�
rc��Q[O*oUOQU0o[OOUOU2o[OU2UOUQUQ5UO[QU0QU[OQ5UO[QU0QUQ*[OQ5P!)�
subpackager�
r�
r�
r�
r�
r�
z	.__main__)rr�r�
r�r�r�r�
r�
r�
r�
r�
)rr�
r�
�packagename�
subdirnames&&   r�test_package�TestProgName.test_package�s����)�"7�"7�7������a��z�2���W�W�\�\�$�,�,��9�
�
���������Z�(��C����B�4�t�K�=�1��{�r�y�y�	�	B����B�4�t�K�=�1��{�[�8�R�Y�Y�	�	Prc�,�UOP	Q5P!r�
)r�
r$s&r�test_package_compiled�"TestProgName.test_package_compiled�������4��(rc��UOUOQUQ5oUOU2oUO[QU0U2P!r�
)r�
r�
r�
r�
r�
)rr�
r�
r�
s&&  r�test_zipfile�TestProgName.test_zipfile�sH���&�&�t�|�|�Z�(�&�S���'�'��4�����B�4�q��
�+�X�6rc�,�UOP	Q5P!r�
)rr$s&r�test_zipfile_compiled�"TestProgName.test_zipfile_compiled�rrc��UOUOQUQ5oQQU**oUOV#2o[OOUQQ2oUO
[QU0U2P!)r�
r�
zpackage/subpackage/__main__r�
r�
r)r�z.pyc)r�
r�
r�
r�r�r�r�
r�
)rr�
r�
r�
r�
r�
s&&    r�test_directory_in_zipfile�&TestProgName.test_directory_in_zipfile�sm���&�&�t�|�|�Z�(�&�S��3�o�h�6O�O���'�'��A���'�'�,�,�x��L�A�����B�4�q��	�*�G�4rc�,�UOP	Q5P!r�
)rr$s&r�"test_directory_in_zipfile_compiled�/TestProgName.test_directory_in_zipfile_compiled�s���&�&��&�5r)r�
r�rX)r)r*r+r,rerfr�
r�r�
r�
r�
r�
r�
r�
r�
r�
r�
r�
rrr	rrr.r/rRs@rr�
r�
tsw����
�_�_��	�F��
����
4�
K�
(�7�+�A�(�	P�)�7�
)�5�6�6rr�
c�(`�\sQsQsnQsQsUsP!)�TestTranslationsi�c�2�UO[2P!r�)�assertMsgidsEqualr:r$s&r�test_translations�"TestTranslations.test_translations�s�����x�(rr&)r)r*r+r,rr.r/rRs@rrr�s����)�)rrc��``�\sQsQsnPsU1QksQsQsQsQs	Qs
QsQ	sQ
s
QsQsQ
sQsQsQsQsQsQsQsQsQsQsQsQsQsQsQsQs Us!U9s"!)�
TestColorizedi�c�:�[RU_2UO[[QQ22[O
P	Q5OUmP!)�can_colorizec��P	!)Tr&r�s*,r�<lambda>�%TestColorized.setUp.<locals>.<lambda>�s��Tr)�force_color)rr�r�rrq�	get_themer:�themer�s&�rr��TestColorized.setUp�sB���
��
�����)�I�~�%A�C�	D��(�(�T�:�C�C��
rc	�n
�[OP	Q[OQQQ5oUO2oUO	QQQQQ	5UO	Q
QQQQ	5UO	Q
[
QQ5UO	Q[
QP	Q5UO	Q[
QQ5UO	QQQP	Q5UO	QQQ5UO	QQoQ5UO	QQoQQ5UO	QQoQQ5UO	Q QoQQ5UO	Q!Q"QpQQ5UO	Q#Q$QQqQ%Q&5UO	Q'2UO	Q(2UO	Q)2UO	Q*Q+2UO
Q,Q-Q.Q/5oUOQ0P	Q1Q25UOQ3P	Q4Q25oUO	Q5QoQ6Q5UOOoUOOoUOOoUOOoUOOo	UOOo
UOOoUOO oUOO"o
UOO$oUOO&oUOO(oUOO*oUO-2oUO/U[0O2PO5,Q7MUMQ8MUMUMQMUMQ9MUMQ:MUMQ;MUMQMUMQ<MUMQ
MUMQ;MUMQMUMQ;MUMQ=MU	MQ>MUMQ;MUMQ?MU	MQ@MUMQAMUMQBMU	MQ@MUMQ;MUMQCMU	MQ@MUMQ;MUMQDMU	MQ@MUMQAMUMQEMU	MQFMUMQ;MUMQGMU	MQMUMQ;MUMQHMU	MQIMUMQ;MUMQJMU	MQKMUMQAMUMQLMU	MQMMUMQ;MUMQNMU	MQOMUMQPMU
MQ
MUMQQMU
MQMUMQQMU
MQMUMQQMU
MQRMUMQSMUMQTMUMQUMUMQ
MUMQVMUMQMUMQWMUMQMUMQXMUMQYMUMQUMUMQ:MUMQZMUMQ[MUMQ\MUMQMUMQZMUMQMUMQ]MUMQ^MUMUMQ_MUMUMQ`MUMQUMUMQ
MUMQZMUMQMUMQaMUMQ^MUMUMQ_MUMUMQ`MUMQUMUMQMUMQZMUMQMUMQUMUMQMUMQQMU
MQ>MUMQbMUMQ^MUMUMQcMUMUMQ`MUMQUMUMQMUMQQMU
MQ@MUMQUMUMQMUMQQMU
MQ@MUMQdMUMQ^MUMUMQcMUMUMQ`MUMQUMUMQMUMQQMU
MQ@MUMQdMUMQ^MUMUMQcMUMUMQ`MUMQUMUMQ MUMQQMU
MQ@MUMQdMUMQ^MUMUMQcMUMUMQ`MUMQUMUMQ!MUMQZMUMQ"MUMQQMU
MQFMUMQbMUMQ^MUMUMQcMUMUMQ`MUMQUMUMQ#MUMQQMU
MQMUMQeMUMQfMUMQgMUMQ$MUMQUMUMQ'MUMQQMU
MQIMUMQUMUMQ(MUMQQMU
MQKMUMQUMUMQ)MUMQQMU
MQMMUMQUMUMQ*MUMQZMUMQ+MUMQQMU
MQOMUMQhMUMQiMUMQjMUMQkMUMQlMUMQ0MUMQmMUMQ3MUMQnM222P!)rTz
Colorful helprIr�)r�r�r�r�r�r�r�ryz	more spamr�r�r�z	less spamrpzthe baser�r�zthe exponent)ryr�r	�&this_indeed_is_a_very_long_action_namez-oz--optional1r	z--optional2zpick onerGz--optional3r�r$z--optional4r�z--optional5z--optional6r�z--optional7z--optional8rRz)among %(choices)s, default is %(default)s)rzr�rr�r�z++barz-+bazr�z--countrbzvalid subcommandszadditional helprc�sub1z	sub1 help)r	r��sub2z	sub2 helpr�r<�                r�
� [rE�] [� | z--optional2 �	OPTIONAL2z--optional3 z{X,Y,Z}z]
                            [z--optional4 z--optional5 z--optional6 z-p z{Aaaaa,Bbbbb,Ccccc,Ddddd}z--optional8 �+f rT	z++bar r`z-+baz �BAZz-c �COUNTz]
                            rz{sub1,sub2} ...z1

                Colorful help

                �positional arguments:z
                  z0                     the base
                  z4                     the exponent
                  zG
                                        the exponent

                �options:r�r�z>            show this help message and exit
                  z         more spam z
(default: �Falser�z           less spam z2
                                        pick one �Nonez   pick one z         among zA, B, Cz
, default is z

                zsubcommands:z8
                  valid subcommands

                  z{sub1,sub2}z/           additional help
                    z.                sub1 help
                    z*                sub2 help
                rd)�Aaaaa�Bbbbb�Ccccc�Ddddd)rRr�rA)r:r;r�r�r�r�r�r�r r��heading�summary_long_option�summary_short_option�
summary_label�summary_action�long_option�short_option�labelr{rz�interpolated_value�resetr�r�rerfr�)rrAr*r�r%r�r6�long�shortr=�pos�long_b�short_b�label_b�pos_brz�interpr?rs&                  r�test_argparse_color�!TestColorized.test_argparse_color�s����(�(��'�$�B�B���
���3�3�5��
����+�l��	�	
�	����)�L�{�	�	
�	���C�c�
��;�����c��4�	�	
�	���4���	�	
�
	����-���	�	
�	���M�
��;����M�?��C�����?��	�	
�	����?��	�	
�	����?��	�	
�	�����8��		�	
�	������#�<�	�	
�	���D�!����G�$����G�$����D�)�,��*�*��+�"�+�
�
�
	���f��K��H��$�$�V��;�$�O�����'�?���L��z�z�����*�*�$�$���z�z�-�-���
�
�/�/���
�
�(�(���j�j�'�'�����'�'���*�*�)�)���*�*�"�"���
�
�!�!���*�*�$�$�����.�.���
�
� � ���&�&�(�	�	
�����O�O�(�(��(��	�(� �(�!&��(�(,�v�(�-1�(�27��(�8:�(�;@�'�(�AC�(�DI�7�(�JM�(�NS�W�(�TV�(�W\�V]�(�]`�(�af�`g�(�gi�(�jo�ip�(�ps�(�ty�sz�(�z|�(�~C�}D�(�DG�(�HL�GM�(�MY�(�Z_�Y`�(�`i�(�jo�ip�(�ps�(�tx�sy�(�yE�(�FK�EL�(�LU�(�V[�U\�(�\�(�"�V�(�#/�(�05�w�(�6?�(�@E�w�(�FI�(�JN��(�O[�(�\a�[b�(�bk�(�lq�kr�(�ru�(�vz�u{�(�|H�(�IN�HO�(�OX�(�Y^�X_�(�_�(�$�W�(�%(�(�).�w�(�/J�(�KP��(�QT�(�UY�SY�(�Zf�(�gl�el�(�mn�(�ot�mt�(�ux�(�y~�w~�(�B�(�CH�BI�(�IJ�(�KP�JQ�(�QT�(�UY�TZ�(�Z`�(�af�`g�(�gj�(�kp�jq�(�q�(�#�V�	(�$*�	(�+0��	(�14�	(�5:�7�	(�;>�	(�?D�W�	(�EH�	(�IN�w�	(�OT�	(�UZ�SZ�	(�[�	(�
!�E�(�
"#�(�
$)�'�(�
*+�(�
,/�%�(�
01�(�
27��(�
89�(�
:=��(�
>d�(�
ej�cj�(�
kl�(�
mp�kp�(�
qB�(�
CH�BI�(�
I�(��	�(�/�(�05�g�(�6�(��'�(��(�!�'�(�"�(��'�(��(�!�'�(�"�(��'�(�@�(�AF�w�(�G�(��	�(�"�(�#(��(�)�(� �)�!(� �!(� $�W�!(� %'�!(� (.�h�!(� /5�!(� 6;�G�!(� <�!(�"�)�#(�"�#(�"$�W�#(�"%'�#(�"(.�h�#(�"/8�#(�"9>�w�#(�"?R�#(�"SZ�QZ�#(�"[e�#(�"fk�dk�#(�"ms�ks�#(�"ty�#(�"z�x�#(�"AH�@I�#(�"IJ�#(�"KP�JQ�#(�"Q�#(�$�)�%(�$�%(�$$�W�%(�$%'�%(�$(.�h�%(�$/6�%(�$7<�W�%(�$=R�%(�$SZ�QZ�%(�$[e�%(�$fk�dk�%(�$ms�ks�%(�$ty�%(�$z�x�%(�$AH�@I�%(�$IJ�%(�$KP�JQ�%(�$Q�%(�&�)�'(�&�'(�&$�W�'(�&%'�'(�&(.�h�'(�&/:�'(�&;@��'(�&A�'(�(�(�)(�(&�)(�(',�W�)(�(-.�)(�(/6�Y�)(�(7@�)(�(AF�w�)(�(G2�)(�*3:��+(�*;E�+(�*FK�G�+(�*MS�8�+(�*TX�+(�*Y^�W^�+(�*`g�^g�+(�*hi�+(�*jo�ho�+(�*p�+(�,�(�-(�,&�-(�,',�W�-(�,-.�-(�,/6�Y�-(�,7@�-(�,AF�w�-(�,G�-(�.�(�/(�.&�/(�.',�W�/(�.-.�/(�./6�Y�/(�.7@�/(�.AF�w�/(�.GS�/(�.T[�R[�/(�.\f�/(�.gl�el�/(�.nt�lt�/(�.uy�/(�.z�x�/(�.AH�@I�/(�.IJ�/(�.KP�JQ�/(�.Q�/(�0�(�1(�0&�1(�0',�W�1(�0-.�1(�0/6�Y�1(�07@�1(�0AF�w�1(�0GS�1(�0T[�R[�1(�0\f�1(�0gl�el�1(�0nt�lt�1(�0uy�1(�0z�x�1(�0AH�@I�1(�0IJ�1(�0KP�JQ�1(�0Q�1(�2�(�3(�2&�3(�2',�W�3(�2-.�3(�2/6�Y�3(�27@�3(�2AF�w�3(�2GS�3(�2T[�R[�3(�2\f�3(�2gl�el�3(�2nt�lt�3(�2uy�3(�2z�x�3(�2AH�@I�3(�2IJ�3(�2KP�JQ�3(�2Q�3(�4�)�5(�4�5(�4$�W�5(�4%'�5(�4(.�h�5(�4/:�5(�4;@��5(�4AB�5(�4CJ��5(�4Kf�5(�4gl�el�5(�4m2�5(�63:��7(�6;E�7(�6FK�G�7(�6MS�8�7(�6TX�7(�6Y^�W^�7(�6`g�^g�7(�6hi�7(�6jo�ho�7(�6p�7(�8�(�9(�8&�9(�8',�W�9(�8-.�9(�8/6�Y�9(�878�9(�89>�w�9(�8?N�9(�8OU�X�9(�8V]�9(�8^c�\c�9(�8dq�9(�8rx�px�9(�8yz�9(�8{@�zA�9(�8A�9(�:�)�;(�:�;(�:$�W�;(�:%&�;(�:'.�Y�;(�:/0�;(�:16�w�;(�:7�;(�<�(�=(�< �=(�<!&�w�=(�<'(�=(�<)0�y�=(�<14�=(�<5:�7�=(�<;�=(�>�(�?(�> �?(�>!&�w�?(�>'(�?(�>)0�y�?(�>14�?(�>5:�7�?(�>;�?(�@�)�A(�@�A(�@$�W�A(�@%'�A(�@(.�h�A(�@/6�A(�@7<�W�A(�@=>�A(�@?F�Y�A(�@GL�A(�@MR�7�A(�@S�A(�D�	�E(�D&�E(�D',�W�E(�D-�E(�J�'�K(�J'�K(�J(-�g�K(�J.�K(�L�G�M(�L �M(�L!&�w�M(�L'�M(�N�G�O(�N �O(�N!&�w�O(�N'�O(�*
�-	
rc��[OP	QQ5oUO2oUOQQQQ5UOQQQ	5UOQ
QQQ
5UOO
oUOOoUOOoUOOoUOOoUOOoUOOo	UOUO2UQU	UQU	QUQU	QUQU	QUQUQU	QUQU	Q02P!)Tr�)r�r�rwryr]r�r
r^rGr�rr_r�r�
r'rEr(r)z--spam z
badger ...z]
)r:r;r�r�r r�r6r7r8r9r:r?r�r�)
rrAr*r�r6r@rAr=rBr?s
&         r�2test_argparse_color_mutually_exclusive_group_usage�@TestColorized.test_argparse_color_mutually_exclusive_group_usagems8���(�(�t�&�A���3�3�5��
���7�<�e��D�
���8�&��1�
���8�3�X��>��z�z�����*�*�$�$���z�z�-�-���
�
�/�/���
�
�(�(���j�j�'�'���
�
� � ������,�,�.��i�w�u�g�d�V�4��w�b���r�%��I��v�U�5�'���f�G�E�7�$�u�g�S��e�:�e�W�C�
)�	*rc��[OP
P	QQQQ5oUOOoUOOoUOO
oUOOoUO2oUOU[OQUQUUQUQUUQUQ	0
22P!)
FzTest prog and usage colorsr�z[prefix] %(prog)s [suffix])r�r�r�r�r�r&r�
z	[prefix] z	 [suffix]z=

                Test prog and usage colors
                )r:r;r r6r�r?�
prog_extrar�r�rerf)rrAr6r�r?r�rs&      r� test_argparse_color_custom_usage�.TestColorized.test_argparse_color_custom_usage�s����(�(���4��.�
���*�*�$�$���z�z�����
�
� � ���
�
�%�%���&�&�(�	�	
�����O�O���	�����w�i��v�T�%����y�Y^�X_�`��
�		
rc�&�QQkoUO[O22oQoSFD�oQFD�oUOVEQ59^tt^2VRQ$UP	UQ5O	2oUP
UQ5O	2oUOUOOQUOO0U2UO[OU2U2PPP2J�	J�	P!)%fhJ�9h)	�
output.txtc��[OQUQ5oUOQQQ	QQ5UOQUQQ5U!)
r��r�r��--mode�autoziselect the operating mode from the available choices %(choices)s and note the default is %(default)s here)rzrr�z--pathz3write output to %(default)s and continue processingr�)rV�fast�slowr�	)r�r�rAs&& r�build�KTestColorized.test_argparse_color_wrapping_matches_uncolored.<locals>.build�s[���,�,�&��F�F������0�L�	
 �
�
�����J�
 �
�
�Mr)r��columnsr�)r�r�rV)rR)rRz</var/lib/application/cache/unusually_long_generated_filenamezproduction-read-only-replica)r��60�45�30�20)r�rr�rLr�rFr r>r?r�rq�decolor)rrYr��pathsr�r[�colored�plains&       r�.test_argparse_color_wrapping_matches_uncolored�<TestColorized.test_argparse_color_wrapping_matches_uncolored�s���	� ���	� =� =� ?�@��
��
�D�9���\�\�t�\�=�=�%,�	�N�#�$�T�:�F�F�H�G�!��D�9�E�E�G�E��M�M��:�:�8�8�9���:�:�+�+�,�.���
�$�$�Y�%6�%6�w�%?��G�>�=�:��=�=�=�s�BC?
�?D�Dc�P�[OQP	Q5oUOQQQQ5UO[O
22oQUQ$UO
2oUOUOOQUOO0U2P!)r�rTrUrVzeselect the %(default)s operating mode from the available options and continue with several more wordsr��40r�)r:r;r�r�rr�r�rFr r>r?)rrAr�rs&   r�9test_argparse_color_preserved_when_wrapping_between_words�GTestColorized.test_argparse_color_preserved_when_wrapping_between_words�s����(�(�f�D�A������f�@�	�	
����	� =� =� ?�@����I���&�&�(�	��
�
��z�z�,�,�-�T�$�*�*�2B�2B�1C�D��	
rc	���Qo[OQQUP	Q5oUOQQQQ5UOQQ	Q5UOOoUOO
oUOOoUOOoUOOoUOOoUOOo	UOOo
UOOoUOOoUO2o
UOU
[ O"PO%,Q
MUMQMUMUMQMUMQMUMQ
MUMQMUMQMUMQMUMQMUMQMUMQMUMQMUMQMUMQMUMQMUMQMUMQMU	MQ
MUMQMUMQMUMQMU	MQMUMQMUMQMUMQMU
MQMUMQM222P!)c�4�[OU]Q5!r�r�r4s&rr��FTestColorized.test_custom_formatter_function.<locals>.custom_formatter�r�rr�rI�r�r�r�r�r�r^r�rGrr��            r�
r'rEr(r+r]�] �

            r.�
                 �"           spam help

            r/r�r��6     show this help message and exit
                 r�  foo help
        )r:r;r�r r�r6r8r9r:r;r<r=r{r?r�r�rerfr�)rr�rAr�r6rAr=rBrCrDrErFr?r�s&             rr��,TestColorized.test_custom_formatter_function�sL��	K��(�(���,��	
��	���D�'�
��;����F���5��z�z�����*�*�$�$���
�
�/�/���
�
�(�(���j�j�'�'�����'�'���*�*�)�)���*�*�"�"���
�
�!�!���
�
� � ���(�(�*������h�o�o�	7�	7�;
�	7�
�I�	7��	7�"�G�	7�$(�6�	7�)-�	7�.3�W�	7�46�	7�7<�g�	7�=?�	7�@E�w�	7�FI�	7�JO��	7�PS�	7�TY�SZ�	7�Z]�	7�^c�]d�	7�df�	7�gj�fk�	7�ko�	7�pu�ov�	7�w
�	7��I�	7�+�	7�,1�'�	7�2�	7���		7��		7�#�G�		7�$
�		7��I�
	7��
	7�$�W�
	7�%�
	7���	7��	7�#�G�	7�$&�	7�'-�X�	7�.4�	7�5:�7�	7�;�	7���	7��	7�#�G�	7�$&�	7�'-�X�	7�.3�	7�49�'�	7�:;�	7�<C�)�	7�DG�	7�HM�g�	7�N	�	7�	'
�		rc	��QQ[O2o[OQQUP	Q5oUOQQQQ5UOQ	Q
Q5UOO
oUOOoUOOoUOOoUOOoUOOoUOOo	UOOo
UOOoUOOoUO2o
UO!U
["O$PO',QMUMQMUMUMQMUMQ
MUMQMUMQMUMQMUMQMUMQMUMQ	MUMQMUMQMUMQMUMQ	MUMQMUMQMUMQMU	MQMUMQMUMQMUMQMU	MQMUMQMUMQMUMQMU
MQMUMQM222P!)c�4``�\sQsQsnU1QksQsUsU9s!)�BTestColorized.test_custom_formatter_class.<locals>.CustomFormatteri�c�,:�[RU_U]Q5P!r�r�r�s&&�rr�KTestColorized.test_custom_formatter_class.<locals>.CustomFormatter.__init__�r�rr&r�r1s@@rr�rx�r�rr�r�rIrmr�r^r�rGrr�rnr�
r'rEr(r+r]rorpr.rqrrr/r�r�rsrrt)r:r�r;r�r r�r6r8r9r:r;r<r=r{r?r�r�rerfr�)rr�rAr�r6rAr=rBrCrDrErFr?r�s&             rr��)TestColorized.test_custom_formatter_class�sX��	;�h�;�;�	;��(�(���+��	
��	���D�'�
��;����F���5��z�z�����*�*�$�$���
�
�/�/���
�
�(�(���j�j�'�'�����'�'���*�*�)�)���*�*�"�"���
�
�!�!���
�
� � ���(�(�*������h�o�o�	7�	7�;
�	7�
�I�	7��	7�"�G�	7�$(�6�	7�)-�	7�.3�W�	7�46�	7�7<�g�	7�=?�	7�@E�w�	7�FI�	7�JO��	7�PS�	7�TY�SZ�	7�Z]�	7�^c�]d�	7�df�	7�gj�fk�	7�ko�	7�pu�ov�	7�w
�	7��I�	7�+�	7�,1�'�	7�2�	7���		7��		7�#�G�		7�$
�		7��I�
	7��
	7�$�W�
	7�%�
	7���	7��	7�#�G�	7�$&�	7�'-�X�	7�.4�	7�5:�7�	7�;�	7���	7��	7�#�G�	7�$&�	7�'-�X�	7�.3�	7�49�'�	7�:;�	7�<C�)�	7�DG�	7�HM�g�	7�N	�	7�	'
�		rc��[OQP	Q5oUOQQ5oUOQ2oUO	QUO
2P
UmUO2oUO	QU2P!)r'rTrr��demo�[)r:r;r�r�r�r�r�r�)rrAr5�demo_parserrs&    r�+test_subparser_prog_is_stored_without_color�9TestColorized.test_subparser_prog_is_stored_without_color sq���(�(�i�t�D���#�#��#�3���n�n�V�,������+�"2�"2�3�!����+�+�-�	�����)�,rc	���[OQQ5oUOQ2UO[29^tt^2[29^tt^2oUO
,2PPP2PPP2WO2oUOOoUOOoUOUQU0U2[29^tt^2oUOQ2PPP2UO2oUOOoUOUQU0U2P!)%fhK�9h)%fhK�9h)%fhKu9h)r�r4r7�error:�test warning�warning:)r:r;r�r�rrrKr"r rr?rF�_warningr�)rrAr��err�error_colorr?�warn�
warning_colors&       r�)test_error_and_warning_keywords_colorized�7TestColorized.test_error_and_warning_keywords_colorized+s���(�(�f�5�����E�"�
�
�
�z�
*�
*� �"�"�f��!�!�"�%�#�+��o�o����j�j�&�&���
�
� � ���
�
��
�V�E�7�3�S�9�
�
�
�&��O�O�N�+����� ���
�
�*�*�
��
�
���x��w�7��>�#�"��+�
*���
�sB�E
�D:	�,E
�!E �:E

�E

�E
�
E	�E	� E0	�)E0	c	��[OQP
Q5oUOQ2UO[29^tt^2[29^tt^2oUO
,2PPP2PPP2WO2oUOQU2UOQU2[29^tt^2oUOQ2PPP2UO2oUOQU2UOQU2P!)%fhK�9h)%fhK�9h)%fhKl9h)r�rTr7r~r�r�r�)r:r;r�r�rrrKr"r�rFr�)rrAr�r�r�s&    r�2test_error_and_warning_not_colorized_when_disabled�@TestColorized.test_error_and_warning_not_colorized_when_disabled?s����(�(�f�E�B�����E�"�
�
�
�z�
*�
*� �"�"�f��!�!�"�%�#�+��o�o�������#�&��
�
�h��$�
�
�
�&��O�O�N�+����� ������$�'��
�
�j�$�'�#�"��+�
*���
�sB�D&�D	�-D&�D9�D#
�D#
�D&�&D6	�/D6	�9E		�E		c��[OQP	QQ5oUOOoUOOoUO2oUO
QUQU0U2UOQU2P!)r�z$Example: `python -m myapp --verbose`�r�r�rz	Example: zpython -m myapp --verbose�`�r:r;r rNr?r�rFr��rrArNr?rs&    r�test_backtick_markup_in_epilog�,TestColorized.test_backtick_markup_in_epilogRsx���(�(���9�
���Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
�	�*��-F�u�g�N��	!�����i�(rc��[OQP	QQ5oUOOoUOOoUO2oUO
QUQUQUQUQ0	U2UOQU2P!)	r�z3Run `python myapp` or ``python -m myapp`` to start.)r�r�r�zRun zpython myappz or zpython -m myappz
 to start.r�r�r�s&    r�#test_backtick_markup_in_description�1TestColorized.test_backtick_markup_in_descriptionas����(�(���M�
���Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
��:�,�l�5�'���l�/�%��
�
<��	
�
	
����i�(rc�2�[OQP	QQ5oUOOoUOOoUO2oUO
UQU0U2UO
UQU0U2UOQU2P!)r�zTry `app run` or ``app test``.r�zapp runzapp testr�r�r�s&    r�test_backtick_markup_multiple�+TestColorized.test_backtick_markup_multipless����(�(���3�
���Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
���G�E�7�3�Y�?��
�
���H�U�G�4�i�@�����i�(rc���[OQP
QQ5oUO2oUOQU2UOQU2UO	QU2P!)r�z6Examples: `python -m myapp` or ``python -m myapp --x``r�z`python -m myapp`z``python -m myapp --x``r~)r:r;r�rFr��rrArs&  r�4test_backtick_markup_not_applied_when_color_disabled�BTestColorized.test_backtick_markup_not_applied_when_color_disabled�sY���(�(���K�
���&�&�(�	��
�
�)�9�5��
�
�/��;�����)�,rc���[OQP	QQ5oUOOoUOOoUO2oUO
UQU0U2P!)�myappz$Run `%(prog)s --help` for more info.r�zmyapp --help�r:r;r rNr?r�rFr�s&    r�'test_backtick_markup_with_format_string�5TestColorized.test_backtick_markup_with_format_string�sb���(�(���9�
���Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
���L���8�)�Drc�$�[OQP	Q5oUO2oUOQQQ5oUOO
oUOOoUO2oUOUQU0U2P!)r�rTr5zRun `PROG sub --foo` to start.r�zPROG sub --foo)	r:r;r�r�r rNr?r�rF)rrAr�r5rNr?rs&      r�!test_backtick_markup_in_subparser�/TestColorized.test_backtick_markup_in_subparser�s����(�(�f�D�A���*�*�,�
��#�#��8�$�
��
�Z�Z�*�*�
��
�
� � ���O�O�%�	��
�
���N�5�'�:�I�Frc���[OQP	QQ5oUOOoUOOoUO2oUO
UQU0U2P!)r�z`grep "foo.*bar" | sort`r�zgrep "foo.*bar" | sortr�r�s&    r�(test_backtick_markup_special_regex_chars�6TestColorized.test_backtick_markup_special_regex_chars�sc���(�(���-�
���Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
���$:�5�'�B�I�Nrc��[OQP	Q5oUOQQQ5UOQQQ5UOOoUOO
oUO
2oUOQUQUQ	0U2UOQUQ
UQ	0U2UOQU2P!)r�rTrw�set the `foo` valuerGr�zset the ``bar`` valuezset the r7z valuer{r�)	r:r;r�r rNr?r�rFr�r�s&    r�%test_backtick_markup_in_argument_help�3TestColorized.test_backtick_markup_in_argument_help�s����(�(�f�D�A�����G�*?��@����G�*A��B��Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
����C��w�f�=�y�I��
�
����C��w�f�=�y�I�����i�(rc��[OQP	Q5oUOQQQQ5UOOoUOO
oUO
2oUOQUQU0U2P!)r�rTrwr{z set `foo` (default: %(default)s)r�zset r7)r:r;r�r rNr?r�rFr�s&    r�1test_backtick_markup_in_argument_help_with_format�?TestColorized.test_backtick_markup_in_argument_help_with_format�sx���(�(�f�D�A������U�)K�	�	
��Z�Z�*�*�
��
�
� � ���&�&�(�	��
�
��Z�L��E�7�3�Y�?rc���[OQP
Q5oUOQQQ5UO2oUO	QU2UOQU2P!)r�rTrwr�rGr~)r:r;r�r�rFr�r�s&  r�4test_backtick_markup_in_argument_help_color_disabled�BTestColorized.test_backtick_markup_in_argument_help_color_disabled�sU���(�(�f�E�B�����G�*?��@��&�&�(�	��
�
�+�Y�7�����)�,rc��QQ2o[OQP	Q5oUOQQUQ2Q5UOQUQ	2Q
5UOOoUOO
oUO
2oUOQUQUQ0U2UOQ	U2P!)
c�@`�\sQsQsnQsQsQsQsQsQs	Us
P!)�YTestColorized.test_argument_help_interpolation_accepts_string_like_proxy.<locals>.LazyStri�c��VmP!r���_message)rr9s&&rr�bTestColorized.test_argument_help_interpolation_accepts_string_like_proxy.<locals>.LazyStr.__init__�s�� '�
rc��UO!r�r�r$s&r�__str__�aTestColorized.test_argument_help_interpolation_accepts_string_like_proxy.<locals>.LazyStr.__str__�s���}�}�$rc�.�[[U2U2!r�)rr^r�s&&r�__getattr__�eTestColorized.test_argument_help_interpolation_accepts_string_like_proxy.<locals>.LazyStr.__getattr__�s���s�4�y�$�/�/rc� �VO7!r�r�)r�items&&r�__contains__�fTestColorized.test_argument_help_interpolation_accepts_string_like_proxy.<locals>.LazyStr.__contains__�s���}�}�,�,rc�*�UOU*!r�r�r�s&&r�__mod__�aTestColorized.test_argument_help_interpolation_accepts_string_like_proxy.<locals>.LazyStr.__mod__�s���}�}�u�,�,rr�)r)r*r+r,rr�r�r�r�r.r/rRs@r�LazyStrr��s#����
(�
%�
0�
-�
-�
-rr�r�rTrwr{zfoo (default: %(default)s)r�r�zbaz plain textrGzfoo (default: r�)r:r;r�r r>r?r�rF)rr�rArGr?rs&     r�:test_argument_help_interpolation_accepts_string_like_proxy�HTestColorized.test_argument_help_interpolation_accepts_string_like_proxy�s���	-�	-� �(�(�f�D�A��������5�6�	�	
�
	�����)�*�	�	
�
���.�.���
�
� � ���&�&�(�	��
�
��v�h�c�%���:�I�F��
�
�&�	�2rc��[OQP	Q5oUOQ[]�QQ5UOQ[]QQ5UOQQQ	Q
5UOQ[]2QQ5UOQ
QQ5UOQQQ5UOQ[QQ5UOQQQ,QQ5UO	2oUO
OoUO
OoUOQUQU0U2UOQUQU0U2UOQUQU0U2UOQ UQU0U2UOQ!UQ"UQ#0U2UOQ$U2UOQ%UQU0U2UOQ&UQ'U0U2UOQ(UQ)U0U2P!)*r�rTz--hexz#hex: %(default)x, alt: %(default)#xr�z--zerozzero: %(default)05dz--strr�zstr: %(default)sr�z--pctzpct: %(default)d%%z	--literalzliteral: 100%%rGz--progzprog: %(prog)sz--typeztype: %(type)sr�z	--choicesrnr	zchoices: %(choices)sr�zhex: �ffzalt: �0xffzzero: �00007zstr: zpct: �50�%z
literal: 100%zprog: ztype: r�z	choices: za, b)	r:r;r�r�r�r r>r?rF)rrArrGr?s&    r� test_help_with_format_specifiers�.TestColorized.test_help_with_format_specifiers�s����(�(�f�D�A�����G�#�s�!F�	�	H����H�3��!6�	�	8����G�V�!3�	�	5����G�#�r�!5�	�	7����K�.>��?����H�+;��<����H�3�5E��F����K�#�s��!7�	�	9��&�&�(�	����.�.���
�
� � ���
�
��f�X�R��w�/��;��
�
��f�X�T�%��1�9�=��
�
��v�h�e�E�7�3�Y�?��
�
��f�X�T�%��1�9�=��
�
��f�X�R��w�a�0�)�<��
�
�o�y�1��
�
��v�h�d�5�'�2�I�>��
�
��v�h�c�%��1�9�=��
�
�	�&���e�W�5�y�Arc��`�[OQP	Q5oUOQ2[O2o,nQP-U1Qkko[[QU29^tt^2UOUQ5PPP2UORP*U2UOUR2UOQUO22P!)%fhK]9h)r�rT�--optr�c�0:�ROU2UPI!r��rw�r��callss$�r�fake_can_colorize�\TestColorized.test_print_help_uses_target_file_for_color_decision.<locals>.fake_can_colorize!�����L�L����4�<�rr�r�r~)r:r;r�r�StringIOrrqrHrrFr�r"�rrA�outputr�r�s&   @r�3test_print_help_uses_target_file_for_color_decision�ATestColorized.test_print_help_uses_target_file_for_color_decisions�����(�(�f�D�A�����G�$��������	 �d�	 ��y�.�2C�
D�
D����6��*�E�	
�
�
�e�B�i��(��
�
�f�e�$�����&�/�/�"3�4�E�
D���&C�C	�C	c��`�[OQP	Q5oUOQ2[O2o,nQP-U1Qkko[[QU29^tt^2UOUQ5PPP2UORP*U2UOUR2UOQUO22P!)%fhK]9h)r�rTr�r�c�0:�ROU2UPI!r�r�r�s$�rr��]TestColorized.test_print_usage_uses_target_file_for_color_decision.<locals>.fake_can_colorize2r�rrr�r~)r:r;r�rr�rrqrGrrFr�r"r�s&   @r�4test_print_usage_uses_target_file_for_color_decision�BTestColorized.test_print_usage_uses_target_file_for_color_decision,s�����(�(�f�D�A�����G�$��������	 �d�	 ��y�.�2C�
D�
D����F��+�E�	
�
�
�e�B�i��(��
�
�f�e�$�����&�/�/�"3�4�E�
D�r�c	��]QHGo[OP	Q5OoSFD'oUO	[V2[V#22J)	P!)r��_colorless_theme)�force_no_color)r:r�rqrr�r)rr��_colorize_nocolorr�s&   r�"test_fake_color_theme_matches_real�0TestColorized.test_fake_color_theme_matches_real=sG��-�&�/�/�t�D�M�M��"�A�����(�,�g�6G�.K�
�#rc�*�]QHGoUO[29^tt^2UOPPP2UO[29^tt^2UO
PPP2P!)%fhKD9h)%fhP!9h)rr�)r:r�r�r��__unknown_dunder__�_private_attribute)rr�s& r�test_fake_color_theme_raises�*TestColorized.test_fake_color_theme_raisesGs_��-��
�
�~�
.�
.��/�/�/��
�
�~�
.�
.��/�/�/�
.�/�
.��/�
.�
.�s#�
A.�
B�.A>	�7A>	�B	�
B	)r )#r)r*r+r,rzr�rHrKrOrdrhr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r.r/r0r1s@@rrr�s������G�D�B
�H*�*
�:%H�N
�""�H#�J	-�?�((�&
)�)�$
)�-�E�G�O�)�
@�-�!3�FB�@5�"5�"�	0�	0rrc�(`�\sQsQsnQsQsUsP!)�
TestModuleiSc���UO[Q29^tt^2o[[Q2PPP2UO	WO
[2P!)%fhK29h)zA'__version__' is deprecated and slated for removal in Python 3.20�__version__)�assertWarnsRegexr�rr:r�r�r�r�s& r�test_deprecated__version__�%TestModule.test_deprecated__version__TsP��
�
"�
"��O�
�
���H�m�,�	
�
	
������h�/�
�
�s�A�A+	�$A+	r&)r)r*r+r,r�r.r/rRs@rr�r�Ss����0�0rr�c�D�-[m[2[mP!r�)r�r�r-r�r&rr�tearDownModuler�]s���E�J���E�Jrr�
z--snapshot-update(rqr<rIr]
rr�r�r\r�rrer��unittestr:rp�enumr�test.supportrrrrrrr	�test.support.i18n_helperr
rrr�r�
�
executabler�
�
TextIOWrapperrr�r4rTrsr��skip_unless_working_chmodrdr�r�r�r�r�rr;rryrrfr rjrwr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr!r(r.r2r6r:r>rSr\rjrqrtrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr
rrrrrrrrrr"r$r&r(r/r3r6r9r<r>rDrFrHrMrOrVr]rdrhrnr�r�r�r�rr	r�r�r�	eq_stderrr�r
�
eq_bstderrr�r�r�r�r��skip_if_dac_overrider�rr	rrrr#r)r:rCrNrirtrzr}r�r�r~r�r�r�rr:rFrOrTr[rfroruryrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr!r'r+r0r5r8r=rCrErGrIrKrMr_r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r
r\rdryr�r�r�r�r�r�r	r	r*	rC	r`	r�	r�	r�	rB
rU
rb
rk
r�
rrr�r�r)�lenr6r?�mainr&rr�<module>rs�
������	��	�
��
���������'�"�&�W���W�W���c�n�n�%��:�"�"�"�:�$F�H�%�%�F�:9
�h�'�'�9
�x'3��!2�!2�'3�T1�8�#4�#4�1�*�x� � ���$�$�D�6�D�%�D�.�&��)��)�%�)�%�# �L>��!8�!8�>�q9�D�q9�f	�	��&�'7���C���n���n��4�.��
�^�
� �~��.
�>�
��n���.��$���&�N��&���(���,���.
�^�
� ���,	�>�	�����.���.�����.�>��&�.��"�>��"
�N�
��~���N���N���>��U��U�8S�.�S�*U�N�U�,S��S�6
��
�	��	�	�>�	����&�^������~�����&�N��"�~��"�n��"�n��&�N��&
��
�B�~���N���N��	�^�	�	�N�	��N���>���.���>���>�����������(���"
�~�
� ���$
��
� �~���n���^���N��	�n�	��^���N���.��,���.���,�>��
�^�
�	�N�	��>�����
�.�
�
�.�
� 
��
� �~��"
��
�
��
��>��&�~��&
�.�
� 
��
� �^��6�.��2���(�.��**�L�.�*�Z�\�>��D2�0�h�0�K�x�K�0�h���h��,�,�,�W�%���h�'�	��h�'�	��n�-�	�
��
/�
�
��
/�
�/�F�/� �L�.��03�<��3�"�\�>��.'�F�'�"����L�.�� ��,����L�.�� ��&���
�\�>�
� �
� ���
�]�
� �
�#�8�#�,
��
�$�~���.��,�>��,>�8�>�.>�N�>�BJ�X�J�$�~��!��!�F �W
�(�W
� �W
�tD��D�J �[��[� �[�B!+�H�!+�F7�8�7�H �I��I� �I�^ �^?�x�^?� �^?�@5?�f�5?�p �'�8� �F(���(�V�7�H��B!�'�8�!�H*��(�*�Z,�'�8�,�^%�7�H�%�P,���,�^ �G�X� �F �w�� �F ��(� �L�f��	��
-�	�
	��
(�	�
	��
&�	�
	��
1�	�
	��
0�	�
	��
7�	�
	��
0�	�
	��
>�	�X0�h�X0�|8�X�8�.
"�(�
"�&T1�$�T1�l	�	��*�>�5�"�E��"�l�"�H3B�|�3B�l,�<�,�^���>1�<�1�h%��%�P3��3�l6�L�6�r�<��,�\��>�L��:!�|�!�H�<��2#��#�L�<��D!�L�!�H�\��4�|��01�\�1�h �a7�X�a7� �a7�H+��+�\�\��"
�<�
��L��*�|��(�L��4���*�|��(�<��*�\��.�<��0�<��6�\��8.�l�.�b-�\�-�`2�|�2�h�L��(�L��2���:'��'�V�<��: �\8�(�\8� �\8�DZI�h�ZI�@-�(�-�<8J�8�8J�~ �EQ�h�EQ� �EQ�XE/�(�E/�V7�H�7�J-�8�-�$*��*�
.�H�
.�&65�h�65�z
8�8�
8�" �};�h�};� �};�H+(�h�+(�b*)��*)�ZJL�X�JL�b\T��\T�~)��)�0eD�X�eD�P.�x�.�@
B�X�
B� �(��2VJ�h�VJ�r �Y6�8�Y6� �Y6�~)�+�)�q	0�H�q	0�h0��"�"�0���z��
�3�8�8�}�q��S�X�X�a�[�,?�?�$�X�.�������M�M�O�r

Youez - 2016 - github.com/yon3zu
LinuXploit