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

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : C:/Python313/Lib/test/__pycache__/test_clinic.cpython-313.opt-1.pyc
�

��i�\���SSKJr SSKJrJr SSKJr SSKJrJ	r	J
r
 SSKJr SSK
Jr SSKrSSKrSSKrSSKrSSK
r
\R("S5 \R*"S5 SSKrSS	KJrJrJrJr SS
KJrJrJr SSKJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r' SSK(r(SSK)J*r* SS
K+J,r,J-r- SSK.J/r/J0r0 SSK1J2r2J3r3 SSK4J5r5J6r6 SSK7J8r8 SSK9J:r:J;r; SSS5 SSS.Sjr<SSSS.Sjr=Sr>Sr?"SS\5r@"SS\5rA"S S!\5rB"S"S#\5rC"S$S%5rD"S&S'5rE"S(S)\5rF"S*S+\5rG"S,S-\5rHSSKIrJ\
R�"\JSLS.5"S/S0\
R55rM"S1S2\
R5rNSSKOrO\
R�"\OSLS35"S4S5\
R55rP"S6S7\
R5rQ"S8S9\
R5rR"S:S;\
R5rS\TS<:Xa\
R�"5 gg!,(df   GNX=f!\Ka SrJN�f=f!\Ka SrON�f=f)=�)�partial)�support�
test_tools)�	os_helper)�TESTFN�unlink�rmtree��dedent)�TestCaseN�clinic)�ClinicError�unspecified�NULL�fail)�
int_converter�
str_converter�self_converter)�Module�Class�Function�FunctionKind�	Parameter�permute_optional_groups�permute_right_option_groups�permute_left_option_groups)�	CLanguage)�
converters�legacy_converters)�return_converters�int_return_converter)�Block�BlockParser)�BlockPrinter�Destination)�	DSLParser)�
parse_file�Clinic�clinic_testsF��filename�limited_capic�R�[U5n[X US9n[SU5UlU$)Nr*�)rr(r#�block_parser)r+r,�clang�cs    �%C:\Python313\\Lib\test\test_clinic.py�_make_clinicr3$s+���h��E��u�l�C�A� ��U�+�A�N��H�T�r+�lineno�stripc��[U5nU(aUR5n[R"U5nUR	[
U5nU"U5 SSS5 Ub&UR
WRRU5 Ub&UR
WRRU5 WR$!,(df   Nl=f)aHelper for the parser tests.

tc: unittest.TestCase; passed self in the wrapper
parser: the clinic parser used for this test case
code: a str with input text (clinic code)
errmsg: the expected error message
filename: str, optional filename
lineno: int, optional line number
N)
rr7�re�escape�assertRaisesRegexr�assertEqual�	exceptionr+r6)�tc�parser�code�errmsgr+r6r7�cms        r2�_expect_failurerC+s����$�<�D���z�z�|��
�Y�Y�v�
�F�	�	�	�k�6�	2�b��t��
3���
���r�|�|�,�,�h�7�
��
���r�|�|�*�*�F�3�
�<�<��

3�	2�s�	B>�>
Cc�J�UR"5 UR"U5 g�N)�clear�update)r�old_converterss  r2�restore_dictrICs���������n�%r4c��UR[[[R"55 UR[[[R"55 UR[[
[
R"55 grE)�
addCleanuprIr�copyrr )�testcases r2�save_restore_convertersrNHs\������j�"���)�+�����&7�)�.�.�0�2�����&7�)�.�.�0�2r4c�6�\rSrSrSrSSS.SjrSrSrSrSr	S	r
S
rSrSr
S
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr S r!S!r"S"r#S#r$S$r%S%r&S&r'S'r(S(r)S)r*S*r+S+r,S,r-S-r.S.r/S/r0S0r1S1r2S2r3g)3�ClinicWholeFileTest�QN�r+r6c	�B�[XRRXX4S9 g)NrR)rCr
�parse)�self�rawrAr+r6s     r2�expect_failure�"ClinicWholeFileTest.expect_failureTs����k�k�/�/��!)�	:r4c�6�[U5 [SS9Ulg)N�test.c�r+)rNr3r
�rUs r2�setUp�ClinicWholeFileTest.setUpXs����%�"�H�5��r4c���SnURRU5R5nUSR5nUR	US5 URUS5 g)Nz/*[clinic]
foo
[clinic]*/�z[clinic]*/[clinic]*/z
[clinic]*/)r
rT�
splitlines�rstrip�assertNotEqualr<)rUrV�cooked�end_lines    r2�test_eol�ClinicWholeFileTest.test_eol\s[��,�����"�"�3�'�2�2�4���!�9�#�#�%��	
���H�&<�=�����<�0r4c�.�SnSnURXSSS9 g)Nz�
            /*[clinic input]
            [clinic start generated code]*/
            /*[clinic end generated code: foo]*/
        zKMangled Argument Clinic marker line: '/*[clinic end generated code: foo]*/'rZ�rR�rW�rUrV�errs   r2�test_mangled_marker_line�,ClinicWholeFileTest.test_mangled_marker_linems*����
5�	�	
���C�x���Br4c�.�SnSnURXSSS9 g)Nz�
            /*[clinic input]
            [clinic start generated code]*/
            /*[clinic end generated code: output=0123456789abcdef input=fedcba9876543210]*/
        zKChecksum mismatch! Expected '0123456789abcdef', computed 'da39a3ee5e6b4b0d'rZrirRrjrks   r2�test_checksum_mismatch�*ClinicWholeFileTest.test_checksum_mismatchys&����
J�����C�x���Br4c�.�SnSnURXSSS9 g)Nz_
            /*[clinic input]
            [clinic start generated code]*/foobarfoobar!
        z(Garbage after stop line: 'foobarfoobar!'rZr`rRrjrks   r2�test_garbage_after_stop_line�0ClinicWholeFileTest.test_garbage_after_stop_line�s%����9�����C�x���Br4c�.�SnSnURXSSS9 g)NzS
            /*[clinic input]
             [clinic start generated code]*/
        zRWhitespace is not allowed before the stop line: ' [clinic start generated code]*/'rZr`rRrjrks   r2� test_whitespace_before_stop_line�4ClinicWholeFileTest.test_whitespace_before_stop_line�s*����

1�	�	
���C�x���Br4c��[S5nSUlSUlSUl[	USSS9n[S5R
5nURU5n[S5R5nURXE5 g)	Nz//z//[{dsl_name} start]z//[{dsl_name} stop]rZFr*z\
            //[clinic start]
            //module test
            //[clinic stop]
        z�
            //[clinic start]
            //module test
            //
            //[clinic stop]
            /*[clinic end generated code: output=da39a3ee5e6b4b0d input=65fab8adff58cf08]*/
        )
r�body_prefix�
start_line�	stop_liner(rr7rT�lstripr<)rUr0�clrV�out�expecteds      r2�test_parse_with_body_prefix�/ClinicWholeFileTest.test_parse_with_body_prefix�s����$��� ���1���/���
�E�H�5�
A����
��U�W�		�
�h�h�s�m����
��V�X�
	�	
����'r4c�.�SnSnURXSSS9 g)NzR
            /* start
            /* nested
            */
            */
        zNested block comment!rZr`rRrjrks   r2�*test_cpp_monitor_fail_nested_block_comment�>ClinicWholeFileTest.test_cpp_monitor_fail_nested_block_comment�s%����&�����C�x���Br4c�.�SnSnURXSSS9 g)Nz<
            #if
            a()
            #endif
        z)Invalid format for #if line: no argument!rZ�rRrjrks   r2�*test_cpp_monitor_fail_invalid_format_noarg�>ClinicWholeFileTest.test_cpp_monitor_fail_invalid_format_noarg�s%����
:�����C�x���Br4c�.�SnSnURXSSS9 g)NzC
            #ifdef A B
            a()
            #endif
        z?Invalid format for #ifdef line: should be exactly one argument!rZr�rRrjrks   r2�0test_cpp_monitor_fail_invalid_format_toomanyargs�DClinicWholeFileTest.test_cpp_monitor_fail_invalid_format_toomanyargs�s&����
P�����C�x���Br4c�.�SnSnURXSSS9 g)Nz#elsez.#else without matching #if / #ifdef / #ifndef!rZr�rRrjrks   r2�$test_cpp_monitor_fail_no_matching_if�8ClinicWholeFileTest.test_cpp_monitor_fail_no_matching_if�s!����>�����C�x���Br4c�.�SnSnURX5 g)Nzy
            /*[clinic input]
            output preset nosuchpreset
            [clinic start generated code]*/
        zUnknown preset 'nosuchpreset'rjrks   r2�$test_directive_output_unknown_preset�8ClinicWholeFileTest.test_directive_output_unknown_preset�s����
.�����C�%r4c�.�SnSnURX5 g)Nzi
            /*[clinic input]
            output pop
            [clinic start generated code]*/
        z"Can't 'output pop', stack is emptyrjrks   r2�test_directive_output_cant_pop�2ClinicWholeFileTest.test_directive_output_cant_pop�s����
3�����C�%r4c��[S5nURRU5nURUR	[S555 1SknUH,nURUS9 UR
XB5 SSS5 M. UR5RS5SnURUR	S55 g!,(df   M�=f)Nz~
            /*[clinic input]
            output print 'I told you once.'
            [clinic start generated code]*/
        >
�cpp_if�	cpp_endif�impl_prototype�impl_definition�methoddef_define�methoddef_ifndef�parser_prototype�parser_definition�docstring_prototype�docstring_definition)�field�
���z%/*[clinic end generated code: output=)	rr
rT�
assertTrue�
startswith�subTest�assertInrb�split)rUrVr~�fieldsr��	last_lines      r2�test_directive_output_print�/ClinicWholeFileTest.test_directive_output_print�s�����
��
�k�k����$��	
������v�/�(
��	�

���E����E��*��
�
�e�)�+�*���J�J�L�&�&�t�,�R�0�	����� � �!H�I�	
�+�*�s�(C	�	
C	c�@�[S5nSnURX5 g)Nz�
            /*[clinic input]
            preserve foo bar baz eggs spam ham mushrooms
            [clinic start generated code]*/
        z,takes 1 positional argument but 8 were given)rrWrks   r2�test_directive_wrong_arg_number�3ClinicWholeFileTest.test_directive_wrong_arg_numbers&����
��
=�����C�%r4c�.�SnSnURX5 g)Nz
            /*[clinic input]
            destination buffer nosuchcommand
            [clinic start generated code]*/
        z+unknown destination command 'nosuchcommand'rjrks   r2� test_unknown_destination_command�4ClinicWholeFileTest.test_unknown_destination_command
s����
<�����C�%r4c�.�SnSnURX5 g)Na�
            /*[python input]
            class Custom_converter(CConverter):
                converter = "some_c_function"
                def converter_init(self):
                    self.function.noaccess
            [python start generated code]*/
            /*[clinic input]
            module test
            test.fn
                a: Custom
            [clinic start generated code]*/
        z<accessing self.function inside converter_init is disallowed!rjrks   r2�+test_no_access_to_members_in_converter_init�?ClinicWholeFileTest.test_no_access_to_members_in_converter_inits$����
K�	�	
���C�%r4c�,�SnSnURX!SS9 g)Nz3'kind' of function and cloned function don't match!a&
            /*[clinic input]
            module m
            @classmethod
            m.f1
                a: object
            [clinic start generated code]*/
            /*[clinic input]
            @staticmethod
            m.f2 = m.f1
            [clinic start generated code]*/
        �	�r6rj�rUrl�blocks   r2�test_clone_mismatch�'ClinicWholeFileTest.test_clone_mismatch&s#��C����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz+Badly formed annotation for 'm.f': 'Custom'aW
            /*[python input]
            class Custom_return_converter(CReturnConverter):
                def __init__(self):
                    raise ValueError("abc")
            [python start generated code]*/
            /*[clinic input]
            module m
            m.f -> Custom
            [clinic start generated code]*/
        �r�rjr�s   r2�#test_badly_formed_return_annotation�7ClinicWholeFileTest.test_badly_formed_return_annotation6s#��;��
��	
���E�q��1r4c�,�SnSnURX!SS9 g)N�''my_test_func' uses '*' more than once.z�
            /*[clinic input]
            my_test_func

                pos_arg: object
                *args: object
                *
                kw_arg: object
            [clinic start generated code]*/
        �r�rjr�s   r2�test_star_after_vararg�*ClinicWholeFileTest.test_star_after_varargE�#��7��	��	
���E�q��1r4c�,�SnSnURX!SS9 g)Nr�z�
            /*[clinic input]
            my_test_func

                pos_arg: object
                *
                *args: object
                kw_arg: object
            [clinic start generated code]*/
        r�r�rjr�s   r2�test_vararg_after_star�*ClinicWholeFileTest.test_vararg_after_starSr�r4c�,�SnSnURX!SS9 g)NzAlready defined module 'm'!z|
            /*[clinic input]
            module m
            module m
            [clinic start generated code]*/
        rir�rjr�s   r2�test_module_already_got_one�/ClinicWholeFileTest.test_module_already_got_oneas#��+����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz"Destination already exists: 'test'z�
            /*[clinic input]
            destination test new buffer
            destination test new buffer
            [clinic start generated code]*/
        rir�rjr�s   r2� test_destination_already_got_one�4ClinicWholeFileTest.test_destination_already_got_oneks#��2����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz'Destination does not exist: '/dev/null'zz
            /*[clinic input]
            output everything /dev/null
            [clinic start generated code]*/
        r`r�rjr�s   r2�test_destination_does_not_exist�3ClinicWholeFileTest.test_destination_does_not_existus#��7����
	
���E�q��1r4c�,�SnSnURX!SS9 g)NzAlready defined class 'C'!z�
            /*[clinic input]
            class C "" ""
            class C "" ""
            [clinic start generated code]*/
        rir�rjr�s   r2�test_class_already_got_one�.ClinicWholeFileTest.test_class_already_got_one~s#��*����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz#Can't nest a module inside a class!z�
            /*[clinic input]
            class C "" ""
            module C.m
            [clinic start generated code]*/
        rir�rjr�s   r2�"test_cant_nest_module_inside_class�6ClinicWholeFileTest.test_cant_nest_module_inside_class�s#��3����	
���E�q��1r4c�,�Sn[S5n[S5n[R"5nURR	U5nSSS5 URUWR
55 URWU5 g!,(df   NA=f)Nz?Destination buffer 'buffer' not empty at end of file, emptying.a
            /*[clinic input]
            output everything buffer
            fn
                a: object
                /
            [clinic start generated code]*/
            /*[clinic end generated code: output=da39a3ee5e6b4b0d input=1c4668687f5fd002]*/

            /*[clinic input]
            dump buffer
            [clinic start generated code]*/

            PyDoc_VAR(fn__doc__);

            PyDoc_STRVAR(fn__doc__,
            "fn($module, a, /)\n"
            "--\n"
            "\n");

            #define FN_METHODDEF    \
                {"fn", (PyCFunction)fn, METH_O, fn__doc__},

            static PyObject *
            fn(PyObject *module, PyObject *a)
            /*[clinic end generated code: output=be6798b148ab4e53 input=524ce2e021e4eba6]*/
        z�
            /*[clinic input]
            output everything buffer
            fn
                a: object
                /
            [clinic start generated code]*/
        )rr�captured_stdoutr
rTr��getvaluer<)rU�expected_warning�expected_generatedr��stdout�	generateds      r2�!test_dest_buffer_not_empty_at_eof�5ClinicWholeFileTest.test_dest_buffer_not_empty_at_eof�s���5��#�%�
��6��
���
$�
$�
&�&����)�)�%�0�I�'��
�
�&����(9�:�����$6�7�'�
&�s�B�
Bc�,�SnSnURX!SS9 g)Nz9Can't clear destination 'file': it's not of type 'buffer'zu
            /*[clinic input]
            destination file clear
            [clinic start generated code]*/
        r`r�rjr�s   r2�test_dest_clear�#ClinicWholeFileTest.test_dest_clear�s#��I����
	
���E�q��1r4c�,�SnSnURX!SS9 g)Nzunknown variable 'ets'zj
            /*[clinic input]
            set ets tse
            [clinic start generated code]*/
        r`r�rjr�s   r2�test_directive_set_misuse�-ClinicWholeFileTest.test_directive_set_misuse�s#��&����
	
���E�q��1r4c�v�[S5nURRU5nSnURX25 g)Na�
            /*[clinic input]
            set line_prefix '// '
            output everything suppress
            output docstring_prototype buffer
            fn
                a: object
                /
            [clinic start generated code]*/
            /* We need to dump the buffer.
             * If not, Argument Clinic will emit a warning */
            /*[clinic input]
            dump buffer
            [clinic start generated code]*/
        z// PyDoc_VAR(fn__doc__);�rr
rTr��rUr�r��expected_docstring_prototypes    r2�test_directive_set_prefix�-ClinicWholeFileTest.test_directive_set_prefix�s:����
���K�K�%�%�e�,�	�'A�$��
�
�2�>r4c�v�[S5nURRU5nSnURX25 g)Na�
            /*[clinic input]
            set line_suffix '  // test'
            output everything suppress
            output docstring_prototype buffer
            fn
                a: object
                /
            [clinic start generated code]*/
            /* We need to dump the buffer.
             * If not, Argument Clinic will emit a warning */
            /*[clinic input]
            dump buffer
            [clinic start generated code]*/
        zPyDoc_VAR(fn__doc__);  // testr�r�s    r2�test_directive_set_suffix�-ClinicWholeFileTest.test_directive_set_suffix�s:����
���K�K�%�%�e�,�	�'G�$��
�
�2�>r4c�v�[S5nURRU5nSnURX25 g)Na
            /*[clinic input]
            set line_prefix '{block comment start} '
            set line_suffix ' {block comment end}'
            output everything suppress
            output docstring_prototype buffer
            fn
                a: object
                /
            [clinic start generated code]*/
            /* We need to dump the buffer.
             * If not, Argument Clinic will emit a warning */
            /*[clinic input]
            dump buffer
            [clinic start generated code]*/
        z/* PyDoc_VAR(fn__doc__); */r�r�s    r2�$test_directive_set_prefix_and_suffix�8ClinicWholeFileTest.test_directive_set_prefix_and_suffix�s:����
�� �K�K�%�%�e�,�	�'D�$��
�
�2�>r4c��[S5n[S5nURRU5nURX25 g)Nz�
            /*[clinic input]
            output everything buffer
            printout test
            [clinic start generated code]*/
        z�
            /*[clinic input]
            output everything buffer
            printout test
            [clinic start generated code]*/
            test
            /*[clinic end generated code: output=4e1243bd22c66e76 input=898f1a32965d44ca]*/
        �rr
rTr<)rUr�rr�s    r2�test_directive_printout�+ClinicWholeFileTest.test_directive_printoutsF����
����
���K�K�%�%�e�,�	�����-r4c�,�SnSnURX!SS9 g)Nz)Can't have 'preserve' twice in one block!z|
            /*[clinic input]
            preserve
            preserve
            [clinic start generated code]*/
        rir�rjr�s   r2�test_directive_preserve_twice�1ClinicWholeFileTest.test_directive_preserve_twices#��9����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz?'preserve' only works for blocks that don't produce any output!z�
            /*[clinic input]
            preserve
            fn
                a: object
                /
            [clinic start generated code]*/
        r�r�rjr�s   r2�test_directive_preserve_input�1ClinicWholeFileTest.test_directive_preserve_input(s#��O����	
���E�q��1r4c�r�[S5nURRU5nURX!5 g)Na�
            /*[clinic input]
            output everything buffer
            preserve
            [clinic start generated code]*/
            // Preserve this
            /*[clinic end generated code: output=eaa49677ae4c1f7d input=559b5db18fddae6a]*/
            /*[clinic input]
            dump buffer
            [clinic start generated code]*/
            /*[clinic end generated code: output=da39a3ee5e6b4b0d input=524ce2e021e4eba6]*/
        r��rUr�r�s   r2�test_directive_preserve_output�2ClinicWholeFileTest.test_directive_preserve_output4s5����
���K�K�%�%�e�,�	�����*r4c�Z�[S5R5nSnURX!SS9 g)Na
            Invalid command or destination name 'cmd'. Must be one of:
             - 'preset'
             - 'push'
             - 'pop'
             - 'print'
             - 'everything'
             - 'cpp_if'
             - 'docstring_prototype'
             - 'docstring_definition'
             - 'methoddef_define'
             - 'impl_prototype'
             - 'parser_prototype'
             - 'parser_definition'
             - 'cpp_endif'
             - 'methoddef_ifndef'
             - 'impl_definition'
        zp
            /*[clinic input]
            output cmd buffer
            [clinic start generated code]*/
        r`r�)rr7rWr�s   r2�%test_directive_output_invalid_command�9ClinicWholeFileTest.test_directive_output_invalid_commandDs9����
�"�U�W�#	�$��
	
���E�q��1r4c�,�SnSnURXSS9 g)Na
            /*[clinic input]
            class C "void *" ""
            C.meth
              a: int
            [clinic start generated code]*/
            /*[clinic input]
            @classmethod
            C.__init__ = C.meth
            [clinic start generated code]*/
        zD'__init__' must be a normal method; got 'FunctionKind.CLASS_METHOD'!r�r�rj�rUr�rls   r2�test_validate_cloned_init�-ClinicWholeFileTest.test_validate_cloned_init^s$��
��U�����E�q��1r4c�,�SnSnURXSS9 g)Na
            /*[clinic input]
            class C "void *" ""
            C.meth
              a: int
            [clinic start generated code]*/
            /*[clinic input]
            C.__new__ = C.meth
            [clinic start generated code]*/
        z '__new__' must be a class method�r�rjrs   r2�test_validate_cloned_new�,ClinicWholeFileTest.test_validate_cloned_newms#��	��1�����E�q��1r4c�,�SnSnURXSS9 g)Nz�
            /*[clinic input]
            foo2
            [clinic start generated code]*/
            /*[clinic input]
            foo as = foo2
            [clinic start generated code]*/
        �)No C basename provided after 'as' keyword�r�rjrs   r2�test_no_c_basename_cloned�-ClinicWholeFileTest.test_no_c_basename_cloned{s#����:�����E�q��1r4c�.�[S5nURRU5 URRnUR	[U5S5 UR	USRS5 UR	USRS5 g)Na9
            /*[clinic input]
            # Make sure we don't create spurious clinic/ directories.
            output everything suppress
            foo2
            [clinic start generated code]*/

            /*[clinic input]
            foo as foo1 = foo2
            [clinic start generated code]*/
        r`r��foo�foo1)rr
rT�	functionsr<�len�name�
c_basename)rUrV�funcss   r2�"test_cloned_with_custom_c_basename�6ClinicWholeFileTest.test_cloned_with_custom_c_basename�sz���
�

��	
�����#�����%�%������U��Q�'�����q�����.�����q��,�,�f�5r4c�,�SnSnURXSS9 g)Nz�
            /*[clinic input]
            class C "void *" ""
            foo1
            [clinic start generated code]*/

            /*[clinic input]
            foo2 as .illegal. = foo1
            [clinic start generated code]*/
        zIllegal C basename: '.illegal.'r	r�rjrs   r2�#test_cloned_with_illegal_c_basename�7ClinicWholeFileTest.test_cloned_with_illegal_c_basename�s#��	��0�����E�q��1r4c�:�[S5nURRU5 UR[S5 URR
nUR
[U5S5 USRRS5nUSRRS5nUR
USS5 UR
USS5 URS	U5 URS	U5 URS
U5 URS
U5 g)Nar
            /*[clinic input]
            @text_signature "($module, a[, b])"
            src
                a: object
                    param a
                b: object = NULL
                /

            docstring
            [clinic start generated code]*/

            /*[clinic input]
            dst = src
            [clinic start generated code]*/
        r
r`rr�r�zsrc($module, a[, b])zdst($module, a[, b])z    param a�	docstring)rr
rTrKr	rr<rrr�r��assertNotIn)rUr�r�src_docstring_lines�dst_docstring_liness     r2�!test_cloned_forced_text_signature�5ClinicWholeFileTest.test_cloned_forced_text_signature�s�����
�� 	
�����%� ������)����%�%������U��Q�'�#�A�h�0�0�6�6�t�<��#�A�h�0�0�6�6�t�<��	
���,�Q�/�1G�H����,�Q�/�1G�H�	
�
�
�m�%8�9��
�
�m�%8�9�	
�
�
�k�#6�7�����&9�:r4c�,�SnSnURXSS9 g)Nax
            /*[clinic input]
            @text_signature "($module, a[, b])"
            src
                a: object
                b: object = NULL
                /
            [clinic start generated code]*/

            /*[clinic input]
            @text_signature "($module, a_override[, b])"
            dst = src
            [clinic start generated code]*/
        z2Cannot use @text_signature when cloning a function�r�rjrs   r2�)test_cloned_forced_text_signature_illegal�=ClinicWholeFileTest.test_cloned_forced_text_signature_illegal�s$��
��C�����E�r��2r4c�p�SH0n[SUSUS35nURRU5 M2 g)N)r
�pythonz                /*[z| input]
                # CPP directives, valid or not, should be ignored in C comments.
                #
                [z% start generated code]*/
            )rr
rT)rU�dslrVs   r2�$test_ignore_preprocessor_in_comments�8ClinicWholeFileTest.test_ignore_preprocessor_in_comments�sJ��%�C����5����
�	��C�
�K�K���c�"�&r4�r
)4�__name__�
__module__�__qualname__�__firstlineno__�maxDiffrWr]rfrmrprsrvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrr#r'r,�__static_attributes__�r4r2rPrPQs����G�6:�4�:�6�1�"
C�C�C�	C�(�*C�C�C�C�
&�&�!
�F&�&�&�&2� 
2�2�2�2�2�2�2�2�)8�V2�2�?�(?�(?�*.�$2�
2�+� 2�4
2�2�
2�6�$2�#;�J3�$#r4rPc�8�\rSrSrSSS.SjrS	SjrS	SjrSrg)
�ParseFileUnitTesti�TN)�verify�outputc���[R"[U5R55nUR	[
U5 [
USS9 SSS5 g!,(df   g=f)NF�r,)r9r:rr7r;rr')rUr+�expected_errorr8r9rAs      r2�expect_parsing_failure�(ParseFileUnitTest.expect_parsing_failure�sF�����6�.�1�7�7�9�:��
�
#�
#�K��
8��x�e�4�9�
8�
8�s�A�
A&c�$�URSSS9 g)Nrz&Can't extract file type for file 'foo'�r+r<)r=r\s r2�test_parse_file_no_extension�.ParseFileUnitTest.test_parse_file_no_extension�s���#�#��C�	$�	
r4c��SSSS.nUR5H,up#URUS9 URX#S9 SSS5 M. g!,(df   M@=f)Nz*Can't identify file type for file 'foo.rs'z*Can't identify file type for file 'foo.hs'z*Can't identify file type for file 'foo.js')zfoo.rszfoo.hszfoo.jsr[r@)�itemsr�r=)rU�filenames_to_errorsr+rAs    r2�!test_parse_file_strange_extension�3ParseFileUnitTest.test_parse_file_strange_extension�sY��B�B�B�
��
!4� 9� 9� ;��H����x��0��+�+�X�+�U�1�0�!<�0�0�s�A�
A	r5)�returnN)r/r0r1r2r=rArFr4r5r4r2r7r7�s��26�t�5�
�Vr4r7c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�ClinicGroupPermuterTestic�>�[XU5nURXE5 grE)rr<)rU�l�m�rr9�computeds      r2�_test�ClinicGroupPermuterTest._tests��*�1��3������*r4c�6�URS//S/S//S5 g)N�start�stop�step))rT)rSrT)rSrTrU�rPr\s r2�
test_range�"ClinicGroupPermuterTest.test_ranges#���
�
�W�I�;���F�8�*��	
r4c�8�URSS//S/S//S5 g)N�x�y�ch�attr))r\)r\r])rZr[r\)rZr[r\r]rVr\s r2�test_add_window�'ClinicGroupPermuterTest.test_add_windows%���
�
�S�#�J�<�$��6�(���	
r4c�F�UR/SQSS//S/SS//SQ/S5 g)	N)�a1�a2�a3�b1�b2�c1�d1�d2)�e1�e2�e3))rf)rdrerf)rdrerfrgrh)rarbrcrdrerf)rarbrcrdrerfrgrh)rarbrcrdrerfrgrhrirjrkrVr\s r2�test_ludicrous�&ClinicGroupPermuterTest.test_ludicrouss/���
�
�&��t��5��v��t��N`�?a��	
r4c�8�UR//S/S/S//S5 g)N�a�br1)r5�ro�rorp�rorpr1rVr\s r2�test_right_only�'ClinicGroupPermuterTest.test_right_only#s&���
�
�2�r�S�E�3�%���.��	
r4c�6�SnUR[U5 g)Nc� �[S///5 g)Nro)rr5r4r2�fn�PClinicGroupPermuterTest.test_have_left_options_but_required_is_empty.<locals>.fn-s��#�S�E�2�r�2r4)�assertRaises�
ValueError�rUrxs  r2�,test_have_left_options_but_required_is_empty�DClinicGroupPermuterTest.test_have_left_options_but_required_is_empty,s��	3����*�b�)r4r5N)r/r0r1r2rPrWr^rlrtr}r4r5r4r2rJrJs ��+�
�
�	
�
�*r4rJc�J�\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
g)
�ClinicLinearFormatTesti2c�T�[R"U40UD6nURX$5 grE)�	libclinic�
linear_formatr<)rU�inputr9�kwargsrOs     r2rP�ClinicLinearFormatTest._test3s%���*�*�5�;�F�;������*r4c�(�URSS5 g)Nr.rVr\s r2�test_empty_strings�)ClinicLinearFormatTest.test_empty_strings7s���
�
�2�r�r4c�(�URSS5 g)Nr�rVr\s r2�test_solo_newline�(ClinicLinearFormatTest.test_solo_newline:s���
�
�4��r4c�(�URSS5 g)Nz
          abc
        rVr\s r2�test_no_substitution�+ClinicLinearFormatTest.test_no_substitution=s���
�
���	
r4c�&�URSSSS9 g)N�6
          abc
          {name}
          def
        z%
          abc
          def
        r.�rrVr\s r2�test_empty_substitution�.ClinicLinearFormatTest.test_empty_substitutionDs"���
�
����	�	r4c�&�URSSSS9 g)Nr�z6
          abc
          GARGLE
          def
        �GARGLEr�rVr\s r2�test_single_line_substitution�4ClinicLinearFormatTest.test_single_line_substitutionNs"���
�
����	�	r4c�&�URSSSS9 g)Nr�zH
          abc
          bingle
          bungle

          def
        zbingle
bungle
r�rVr\s r2�test_multiline_substitution�2ClinicLinearFormatTest.test_multiline_substitutionYs"���
�
���%�	�
	&r4c��[R"S5nUR[U5 [R
"SSS9 SSS5 g!,(df   g=f)Nzfound before '{marker}'z'no text before marker for you! {marker}�not allowed!��marker�r9r:r;rr�r��rU�regexs  r2�test_text_before_block_marker�4ClinicLinearFormatTest.test_text_before_block_markerfsA���	�	�3�4��
�
#�
#�K��
7��#�#�$M�+9�
;�8�
7�
7���A�
Ac��[R"S5nUR[U5 [R
"SSS9 SSS5 g!,(df   g=f)Nzfound after '{marker}'z&{marker} no text after marker for you!r�r�r�r�s  r2�test_text_after_block_marker�3ClinicLinearFormatTest.test_text_after_block_markerlsA���	�	�2�3��
�
#�
#�K��
7��#�#�$L�+9�
;�8�
7�
7�r�r5N)r/r0r1r2rPr�r�r�r�r�r�r�r�r4r5r4r2r�r�2s/��+���
��	�&�;�;r4r�c� �\rSrSrSrSrSrg)�InertParserisc��grEr5�rUr
s  r2�__init__�InertParser.__init__t���r4c��grEr5�rUr�s  r2rT�InertParser.parsewr�r4r5N�r/r0r1r2r�rTr4r5r4r2r�r�ss��
�
r4r�c� �\rSrSrSrSrSrg)�
CopyParserizc��grEr5r�s  r2r��CopyParser.__init__{r�r4c�&�URUlgrE)r�r9r�s  r2rT�CopyParser.parse~s
���{�{��r4r5Nr�r5r4r2r�r�zs��
�#r4r�c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�ClinicBlockParserTesti�c��[S5n[[X55n[U5nUHnUR	U5 M UR
R
5ngrE)r�listr#r$�print_block�fr�)rUr�r9�language�blocks�writerr�s       r2rP�ClinicBlockParserTest._test�sN���T�?���k�%�2�3���h�'���E����u�%�����"�"�$�r4c�$�URX5$rErV)rUr�s  r2�
round_trip� ClinicBlockParserTest.round_trip�s���z�z�%�'�'r4c�&�URS5 g)Nz@
            verbatim text here
            lah dee dah
        �r�r\s r2�test_round_trip_1�'ClinicBlockParserTest.test_round_trip_1�s������	
r4c�&�URS5 g)Nz�
    verbatim text here
    lah dee dah
/*[inert]
abc
[inert]*/
def
/*[inert checksum: 7b18d017f89f61cf17d47f92749ea6930a3f1deb]*/
xyz
r�r\s r2�test_round_trip_2�'ClinicBlockParserTest.test_round_trip_2�s�����	�		r4c���[S5n[USSS9n[U5URS'[	U5URS'URU5nUR
X%5 g)N�fileFr*�inertrL)rr(r��parsersr�rTr<)rUr�r9r�r1rOs      r2�_test_clinic�"ClinicBlockParserTest._test_clinic�sX���T�?���8�f�5�A��(��^��	�	�'��&�q�M��	�	�&���7�7�5�>������*r4c�(�URSS5 g)Nz�
    verbatim text here
    lah dee dah
/*[copy input]
def
[copy start generated code]*/
abc
/*[copy end generated code: output=03cfd743661f0797 input=7b18d017f89f61cf]*/
xyz
z�
    verbatim text here
    lah dee dah
/*[copy input]
def
[copy start generated code]*/
def
/*[copy end generated code: output=7b18d017f89f61cf input=7b18d017f89f61cf]*/
xyz
)r�r\s r2�
test_clinic_1�#ClinicBlockParserTest.test_clinic_1�s�����	�	�	r4r5N)r/r0r1r2rPr�r�r�r�r�r4r5r4r2r�r��s!��k�(�
�

�+�r4r�c���\rSrSrSrS|SjrSSSS.SjrSrS	rS
r	Sr
SrS
rSr
SrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrS rS!r S"r!S#r"S$r#S%r$S&r%S'r&S(r'S)r(S*r)S+r*S,r+S-r,S.r-S/r.S0r/S1r0S2r1S3r2S4r3S5r4S6r5S7r6S8r7S9r8S:r9S;r:S<r;S=r<S>r=S?r>S@r?SAr@SBrASCrBSDrCSErDSFrESGrFSHrGSIrHSJrISKrJSLrKSMrLSNrMSOrNSPrOSQrPSRrQSSrRSTrSSUrTSVrUSWrVSXrWSYrXSZrYS[rZS\r[S]r\S^r]S_r^S`r_Sar`SbraScrbSdrcSerdSfreSgrfShrgSirhSjriSkrjSlrkSmrlSnrmSornSproSqrpSrrqSsrrStrsSurtSvruSwrvSxrwSyrxSzryS{rzg)}�ClinicParserTesti�c�h�[5n[U5n[U5nURU5 U$rE)r3r&r"rT)rU�textr1r?r�s     r2rT�ClinicParserTest.parse�s,���N���1����d������U���r4c�z�URU5nURnUR[U5U5 XS$rE)rT�
signaturesr<r)rUr��signatures_in_block�function_indexr��ss      r2�parse_function�ClinicParserTest.parse_function�s;���
�
�4� ����������Q��!4�5�� � r4NTr5c
�.�[XRXX4US9$)Nr5)rCr�)rUr�rlr+r6r7s      r2rW�ClinicParserTest.expect_failure�s ���t�%8�%8�%�(0�u�N�	Nr4c��UR[US55 UR[U5R	5UR
R	55 g)Nr)r��hasattrr<rr7r)rUrxrs   r2�checkDocstring�ClinicParserTest.checkDocstring�sC�������K�0�1������)�/�/�1����+�+�-�	/r4c���[[55n[S5nURU5 URup4URSUR5 URSUR5 g)Nz5
            module os
            os.access
        �access�os)r&r3r"rTr�r<r)rUr?r��module�functions     r2�test_trivial�ClinicParserTest.test_trivial�sa���<�>�*����
��	���U�� �+�+�������8�=�=�1�����v�{�{�+r4c���UR[S55nURup#URSUR5 URSUR5 g)NzC
            #
            module os
            os.access
        r�r�)rTrr�r<r)rUr�r�r�s    r2�test_ignore_line�!ClinicParserTest.test_ignore_line�sT���
�
�6�#�
���
!�+�+�������8�=�=�1�����v�{�{�+r4c�>�URS5nURSUR5 URS[UR55 URSnURSUR5 URUR[5 g)NzO
            module os
            os.access
                path: int
        r�r`�path)r�r<rr�
parameters�assertIsInstance�	converterr�rUr��ps   r2�
test_param�ClinicParserTest.test_param�s����&�&�(�
��
	
����8�=�=�1�����C�� 3� 3�4�5�����'���������(����a�k�k�=�9r4c�|�URS5nURSnURSUR5 g)Nzb
            module os
            os.access
                follow_symlinks: bool = True
        �follow_symlinksT�r�r�r<�defaultr�s   r2�test_param_default�#ClinicParserTest.test_param_default�s>���&�&�(�
��

��� 1�2������q�y�y�)r4c�|�URS5nURSnURSUR5 g)Nz�
            module os
            os.access
                follow_symlinks: \
                bool \
                = \
                True
        r�Tr�r�s   r2�test_param_with_continuations�.ClinicParserTest.test_param_with_continuationss>���&�&�(�
��
��� 1�2������q�y�y�)r4c��URS5nURSnUR[RUR
5 URSURR5 SnSnURXCSS9 g)Nz�
            module os
            os.access
                follow_symlinks: int(c_default='MAXSIZE') = sys.maxsize
            r��MAXSIZEzlWhen you specify a named constant ('sys.maxsize') as your default value, you MUST specify a valid c_default.zh
            module os
            os.access
                follow_symlinks: int = sys.maxsize
        r`r�)	r�r�r<�sys�maxsizer�r��	c_defaultrW)rUr�r�rlr�s     r2�&test_param_default_expr_named_constant�7ClinicParserTest.test_param_default_expr_named_constants����&�&�(���

��� 1�2��������a�i�i�0�����A�K�K�$9�$9�:�
2�	���
	
���E�q��1r4c��SnSnSH:nURUS9 URUS9nURXBSS9 SSS5 M< g!,(df   MN=f)Nzf
            module os
            os.access
                follow_symlinks: int = {default}
        z'Unsupported expression as default value)z	{1, 2, 3}z3 if bool() else 4z[x for x in range(42)])�bad_default)r�r`r�)r��formatrW)rU�templaterl�bad_default_valuer�s     r2�/test_param_with_bizarre_default_fails_correctly�@ClinicParserTest.test_param_with_bizarre_default_fails_correctly%sc����
8��"
��
���*;��<� ���0A��B���#�#�E�q�#�9�=�<�"
�
=�<��� A�
A	c�b�SnSnURXSS9nURS[U55 g)Nz}
            module os
            os.access
                follow_symlinks: int(c_default='MAXSIZE') = unspecified
        z+'unspecified' is not a legal default value!r`r��+Malformed expression given as default value)rWr �str)rUr�rl�excs    r2�-test_unspecified_not_allowed_as_default_value�>ClinicParserTest.test_unspecified_not_allowed_as_default_value5s:����
<���!�!�%�Q�!�7�����F��C��Qr4c�,�SnSnURXSS9 g)Nzu
            module os
            os.access
                follow_symlinks: int(c_default='MAXSIZE') = 1/0
        rr`r�rjrs   r2�*test_malformed_expression_as_default_value�;ClinicParserTest.test_malformed_expression_as_default_value?s#����
<�����E�q��1r4c�,�SnSnURX!SS9 g)NzcWhen you specify an expression ('a + b') as your default value, you MUST specify a valid c_default.zE
            fn
                follow_symlinks: int = a + b
        r�r�rjr�s   r2�test_param_default_expr_binop�.ClinicParserTest.test_param_default_expr_binopHs(��
2�	���	
���E�q��1r4c���URS5nURS[UR55 URSRnURU[5 g)Nz�
            module os
            os.access
                follow_symlinks: bool = True
                something_else: str = ''
        ri�something_else)r�r<rr�r�r�r)rUr��convs   r2�test_param_no_docstring�(ClinicParserTest.test_param_no_docstringSs[���&�&�(�
��	
����C�� 3� 3�4�5��"�"�#3�4�>�>�����d�M�2r4c�,�SnSnURX!SS9 g)Nz]Can't have a parameter without a default ('something_else') after a parameter with a default!z�
            module os
            os.access
                follow_symlinks: bool = True
                something_else: str
        rir�rjr�s   r2�*test_param_default_parameters_out_of_order�;ClinicParserTest.test_param_default_parameters_out_of_order^s(��
0�	���	
���E�q��1r4c��URS5nURSnURSURRS5 g)Nz^
            module os
            os.access
                path: path_t(allow_fd=1)
        r�r��allow_fd)r�r�r<r��argsr�s   r2�!disabled_test_converter_arguments�2ClinicParserTest.disabled_test_converter_argumentsksH���&�&�(�
��

����'������A�K�K�,�,�Z�8�9r4c�J�URS5nURUS5 g)Na�
            module os
            os.stat as os_stat_fn

               path: str
                   Path to be examined
                   Ensure that multiple lines are indented correctly.

            Perform a stat system call on the given path.

            Ensure that multiple lines are indented correctly.
            Ensure that multiple lines are indented correctly.
        ap
            stat($module, /, path)
            --

            Perform a stat system call on the given path.

              path
                Path to be examined
                Ensure that multiple lines are indented correctly.

            Ensure that multiple lines are indented correctly.
            Ensure that multiple lines are indented correctly.
        �r�r��rUr�s  r2�test_function_docstring�(ClinicParserTest.test_function_docstringts.���&�&�(�
��	
���H�'�	
r4c�J�URS5nURUS5 g)Nz�module t
t.s
   a: object
      Param docstring with trailing whitespace  
Func docstring summary with trailing whitespace  
  
Func docstring body with trailing whitespace  
z�
            s($module, /, a)
            --

            Func docstring summary with trailing whitespace

              a
                Param docstring with trailing whitespace

            Func docstring body with trailing whitespace
        r.r/s  r2�"test_docstring_trailing_whitespace�3ClinicParserTest.test_docstring_trailing_whitespace�s.���&�&�
?�
��	
���H�
'�
	
r4c�\�UR[S55nURUS5 g)Nz�
            module foo
            foo.bar
              x: int
                 Documentation for x.
              y: int

            This is the documentation for foo.

            Okay, we're done here.
        ��
            bar($module, /, x, y)
            --

            This is the documentation for foo.

              x
                Documentation for x.

            Okay, we're done here.
        �r�rr�r/s  r2�%test_explicit_parameters_in_docstring�6ClinicParserTest.test_explicit_parameters_in_docstring�s5���&�&�v�
/�
(
�
��	
���H�
'�
	
r4c�\�UR[S55nURUS5 g)Na

            module foo
            foo.bar
              x: int
                 # We're about to have
                 # the documentation for x.
                 Documentation for x.
                 # We've just had
                 # the documentation for x.
              y: int

            # We're about to have
            # the documentation for foo.
            This is the documentation for foo.
            # We've just had
            # the documentation for foo.

            Okay, we're done here.
        r6r7r/s  r2�test_docstring_with_comments�-ClinicParserTest.test_docstring_with_comments�s5���&�&�v�/�(
���&	
���H�
'�
	
r4c�\�UR[S55nURUS5 g)Nzt
            module os
            os.stat
                path: str
            This/used to break Clinic!
        zc
            stat($module, /, path)
            --

            This/used to break Clinic!
        r7r/s  r2�Ttest_parser_regression_special_character_in_parameter_column_of_docstring_first_line�eClinicParserTest.test_parser_regression_special_character_in_parameter_column_of_docstring_first_line�s5���&�&�v�/�(
���	
���H�'�	
r4c�^�URS5nURSUR5 g)NzA
            module os
            os.stat as os_stat_fn
        �
os_stat_fn)r�r<rr/s  r2�test_c_name�ClinicParserTest.test_c_name�s/���&�&�(�
��	
����x�':�':�;r4c��Sn[S5R5nUR[U5 UR	U5 SSS5 g!,(df   g=f)Nz\
            module os
            os.stat
                invalid syntax: int = 42
        zu
            Function 'stat' has an invalid parameter declaration:
            \s+'invalid syntax: int = 42'
        )rr7r;rr�rs   r2�test_base_invalid_syntax�)ClinicParserTest.test_base_invalid_syntax�sR����
��
��U�W�	��
#�
#�K��
5�����&�6�
5�
5�s�A
�
Ac�,�SnSnURXSS9 g)Nz[
            module os
            os.stat
                x: int = invalid syntax
        z$Syntax error: 'x = invalid syntax\n'r`r�rjrs   r2�!test_param_default_invalid_syntax�2ClinicParserTest.test_param_default_invalid_syntaxs#����
6�����E�q��1r4c���SnSn[R"5nURXSS9 SSS5 [S5nWR	5nURXC5 g!,(df   N;=f)Nzn
            cloned = fooooooooooooooooo
            This is trying to clone a nonexistent function!!
        z5Couldn't find existing function 'fooooooooooooooooo'!rr�z�            cls=None, module=<clinic.Clinic object>, existing='fooooooooooooooooo'
            (cls or module).functions=[]
        )r�captured_stderrrWrr�r�)rUr�rl�stderr�expected_debug_prints     r2�1test_cloning_nonexistent_function_correctly_fails�BClinicParserTest.test_cloning_nonexistent_function_correctly_fails	sk����F��
�
$�
$�
&�&�����1��5�'�%�'� 
�����"���
�
�*�3�'�
&�s�A � 
A.c�f�URS5nURUR[5 g)Nz:
            module os
            os.stat -> int
        )r�r��return_converterr!r/s  r2�test_return_converter�&ClinicParserTest.test_return_converters0���&�&�(�
��	
���h�7�7�9M�Nr4c�.�SnSnURX5 g)NzE
            module os
            os.stat -> invalid syntax
        z7Badly formed annotation for 'os.stat': 'invalid syntax'rjrs   r2�$test_return_converter_invalid_syntax�5ClinicParserTest.test_return_converter_invalid_syntaxs����H�����E�'r4c�.�SnSnURX5 g)Nz:
            module os
            os.stat -> "s"
        z6Legacy converter 's' not allowed as a return converterrjrs   r2�5test_legacy_converter_disallowed_in_return_annotation�FClinicParserTest.test_legacy_converter_disallowed_in_return_annotation's����G�����E�'r4c�.�SnSnURX5 g)NzO
            module os
            os.stat -> fooooooooooooooooooooooo
        z?No available return converter called 'fooooooooooooooooooooooo'rjrs   r2�test_unknown_return_converter�.ClinicParserTest.test_unknown_return_converter/s����P�����E�'r4c���URS5nURSnUR[RR
UR5 URSUR5 g)Nzt
            module os
            os.access
                *
                follow_symlinks: bool = True
        r�r)r�r�r<�inspectr�KEYWORD_ONLY�kind�groupr�s   r2�	test_star�ClinicParserTest.test_star7s^���&�&�(�
��
��� 1�2������*�*�7�7����@�����A�G�G�$r4c�|�URS5nURSnURSUR5 g)Nz�
            module window
            window.border
                [
                ls: int
                ]
                /
        �lsr�)r�r�r<rar�s   r2�
test_group�ClinicParserTest.test_groupBs=���&�&�(�
��
����%������A�G�G�$r4c�v�URS5nSnUH|up4URX4S9 URUnURURU5 URUR
[RR5 SSS5 M~ URUS5 g!,(df   M�=f)Na�
            module curses
            curses.addch
                [
                y: int
                    Y-coordinate.
                x: int
                    X-coordinate.
                ]
                ch: char
                    Character to add.
                [
                attr: long
                    Attributes for the character.
                ]
                /
        ))r[r�)rZr��r\r)r]r��rraa
            addch([y, x,] ch, [attr])


              y
                Y-coordinate.
              x
                X-coordinate.
              ch
                Character to add.
              attr
                Attributes for the character.
        �
r�r�r�r<rar`r^r�POSITIONAL_ONLYr��rUr��datasetrrar�s      r2�test_left_group� ClinicParserTest.test_left_groupNs����&�&�(�
��"
��
#�K�D����4��5��'�'��-��� � ����%�0�� � �����):�):�)J�)J�K�6�5�#�
	
���H�'�	
�	6�5���A B)�)
B8	c�v�URS5nSnUH|up4URX4S9 URUnURURU5 URUR
[RR5 SSS5 M~ URUS5 g!,(df   M�=f)Na�
            module curses
            curses.imaginary
               [
               [
               y1: int
                 Y-coordinate.
               y2: int
                 Y-coordinate.
               ]
               x1: int
                 X-coordinate.
               x2: int
                 X-coordinate.
               ]
               ch: char
                 Character to add.
               [
               attr1: long
                 Attributes for the character.
               attr2: long
                 Attributes for the character.
               attr3: long
                 Attributes for the character.
               [
               attr4: long
                 Attributes for the character.
               attr5: long
                 Attributes for the character.
               attr6: long
                 Attributes for the character.
               ]
               ]
               /
        ))�y1���)�y2rt)�x1r�)�x2r�ri)�attr1r�)�attr2r�)�attr3r�)�attr4r`)�attr5r`)�attr6r`rja�
            imaginary([[y1, y2,] x1, x2,] ch, [attr1, attr2, attr3, [attr4, attr5,
                      attr6]])


              y1
                Y-coordinate.
              y2
                Y-coordinate.
              x1
                X-coordinate.
              x2
                X-coordinate.
              ch
                Character to add.
              attr1
                Attributes for the character.
              attr2
                Attributes for the character.
              attr3
                Attributes for the character.
              attr4
                Attributes for the character.
              attr5
                Attributes for the character.
              attr6
                Attributes for the character.
        rkrms      r2�test_nested_groups�#ClinicParserTest.test_nested_groupsxs����&�&�"(�"
��F
��#�K�D����4��5��'�'��-��� � ����%�0�� � �����):�):�)J�)J�K�6�5�#�	
���H�'�	
�6�5�rqc�,�SnSnURX!SS9 g)Nz`Function 'two_top_groups_on_left' has an unsupported group configuration. (Unexpected state 2.b)z�
            module foo
            foo.two_top_groups_on_left
                [
                group1 : int
                ]
                [
                group2 : int
                ]
                param: int
        rr�rjr�s   r2�0test_disallowed_grouping__two_top_groups_on_left�AClinicParserTest.test_disallowed_grouping__two_top_groups_on_left�s(��
4�	�
��	
���E�q��1r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.two_top_groups_on_right
                param: int
                [
                group1 : int
                ]
                [
                group2 : int
                ]
        zaFunction 'two_top_groups_on_right' has an unsupported group configuration. (Unexpected state 6.b)rjrs   r2�1test_disallowed_grouping__two_top_groups_on_right�BClinicParserTest.test_disallowed_grouping__two_top_groups_on_right��#��
��
4�	�	
���E�'r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.parameter_after_group_on_right
                param: int
                [
                [
                group1 : int
                ]
                group2 : int
                ]
        zfFunction parameter_after_group_on_right has an unsupported group configuration. (Unexpected state 6.a)rjrs   r2�8test_disallowed_grouping__parameter_after_group_on_right�IClinicParserTest.test_disallowed_grouping__parameter_after_group_on_right�r�r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.group_after_parameter_on_left
                [
                group2 : int
                [
                group1 : int
                ]
                ]
                param: int
        zgFunction 'group_after_parameter_on_left' has an unsupported group configuration. (Unexpected state 2.b)rjrs   r2�7test_disallowed_grouping__group_after_parameter_on_left�HClinicParserTest.test_disallowed_grouping__group_after_parameter_on_left�r�r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.empty_group
                [
                [
                ]
                group2 : int
                ]
                param: int
        �ZFunction 'empty_group' has an empty group. All groups must contain at least one parameter.rjrs   r2�-test_disallowed_grouping__empty_group_on_left�>ClinicParserTest.test_disallowed_grouping__empty_group_on_left�#��	��
>�	�	
���E�'r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.empty_group
                param: int
                [
                [
                ]
                group2 : int
                ]
        r�rjrs   r2�.test_disallowed_grouping__empty_group_on_right�?ClinicParserTest.test_disallowed_grouping__empty_group_on_rightr�r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.empty_group
                param: int
                ]
                group2: int
                ]
        z7Function 'empty_group' has a ']' without a matching '['rjrs   r2�-test_disallowed_grouping__no_matching_bracket�>ClinicParserTest.test_disallowed_grouping__no_matching_bracket0s����H�����E�'r4c��SnSnUH,nURUS9 URX25 SSS5 M. g!,(df   M@=f)N)zo
            with_kwds
                [
                *
                a: object
                ]
        z]
            with_kwds
                [
                a: object
                ]
        z\You cannot use optional groups ('[' and ']') unless all parameters are positional-only ('/')�r��r�rW�rUrnrlr�s    r2�/test_disallowed_grouping__must_be_position_only�@ClinicParserTest.test_disallowed_grouping__must_be_position_only<sJ��
��
3�	��E����E��*��#�#�E�/�+�*��*�*��	�8�
A	c��URS5nURSUR5 URS[UR55 g)NzL
            module foo
            foo.bar

            Docstring

        zbar($module, /)
--

Docstringr��r�r<rrr�r/s  r2�test_no_parameters�#ClinicParserTest.test_no_parametersQsK���&�&�(�
��	
���;�X�=O�=O�P�����C�� 3� 3�4�5r4c��URSSSS9nURSUR5 URS[UR55 g)Nz�
            module foo
            class foo.Bar "unused" "notneeded"
            foo.Bar.__init__

            Docstring

        rir`�r�r�zBar()
--

Docstringr�r�r/s  r2�test_init_with_no_parameters�-ClinicParserTest.test_init_with_no_parameters\sW���&�&�(�"#�1�'�6��	
���1�8�3E�3E�F�����C�� 3� 3�4�5r4c�.�SnSnURX5 g)NzM
            module foo
            foo.bar => int
                /
        z'Illegal function name: 'foo.bar => int'rjrs   r2�test_illegal_module_line�)ClinicParserTest.test_illegal_module_lineks����
8�����E�'r4c�.�SnSnURX5 g)NzM
            module foo
            foo.bar as 935
                /
        zIllegal C basename: '935'rjrs   r2�test_illegal_c_basename�(ClinicParserTest.test_illegal_c_basenamets����
*�����E�'r4c�,�SnSnURXSS9 g)Nzfoo as r
F)r7rjrs   r2�test_no_c_basename�#ClinicParserTest.test_no_c_basename}s����9�����E�e��4r4c�.�SnSnURX5 g)NzX
            module foo
            foo.bar
                *
                *
        �'Function 'bar' uses '*' more than once.rjrs   r2�test_single_star�!ClinicParserTest.test_single_star�s����8�����E�'r4c��SnSnUH,nURUS9 URX25 SSS5 M. g!,(df   M@=f)N)zmodule foo
foo.bar
  *z&module foo
foo.bar
  *
Docstring here.z"module foo
foo.bar
  this: int
  *z-module foo
foo.bar
  this: int
  *
Docstring.z:Function 'bar' specifies '*' without following parameters.r�r�r�s    r2�#test_parameters_required_after_star�4ClinicParserTest.test_parameters_required_after_star�sF��
��K���E����E��*��#�#�E�/�+�*��*�*�r�c���SnUHYup#URX#S9 URU5nURSnURURU5 SSS5 M[ g!,(df   Mm=f)N))�TzL
                class T "void *" ""
                T.__init__
            )zm.Tz�
                module m
                class m.T "void *" ""
                @classmethod
                m.T.__new__
            )zm.T.Cz�
                module m
                class m.T "void *" ""
                class m.T.C "void *" ""
                m.T.C.__init__
            �rr@r��r�rTr�r<�fulldisplayname�rUrnrr@r��funcs      r2�test_fulldisplayname_class�+ClinicParserTest.test_fulldisplayname_class�sh��
��$"�J�D����4��3��
�
�4�(���'�'��+��� � ��!5�!5�t�<�4�3�"�3�3���=A#�#
A2	c���SnUHYup#URX#S9 URU5nURSnURURU5 SSS5 M[ g!,(df   Mm=f)N))r�r�)zm.funcz=
                module m
                m.func
            )zT.methzH
                class T "void *" ""
                T.meth
            )zm.T.methze
                module m
                class m.T "void *" ""
                m.T.meth
            )z
m.T.C.methz�
                module m
                class m.T "void *" ""
                class m.T.C "void *" ""
                m.T.C.meth
            r�r�r�r�s      r2�test_fulldisplayname_meth�*ClinicParserTest.test_fulldisplayname_meth�sh��
��,"�J�D����4��3��
�
�4�(���'�'��+��� � ��!5�!5�t�<�4�3�"�3�3�r�c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                this: int
                * [from 3]
            Docstring.
        zdFunction 'bar': expected format '[from major.minor]' where 'major' and 'minor' are integers; got '3'rir�rjrs   r2�test_depr_star_invalid_format_1�0ClinicParserTest.test_depr_star_invalid_format_1�s(����
>�	�	
���E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                this: int
                * [from a.b]
            Docstring.
        zfFunction 'bar': expected format '[from major.minor]' where 'major' and 'minor' are integers; got 'a.b'rir�rjrs   r2�test_depr_star_invalid_format_2�0ClinicParserTest.test_depr_star_invalid_format_2�s)����
@�	�	
���E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                this: int
                * [from 1.2.3]
            Docstring.
        zhFunction 'bar': expected format '[from major.minor]' where 'major' and 'minor' are integers; got '1.2.3'rir�rjrs   r2�test_depr_star_invalid_format_3�0ClinicParserTest.test_depr_star_invalid_format_3�s)����
B�	�	
���E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                this: int
                * [from 3.14]
            Docstring.
        �EFunction 'bar' specifies '* [from ...]' without following parameters.�r�rjrs   r2�(test_parameters_required_after_depr_star�9ClinicParserTest.test_parameters_required_after_depr_star�s(����
$�	�	
���E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                * [from 3.14]
                *
                b: int
            Docstring.
        r�r�r�rjrs   r2�)test_parameters_required_after_depr_star2�:ClinicParserTest.test_parameters_required_after_depr_star2�(����
$�	�	
���E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                * [from 3.14]
                *args: object
                b: int
            Docstring.
        r�r�r�rjrs   r2�)test_parameters_required_after_depr_star3�:ClinicParserTest.test_parameters_required_after_depr_star3r�r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                *
                * [from 3.14]
                b: int
            Docstring.
        �/Function 'bar': '* [from ...]' must precede '*'r�r�rjrs   r2�$test_depr_star_must_come_before_star�5ClinicParserTest.test_depr_star_must_come_before_star&�$����@�����E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                *args: object
                * [from 3.14]
                b: int
            Docstring.
        r�r�r�rjrs   r2�&test_depr_star_must_come_before_vararg�7ClinicParserTest.test_depr_star_must_come_before_vararg3r�r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                * [from 3.14]
                b: int
                * [from 3.14]
                c: int
            Docstring.
        z3Function 'bar' uses '* [from 3.14]' more than once.rr�rjrs   r2�test_depr_star_duplicate�)ClinicParserTest.test_depr_star_duplicate@�$��	��D�����E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                * [from 3.14]
                b: int
                * [from 3.15]
                c: int
            Docstring.
        z<Function 'bar': '* [from 3.15]' must precede '* [from 3.14]'rr�rjrs   r2�test_depr_star_duplicate2�*ClinicParserTest.test_depr_star_duplicate2N�$��	��M�����E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                / [from 3.14]
                b: int
                / [from 3.14]
                c: int
            Docstring.
        z3Function 'bar' uses '/ [from 3.14]' more than once.rr�rjrs   r2�test_depr_slash_duplicate�*ClinicParserTest.test_depr_slash_duplicate\r�r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                / [from 3.15]
                b: int
                / [from 3.14]
                c: int
            Docstring.
        z<Function 'bar': '/ [from 3.14]' must precede '/ [from 3.15]'rr�rjrs   r2�test_depr_slash_duplicate2�+ClinicParserTest.test_depr_slash_duplicate2jr�r4c�.�SnSnURX5 g)NzX
            module foo
            foo.bar
                /
                /
        �MFunction 'bar' has an unsupported group configuration. (Unexpected state 0.d)rjrs   r2�test_single_slash�"ClinicParserTest.test_single_slashx�#����
%�	�	
���E�'r4c�,�SnSnURXSS9 g)Nzi
            module foo
            foo.bar
                / [from 3.14]
            Docstring.
        �EFunction 'bar' specifies '/ [from ...]' without preceding parameters.r`r�rjrs   r2�*test_parameters_required_before_depr_slash�;ClinicParserTest.test_parameters_required_before_depr_slash�s(����
$�	�	
���E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                /
                / [from 3.14]
            Docstring.
        r�r�r�rjrs   r2�+test_parameters_required_before_depr_slash2�<ClinicParserTest.test_parameters_required_before_depr_slash2�s(����
$�	�	
���E�q��1r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.bar
                a: int
                /
                b: int
                /
        z'Function 'bar' uses '/' more than once.rjrs   r2�test_double_slash�"ClinicParserTest.test_double_slash�s����8�����E�'r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.bar
               x: int
               y: int
               *
               z: int
               /
        �$Function 'bar': '/' must precede '*'rjrs   r2�test_slash_after_star�&ClinicParserTest.test_slash_after_star������5�����E�'r4c�.�SnSnURX5 g)Nz�
            module foo
            foo.bar
               x: int
               y: int
               *args: object
               z: int
               /
        r�rjrs   r2�test_slash_after_vararg�(ClinicParserTest.test_slash_after_vararg�rr4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                * [from 3.14]
                /
                b: int
            Docstring.
        z/Function 'bar': '/' must precede '* [from ...]'r�r�rjrs   r2�$test_depr_star_must_come_after_slash�5ClinicParserTest.test_depr_star_must_come_after_slash�r�r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                * [from 3.14]
                / [from 3.14]
                b: int
            Docstring.
        z:Function 'bar': '/ [from ...]' must precede '* [from ...]'r�r�rjrs   r2�)test_depr_star_must_come_after_depr_slash�:ClinicParserTest.test_depr_star_must_come_after_depr_slash�s$����K�����E�q��1r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                *
                / [from 3.14]
                b: int
            Docstring.
        �/Function 'bar': '/ [from ...]' must precede '*'r�r�rjrs   r2�$test_star_must_come_after_depr_slash�5ClinicParserTest.test_star_must_come_after_depr_slash�r�r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                *args: object
                / [from 3.14]
                b: int
            Docstring.
        r
r�r�rjrs   r2�&test_vararg_must_come_after_depr_slash�7ClinicParserTest.test_vararg_must_come_after_depr_slash�r�r4c�,�SnSnURXSS9 g)Nz�
            module foo
            foo.bar
                a: int
                / [from 3.14]
                /
                b: int
            Docstring.
        z/Function 'bar': '/' must precede '/ [from ...]'r�r�rjrs   r2�%test_depr_slash_must_come_after_slash�6ClinicParserTest.test_depr_slash_must_come_after_slash�r�r4c�.�SnSnURX5 g)Nz]
            module foo
            foo.bar
                /
                x: int
        r�rjrs   r2�1test_parameters_not_permitted_after_slash_for_now�BClinicParserTest.test_parameters_not_permitted_after_slash_for_nowr�r4c�,�SnSnURX!SS9 g)Nr�zt
            module foo
            foo.bar
               *vararg1: object
               *vararg2: object
        rir�rjr�s   r2�'test_parameters_no_more_than_one_vararg�8ClinicParserTest.test_parameters_no_more_than_one_vararg�#��7����	
���E�q��1r4c�J�URS5nURUS5 g)Nz�
              module foo
              foo.bar
                x: int
                  Nested docstring here, goeth.
                *
                y: str
              Not at column 0!
        z�
            bar($module, /, x, *, y)
            --

            Not at column 0!

              x
                Nested docstring here, goeth.
        r.r/s  r2�test_function_not_at_column_0�.ClinicParserTest.test_function_not_at_column_0s.���&�&�(�
��	
���H�'�	
r4c�J�URS5nURUS5 g)NzH
              module m
              m.f
              summary
        zG
            f($module, /)
            --

            summary
        r.r/s  r2�test_docstring_only_summary�,ClinicParserTest.test_docstring_only_summary3s.���&�&�(�
��
	
���H�'�	
r4c�J�URS5nURUS5 g)Nz4
              module m
              m.f


        z2
            f($module, /)
            --
        r.r/s  r2�test_docstring_empty_lines�+ClinicParserTest.test_docstring_empty_lines@s.���&�&�(�
��	
���H�'�	
r4c�J�URS5nURUS5 g)Na�
              module m
              m.f
                a: int
                    Param docstring for 'a' will be included
                b: int
                c: int
                    Param docstring for 'c' will be included
              This is the summary line.

              We'll now place the params section here:
              {parameters}
              And now for something completely different!
              (Note the added newline)
        a�
            f($module, /, a, b, c)
            --

            This is the summary line.

            We'll now place the params section here:
              a
                Param docstring for 'a' will be included
              c
                Param docstring for 'c' will be included

            And now for something completely different!
            (Note the added newline)
        r.r/s  r2�(test_docstring_explicit_params_placement�9ClinicParserTest.test_docstring_explicit_params_placementLs.���&�&�(�
��	
���H�'�	
r4c�.�SnSnURX5 g)Nzr
            module foo
            foo.bar
               *vararg1: object
            	*vararg2: object
        zBTab characters are illegal in the Clinic DSL: '\t*vararg2: object'rjrs   r2�test_indent_stack_no_tabs�*ClinicParserTest.test_indent_stack_no_tabsls����'�����E�'r4c�.�SnSnURX5 g)Nzc
            module foo
            foo.bar
              a: object
             b: object
        zIllegal outdentrjrs   r2�!test_indent_stack_illegal_outdent�2ClinicParserTest.test_indent_stack_illegal_outdentws���� �����E�'r4c��^�[[55mSTlU4SjTRS'[	S5nTRU5 UR
TR5 g)NFc�>�[TSS5$)N�flagT)�setattr)r?s�r2�<lambda>�1ClinicParserTest.test_directive.<locals>.<lambda>�s�������0Mr4�setflag)r&r3r1�
directivesr"rTr�)rUr�r?s  @r2�test_directive�ClinicParserTest.test_directive�sL����<�>�*�����'M����)�$��i� �����U��������$r4c��URS5nURup#URSRnUR	U[
5 g)Nz module os
os.access
   path: "s"r�)rTr�r�r�r�r)rUr�r�r�r"s     r2�test_legacy_converters�'ClinicParserTest.test_legacy_converters�sE���
�
�?�@�� �+�+����#�#�F�+�6�6�����d�M�2r4c��SnSnUH+nURUS9 URX1SS9 SSS5 M- g!,(df   M?=f)N�?Annotations must be either a name, a function call, or a string)zmodule os
os.access
   path: 42z"module os
os.access
   path: 42.42z module os
os.access
   path: 42jz"module os
os.access
   path: b"42"r�r`r�r��rUrlrnr�s    r2�5test_legacy_converters_non_string_constant_annotation�FClinicParserTest.test_legacy_converters_non_string_constant_annotation�sJ��O��
���E����E��*��#�#�E�q�#�9�+�*��*�*��	�7�
A	c��SnSnUH+nURUS9 URX1SS9 SSS5 M- g!,(df   M?=f)Nr=)z3module os
os.access
   path: {"some": "dictionary"}z6module os
os.access
   path: ["list", "of", "strings"]z3module os
os.access
   path: (x for x in range(42))r�r`r�r�r>s    r2�-test_other_bizarre_things_in_annotations_fail�>ClinicParserTest.test_other_bizarre_things_in_annotations_fail�sJ��O��
��
�E����E��*��#�#�E�q�#�9�+�*��*�*�rAc��SnSnUH,nURUS9 URX15 SSS5 M. g!,(df   M@=f)Nz6Cannot use a kwarg splat in a function-call annotation)z1module fo
fo.barbaz
   o: bool(**{None: "bang!"})z.module fo
fo.barbaz -> bool(**{None: "bang!"})z+module fo
fo.barbaz -> bool(**{"bang": 42})z0module fo
fo.barbaz
   o: bool(**{"bang": None})r�r�r>s    r2�9test_kwarg_splats_disallowed_in_function_call_annotations�JClinicParserTest.test_kwarg_splats_disallowed_in_function_call_annotations�sE��F��
���E����E��*��#�#�E�/�+�*��*�*�r�c�,�SnSnURX!SS9 g)NzVA 'self' parameter, if specified, must be the very first thing in the parameter block.zz
            module foo
            foo.func
                a: int
                self: self(type="PyObject *")
        rir�rjr�s   r2�test_self_param_placement�*ClinicParserTest.test_self_param_placement�s(��
&�	���	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz-A 'self' parameter cannot be marked optional.zj
            module foo
            foo.func
                self: self(type="PyObject *") = None
        r`r�rjr�s   r2�"test_self_param_cannot_be_optional�3ClinicParserTest.test_self_param_cannot_be_optional�s#��=����
	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz}A 'defining_class' parameter, if specified, must either be the first thing in the parameter block, or come just after 'self'.z�
            module foo
            foo.func
                self: self(type="PyObject *")
                a: int
                cls: defining_class
        r�r�rjr�s   r2�#test_defining_class_param_placement�4ClinicParserTest.test_defining_class_param_placement�s)��
M�	���	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz7A 'defining_class' parameter cannot be marked optional.zs
            module foo
            foo.func
                cls: defining_class(type="PyObject *") = None
        r`r�rjr�s   r2�,test_defining_class_param_cannot_be_optional�=ClinicParserTest.test_defining_class_param_cannot_be_optional�s#��G����
	
���E�q��1r4c��SnSnUR[U5 URU5 SSS5 g!,(df   g=f)Nz�
            module foo
            class Foo "" ""
            Foo.__init__
                cls: defining_class
                a: object
        z0Slot methods cannot access their defining class.)r;r{r�rs   r2�.test_slot_methods_cannot_access_defining_class�?ClinicParserTest.test_slot_methods_cannot_access_defining_class�s;����A��
�
#�
#�J��
4�����&�5�
4�
4�s	�6�
Ac�,�SnSnURX!SS9 g)Nz!'__new__' must be a class method!zT
            module foo
            class Foo "" ""
            Foo.__new__
        r`r�rjr�s   r2�test_new_must_be_a_class_method�0ClinicParserTest.test_new_must_be_a_class_method�s#��1����
	
���E�q��1r4c���SnSSSS.nUR5HDup4URX4S9 SUS3nURU5nURXVS	S
9 SSS5 MF g!,(df   MX=f)Nz:'__init__' must be a normal method; got 'FunctionKind.{}'!�CLASS_METHOD�
STATIC_METHOD�GETTER)z@classmethodz
@staticmethod�@getter)�
annotation�invalid_kind�X
                    module foo
                    class Foo "" ""
                    z2
                    Foo.__init__
                rir�)rDr�rrW)rU�err_template�annotationsr_r`r�r<s       r2�!test_init_must_be_a_normal_method�2ClinicParserTest.test_init_must_be_a_normal_method�s���S��*�,��
��
)4�(9�(9�(;�$�J������O�� �L�!���".�!4�!4�\�!B���#�#�E�!�#�D�P�O�)<�O�O�s�(A"�"
A1	c�,�SnSnURXSS9 g)NzF
            class Foo "" ""
            Foo.__init__ -> long
        z,__init__ methods cannot define a return typer�r�rj�rUr�r<s   r2�%test_init_cannot_define_a_return_type�6ClinicParserTest.test_init_cannot_define_a_return_type	s$����H�����E�!��<r4c���SS/nUHRnURUS9 SUS3nUS3nURX4SS9 S	US
3nUS3nURX45 SSS5 MT g!,(df   Mf=f)Nr^�@setter�r_ra�9
                    Foo.property -> int
                z# method cannot define a return typerir�zU
                   module foo
                   class Foo "" ""
                   zj
                   Foo.property
                       obj: int
                       /
                z! methods cannot define parametersr��rUrcr_r�r<s     r2�test_invalid_getset�$ClinicParserTest.test_invalid_getset	s��� �)�,��%�J������4�� �L�!���%/�<�/R�!S���#�#�E�!�#�D���<� ���%/�<�/P�!Q���#�#�E�:�'5�4�&�4�4�s�8A�
A-	c�.�SnSnURX5 g)Nz�
            module foo
            class Foo "" ""
            @setter
            Foo.property

            foo

            bar
            [clinic start generated code]*/
        z6docstrings are only supported for @getter, not @setterrjrgs   r2�test_setter_docstring�&ClinicParserTest.test_setter_docstring&	s��
��R�����E�2r4c��SS/nUH:nURUS9 SUSUS3nSUS3nURX4S	S
9 SSS5 M< g!,(df   MN=f)Nr^rkrlra�
                    rmz
Cannot apply z twice to the same function!rir�r�rns     r2�test_duplicate_getset�&ClinicParserTest.test_duplicate_getset5	sy�� �)�,��%�J������4�� �L�!��L�!�	��$1���<X�!Y���#�#�E�!�#�D�5�4�&�4�4�rc��SS/nUH<nURUS9 SUSSUSS3nS	nURX4S
S9 SSS5 M> g!,(df   MP=f)N�r^rk)rkr^)�duprarrur�rmz;Cannot apply both @getter and @setter to the same function!rir�r�)rU�dup_annotationsrzr�r<s     r2�2test_getter_and_setter_disallowed_on_same_function�CClinicParserTest.test_getter_and_setter_disallowed_on_same_functionC	sy��1�3I�J��"�C����#��&����V�H����V�H��	��"_���#�#�E�!�#�D�'�&�#�&�&�s�"A�
A	c��SH3nURUS9 SUS3nSnURX#SS9 SSS5 M5 g!,(df   MG=f)Nryrlz2
                    module m
                    z,
                    m.func
                z#@getter and @setter must be methodsr`r�r�)rUr_r�r<s    r2�test_getset_no_class�%ClinicParserTest.test_getset_no_classQ	sZ��.�J������4���L�!���
"G���#�#�E�!�#�D�5�4�/�4�4�s	�;�
A
	c�,�SnSnURX!SS9 g)NzCalled @coexist twicezY
            module m
            @coexist
            @coexist
            m.fn
        r`r�rjr�s   r2�test_duplicate_coexist�'ClinicParserTest.test_duplicate_coexist\	s#��%����	
���E�q��1r4c�^�URS5nURSnURmU4SjnSSS.SSS.SS	S.S
S	S.4nUH�nUR5upgUR	XgS9 U"U5nURXxR5 URSS9n	U(aURSU	5 OURSU	5 URS	S9n
URSU
5 SSS5 M� g!,(df   M�=f)
Nz�
            module foo
            foo.func
                fn: object
                k: float
                i: float(unused=True)
                /
                *
                flag: bool(unused=True) = False
        r�c�">�TUR$rE�r�)rx�paramss �r2r3�4ClinicParserTest.test_unused_param.<locals>.<lambda>s	s���&��*�.�.r4rxF)r�unused�k�iTr1)�	in_parser�	Py_UNUSED)
rTr�r��valuesr�r<r��simple_declarationr�r )rUr��sigr"rn�paramrr�r��decl�parser_declr�s           @r2�test_unused_param�"ClinicParserTest.test_unused_paramf	s	����
�
�	�	
�����q�!������.���U�+��E�*��D�)��t�,�	
���E� �<�<�>�L�D����4��7���J��� � ����2��+�+�e�+�<����M�M�+�t�4��$�$�[�$�7� �2�2�T�2�B��� � ��k�:�8�7��7�7�s
�,BC9�9
D	c� �UR[[5S5 UR[[5S5 [R
"5nSnUR
[U5n[USSS9 SSS5 WRnURURS5 URURS5 URUR5S5 SSS5 g!,(df   N{=f!,(df   g=f)Nz
<Unspecified>z<Null>zThe igloos are meltingz	clown.txt�E)r+�line_numberr.)
r<�reprrrrr�r;rrr=r+r6r�)rUr�rArBrs     r2�test_scaffolding�!ClinicParserTest.test_scaffolding�	s�������k�*�O�<�����d��X�.��
$�
$�
&�&�-�F��'�'��V�<���V�k�r�B�=��,�,�C����S�\�\�;�7����S�Z�Z��,����V�_�_�.��3�'�
&�<�<��'�
&�s%�C?�-C.�9A,C?�.
C<	�8C?�?
D
c���Sn[R"5nURU5 SSS5 [S5nUR	WR5U5 g!,(df   N:=f)Nu�
            module test
            test.fn
                a: int
                    á param docstring
            docstring fü bár baß
        u�            Warning:
            Non-ascii characters are not allowed in docstrings: 'á'

            Warning:
            Non-ascii characters are not allowed in docstrings: 'ü', 'á', 'ß'

        )rr�rTrr<r�)rUr�r�rs    r2�%test_non_ascii_character_in_docstring�6ClinicParserTest.test_non_ascii_character_in_docstring�	s]�����
$�
$�
&�&��J�J�u��'���
��	
������*�H�5�'�
&�s�A�
A,c�,�SnSnURX!SS9 g)NzIllegal C identifier: 17azS
            module test
            test.fn
                a as 17a: int
        r`r�rjr�s   r2�test_illegal_c_identifier�*ClinicParserTest.test_illegal_c_identifier�	s#��)����
	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz5'__len__' is a special method and cannot be convertedz9
            class T "" ""
            T.__len__
        r�r�rjr�s   r2�"test_cannot_convert_special_method�3ClinicParserTest.test_cannot_convert_special_method�	s#��E����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz@You can't specify py_default without specifying a default value!zE
            fn
                a: object(py_default='NULL')
        r�r�rjr�s   r2�-test_cannot_specify_pydefault_without_default�>ClinicParserTest.test_cannot_specify_pydefault_without_default�	s#��P����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz"Vararg can't take a default value!z=
            fn
                *args: object = None
        r�r�rjr�s   r2�%test_vararg_cannot_take_default_value�6ClinicParserTest.test_vararg_cannot_take_default_value�	s#��2����	
���E�q��1r4c�,�SnSnURX!SS9 g)NzCint_converter: default value 2.5 for field 'a' is not of type 'int'z5
            fn
                a: int = 2.5
        r�r�rjr�s   r2�#test_default_is_not_of_correct_type�4ClinicParserTest.test_default_is_not_of_correct_type�	s%��&����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz%'fhi' is not a valid legacy converterz1
            fn
                a: 'fhi'
        r�r�rjr�s   r2�test_invalid_legacy_converter�.ClinicParserTest.test_invalid_legacy_converter�	s#��5����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz+Parent class or module 'baz' does not existz3
            module m
            baz.func
        r�r�rjr�s   r2�*test_parent_class_or_module_does_not_exist�;ClinicParserTest.test_parent_class_or_module_does_not_exist�	s#��;����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz'You can't have two parameters named 'a'za
            module m
            m.func
                a: int
                a: float
        rir�rjr�s   r2�test_duplicate_param_name�*ClinicParserTest.test_duplicate_param_name�	rr4c�,�SnSnURX!SS9 g)Nz+Parameter 'module' requires a custom C namezM
            module m
            m.func
                module: int
        r`r�rjr�s   r2�!test_param_requires_custom_c_name�2ClinicParserTest.test_param_requires_custom_c_name�	s#��;����
	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz0Function 'func' has a ']' without a matching '['zY
            module m
            m.func
                ]
            docstring
        r`r�rjr�s   r2�)test_state_func_docstring_assert_no_group�:ClinicParserTest.test_state_func_docstring_assert_no_group�	s#��@����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz4Docstring for 'm.func' does not have a summary line!z_
            module m
            m.func
            docstring1
            docstring2
        rir�rjr�s   r2�$test_state_func_docstring_no_summary�5ClinicParserTest.test_state_func_docstring_no_summary
s#��D����	
���E�q��1r4c�,�SnSnURX!SS9 g)Nz?You may not specify {parameters} more than once in a docstring!z�
            module m
            m.func
            docstring summary

            these are the params:
                {parameters}
            these are the params again:
                {parameters}
        r	r�rjr�s   r2�1test_state_func_docstring_only_one_param_template�BClinicParserTest.test_state_func_docstring_only_one_param_template
s#��O��	��	
���E�q��1r4c��URSSSS9nURSnURUR[R
R5 g)Nz}
            module m
            class m.C "PyObject *" ""
            m.C.meth
                cls: defining_class
        rir`r��cls)r�r�r<r`r^rrlr�s   r2�test_kind_defining_class�)ClinicParserTest.test_kind_defining_class
sU���&�&�(�
"#�1�'�6��
����&���������!2�!2�!B�!B�Cr4c�,�SnSnURX!SS9 g)Nz?A 'defining_class' parameter cannot be defined at module level.zU
            module m
            m.func
                cls: defining_class
        r`r�rjr�s   r2�,test_disallow_defining_class_at_module_level�=ClinicParserTest.test_disallow_defining_class_at_module_level)
s#��O����
	
���E�q��1r4r5)r`r�){r/r0r1r2rTr�rWr�r�r�r�rrr
rrrrr#r&r+r0r3r8r;r>rBrErHrNrRrUrXr[rbrfror~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�rrrr
rrrrrrr!r$r'r*r-r7r:r?rCrFrIrLrOrRrUrXrdrhrorrrvr|rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r4r5r4r2r�r��sg���!�!%�T��N�
/�
	,�,�
:�*�
*�2�*:� R�2�	2�	3�2�:�
�8
�,
�0
�@
�<�'�2�
4�O�(�(�(�	%�
%�(
�TL
�\2�$(�$(�$(�$(�"(�"
(�0�*	6�
6�(�(�5�
(�
0�=�2=�:2�2�2�2�2� 2� 2�2�2�2�2�2�(�2�
2�
(�(�(�2�2�2�2�2�(�2�
�(
�

�
�@	(�(�%�3�
:�	:�
0�2�2�2�2�
'�2�E�$=�;�0
3�E�E�	E�2�$;�L
4�6�*2�2�2�2�2�2�2�2�2�2�2�2�D�2r4r�c��\rSrSrSrSrSrSrSrSr	Sr
S	rS
rSr
SrS
rSrSrSrSrSrSrSrSrg)�ClinicExternalTesti3
Nc��[U5 grE)rNr\s r2r]�ClinicExternalTest.setUp6
s
����%r4c��[R"5n[R"5nUR[5n[
R"U5 SSS5 SSS5 SSS5 WR5WR5WRR4$!,(df   NS=f!,(df   N\=f!,(df   Ne=frE)
rr�rKrz�
SystemExitr
�mainr�r=r@)rUr*r~rlrBs     r2�
run_clinic�ClinicExternalTest.run_clinic9
s����#�#�%���#�#�%�����j�)�R��K�K���
*�
&�
&�
�|�|�~�s�|�|�~�r�|�|�/@�/@�@�@�
*�)��
&�%��
&�%�s:�C�B7�B&�B7�!C�&
B4�0B7�7
C	�C�
Cc��UR"U6up#nUS:wa&URSRSU<3X#/55 URUS5 U$)Nrr�zUnexpected failure: args=r.)r�r�joinr<�rUr*r~rlr@s     r2�expect_success�!ClinicExternalTest.expect_successB
sR�����$�/���$��1�9��I�I�d�i�i�#=��w�!?�� J�K�L�����b�!��
r4c�Z�UR"U6up#nURUSSU<35 X#4$)NrzUnexpected success: args=)r�rcr�s     r2rW�!ClinicExternalTest.expect_failureI
s5�����$�/���$����D�!�'A�D�7�%C�D��x�r4c��Sn[R"U5n[USS9nUR5nSSS5 UR	[
[5 URSS[U5nURUS5 [[SS9nUR5nSSS5 URWW5 g!,(df   N�=f!,(df   N2=f)Nz
clinic.test.c�utf-8��encoding�-f�-or.)	r�findfile�open�readrKrrr�r<)rU�CLINIC_TEST�sourcer��
orig_contentsr~�new_contentss       r2�
test_external� ClinicExternalTest.test_externalN
s���%���!�!�+�.��
�&�7�
+�q��F�F�H�M�,�	
�����'��!�!�$��f�f�=������b�!�
�&�7�
+�q��6�6�8�L�,�	
����}�5�,�
+��,�
+�s�B:�C�:
C�
Cc���[S5n[R"5n[RRUS5n[
USSS9nURU5 SSS5 [R"U5RnURU5 [R"U5RnSSS5 URWW5 g!,(df   Nz=f!,(df   N2=f)Nz�
            /*[clinic input]
            [clinic start generated code]*/
            /*[clinic end generated code: output=da39a3ee5e6b4b0d input=da39a3ee5e6b4b0d]*/
        rZ�wr�r�)rr�temp_dirr�r�r�r��write�stat�st_mtime_nsr�r<)rUr@�tmp_dirrxr��	pre_mtime�
post_mtimes       r2�test_no_change�!ClinicExternalTest.test_no_change^
s�����
��
�
�
�
!�W������g�x�0�B��b�#��0�A�����
�1������/�/�I�����#������0�0�J�
"�	
����J�/�1�0��"�
!�s$�,C$�
C�AC$�
C!	�C$�$
C2c��[S5nSn[R"5n[RRUS5n[
USSS9nURU5 SSS5 URU5upgURURU5U<SU<35 URSU5nURUS	5 S
n	[
USS9nUR5n
SSS5 URW
RU	5X�45 SSS5 g!,(df   N�=f!,(df   NJ=f!,(df   g=f)NaA
            /*[clinic input]
            output preset block
            module test
            test.fn
                a: int
            [clinic start generated code]*/

            const char *hand_edited = "output block is overwritten";
            /*[clinic end generated code: output=bogus input=bogus]*/
        z�Checksum mismatch! Expected 'bogus', computed '2ed19'. Suggested fix: remove all generated code including the end marker, or use the '-f' option.
rZr�r�r�z does not end with r�r.zP/*[clinic end generated code: output=0acbef4794cb933e input=9543a8d2da235301]*/
)rrr�r�r�r�r�r�rWr��endswithr�r<r�)rU�
invalid_input�fail_msgr�rxr��_rlr~�checksumr�s           r2�test_cli_force�!ClinicExternalTest.test_cli_forcer
s&���
 �

�
�
(�	�
�
�
�
!�W������g�x�0�B��b�#��0�A����
�&�1�
�(�(��,�F�A��O�O�C�L�L��2�"�g�%8���E�
G��%�%�d�B�/�C����S�"�%�F�
��b�7�+�q��F�F�H�	�,��O�O�I�.�.�x�8�&�1�
3�)"�
!�0�0�� ,�+��%"�
!�s<�,D:�D�!A3D:�D)�%*D:�
D&	�"D:�)
D7	�3D:�:
Ec���[S5nSnSnSnSn[R"5nU"X6U5 U"XFU5 [RRUS5n[R"US9nU"X8U5 UR
SS	S
U5n	SSS5 UHLn
URU
S9 [RRXj5nURUW	5 SSS5 MN UHLn
URU
S9 [RRXj5nURUW	5 SSS5 MN UHLn
URU
S9 [RRXz5nURUW	5 SSS5 MN SSS5 g!,(df   GN=f!,(df   GM=f!,(df   M�=f!,(df   M�=f!,(df   g=f)N�R
            /*[clinic input]
            [clinic start generated code]*/
        �pass)�file1.c�file2.c)zfile1.pyzfile2.pyc���UHGn[RRX5n[USSS9nUR	U5 SSS5 MI g!,(df   M[=f)Nr�r�r�)r�r�r�r�r�)�files�srcdirr@rxr�r�s      r2�create_files�6ClinicExternalTest.test_cli_make.<locals>.create_files�
sF�����w�w�|�|�F�/���$��g�6�!��G�G�D�M�7�6��6�6�s�A�
A	�	externals)r��-v�--make�--srcdirr[)
rrr�r�r�r�r�r�r�r )rU�c_code�py_code�c_files�py_filesrr��ext_pathrr~r+r�s            r2�
test_cli_make� ClinicExternalTest.test_cli_make�
s�����
����&��)��	"��
�
�
!�W���6�2���G�4��w�w�|�|�G�[�9�H��#�#��2�i��W��8��)�)�$��*�g�N��	3�$���\�\�8�\�4��7�7�<�<��:�D��M�M�$��,�5�4�$�%���\�\�8�\�4��7�7�<�<��:�D��$�$�T�3�/�5�4�%�
$���\�\�8�\�4��7�7�<�<��;�D��$�$�T�3�/�5�4�$�/"�
!�3�2��5�4��5�4��
5�4��1"�
!�sl�AG�1F�G�+2F(� G�=2F;�/ G�2G
�G�
F%	� G�(
F8�2	G�;
G
�G�
G�G�
G-c�r�[S5n[R"SS9nSHGn[RRX#5n[
USSS9nURU5 SSS5 MI URSS	S
US[RRUS5S[RRUS
5SS5
nURSU5 URSU5 URSU5 URSU5 SSS5 g!,(df   GM=f!,(df   g=f)Nr�F)�quiet)r�r�file3.c�file4.cr�r�r�rrr	z	--excluderz	./file3.crr�r)rrr�r�r�r�r�r�r�r�r )rUr@r�rxr�r�r~s       r2�test_cli_make_exclude�(ClinicExternalTest.test_cli_make_exclude�
s����
���
�
�e�
,��@���w�w�|�|�G�0���$��g�6�!��G�G�D�M�7�6�A��%�%��h�
�G��R�W�W�\�\�'�9�=��R�W�W�\�\�'�;�?��Y�
�C�
�M�M�)�S�)����Y��,����Y��,����Y��,�--�
,�7�6��	-�
,�s$�0D(�D�"B*D(�
D%�	D(�(
D6c�r�[R"5n[RR	US5n[USSS9nUR
S5 SSS5 URSU5nURUR5U5 SSS5 g!,(df   NI=f!,(df   g=f)NrZr�r�r�r.r)
rr�r�r�r�r�r�r�r<r7)rUr�rxr�r~s     r2�test_cli_verbose�#ClinicExternalTest.test_cli_verbose�
s���
�
�
�
!�W������g�x�0�B��b�#��0�A������1��%�%�d�B�/�C����S�Y�Y�[�"�-�"�
!�0�0��"�
!�s#�,B(�B�:B(�
B%	�!B(�(
B6c�J�URS5nURSU5 g)Nz-hzusage: clinic.py)r�r�)rUr~s  r2�
test_cli_help� ClinicExternalTest.test_cli_help�
s!���!�!�$�'���
�
�(�#�.r4c	�.�[S5nSn[S5nURS5nURURU5U5 URUR	U5U5 URU5nUR
U5nURS5n[X%5HVupgUR5nURUS9 URURU5SU<SU<35 SSS5 MX g!,(df   Mj=f)	Nz�
            Legacy converters:
                B C D L O S U Y Z Z#
                b c d f h i l p s s# s* u u# w* y y# y* z z# z*

            Converters:
        )�bool�byte�char�defining_class�double�fildes�float�int�long�	long_long�object�	Py_buffer�
Py_complex�
Py_ssize_t�
Py_UNICODE�PyByteArrayObject�
PyBytesObjectrU�short�size_t�slice_indexr�unicode�unicode_fs_decoded�unicode_fs_encoded�
unsigned_char�unsigned_int�
unsigned_long�unsigned_long_long�unsigned_shorta�
            Return converters:
                bool()
                double()
                float()
                int()
                long()
                object()
                Py_ssize_t()
                size_t()
                unsigned_int()
                unsigned_long()

            All converters also accept (c_default=None, py_default=None, annotation=None).
            All return converters also accept (py_default=None).
        �--convertersr�r�zexpected converter z, got )rr�r�r�r��removeprefix�removesuffixr��zipr|r�)rU�prelude�expected_converters�finaler~�linesr��lines        r2�test_cli_converters�&ClinicExternalTest.test_cli_converters�
s�����
��
��@��
�� �!�!�.�1��
	
������w�/��5�������V�,�c�2����w�'�����v�&���	�	�$���"�#6�>�O�I��;�;�=�D����	��2�����O�O�I�.�)�)��f�T�H�E��3�2� ?�2�2�s�*D�
D	c�R�URSS5upSnURX25 g)Nr:rZz:can't specify --converters and a filename at the same time�rWr��rUr�rl�msgs    r2�%test_cli_fail_converters_and_filename�8ClinicExternalTest.test_cli_fail_converters_and_filename9s'���$�$�^�X�>���J���
�
�c�r4c�L�UR5upURSU5 g)Nzno input filesrF)rUr�rls   r2�test_cli_fail_no_filename�,ClinicExternalTest.test_cli_fail_no_filename>s!���$�$�&����
�
�&��,r4c�V�URSSSS5upSnURX25 g)Nr��out.czinput.czmoreinput.cz+error: can't use -o with multiple filenamesrFrGs    r2�'test_cli_fail_output_and_multiple_files�:ClinicExternalTest.test_cli_fail_output_and_multiple_filesBs+���$�$�T�7�I�}�M���;���
�
�c�r4c��SnSHAnURUS9 UR"S/UQ76up4URX5 SSS5 MC g!,(df   MU=f)Nz%can't use -o or filenames with --make))r�rO)z
filename.c)�optsr)r�rWr�)rUrHrSr�rls     r2�)test_cli_fail_filename_or_output_and_make�<ClinicExternalTest.test_cli_fail_filename_or_output_and_makeGsQ��5��4�D����4��(��,�,�X�=��=����
�
�c�'�)�(�5�(�(�s�'A�
A	c�T�URSSS5upSnURX25 g)Nrr	r.z-error: --srcdir must not be empty with --makerFrGs    r2�!test_cli_fail_make_without_srcdir�4ClinicExternalTest.test_cli_fail_make_without_srcdirNs)���$�$�X�z�2�>���=���
�
�c�r4c��[S5nSn[S5n[R"5n[RRUS5n[RRUS5n[
USSS9nURU5 SSS5 [
USSS9nURS	5 SSS5 URU5up�S
U<S3n
URX�5 URSU5n[
USS9nUR5nUU3nURX�5 SSS5 [
USS9nUR5nURX�5 SSS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   Nm=f!,(df   NJ=f!,(df   g=f)
Nz�
            /*[clinic input]
            destination test new file {path}.h
            output everything test
            func
                a: object
                /
            [clinic start generated code]*/
        zP/*[clinic end generated code: output=da39a3ee5e6b4b0d input=b602ab8e173ac3bd]*/
a            /*[clinic input]
            preserve
            [clinic start generated code]*/

            PyDoc_VAR(func__doc__);

            PyDoc_STRVAR(func__doc__,
            "func($module, a, /)\n"
            "--\n"
            "\n");

            #define FUNC_METHODDEF    \
                {"func", (PyCFunction)func, METH_O, func__doc__},

            static PyObject *
            func(PyObject *module, PyObject *a)
            /*[clinic end generated code: output=3dde2d13002165b9 input=a9049054013a1b77]*/
        rZztest.c.hr�r�r�r.zModified destination file z; not overwriting!r�)
rrr�r�r�r�r�r�rWr�r�r�r<)
rUr��expected_checksum_line�expected_outputr��in_fn�out_fnr�r�rl�expected_err�data�expected_blocks
             r2�test_file_dest�!ClinicExternalTest.test_file_destSs�����
��
B�	�!�"�
��&�
�
�
!�W��G�G�L�L��(�3�E��W�W�\�\�'�:�6�F��e�S�7�3�q������4��f�c�G�4�������5��(�(��/�F�A�8��
�C/�/�L��M�M�,�,��#�#�D�%�0�A��e�g�.�!��v�v�x��$)�7�+A�*B�!C��� � ��6�/��f�w�/�1��v�v�x��� � ��7�0�'"�
!�4�3��4�4��/�.��0�/��'"�
!�sm�AF1�:E-�F1�E>�1AF1�(F�(F1�:"F �F1�-
E;	�7F1�>
F	�F1�
F	�F1� 
F.	�*F1�1
F?r5)r/r0r1r2r3r]r�r�rWr�r�r�rrrrrCrIrLrPrTrWrar4r5r4r2r�r�3
sf���G�&�A���
6� 0�(&3�P)0�V-�:.�/�I�V �
-� �
(� �
68r4r�z_testclinic is missingc��\rSrSr\"5RS\"\555 SrSS.Sjr	SS.Sjr
SrS	rS
r
SrSrS
rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"S r#S!r$S"r%S#r&S$r'S%r(S&r)S'r*S(r+S)r,S*r-S+r.S,r/S-r0S.r1S/r2S0r3S1r4S2r5S3r6S4r7S5r8S6r9S7r:S8r;S9r<S:r=S;r>S<r?S=r@S>rAS?rBS@rCSArDSBrESCrFSDrGSErHSFrISGrJSHrKSIrLSJrMSKrNSLrOSMrPSNrQSOrRSPrSSQrTSRrUSSrVSTrWSUrXSVrYSWrZSXr[SYr\SZr]S[r^S\r_S]r`S^rag)_�ClinicFunctionalTesti�c#�t# �UH.oRS5(dMU[[U54v� M0 g7f��test_N)r��getattr�	ac_tester��.0rs  r2�	<genexpr>�ClinicFunctionalTest.<genexpr>�s/���L� .��/�/�'�2J�5�T�7�9�d�3�4� .���8�8c�(�UR[U5nU"U0UD6[R"5RpvSSS5 URWR[5 URURW5 g!,(df   NK=frE)	�assertWarnsRegex�DeprecationWarningr�	_getframe�f_linenor<r+�__file__r6)rUr�rxr*�kwdsrBr�r6s        r2�
check_depr�ClinicFunctionalTest.check_depr�sl��
�
"�
"�#5�u�
=���D�)�D�)�3�=�=�?�+C�+C�v�>�	
������h�/�������F�+�>�
=�s�'B�
BNr�c���Uc2URn[U[5(aURSU3nS[R
"U5SUS3nUR"Xb/UQ70UD6 g)N�.z:Passing( more than)?( [0-9]+)? positional argument(s)? to z \(\) is deprecated. Parameters? z: will become( a)? keyword-only parameters? in Python 3\.14�r1�
isinstance�typer0r9r:rv)rU�pnamesrxrr*rur�s       r2�check_depr_star�$ClinicFunctionalTest.check_depr_star�ss���<��?�?�D��"�d�#�#��-�-���$��0��I��	�	�$�� � @���ID�
E�	�
	
����1�D�1�D�1r4c��Uc2URn[U[5(aURSU3nSU;aSOSnSUSUS[R
"U5SUSUS3nUR"Xr/UQ70UD6 g)	Nry� r�r.zPassing keyword argumentz to z\(\) is deprecated. Parameterz- will become positional-only in Python 3\.14.rz)rUr}rxrr*ru�plr�s        r2�check_depr_kwd�#ClinicFunctionalTest.check_depr_kwd�s����<��?�?�D��"�d�#�#��-�-���$��0���6�M�S�r��'��t�1�V�H�D��	�	�$�� � =�b�T��6�(�K<�
=�	�
	
����1�D�1�D�1r4c�x�UR[5 [R"5 SSS5 UR	[R"SS5S5 UR	[R"/S5/S45 UR	[R"S5S5 g!,(df   N�=f)Nr�r`�r�r`zwhatever class)r�N)rz�	TypeErrorri�objects_converterr<r\s r2�test_objects_converter�+ClinicFunctionalTest.test_objects_converter�s���
�
�
�y�
)��'�'�)�*�����4�4�Q��:�F�C�����4�4�R�9I�J�R�Qa�Lb�c�����4�4�Q�7��C�	*�
)�s�B+�+
B9c���UR[5 [R"S5 SSS5 UR	[R"S5S5 g!,(df   N5=f)Nr��BytesObject)r�)rzr�ri�bytes_object_converterr<r\s r2�test_bytes_object_converter�0ClinicFunctionalTest.test_bytes_object_converter�sH��
�
�
�y�
)��,�,�Q�/�*�����9�9�.�I�K\�]�*�
)���A�
A*c���UR[5 [R"S5 SSS5 [	S5nUR[R"U5U45 g!,(df   NA=f)Nr�sByteArrayObject)rzr�ri�byte_array_object_converter�	bytearrayr<)rU�byte_arrs  r2� test_byte_array_object_converter�5ClinicFunctionalTest.test_byte_array_object_converter�sT��
�
�
�y�
)��1�1�!�4�*��/�0������>�>�x�H�8�+�V�*�
)�s�A(�(
A6c���UR[5 [R"S5 SSS5 UR	[R"S5S5 g!,(df   N5=f)Nr�r2)r2)rzr�ri�unicode_converterr<r\s r2�test_unicode_converter�+ClinicFunctionalTest.test_unicode_converter�sG��
�
�
�y�
)��'�'��*�*�����4�4�Y�?��N�*�
)�r�c��UR[5 [R"SSS5 SSS5 UR	[R"5S5 UR	[R"S/S5S5 UR	[R"SSS	0S
5S5 g!,(df   N�=f)NFz	not a int)TTTr.r)FFT)z	not emptyr�r`r)TTF)rzr�ri�bool_converterr<r\s r2�test_bool_converter�(ClinicFunctionalTest.test_bool_converter�s���
�
�
�y�
)��$�$�U�E�;�?�*�����1�1�3�5G�H�����1�1�"�b�!�<�>R�S�����1�1�.�1�a�&�!�L�Na�b�	*�
)�s�B/�/
B=c��UR[R"5S5 UR[R"SSSS5S5 g)N)r�rrt���FT)rr�rr�)r<ri�bool_converter_c_defaultr\s r2�test_bool_converter_c_default�2ClinicFunctionalTest.test_bool_converter_c_default�s@������;�;�=�~�N�����;�;�E�4��PT�U�%�	'r4c��UR[5 [R"S5 SSS5 UR[5 [R"S5 SSS5 /SQn[	SU55nUR[R"5U5 /SQn[	SU55nUR[R"U6U5 g!,(df   N�=f!,(df   N�=f)Nr�sab)�A���	�
���
�"�'�?�\���c3�8# �UHn[U5v� M g7frE��ord�rkr1s  r2rl�;ClinicFunctionalTest.test_char_converter.<locals>.<genexpr>�����/��A��Q������)�1�2�3�4�5�6�7�8�9�0�a�b�c�dc3�8# �UHn[U5v� M g7frEr�r�s  r2rlr��r�r�)rzr�ri�char_converter�tupler<)rU�charsrs   r2�test_char_converter�(ClinicFunctionalTest.test_char_converter�s���
�
�
�y�
)��$�$�Q�'�*�
�
�
�y�
)��$�$�U�+�*�r���/��/�/������1�1�3�X�>�d���/��/�/������1�1�5�9�8�D�*�
)��
)�
)�s�C�
C/�
C,�/
C=c�L�SSKJn UR[5 [R
"S5 SSS5 UR[5 [R
"US-5 SSS5 UR[5 [R
"SUS-5 SSS5 UR[5 [R
"/5 SSS5 UR[R
"5S5 UR[R
"SSUS-5S5 UR[R
"SSUS-S-S-5S	5 g!,(df   GN4=f!,(df   GN=f!,(df   N�=f!,(df   N�=f)
Nr)�	UCHAR_MAXr�r����"�8�rrrri�{�rrr�)�	_testcapir�rz�
OverflowErrorri�unsigned_char_converterr�r<)rUr�s  r2�test_unsigned_char_converter�1ClinicFunctionalTest.test_unsigned_char_converter�s��'�
�
�
�}�
-��-�-�b�1�.�
�
�
�}�
-��-�-�i�!�m�<�.�
�
�
�}�
-��-�-�a��Q��?�.�
�
�
�y�
)��-�-�b�1�*�����:�:�<�l�K�����:�:�1�a��Q��O�QZ�[�����:�:�1�a�)�a�-�ST�AT�WZ�AZ�[�]h�i�.�
-��
-�
-��
-�
-��
)�
)��/�E �E2�F�?F� 
E/�2
F�
F�
F#c�V�SSKJnJn UR[5 [
R"US-
5 SSS5 UR[5 [
R"US-5 SSS5 UR[5 [
R"/5 SSS5 UR[
R"S5S5 UR[
R"S5S5 g!,(df   N�=f!,(df   N�=f!,(df   N}=f)Nr)�SHRT_MIN�SHRT_MAXr��.����r���)r�)	r�r�r�rzr�ri�short_converterr�r<)rUr�r�s   r2�test_short_converter�)ClinicFunctionalTest.test_short_converter�s���0�
�
�
�}�
-��%�%�h��l�3�.�
�
�
�}�
-��%�%�h��l�3�.�
�
�
�y�
)��%�%�b�)�*�����2�2�5�9�8�D�����2�2�4�8�'�B�.�
-��
-�
-��
)�
)�s#�C8�D	�D�8
D�	
D�
D(c�L�SSKJn UR[5 [R
"S5 SSS5 UR[5 [R
"US-5 SSS5 UR[5 [R
"SUS-5 SSS5 UR[5 [R
"/5 SSS5 UR[R
"5S5 UR[R
"SSUS-5S5 UR[R
"SSUS-S-S-5S	5 g!,(df   GN4=f!,(df   GN=f!,(df   N�=f!,(df   N�=f)
Nr)�	USHRT_MAXr�r�r�r�rir�r�)	r�r�rzr{ri�unsigned_short_converterr�r�r<)rUr�s  r2�test_unsigned_short_converter�2ClinicFunctionalTest.test_unsigned_short_converter�s��'�
�
�
�z�
*��.�.�r�2�+�
�
�
�}�
-��.�.�y�1�}�=�.�
�
�
�}�
-��.�.�q�)�a�-�@�.�
�
�
�y�
)��.�.�r�2�*�����;�;�=�|�L�����;�;�A�q�)�a�-�P�R[�\�����;�;�A�q�9�q�=�TU�BU�X[�B[�\�^i�j�+�
*��
-�
-��
-�
-��
)�
)�r�c��SSKJnJn UR[5 [
R"US-
5 SSS5 UR[5 [
R"US-5 SSS5 UR[5 [
R"SSS5 SSS5 UR[5 [
R"/5 SSS5 UR[
R"5S5 UR[
R"SSS5SS[S545 g!,(df   GN
=f!,(df   N�=f!,(df   N�=f!,(df   N�=f)Nr)�INT_MIN�INT_MAXr�r`ri)r�r��-�3)
r�r�r�rzr�rirr�r<r�)rUr�r�s   r2�test_int_converter�'ClinicFunctionalTest.test_int_converters���.�
�
�
�}�
-��#�#�G�a�K�0�.�
�
�
�}�
-��#�#�G�a�K�0�.�
�
�
�y�
)��#�#�A�q�!�,�*�
�
�
�y�
)��#�#�B�'�*�����0�0�2�L�A�����0�0��A�s�;�a��C��H�=M�N�.�
-��
-�
-��
)�
)��
)�
)�s/�D;�E
�E�E/�;
E
�
E�
E,�/
E=c�L�SSKJn UR[5 [R
"S5 SSS5 UR[5 [R
"US-5 SSS5 UR[5 [R
"SUS-5 SSS5 UR[5 [R
"/5 SSS5 UR[R
"5S5 UR[R
"SSUS-5S5 UR[R
"SSUS-S-S-5S	5 g!,(df   GN4=f!,(df   GN=f!,(df   N�=f!,(df   N�=f)
Nr)�UINT_MAXr�r�r�r�rir�r�)	r�r�rzr{ri�unsigned_int_converterr�r�r<)rUr�s  r2�test_unsigned_int_converter�0ClinicFunctionalTest.test_unsigned_int_converters��&�
�
�
�z�
*��,�,�R�0�+�
�
�
�}�
-��,�,�X��\�:�.�
�
�
�}�
-��,�,�Q��1��=�.�
�
�
�y�
)��,�,�R�0�*�����9�9�;�\�J�����9�9�!�Q��1��M�y�Y�����9�9�!�Q��A��QR�@R�UX�@X�Y�[f�g�+�
*��
-�
-��
-�
-��
)�
)�r�c�T�SSKJnJn UR[5 [
R"US-
5 SSS5 UR[5 [
R"US-5 SSS5 UR[5 [
R"/5 SSS5 UR[
R"5S5 UR[
R"S5S5 g!,(df   N�=f!,(df   N�=f!,(df   N|=f)Nr)�LONG_MIN�LONG_MAXr��r�r�r�)	r�r�r�rzr�ri�long_converterr�r<)rUr�r�s   r2�test_long_converter�(ClinicFunctionalTest.test_long_converter's���0�
�
�
�}�
-��$�$�X��\�2�.�
�
�
�}�
-��$�$�X��\�2�.�
�
�
�y�
)��$�$�R�(�*�����1�1�3�U�;�����1�1�%�8�(�C�.�
-��
-�
-��
)�
)��#�C7�D�D�7
D�
D�
D'c�L�SSKJn UR[5 [R
"S5 SSS5 UR[5 [R
"US-5 SSS5 UR[5 [R
"SUS-5 SSS5 UR[5 [R
"/5 SSS5 UR[R
"5S5 UR[R
"SSUS-5S5 UR[R
"SSUS-S-S-5S	5 g!,(df   GN4=f!,(df   GN=f!,(df   N�=f!,(df   N�=f)
Nr)�	ULONG_MAXr�r�r�r�rir�r�)	r�rrzr{ri�unsigned_long_converterr�r�r<)rUrs  r2�test_unsigned_long_converter�1ClinicFunctionalTest.test_unsigned_long_converter2s��'�
�
�
�z�
*��-�-�b�1�+�
�
�
�}�
-��-�-�i�!�m�<�.�
�
�
�}�
-��-�-�a��Q��?�.�
�
�
�y�
)��-�-�b�1�*�����:�:�<�l�K�����:�:�1�a��Q��O�QZ�[�����:�:�1�a�)�a�-�ST�AT�WZ�AZ�[�]h�i�+�
*��
-�
-��
-�
-��
)�
)�r�c�T�SSKJnJn UR[5 [
R"US-
5 SSS5 UR[5 [
R"US-5 SSS5 UR[5 [
R"/5 SSS5 UR[
R"5S5 UR[
R"S5S5 g!,(df   N�=f!,(df   N�=f!,(df   N|=f)Nr)�	LLONG_MIN�	LLONG_MAXr�r�r�r�)	r�rrrzr�ri�long_long_converterr�r<)rUrrs   r2�test_long_long_converter�-ClinicFunctionalTest.test_long_long_converter@s���2�
�
�
�}�
-��)�)�)�a�-�8�.�
�
�
�}�
-��)�)�)�a�-�8�.�
�
�
�y�
)��)�)�"�-�*�����6�6�8�%�@�����6�6�u�=�x�H�.�
-��
-�
-��
)�
)�r�c�L�SSKJn UR[5 [R
"S5 SSS5 UR[5 [R
"US-5 SSS5 UR[5 [R
"SUS-5 SSS5 UR[5 [R
"/5 SSS5 UR[R
"5S5 UR[R
"SSUS-5S5 UR[R
"SSUS-S-S-5S	5 g!,(df   GN4=f!,(df   GN=f!,(df   N�=f!,(df   N�=f)
Nr)�
ULLONG_MAXr�r�r�r�rir�r�)	r�rrzr{ri�unsigned_long_long_converterr�r�r<)rUrs  r2�!test_unsigned_long_long_converter�6ClinicFunctionalTest.test_unsigned_long_long_converterKs ��(�
�
�
�z�
*��2�2�2�6�+�
�
�
�}�
-��2�2�:��>�B�.�
�
�
�}�
-��2�2�1�j�1�n�E�.�
�
�
�y�
)��2�2�2�6�*�����?�?�A�<�P�����?�?��1�j�ST�n�U�W`�a�����?�?��1�z�TU�~�YZ�FZ�]`�F`�a�cn�o�+�
*��
-�
-��
-�
-��
)�
)�r�c�X�SSKJnJn UR[5 [
R"US-
5 SSS5 UR[5 [
R"US-5 SSS5 UR[5 [
R"/5 SSS5 UR[
R"5S5 UR[
R"SSS5S5 g!,(df   N�=f!,(df   N�=f!,(df   N~=f)Nr��PY_SSIZE_T_MIN�PY_SSIZE_T_MAXr�r�r`�r�r`r�)	r�rrrzr�ri�py_ssize_t_converterr�r<�rUrrs   r2�test_py_ssize_t_converter�.ClinicFunctionalTest.test_py_ssize_t_converterYs���<�
�
�
�}�
-��*�*�>�A�+=�>�.�
�
�
�}�
-��*�*�>�A�+=�>�.�
�
�
�y�
)��*�*�2�.�*�����7�7�9�<�H�����7�7��1�d�C�Z�P�.�
-��
-�
-��
)�
)�s#�C9�D
�D�9
D�

D�
D)c���SSKJnJn UR[5 [
R"/5 SSS5 UR[
R"5S5 UR[
R"SSS5S5 UR[
R"X"S-US-5X"U45 UR[
R"XS-
US-
5XU45 g!,(df   N�=f)Nrrr�r�r`ri�)r�rrrzr�ri�slice_index_converterr<rs   r2�test_slice_index_converter�/ClinicFunctionalTest.test_slice_index_converterds���<�
�
�
�y�
)��+�+�B�/�*�����8�8�:�L�I�����8�8��A�t�D�j�Q�����8�8��Z[�I[�]k�nr�]r�s�(�.�I�	K�����8�8��Z[�I[�]k�nr�]r�s�(�.�I�	K�
*�
)�s�C)�)
C7c�b�UR[5 [R"S5 SSS5 UR[5 [R"/5 SSS5 UR[R"5S5 g!,(df   Nh=f!,(df   NE=f)Nr�r�)rzr{ri�size_t_converterr�r<r\s r2�test_size_t_converter�*ClinicFunctionalTest.test_size_t_converterosm��
�
�
�z�
*��&�&�r�*�+�
�
�
�y�
)��&�&�r�*�*�����3�3�5�u�=�	+�
*��
)�
)�s�B�
B �
B� 
B.c�$�UR[5 [R"/5 SSS5 UR	[R"5S5 UR	[R"S5S5 g!,(df   NZ=f�N)g)@�࿩r")rzr�ri�float_converterr<r\s r2�test_float_converter�)ClinicFunctionalTest.test_float_convertervs`��
�
�
�y�
)��%�%�b�)�*�����2�2�4�g�>�����2�2�4�8�'�B�*�
)���B�
Bc�$�UR[5 [R"/5 SSS5 UR	[R"5S5 UR	[R"S5S5 g!,(df   NZ=fr!)rzr�ri�double_converterr<r\s r2�test_double_converter�*ClinicFunctionalTest.test_double_converter|s`��
�
�
�y�
)��&�&�r�*�*�����3�3�5�w�?�����3�3�D�9�7�C�*�
)�r'c��UR[5 [R"/5 SSS5 UR	[R"[SS55[SS545 UR	[R"[S55[S545 UR	[R"S5S5 UR	[R"S5S5 g!,(df   N�=f)Nr�r`z-1-2jr"r#�
)r-)rzr�ri�py_complex_converterr<�complexr\s r2�test_py_complex_converter�.ClinicFunctionalTest.test_py_complex_converter�s���
�
�
�y�
)��*�*�2�.�*�����7�7���1�
�F��QR�TU��HX�Y�����7�7���8H�I�G�T[�L\�K^�_�����7�7��=�w�G�����7�7��;�U�C�*�
)�s�C6�6
Dc��UR[5 [R"S5 SSS5 UR[5 [R"SSS5 SSS5 UR[5 [R"SSS5 SSS5 UR[R"SSS5S5 UR[R"SSS5S5 UR[R"SSS	5S
5 g!,(df   N�=f!,(df   N�=f!,(df   N�=f)Nr�rorpr1�bbr�rsr��cc�rorpr4)rzr�rirr{r<r\s r2�test_str_converter�'ClinicFunctionalTest.test_str_converter�s���
�
�
�y�
)��#�#�A�&�*�
�
�
�y�
)��#�#�C��c�2�*�
�
�
�z�
*��#�#�C��#�6�+�����0�0��d�C�@�/�R�����0�0��d�D�A�?�S�����0�0��d�F�C�EW�X�*�
)��
)�
)��
*�
*�s#�D�
D+�D<�
D(�+
D9�<
E
c
��UR[5 [R"S5 SSS5 UR	[R"SSS5S5 UR[5 [R"SSS5 SSS5 UR	[R"SS[[
S5/55S5 UR	[R"SS[[
S5S[
S5/55S	5 UR	[R"SSS
5S	5 g!,(df   GN=f!,(df   N�=f)Nr�rorpr1rsr3r�rr5scc)rzr�ri�str_converter_encodingr<r�r�r\s r2�test_str_converter_encoding�0ClinicFunctionalTest.test_str_converter_encoding�s��
�
�
�y�
)��,�,�Q�/�*�����9�9�#�s�C�H�/�Z�
�
�
�y�
)��,�,�S�'�3�?�*�����9�9�#�t�Y�PS�TW�PX�z�EZ�[�]l�m�����9�9�#�t�Y�PS�TW�PX�Z[�]`�ad�]e�Of�Eg�h�-�	/�����9�9�#�t�Y�O�Qe�f�*�
)��*�
)�s�D=�2E�=
E�
Ec	���UR[5 [R"SS5 SSS5 UR	[R"S[/SQ55S5 g!,(df   NA=f)Nrorp�abc�r�r`ri)sabcs)rzr�ri�py_buffer_converterr<r�r\s r2�test_py_buffer_converter�-ClinicFunctionalTest.test_py_buffer_converter�sQ��
�
�
�y�
)��)�)�#�s�3�*�����6�6�u�i�	�>R�S�Un�o�*�
)�s�A)�)
A7c���UR[R"SS5S5 UR[R"SSS9S5 UR[R"SSS9S5 g)Nr�r`r��rprr)r<ri�keywordsr\s r2�
test_keywords�"ClinicFunctionalTest.test_keywords�sY������+�+�A�q�1�6�:�����+�+�A��3�V�<�����+�+�a�1�5�v�>r4c�$�UR[5 [R"SS5 SSS5 UR	[R"SSS9S5 UR	[R"SSS9S5 g!,(df   NY=f)Nr�r`rCr�rr)rzr�ri�keywords_kwonlyr<r\s r2�test_keywords_kwonly�)ClinicFunctionalTest.test_keywords_kwonly�sh��
�
�
�y�
)��%�%�a��+�*�����2�2�1��:�F�C�����2�2�Q�!�<�f�E�*�
)�s�B�
Bc��UR[R"S5S5 UR[R"SS5S5 UR[R"SSS5S5 UR[R"SSS9S5 UR[R"SSSS9S5 UR[R"SSS	9S
5 UR[R"SSSS9S5 g)Nr��r�NNr`�r�r`Nrir>rC�r1�ror1�r�Nrirs)r<ri�keywords_optr\s r2�test_keywords_opt�&ClinicFunctionalTest.test_keywords_opt�s�������/�/��2�O�D�����/�/��1�5�|�D�����/�/��1�a�8�)�D�����/�/��Q�7��F�����/�/��1��:�I�F�����/�/�!�q�9�<�H�����/�/�!�q�A�>�	�Jr4c	�Z�UR[R"S5S5 UR[R"SS5S5 UR[5 [R"SSS5 SSS5 UR[R"SSS9S5 UR[R"SSSS9S5 UR[R"SSS	9S
5 UR[R"SSSSS9S
5 g!,(df   N�=f)Nr��r�NNNr`�r�r`NNrirCrN�r�r`riNrO)r�NriNr��rorpr1�d�r�r`rir�)r<ri�keywords_opt_kwonlyrzr�r\s r2�test_keywords_opt_kwonly�-ClinicFunctionalTest.test_keywords_opt_kwonly�s�������6�6�q�9�;P�Q�����6�6�q�!�<�>P�Q�
�
�
�y�
)��)�)�!�Q��2�*�����6�6�q�A�>�@R�S�����6�6�q�!�q�A�?�S�����6�6��a�@�BT�U�����6�6��a�1��J�L�Y�*�
)�s�#D�
D*c��UR[R"S5S5 UR[5 [R"SS5 SSS5 UR[R"SSS9S5 UR[R"SSS9S5 UR[R"SSSS	9S
5 g!,(df   N=f)Nr�rLr`rCrMrirOrPrsr>)r<ri�keywords_kwonly_optrzr�r\s r2�test_keywords_kwonly_opt�-ClinicFunctionalTest.test_keywords_kwonly_opt�s�������6�6�q�9�?�K�
�
�
�y�
)��)�)�!�Q�/�*�����6�6�q�A�>��M�����6�6��a�@�,�O�����6�6��a�1�E�y�Q�	*�
)�s�C
�
Cc��UR[5 [R"S5 SSS5 UR[5 [R"SSS9 SSS5 UR	[R"SS5S5 UR	[R"SSS9S5 g!,(df   N�=f!,(df   Nl=f)Nr�r`rrr�rC)rzr�ri�posonly_keywordsr<r\s r2�test_posonly_keywords�*ClinicFunctionalTest.test_posonly_keywords�s���
�
�
�y�
)��&�&�q�)�*�
�
�
�y�
)��&�&��a�0�*�����3�3�A�q�9�6�B�����3�3�A��;�V�D�*�
)��
)�
)�s�B5�
C�5
C�
Cc���UR[5 [R"S5 SSS5 UR[5 [R"SS5 SSS5 UR[5 [R"SSS9 SSS5 UR	[R"SSS9S5 g!,(df   N�=f!,(df   Nx=f!,(df   NV=f)Nr�r`rrrCr�)rzr�ri�posonly_kwonlyr<r\s r2�test_posonly_kwonly�(ClinicFunctionalTest.test_posonly_kwonly�s���
�
�
�y�
)��$�$�Q�'�*�
�
�
�y�
)��$�$�Q��*�*�
�
�
�y�
)��$�$�q�A�.�*�����1�1�!�q�9�6�B�
*�
)��
)�
)��
)�
)�s#�C�
C�?C%�
C�
C"�%
C3c�>�UR[5 [R"S5 SSS5 UR[5 [R"SSS5 SSS5 UR[5 [R"SSSS9 SSS5 UR	[R"SSSS9S5 UR	[R"SSSS9S5 g!,(df   N�=f!,(df   N�=f!,(df   N}=f)Nr�r`rirsrNr>�rpr1)rzr�ri�posonly_keywords_kwonlyr<r\s r2�test_posonly_keywords_kwonly�1ClinicFunctionalTest.test_posonly_keywords_kwonly�s���
�
�
�y�
)��-�-�a�0�*�
�
�
�y�
)��-�-�a��A�6�*�
�
�
�y�
)��-�-��Q�!�<�*�����:�:�1�a�1�E�y�Q�����:�:�1��Q�G��S�*�
)��
)�
)��
)�
)�s#�C,�
C=�D�,
C:�=
D�
Dc	���UR[5 [R"S5 SSS5 UR	[R"SS5S5 UR	[R"SSS5S5 UR	[R"SSSS5S5 UR	[R"SSS9S5 UR	[R"SSSS	9S5 UR[5 [R"SSSSS
9 SSS5 UR	[R"SSSSS9S5 g!,(df   GN/=f!,(df   NH=f)Nr�r`rVrirWr�rZrCrNrX�rpr1rY)rzr�ri�posonly_keywords_optr<r\s r2�test_posonly_keywords_opt�.ClinicFunctionalTest.test_posonly_keywords_opt�s��
�
�
�y�
)��*�*�1�-�*�����7�7��1�=�?Q�R�����7�7��1�a�@�/�R�����7�7��1�a��C�\�R�����7�7��Q�?�AS�T�����7�7��1��B�O�T�
�
�
�y�
)��*�*�Q�!�q�A�>�*�����7�7��Q�!�q�I�<�X�*�
)��*�
)�s�E�
E'�
E$�'
E5c	���UR[R"S5S5 UR[R"SS5S5 UR[R"SSS5S5 UR[R"SSSS5S5 UR[5 [R"SSS	9 SSS5 UR[R"SSSS
9S5 UR[R"SSSSS9S5 UR[5 [R"SSSSS9 SSS5 g!,(df   N�=f!,(df   g=f)
Nr�rUr`rVrirWr�rZrCrN�r1rYrX)r<ri�posonly_opt_keywords_optrzr�r\s r2�test_posonly_opt_keywords_opt�2ClinicFunctionalTest.test_posonly_opt_keywords_opt�s������;�;�A�>�@U�V�����;�;�A�q�A�CU�V�����;�;�A�q�!�D�o�V�����;�;�A�q�!�Q�G��V�
�
�
�y�
)��.�.�q�A�6�*�����;�;�A�q�A�F��X�����;�;�A�q�A��K�\�Z�
�
�
�y�
)��.�.��a�1��B�*�
)�	*�
)��*�
)�s�4E�4E&�
E#�&
E4c	��UR[5 [R"S5 SSS5 UR[5 [R"SS5 SSS5 UR	[R"SSS9S5 UR	[R"SSSS9S5 UR	[R"SSSSS	9S
5 UR[5 [R"SSSSS9 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   g=f)Nr�r`rCrVrirkrWr�rprZrX)rzr�ri�posonly_kwonly_optr<r\s r2�test_posonly_kwonly_opt�,ClinicFunctionalTest.test_posonly_kwonly_opt�s���
�
�
�y�
)��(�(��+�*�
�
�
�y�
)��(�(��A�.�*�����5�5�a�1�=�?Q�R�����5�5�a�1��B�O�T�����5�5�a�1��Q�G��V�
�
�
�y�
)��(�(�1��Q�!�<�*�
)�*�
)��
)�
)��
*�
)�s#�D�
D#�1D4�
D �#
D1�4
Ec	�N�UR[R"S5S5 UR[R"SS5S5 UR[5 [R"SSS5 SSS5 UR[5 [R"SSS9 SSS5 UR[R"SSSS9S5 UR[R"SSSS	S
9S5 g!,(df   N�=f!,(df   Nm=f)Nr�rUr`rVrirCrNrWr�rurZ)r<ri�posonly_opt_kwonly_optrzr�r\s r2�test_posonly_opt_kwonly_opt�0ClinicFunctionalTest.test_posonly_opt_kwonly_opt	
s�������9�9�!�<�>S�T�����9�9�!�Q�?�AS�T�
�
�
�y�
)��,�,�Q��1�5�*�
�
�
�y�
)��,�,�Q�!�4�*�����9�9�!�Q�!�D�o�V�����9�9�!�Q�!�q�I�<�X�*�
)��
)�
)�s�#D�D�
D�
D$c
��UR[5 [R"S5 SSS5 UR[5 [R"SS5 SSS5 UR[5 [R"SSS9 SSS5 UR[5 [R"SSS5 SSS5 UR[5 [R"SSSS9 SSS5 UR	[R"SSSS9S5 UR	[R"SSSS9S5 UR	[R"SSSS	S
9S5 UR	[R"SSSS	SS
9S5 g!,(df   GN}=f!,(df   GNZ=f!,(df   GN9=f!,(df   GN=f!,(df   N�=f)Nr�r`rCrirsrN�r�r`riNNrkr�ru�r�r`rir�Nr�r1rY�e�r�r`rir�r)rzr�ri�posonly_keywords_kwonly_optr<r\s r2� test_posonly_keywords_kwonly_opt�5ClinicFunctionalTest.test_posonly_keywords_kwonly_opt
s_��
�
�
�y�
)��1�1�!�4�*�
�
�
�y�
)��1�1�!�Q�7�*�
�
�
�y�
)��1�1�!�q�9�*�
�
�
�y�
)��1�1�!�Q��:�*�
�
�
�y�
)��1�1�A��a�@�*�����>�>�q�!�q�I�K`�a�����>�>�q�A��K�Mb�c�����>�>�q�!�q�A�N�Pb�c�����>�>�q�!�q�A�QR�S�Ud�e�*�
)��
)�
)��
)�
)��
)�
)��
)�
)�s;�F#�
F5�?G�2G�(G+�#
F2�5
G�
G�
G(�+
G9c
��UR[5 [R"S5 SSS5 UR	[R"SS5S5 UR	[R"SSS9S5 UR[5 [R"SSSS5 SSS5 UR[5 [R"SSS9 SSS5 UR	[R"SSSS9S	5 UR	[R"SSSS
9S	5 UR	[R"SSSSS9S5 UR	[R"SSSSS
9S5 UR	[R"SSSSSS9S5 UR	[R"SSSSSS9S5 g!,(df   GN�=f!,(df   GN?=f!,(df   GN=f)Nr�r`)r�r`NNNrCrir�rrrNr�rk�rYr�rur�rYr�r�r�)rzr�ri�posonly_keywords_opt_kwonly_optr<r\s r2�$test_posonly_keywords_opt_kwonly_opt�9ClinicFunctionalTest.test_posonly_keywords_opt_kwonly_opt#
s���
�
�
�y�
)��5�5�a�8�*�����B�B�1�a�H�Jb�c�����B�B�1��J�Ld�e�
�
�
�y�
)��5�5�a��A�q�A�*�
�
�
�y�
)��5�5��Q�?�*�����B�B�1�a�1�M�Od�e�����B�B�1��Q�O�Qf�g�����B�B�1�a��a�P�Rd�e�����B�B�1�a�1�PQ�R�Tf�g�����B�B�1�a��a�ST�U�Wf�g�����B�B�1�a�1�PQ�UV�W�Yh�i�*�
)��*�
)��
)�
)�s#�G�G(�
G:�
G%�(
G7�:
H	c	���UR[R"S5S5 UR[R"SS5S5 UR[5 [R"SSS9 SSS5 UR[R"SSS5S5 UR[R"SSSS9S5 UR[R"SSSS	S
9S5 UR[R"SSSS	S9S5 UR[5 [R"SSSS	5 SSS5 g!,(df   N�=f!,(df   g=f)
Nr�rUr`rVrCrirWrNr�r�rZru)r<ri�#posonly_opt_keywords_opt_kwonly_optrzr�r\s r2�(test_posonly_opt_keywords_opt_kwonly_opt�=ClinicFunctionalTest.test_posonly_opt_keywords_opt_kwonly_opt3
s!������F�F�q�I�K`�a�����F�F�q�!�L�N`�a�
�
�
�y�
)��9�9�!�q�A�*�����F�F�q�!�Q�O�Q`�a�����F�F�q�!�q�Q�Sb�c�����F�F�q�!�Q�RS�T�Vb�c�����F�F�q�!�q�TU�V�Xd�e�
�
�
�y�
)��9�9�!�Q��1�E�*�
)�
*�
)��*�
)�s�#E�2E&�
E#�&
E4c�^�UR[5 [R"5 SSS5 UR[5 [R"S5 SSS5 UR	[R"SS9S5 g!,(df   Ng=f!,(df   ND=f)Nr�rq�r�)rzr�ri�keyword_only_parameterr<r\s r2�test_keyword_only_parameter�0ClinicFunctionalTest.test_keyword_only_parameter?
sm��
�
�
�y�
)��,�,�.�*�
�
�
�y�
)��,�,�Q�/�*�����9�9�A�>��E�	*�
)��
)�
)�s�B
�	B�
B�
B,c��UR[5 [R"5 SSS5 UR	[R"SS5S5 UR	[R"SSS9S5 UR	[R"SSSS5S5 UR[5 [R"SS9 SSS5 UR[5 [R"SSSSS9 SSS5 g!,(df   N�=f!,(df   NU=f!,(df   g=f)Nr�r`)r�r`r5rCrir�)r�r`)rir�)rzr�ri�posonly_varargr<r\s r2�test_posonly_vararg�(ClinicFunctionalTest.test_posonly_varargF
s���
�
�
�y�
)��$�$�&�*�����1�1�!�Q�7��D�����1�1�!�q�9�:�F�����1�1�!�Q��1�=�~�N�
�
�
�y�
)��$�$�q�)�*�
�
�
�y�
)��$�$�Q��1��2�*�
)�*�
)��
*�
)��
)�
)�s#�D�>D"�0D3�
D�"
D0�3
Ec�f�UR[5 [R"5 SSS5 UR[5 [R"SSS9 SSS5 UR	[R"SSSS5S5 g!,(df   Nk=f!,(df   NI=f)Nr�r`rCrir�)r��r`rir�)rzr�ri�varargr<r\s r2�test_vararg� ClinicFunctionalTest.test_varargQ
su��
�
�
�y�
)�����*�
�
�
�y�
)����Q�!�$�*�����)�)�!�Q��1�5�~�F�	*�
)��
)�
)�s�B�	B"�
B�"
B0c
�n�[RnUR[U5 UR[USSS9 UR	U"SSS9S5 UR	U"SSSS5S5 UR	U"SSSSS	S9S
5 UR	U"SS9S5 UR	U"SSS9S5 g)
Nr�r`rqrC)r�r5Trir�)r�r�Fr)r�r�T)r�r5Frr)ri�vararg_with_defaultrzr�r<r|s  r2�test_vararg_with_default�-ClinicFunctionalTest.test_vararg_with_defaultX
s���
�
*�
*�����)�R�(����)�R��a��0�����A���]�3�����A�q�!�Q��)>�?�����A�q�!�Q�!�,�.B�C�����a��.�1�����a�1��}�5r4c
��[RnUR[U5 UR[USSS9 UR	U"SSS9S5 UR	U"SSSS9S5 UR	U"SSS5S	5 UR	U"SSSS
S9S5 UR	U"SSSS
SS9S
5 UR	U"SS9S5 UR	U"SSS9S5 UR	U"SSSS9S5 g)Nr�r`rqrC)r�r5r`Nrirk)r�r5r`ri)r��r`riNNr�)r�r�r�Nr)r�r�r�r)r�r5NNrrrs)ri�vararg_with_default2rzr�r<r|s  r2�test_vararg_with_default2�.ClinicFunctionalTest.test_vararg_with_default2b
s���
�
+�
+�����)�R�(����)�R��a��0�����A���%5�6�����A��a��-�8�����A�q�!��&=�>�����A�q�!�q�)�+?�@�����A�q�!�q�A�.�0A�B�����a��"5�6�����a�1��'7�8�����a�1��*�M�:r4c
��UR[R"5S5 UR[R"SS9S5 UR[R"SSS9S5 UR[R"SSSS5S	5 UR[R"SSSSS
S9S5 g)N)r5Nr`rC)r5r`r�)r�r`rir�)rZNr)rZr)r<ri�vararg_with_only_defaultsr\s r2�test_vararg_with_only_defaults�3ClinicFunctionalTest.test_vararg_with_only_defaultso
s�������<�<�>�
�K�����<�<�q�A�7�K�����<�<�Q�!�D�j�Q�����<�<�Q��1�a�H�J^�_�����<�<�Q��1�a�1�M�O`�ar4c	��[RnUR[U5 UR	U"SS9S5 UR	U"SSS9S5 UR	U"SSSS9S	5 UR[US5 UR	U"SSS9S
5 UR	U"SSSS9S5 UR	U"SSSSS9S
5 g)Nr�rq)r5r�NNr`rr)r5r�r`Nrirs)r5r�r`ri)r�r`NN)r�r`riNr�)r�r`rir�)ri�vararg_kwonly_req_optrzr�r<r|s  r2�test_vararg_kwonly_req_opt�/ClinicFunctionalTest.test_vararg_kwonly_req_optv
s���
�
,�
,�����)�R�(�����a��"5�6�����a�1��'7�8�����a�1��*�M�:����)�R��+�����A���%:�;�����A��a��*<�=�����A��a�1�-��?r4c	�6�[R"SSSSSSS9 g)Nr�r`rir�rr�)�kw1�kw2)ri�gh_32092_oobr\s r2�test_gh_32092_oob�&ClinicFunctionalTest.test_gh_32092_oob�
s�����q�!�Q��q�a�8r4c�4�[R"SSS5 g)Nr�r`ri)ri�gh_32092_kw_passr\s r2�test_gh_32092_kw_pass�*ClinicFunctionalTest.test_gh_32092_kw_pass�
s���"�"�1�a��+r4c��Sn[R"U5n[R"U5 [R"U5nUR	X#5 g)Nz5*A unique string is not referenced by anywhere else.*)r�getrefcountri�gh_99233_refcountr<)rU�arg�arg_refcount_origin�arg_refcount_afters    r2�test_gh_99233_refcount�+ClinicFunctionalTest.test_gh_99233_refcount�
sB��E��!�o�o�c�2���#�#�C�(� �_�_�S�1�����,�Ar4c��[R"S5nUR[U5 [R
"SS5 SSS5 g!,(df   g=f)NzTgh_99240_double_free() argument 2 must be encoded string without null bytes, not strrozb)r9r:r;r�ri�gh_99240_double_free)rUrls  r2�test_gh_99240_double_free�.ClinicFunctionalTest.test_gh_99240_double_free�
sC���i�i�
*�
���
#�
#�I�s�
3��*�*�3��6�4�
3�
3�s�A�
Ac	��S0S4SSS0S4SSS	0S4SS	SS
.S4SSS	S.S4/nUHDup#nURX#S
9 UR[R"U0UD6U5 SSS5 MF g!,(df   MX=f)Nrq)ror5F)ror�r`ri�	covariantT)ror>Tr5rro�rr�)ror5T�r�r)r*r�)r�r<ri�null_or_tuple_for_varargs)rU�valid_args_for_testr*r�rs     r2�test_null_or_tuple_for_varargs�3ClinicFunctionalTest.test_null_or_tuple_for_varargs�
s����R�
�
�
�k�4�0�
#�
%�
�&�#��
�
�
�#�D�1�
�
�
�t�S�1�
�
�
��':�"�D�(����4��7�� � ��7�7��H��H���8�7�':�7�7�s�'A,�,
A;	c	�.�UR[5 [R"SS9 SSS5 UR[5 [R"SSS9 SSS5 UR[5 [R"SSSSSS9 SSS5 UR[5 [R"SSSSSS	9 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   Ng=f!,(df   g=f)
NT)r�r�ror�r`rir�r�)rzr�rir�r\s r2�$test_null_or_tuple_for_varargs_error�9ClinicFunctionalTest.test_null_or_tuple_for_varargs_error�
s���
�
�
�y�
)��/�/�$�?�*�
�
�
�y�
)��/�/���<�*�
�
�
�y�
)��/�/��1�a�c�T�R�*�
�
�
�y�
)��/�/��1�a�4�c�R�*�
)�
*�
)��
)�
)��
)�
)��
)�
)�s/�C�C$�;C5�1D�
C!�$
C2�5
D�
Dc� �SnUR[S5 [R"U5 SSS5 UR[S5 [R"U5 SSS5 g!,(df   ND=f!,(df   g=f)Nr��clone_f1�clone_f2)r;r�rir�r�)rU�
incorrect_args  r2�"test_cloned_func_exception_message�7ClinicFunctionalTest.test_cloned_func_exception_message�
s`���
�
�
#�
#�I�z�
:����}�-�;�
�
#�
#�I�z�
:����}�-�;�
:�;�
:��
:�
:�s�A.�A?�.
A<�?
B
c��SHBnURUS9 [[U5nURU"5U5 SSS5 MD g!,(df   MV=f)N)�clone_with_conv_f1�clone_with_conv_f2r�)r�rhrir<)rUrr�s   r2�1test_cloned_func_with_converter_exception_message�FClinicFunctionalTest.test_cloned_func_with_converter_exception_message�
sG��>�D����4��(��y�$�/��� � ����.�)�(�?�(�(�s�(A
�

A	c��[R"5nURnURUR5[R5 UR	[
5 UR
[RS9 SSS5 [UR[
S5nU"US5 U"USS9 g!,(df   N:=f)N)r��no argumentsr�rq)	ri�	TestClass�get_defining_class�assertIsrzr��get_defining_class_argrr;)rU�obj�meth�checks    r2�test_get_defining_class�,ClinicFunctionalTest.test_get_defining_class�
s����!�!�#���%�%���
�
�c�,�,�.�	�0C�0C�D��
�
�y�
)��&�&�9�+>�+>�&�?�*���.�.�	�>�J��
�d�A��
�d�a��*�
)�s�%B7�7
Cc�P�SSKJn [R"5nURnU"USS5 U"USS5 U"USS5 U"USS5 URU"USS5[R5 [
UR[S5nU"XSS5 U"XSS5 g)Nr)�pyobject_vectorcallr5r�r�rq)	r�r�rir�r�r�rr;r�)rUr�r�r�r�s     r2�test_get_defining_class_capi�1ClinicFunctionalTest.test_get_defining_class_capi�
s���1��!�!�#���%�%���D�$��-��D�"�d�+��D�"�b�)��D�$��+��
�
�)�$��B�7��9L�9L�M���.�.�	�>�J��
�!��t�4�
�!��v�6r4c��[R"5nURURS5[RS45 URURSS9[RS45 UR	[
5 UR[RSS9 SSS5 UR	[
5 UR5 SSS5 UR	[
5 URSS5 SSS5 g!,(df   Nm=f!,(df   NP=f!,(df   g=f)Nr�r�)r�)r�r��arg1�arg2)rir�r<r�rzr�)rUr�s  r2�test_get_defining_class_arg�0ClinicFunctionalTest.test_get_defining_class_arg�
s����!�!�#������3�3�E�:�#�-�-�u�5�	7�����3�3��3�<�#�-�-�s�3�	5��
�
�y�
)��&�&�9�+>�+>�E�&�J�*��
�
�y�
)��&�&�(�*�
�
�
�y�
)��&�&�v�v�6�*�
)�
*�
)��*�
)��
)�
)�s$�D�D"�5D3�
D�"
D0�3
Ec�d�[RnU"5 U"SS9 URSUS5 g�Nrq�'a')ri�DeprStarNewr~�rUr�s  r2�test_depr_star_new�'ClinicFunctionalTest.test_depr_star_new�
s+���#�#�����d�����U�C��.r4c��[R"5RnU"5 U"SS9 URSUSSS9 g)Nrqr�z_testclinic.DeprStarNew.clonedr�)rir��clonedr~r|s  r2�test_depr_star_new_cloned�.ClinicFunctionalTest.test_depr_star_new_cloned�
s:��
�
"�
"�
$�
+�
+��
��
�T�
����U�B��3S��Tr4c�d�[RnU"5 U"SS9 URSUS5 gr�)ri�DeprStarInitr~r�s  r2�test_depr_star_init�(ClinicFunctionalTest.test_depr_star_init�
s+���$�$�����d�����U�C��.r4c��[R"5RnU"5 U"SS9 URSUSSS9 g)Nrqr�z_testclinic.DeprStarInit.clonedr�)rir�r�r~r|s  r2�test_depr_star_init_cloned�/ClinicFunctionalTest.test_depr_star_init_cloneds:��
�
#�
#�
%�
,�
,��
��
�T�
����U�B��3T��Ur4c�&�[RnUR[US5 U"SSS9 U"SSSS9 U"SSS9 U"SSSS9 [	UR
SU5nU"SS5 U"SSS5 U"SSSS	9 UR[USSSS
5 g�Nrorprrr1rsrCrk�'b' and 'c'rNrY)ri�DeprStarInitNoInlinerzr�rr~�rUr�r�s   r2�test_depr_star_init_noinline�1ClinicFunctionalTest.test_depr_star_init_noinlines����,�,�����)�S�#�.��c�S���c�S�C� ��C�3���C�3�#����,�,�m�S�A��
�c�3��
�c�3���
�c�3�#�����)�S�#�s�C��=r4c�d�[RnU"5 U"S5 URSUSS9 g�Nr�rq)ri�
DeprKwdNewr�r�s  r2�test_depr_kwd_new�&ClinicFunctionalTest.test_depr_kwd_news.���"�"�����D�	����E�3�$��/r4c�d�[RnU"5 U"S5 URSUSS9 gr
)ri�DeprKwdInitr�r�s  r2�test_depr_kwd_init�'ClinicFunctionalTest.test_depr_kwd_inits.���#�#�����D�	����E�3�$��/r4c�F�[Rn[RnUR[US5 U"SSS9 U"SSSS9 U"SSS9 U"SSSS9 [URSU5nU"SS5 U"SSS5 U"SSSS	9 UR[USSSS
5 gr)ri�DeprKwdInitNoInline�depr_star_noinlinerzr�rr~r	s   r2�test_depr_kwd_init_noinline�0ClinicFunctionalTest.test_depr_kwd_init_noinlines����+�+���*�*�����)�S�#�.��c�S���c�S�C� ��C�3���C�3�#����,�,�m�S�A��
�c�3��
�c�3���
�c�3�#�����)�S�#�s�C��=r4c�V�[RnU"SS9 URSUS5 g)Nrqr�ro)ri�depr_star_pos0_len1r~r|s  r2�test_depr_star_pos0_len1�-ClinicFunctionalTest.test_depr_star_pos0_len1-s&��
�
*�
*��
�T�
����U�B��,r4c��[RnU"SSS9 [URSU5nU"SSS9 U"SS5 g)Nrrrz'a' and 'b'rorCrp)ri�depr_star_pos0_len2rr~�rUrxr�s   r2�test_depr_star_pos0_len2�-ClinicFunctionalTest.test_depr_star_pos0_len22s<��
�
*�
*��
�Q�!����,�,�m�R�@��
�c�Q��
�c�3�r4c��[RnU"SSSSS9 [URSU5nU"SSSSS9 U"SSSSS9 U"SSSSS	9 g)
NrrX�'a', 'b' and 'c'rorprprur1r�)ri�depr_star_pos0_len3_with_kwdrr~r s   r2�!test_depr_star_pos0_len3_with_kwd�6ClinicFunctionalTest.test_depr_star_pos0_len3_with_kwd9sZ��
�
3�
3��
�Q�!�q�A����,�,�.@�"�E��
�c�Q�!�q�!�
�c�3�!�q�!�
�c�3��q�!r4c��[RnU"SSS9 U"SSS9 U"SS9 [URSU5nU"SS5 g)NrrrrorCrq�'b'rp)ri�depr_star_pos1_len1_optrr~r s   r2�test_depr_star_pos1_len1_opt�1ClinicFunctionalTest.test_depr_star_pos1_len1_optAsC��
�
.�
.��
�Q�!��
�3�!��
�Q����,�,�e�R�8��
�c�3�r4c��[RnU"SSS9 U"SSS9 [URSU5nU"SS5 g)NrrrrorCr)rp)ri�depr_star_pos1_len1rr~r s   r2�test_depr_star_pos1_len1�-ClinicFunctionalTest.test_depr_star_pos1_len1Is<��
�
*�
*��
�Q�!��
�3�!����,�,�e�R�8��
�c�3�r4c��[RnU"SSSSS94 U"SSSSS94 [URSU5nU"SSSSS94 U"SSSSS	94 g)
NrrXrorprrprur1r�)ri�depr_star_pos1_len2_with_kwdrr~r s   r2�!test_depr_star_pos1_len2_with_kwd�6ClinicFunctionalTest.test_depr_star_pos1_len2_with_kwdPse��
�
3�
3��
�Q�!�q�A���
�3�!�q�A�����,�,�m�R�@��
�c�3�!�q�!�"�
�c�3��q�!�"r4c��[RnU"SSSS9 U"SSSS9 U"SSSS9 [URSU5nU"SSS5 g)	NrrsrorkrprNz'c'r1)ri�depr_star_pos2_len1rr~r s   r2�test_depr_star_pos2_len1�-ClinicFunctionalTest.test_depr_star_pos2_len1XsQ��
�
*�
*��
�Q�!�q��
�3�!�q��
�3��q����,�,�e�R�8��
�c�3��r4c��[RnU"SSSSS9 U"SSSSS9 U"SSSSS9 [URSU5nU"SSSSS	9 U"SSSS
5 g)NrrXrorprpru�'c' and 'd'r1r�rY)ri�depr_star_pos2_len2rr~r s   r2�test_depr_star_pos2_len2�-ClinicFunctionalTest.test_depr_star_pos2_len2`sg��
�
*�
*��
�Q�!�q�A��
�3�!�q�A��
�3��q�A����,�,�m�R�@��
�c�3��q�!�
�c�3��S�!r4c��[RnU"SSSSSS9 U"SSSSSS9 U"SSSSSS9 [URSU5nU"SSSSSS	9 U"SSSS
SS9 g)Nr�rorpr1rYr�ro�rpr1rYr�rpr�r:r1r�rY)r�)ri�depr_star_pos2_len2_with_kwdrr~r s   r2�!test_depr_star_pos2_len2_with_kwd�6ClinicFunctionalTest.test_depr_star_pos2_len2_with_kwdisq��
�
3�
3��
�Q�!�q�A��#�
�3�!�q�A��#�
�3��q�A��#���,�,�m�R�@��
�c�3��q�A�&�
�c�3��S�A�&r4c�&�[RnUR[US5 U"SSS9 U"SSSS9 U"SSS9 U"SSSS9 [	UR
SU5nU"SS5 U"SSS5 U"SSSS	9 UR[USSSS
5 gr)rirrzr�rr~r s   r2�test_depr_star_noinline�,ClinicFunctionalTest.test_depr_star_noinliners���
�
)�
)�����)�R��-�
�S�C��
�S�C�3��
�3�#��
�3�#�����,�,�m�R�@��
�c�3��
�c�3���
�c�3�#�����)�R��c�3��<r4c��[RnUR[US5 U"SSSSSSSSS	9 S
n[	UR
[R"U5U5nU"SSSSSSSSS9 U"SSSSSSSSS9 U"SSSSSSSSS
9 U"SSSSSSSSS9 U"SSSSSSSSS9 U"SSSSSSSSS9 UR[USSSSSSSS5
 g)Nrorpr1rYr�r��g�h�rpr1rYr�r�rHrIa)Passing more than 1 positional argument to depr_star_multi() is deprecated. Parameter 'b' will become a keyword-only parameter in Python 3.16. Parameters 'c' and 'd' will become keyword-only parameters in Python 3.15. Parameters 'e', 'f' and 'g' will become keyword-only parameters in Python 3.14.�r1rYr�r�rHrI�rYr�r�rHrI�r�r�rHrI�r�rHrI�rHrI�rI)ri�depr_star_multirzr�rrvr9r:�rUrxrAr�s    r2�test_depr_star_multi�)ClinicFunctionalTest.test_depr_star_multis��
�
&�
&�����)�R��-�
�3�#���s�c�S�C�@�
^�	�
�������6�):�B�?��
�c�3�#���s�c�S�A�
�c�3��s�c�S�C�3�?�
�c�3��S�C�3�#��=�
�c�3��S�#���s�;�
�c�3��S�#�s�c�S�9�
�c�3��S�#�s�C�3�7����)�R��c�3��S�#�s�C�Pr4c��[RnU"SS5 UR[US5 UR[USSS5 [	UR
SU5nU"SSS9 UR[USSS9 g�Nrorpr1r)rCrr)ri�depr_kwd_required_1rzr�rr�r s   r2�test_depr_kwd_required_1�-ClinicFunctionalTest.test_depr_kwd_required_1�ss��
�
*�
*��
�3������)�R��-����)�R��c�3�7���+�+�U�B�7��
�c�S�����)�R�3�#��6r4c��[RnU"SSS5 UR[USS5 UR[USSSS5 [	UR
SU5nU"SSSS9 U"SSSS9 UR[USSSS9 g)	Nrorpr1rYrrNrkrs)ri�depr_kwd_required_2rzr�rr�r s   r2�test_depr_kwd_required_2�-ClinicFunctionalTest.test_depr_kwd_required_2�s���
�
*�
*��
�3��S�����)�R��c�2����)�R��c�3��<���+�+�]�B�?��
�c�3�#��
�c�S�C� ����)�R�3�#���=r4c��[RnU"S5 U"SS5 UR[U5 UR[USSS5 [	UR
SU5nU"SSS9 UR[USSS9 grV)ri�depr_kwd_optional_1rzr�rr�r s   r2�test_depr_kwd_optional_1�-ClinicFunctionalTest.test_depr_kwd_optional_1�sx��
�
*�
*��
�3��
�3������)�R�(����)�R��c�3�7���+�+�U�B�7��
�c�S�����)�R�3�#��6r4c�b�[RnU"S5 U"SS5 U"SSS5 UR[U5 UR[USSSS5 [	UR
SU5nU"SSS9 U"SSS9 U"SSSS9 U"SSSS	9 U"SSSS9 UR[USSSS
9 g)Nrorpr1rYrrCrNrk�r1rprs)ri�depr_kwd_optional_2rzr�rr�r s   r2�test_depr_kwd_optional_2�-ClinicFunctionalTest.test_depr_kwd_optional_2�s���
�
*�
*��
�3��
�3���
�3��S�����)�R�(����)�R��c�3��<���+�+�]�B�?��
�c�S��
�c�S��
�c�S�C� �
�c�S�C� �
�c�3�#�����)�R�3�#���=r4c���[RnU"5 U"S5 U"SS5 U"SSS5 UR[USSSS5 [	UR
SU5nU"SSSS9 U"SSS9 U"SS9 g)	Nrorpr1rYr$rNrCrq)ri�depr_kwd_optional_3rzr�rr�r s   r2�test_depr_kwd_optional_3�-ClinicFunctionalTest.test_depr_kwd_optional_3�sx��
�
*�
*��
��
�3��
�3���
�3��S�����)�R��c�3��<���+�+�-?��D��
�c�3�#��
�c�S��
��r4c��[RnU"SS5 U"SSS5 UR[U5 UR[US5 UR[USSSS5 [	UR
SU5nU"SSS9 U"SSSS9 U"SSSS9 U"SSSS	9 UR[USSS	9 UR[USSSS
9 g)Nrorpr1rYrrCrkrcrNrs)ri�depr_kwd_required_optionalrzr�rr�r s   r2�test_depr_kwd_required_optional�4ClinicFunctionalTest.test_depr_kwd_required_optional�s���
�
1�
1��
�3���
�3��S�����)�R�(����)�R��-����)�R��c�3��<���+�+�]�B�?��
�c�S��
�c�S�C� �
�c�S�C� �
�c�3�#�����)�R����4����)�R�3�#���=r4c�>�[RnU"SS5 U"SSS5 UR[US5 [	UR
SU5nU"SSS9 U"SSSS9 U"SSSS9 U"SSSS9 UR[USSS9 UR[USSSS	9 g)
Nrorpr1rrCrkrcrNrs)ri�depr_kwd_noinlinerzr�rr�r s   r2�test_depr_kwd_noinline�+ClinicFunctionalTest.test_depr_kwd_noinline�s���
�
(�
(��
�3���
�3��S�����)�R��-���+�+�]�B�?��
�c�S��
�c�S�C� �
�c�S�C� �
�c�3�#�����)�R����4����)�R�3�#���=r4c
�l�[RnU"SSSSSSSSS	9 S
n[UR[R
"U5U5nU"SSSSSSSSS9 U"SSSSSSSSS9 U"SSSSSSSSS
9 U"SSSSSSSSS9 U"SSSSSSSSS9 U"SSSSSSSSS9 UR
[USSSSSSSSS9
 g)Nrorpr1rYr�r�rHrIrPa!Passing keyword arguments 'b', 'c', 'd', 'e', 'f' and 'g' to depr_kwd_multi() is deprecated. Parameter 'b' will become positional-only in Python 3.14. Parameters 'c' and 'd' will become positional-only in Python 3.15. Parameters 'e', 'f' and 'g' will become positional-only in Python 3.16.rOrNrMrLrKrJ)rorpr1rYr�r�rHrI)ri�depr_kwd_multirrvr9r:rzr�rRs    r2�test_depr_kwd_multi�(ClinicFunctionalTest.test_depr_kwd_multi�s���
�
%�
%��
�3��S�#�s�C���4�
V�	�
�������6�):�B�?��
�c�3��S�#�s�c�S�9�
�c�3��S�#���s�;�
�c�3��S�C�3�#��=�
�c�3��s�c�S�C�3�?�
�c�3�#���s�c�S�A�
�c�S�C�3�#���s�C����)�R�3�#���s�c�UX�\_��`r4c���[RnUR[USSSSSSS5	 Sn[	UR
[R"U5U5nU"SSSSSSSS	9 U"SSSSSSSS
9 U"SSSSSSSS9 U"SSSSSSSS9 S
n[	UR
[R"U5U5nU"SSSSSSSS9 U"SSSSSSSS9 UR[USSSSSSSS9	 g)Nrorpr1rYr�r�rHz�Passing more than 4 positional arguments to depr_multi() is deprecated. Parameter 'e' will become a keyword-only parameter in Python 3.15. Parameter 'f' will become a keyword-only parameter in Python 3.14.)rH)r�rH)r�r�rH)rYr�r�rHz�Passing keyword arguments 'b' and 'c' to depr_multi() is deprecated. Parameter 'b' will become positional-only in Python 3.14. Parameter 'c' will become positional-only in Python 3.15.)r1rYr�r�rH)rpr1rYr�r�rH)rorpr1rYr�r�rH)ri�
depr_multirzr�rrvr9r:rRs    r2�test_depr_multi�$ClinicFunctionalTest.test_depr_multi�s��
�
!�
!�����)�R��c�3��S�#�s�K�
Q�	��������6�):�B�?��
�c�3��S�#�s�c�2�
�c�3��S�#���4�
�3��S�#���s�3�
�3��S�C�3�#��5�
H�	��������6�):�B�?��
�c�3�#���s�c�:�
�c�S�C�3�#���<����)�R�3�#���s�c�UX��Yr4r5)br/r0r1r2�localsrG�dirrirvr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrr%r*r0r6r:r@rErIrRr\r`rdrhrmrrrwr{rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrr
rrrrr!r&r+r/r3r7r<rBrErSrXr\r`rerirmrqruryr4r5r4r2rdrd�s��
�H�O�O�L� #�I��L�L�,�:>�
2�6:�2�D�^�
W�O�
c�'�

E�j�	C�k�O�h�	D�j�	I�p�	Q�	K�>�C�D�D�	Y�	g�p�
?�
F�K�Z�R�E�C�T�
Y�
C�	=�Y�f� j� 
F�F�	3�G�6�;�b�	@�9�,�B�7��*S�.�/��7�7�"/�U�/�V�>�0�0�>�-�
�"���#��"�'�=�Q�$7�>�7�
>�
�
>�>�a�"Zr4rdc�6�\rSrSrSr\S5rSrSrSr	g)�LimitedCAPIOutputTestsic� �[SS9Ulg)NTr;)r3r
r\s r2r]�LimitedCAPIOutputTests.setUps��"��5��r4c� �[SUS35$)NzO
            /*[clinic input]
            output everything buffer
            z�
            [clinic start generated code]*/
            /*[clinic input]
            dump buffer
            [clinic start generated code]*/
        r
r�s r2�wrap_clinic_input�(LimitedCAPIOutputTests.wrap_clinic_inputs%���
��G�	��
�	
r4c���URS5nURRU5nURSU5 UR	SU5 UR	SU5 g)NzE
            func
                f: float
                /
        �PyFloat_AS_DOUBLEzfloat f;zf = (float) PyFloat_AsDouble�r�r
rTr r�r�s   r2�test_limited_capi_float�.LimitedCAPIOutputTests.test_limited_capi_floats[���&�&�(�
��
�K�K�%�%�e�,�	����,�i�8��
�
�j�)�,��
�
�4�i�@r4c���URS5nURRU5nURSU5 UR	SU5 UR	SU5 g)NzF
            func
                f: double
                /
        r�z	double f;zf = PyFloat_AsDoubler�r�s   r2�test_limited_capi_double�/LimitedCAPIOutputTests.test_limited_capi_double(s[���&�&�(�
��
�K�K�%�%�e�,�	����,�i�8��
�
�k�9�-��
�
�,�i�8r4r.N)
r/r0r1r2r]�staticmethodr�r�r�r4r5r4r2r~r~s&��6��	
��	
�	A�	9r4r~z_testclinic_limited is missingc�r�\rSrSr\"5RS\"\555 SrSr	Sr
SrSrg)	�LimitedCAPIFunctionalTesti9c#�t# �UH.oRS5(dMU[[U54v� M0 g7frf)r�rh�_testclinic_limitedrjs  r2rl�#LimitedCAPIFunctionalTest.<genexpr>;s0���V� 8��O�O�G�<T�?�T�7�#6��=�>� 8�rnc���UR[5 [R"5 SSS5 UR	[R"S5S5 UR[5 [R"S5 SSS5 UR[5 [R"S5 SSS5 g!,(df   N�=f!,(df   NT=f!,(df   g=f)Nri��?�xyz)rzr�r��my_int_funcr<r\s r2�test_my_int_func�*LimitedCAPIFunctionalTest.test_my_int_func>s���
�
�
�y�
)��+�+�-�*����,�8�8��;�Q�?�
�
�
�y�
)��+�+�C�0�*�
�
�
�y�
)��+�+�E�2�*�
)�*�
)��*�
)��
)�
)�s#�C�/C�#C%�
C�
C"�%
C3c�|�UR[5 [R"5 SSS5 UR[5 [R"S5 SSS5 UR	[R"SS5S5 UR[5 [R"SS5 SSS5 UR[5 [R"SS5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   Nf=f!,(df   g=f)Nr�r`rir�r)rzr�r��
my_int_sumr<r\s r2�test_my_int_sum�)LimitedCAPIFunctionalTest.test_my_int_sumGs���
�
�
�y�
)��*�*�,�*�
�
�
�y�
)��*�*�1�-�*����,�7�7��1�=�q�A�
�
�
�y�
)��*�*�3��2�*�
�
�
�y�
)��*�*�1�e�4�*�
)�*�
)��
)�
)��*�
)��
)�
)�s/�C:�	D�$D�D-�:
D�
D�
D*�-
D;c�6�[R[R4H�nURURS9 URU"SS5S5 UR
[5 U"5 SSS5 UR
[5 U"S5 SSS5 UR
[5 U"SS5 SSS5 SSS5 M� g!,(df   Nh=f!,(df   NS=f!,(df   N==f!,(df   M�=f)N)r�r�g@g@r��2)r��my_float_sum�
my_double_sumr�r/r<rzr�)rUr�s  r2�test_my_double_sum�,LimitedCAPIFunctionalTest.test_my_double_sumRs����,�,��-�-�
�D����4�=�=��1�� � ��c�3���5��&�&�y�1��F�2��&�&�y�1���G�2��&�&�y�1���S�M�2�
2�1�	
�2�1��1�1��1�1��
2�1�sS�/D	�,C�4D	�	C'�D	�7
C8�D	�
C$� D	�'
C5�1D	�8
D�D	�	
D	c�F�[Rn"SS[5n"SS5nSH[nURU"U5U5 U"U5nURU"U5U5 U"U5nURU"U5U5 M] UR	[
5 U"SS-5 SSS5 UR
[S5 U"S	5 SSS5 UR	[5 U"S
5 SSS5 UR	[5 U"S5 SSS5 UR	[5 U"S5 SSS5 g!,(df   N�=f!,(df   N�=f!,(df   N}=f!,(df   Nh=f!,(df   g=f)Nc��\rSrSrSrg)�ALimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyIntidr5N)r/r0r1r2r4r5r4r2�MyIntr�ds��r4r�c� �\rSrSrSrSrSrg)�BLimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFileigc��XlgrE��_fd)rU�fds  r2r��KLimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFile.__init__hs���r4c��UR$rEr�r\s r2�fileno�ILimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFile.filenojs���x�x�r4r�N)r/r0r1r2r�r�r4r5r4r2�MyFiler�gs��
�
 r4r�)rr�r`ri@�r`�z!bool is used as a file descriptorTr�r=)	r��get_file_descriptorr%r<rzr�rp�RuntimeWarningr�)rU�get_fdr�r�r��myint�myfiles       r2�test_get_file_descriptor�2LimitedCAPIFunctionalTest.test_get_file_descriptor`s>��$�8�8��	�C�	�	 �	 �(�B����V�B�Z��,��"�I�E����V�E�]�B�/��B�Z�F����V�F�^�R�0�(��
�
�}�
-��1�c�6�N�.�
�
"�
"�>�#F�H��4�L�H��
�
�y�
)��3�K�*�
�
�
�y�
)��5�M�*�
�
�
�y�
)��4�L�*�
)�.�
-��H�H��*�
)��
)�
)��
)�
)�s<� E�
	E�0	E0�	F�<	F�
E�
E-�0
E>�
F�
F r5N)
r/r0r1r2r{rGr|r�r�r�r�r�r4r5r4r2r�r�9s:��
�H�O�O�V� #�$7� 8�V�V�3�	5�"� r4r�c�*�\rSrSrSrSrSrSrSrg)�PermutationTestsi�z#Test permutation support functions.c�~�Sn[[/SQ55n[[U55nUR	X15 g)N)r5)rir�r>r>)r�r=r�rr<�rUrr_�actuals    r2�test_permute_left_option_groups�0PermutationTests.test_permute_left_option_groups�s7��
���C�	�N�#���1�$�7�8������*r4c�~�Sn[[/SQ55n[[U55nUR	X15 g)N)r5r�r�r>r>)r�r=r�rr<r�s    r2� test_permute_right_option_groups�1PermutationTests.test_permute_right_option_groups�s7��
���C�	�N�#���2�4�8�9������*r4c	�v�SSSSS.nSSSSS.nSSSS	S.nSSS
SS.nSSSS
S.nSSSSS.nSSSSS.nSSSSS.nSSSSS.n	UX#UXVUX�4	n
U
HZnUR"S0UD6 UR5up�p�[X�U5n[U5nUR	UU5 SSS5 M\ g!,(df   Mn=f)Nr5)r5)�left�required�rightrrCrN)rCrkrkr�)rkrpr�)rkrpr@rq)rCrr)rkrsrr)rNrkrs)rCrrrsru)r�r�)rurprXr?)rorpr1rYr�r�)r�r�rr�r<)rU�empty�noleft1�noleft2�noleft3�noright1�noright2�noright3�
leftandright1�
leftandright2rnr�r�r�r�r�permutationsr�s                  r2�test_permute_optional_groups�-PermutationTests.test_permute_optional_groups�s4���B���
��
�F�V��
���K�&��
���K�*��
������
���
�R��
���F�R��
������
�
��J���	
�
�
��g����	
���F����'��'�28�-�-�/�/���6�t�u�M���|�,��� � ���2�	(�'��'�'�s�=B)�)
B8	r5N)	r/r0r1r2�__doc__r�r�r�r4r5r4r2r�r��s��-�	+�	+�N3r4r�c�8�\rSrSrSrSrSrSrSrSr	Sr
g	)
�FormatHelperTestsi�c��SnUHDup#URX#S9 [R"U5nURXC5 SSS5 MF g!,(df   MX=f)N)	)�a
br�)za
b
r�)za
b r�)z
a
b

r�)z

a
b

r�)z

a

b

za

b)� a
br�)z a
b r�)z
 
 
 a
b 
 
 r�)rAr)r�r��normalize_snippetr<)rUrnrArr~s     r2�+test_strip_leading_and_trailing_blank_lines�=FormatHelperTests.test_strip_leading_and_trailing_blank_lines�sR��
�� '�O�E����E��=��1�1�%�8��� � ��/�>�=� '�=�=���(A�
A	c���SnSnSnSnX#US.nUR5HBupgURUS9 [R"XS9nUR	X�5 SSS5 MD g!,(df   MV=f)Nz;
            one
            two
            three
        z
one
two
threez    one
    two
    threez%        one
        two
        three)rr�r�)�indent)rDr�r�r�r<)	rU�snippet�zero_indent�four_indent�eight_indent�expected_outputsr�rr�s	         r2�test_normalize_snippet�(FormatHelperTests.test_normalize_snippets�����
�	�
�	�
�	�
 +�|�L�� 0� 6� 6� 8��F����V��,�"�4�4�W�L��� � ��2�-�,�!9�,�,�s�&A%�%
A4	c��SnUHDup#URX#S9 [R"U5nURXC5 SSS5 MF g!,(df   MX=f)N))r=�"abc")z\abcz"\\abc")z\a\bcz	"\\a\\bc")z\a\\bcz"\\a\\\\bc")r�z	"\"abc\"")r�z"\'a\'")rBr)r�r��docstring_for_c_stringr<)rUrnrBrr~s     r2�test_escaped_docstring�(FormatHelperTests.test_escaped_docstringsR��
��&�N�D����4��;��6�6�t�<��� � ��/�<�;�&�;�;�r�c�Z�SnSn[R"U5nURX25 g)Nz{}, {a}z{{}}, {{a}})r��
format_escaper<)rUrBrr~s    r2�test_format_escape�$FormatHelperTests.test_format_escape.s*���� ���%�%�d�+������'r4c��UR[R"SSS9S5 SnSn[R"USS9nURX25 SnSn[R"USS9nURX25 g)Nr.�bar)�prefix�one
twoz
barone
bartwo�	
one
two
zbar
barone
bartwo
)r<r��indent_all_lines�rUrArr~s    r2�test_indent_all_lines�'FormatHelperTests.test_indent_all_lines4�������3�3�B�u�E�r�J�
�	�

�	��(�(��u�=������'�
�	�
�	��(�(��u�=������'r4c��UR[R"SSS9S5 SnSn[R"USS9nURX25 SnSn[R"USS9nURX25 g)Nr.r)�suffixr�z
onefoo
twofoor�zfoo
onefoo
twofoo
)r<r��suffix_all_linesr�s    r2�test_suffix_all_lines�'FormatHelperTests.test_suffix_all_linesSr�r4r5N)r/r0r1r2r�r�r�r�r�r�r4r5r4r2r�r��s ��0�&3�:
0�(�(�>(r4r�c�>�\rSrSrSrSrSrSrSrSr	Sr
S	rg
)�ClinicReprTestsisc��[S5nSnUR[U5U5 [SS/SS5nSnUR[U5U5 [SS	/S
SS9nS
nUR[U5U5 g)Nrz-<clinic.Block 'text' input='foo' output=None>r��baz�eggs�spamz.<clinic.Block 'baz' input='bar' output='eggs'>� longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_longboi_�wow_so_long��very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_very_long_r.)r��dsl_namer�r9r�zg<clinic.Block 'wow_so_long' input='longboi_longboi_longboi_l...' output='very_long_very_long_very_...'>)r"r<r�)rUr��
expected_repr�block2�expected_repr_2�block3�expected_repr_3s       r2�test_Block_repr�ClinicReprTests.test_Block_reprts����e���G�
�����e��m�4��u�e�R���8��J������f���7��"�"��%��
��
v�	�	
����f���7r4c��[5n[SSUSS9nUR[U5S5 [SSUS9nUR[U5S	5 g)
Nrr�)r)r|r
r*z2<clinic.Destination 'foo' type='file' file='eggs'>r��buffer)r|r
z(<clinic.Destination 'bar' type='buffer'>)r3r%r<r�)rUr1�destination�destination2s    r2�test_Destination_repr�%ClinicReprTests.test_Destination_repr�s]���N��!���q�y�
��	
������S�	
�#�5�x��B������l�+�-W�Xr4c�b�[S[55nUR[U5S5 g)Nrz<clinic.Module 'foo' at \d+>)rr3�assertRegexr�)rUr�s  r2�test_Module_repr� ClinicReprTests.test_Module_repr�s%����|�~�.������f��'F�Gr4c�h�[S[5SSS5nUR[U5S5 g)Nr�some_typedef�some_type_objectz<clinic.Class 'foo' at \d+>)rr3rr�r�s  r2�test_Class_repr�ClinicReprTests.test_Class_repr�s,���E�<�>�4��AS�T������c��$B�Cr4c�V�UR[[R5S5 g)Nz"<clinic.FunctionKind.CLASS_METHOD>)r<r�rr[r\s r2�test_FunctionKind_repr�&ClinicReprTests.test_FunctionKind_repr�s!�������*�*�+�-Q�	
r4c�.�[S[5SSS[5[RSS9nUR[
U5S5 [SSU5n[S[RRUUS9nUR[
U5S5 g)	Nr�foofooF)rr�r�r�	full_namerQr`�coexistz<clinic.Function 'foo'>r�)r`r�r�z<clinic.Parameter 'bar'>)rr3r!r�METHOD_INITr<r�rrr^�POSITIONAL_OR_KEYWORD)rUr�r��	parameters    r2�!test_Function_and_Parameter_reprs�1ClinicReprTests.test_Function_and_Parameter_reprs�s������>����1�3��)�)��	
��	
����h��)B�C�"�5�%��:�	����"�"�8�8���	
�	�	
����i��*D�Er4c�^�[RRS5nUR[	U5S5 SUlURRS5 UR[	U5S5 URRS5 UR[	U5S5 g)NrZz(<clinic.Monitor \d+ line=0 condition=''>�*)�token1�
condition1z3<clinic.Monitor \d+ line=42 condition='condition1'>)�token2�
condition2zA<clinic.Monitor \d+ line=42 condition='condition1 && condition2'>)r��cpp�Monitorrr�r��stack�append)rU�monitors  r2�test_Monitor_repr�!ClinicReprTests.test_Monitor_repr�s����-�-�'�'��1������g��(S�T� ����
�
���5�6������M�Q�	
�	�
�
���5�6������M�P�	
r4r5N)r/r0r1r2r
rrrrr(r5r4r5r4r2r�r�ss)��8�*Y�H�D�
�
F�,
r4r��__main__)V�	functoolsr�testrr�test.supportr�test.support.os_helperrrr	�textwrapr�unittestrr^�os.pathr�r9r�skip_if_missing�imports_under_toolr�rrrr�libclinic.convertersrrr�libclinic.functionrrrrrrrrr
�libclinic.clanguager�libclinic.converterrr�libclinic.return_convertersr r!�libclinic.block_parserr"r#�libclinic.codegenr$r%�libclinic.dsl_parserr&�
libclinic.clir'r(r3rCrIrNrPr7rJr�r�r�r�r�r��_testclinicri�ImportError�skipIfrdr~r�r�r�r�r�r/r�r5r4r2�<module>rMsC��
�$�"�9�9�����	�
��
���8�$��"�"�8�,��>�>�Q�Q�$�$�$��-�A�S�9�;�.�0�-�$,�%�
�;?�t���0&�
2�U
#�(�U
#�pV��V�2-*�h�-*�`>;�X�>;�B
�
�#�#�:�H�:�zq2�x�q2�h3V8��V8�p
�#�
����d�"�$<�=�x
Z�8�,�,�x
Z�>�x
Z�v%9�X�.�.�%9�P��
���$��,�.N�O�F�� 1� 1�F�P�F�Rg3�x�(�(�g3�TC(��)�)�C(�LT
�h�'�'�T
�n�z���M�M�O��qE-�,��v[���I���R�����s1�#A'H�H-�H;�
H*�-H8�7H8�;I�I

Youez - 2016 - github.com/yon3zu
LinuXploit