
    /hhK                       S SK Jr  S SKJrJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S SKrS SKrS SKrS SKrS SKr\R(                  " S5        \R*                  " S5         S SKrS S	KJrJrJrJr  S S
KJrJrJr  S SKJ r J!r!J"r"J#r#J$r$J%r%J&r&J'r'  S SK(r(S SK)J*r*  S SK+J,r,J-r-  S SK.J/r/J0r0  S SK1J2r2J3r3  S SK4J5r5J6r6  S SK7J8r8  S SK9J:r:J;r;  SSS5        SSS.S jr<SSSS.S jr=S r>S r? " S S\5      r@ " S S\5      rA " S  S!\5      rB " S" S#\5      rC " S$ S%5      rD " S& S'5      rE " S( S)\5      rF " S* S+\5      rG " S, S-\5      rH S SKIrJ\R                  " \JSL S.5       " S/ S0\R                  5      5       rM " S1 S2\R                  5      rN S SKOrO\R                  " \OSL S35       " S4 S5\R                  5      5       rP " S6 S7\R                  5      rQ " S8 S9\R                  5      rR " S: S;\R                  5      rS\TS<:X  a  \R                  " 5         gg! , (       d  f       GNX= f! \K a    SrJ Nf = f! \K a    SrO Nf = 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    [        U 5      n[        X US9n[        SU5      Ul        U$ )Nr*    )r   r(   r#   block_parser)r+   r,   clangcs       9/opt/python-3.13.8/usr/lib/python3.13/test/test_clinic.py_make_clinicr3   $   s+    hEulCA U+ANH    Tr+   linenostripc                   [        U5      nU(       a  UR                  5       n[        R                  " U5      nU R	                  [
        U5       nU" U5        SSS5        Ub&  U R                  WR                  R                  U5        Ub&  U R                  WR                  R                  U5        WR                  $ ! , (       d  f       Nl= f)a  Helper 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)
r   r7   reescapeassertRaisesRegexr   assertEqual	exceptionr+   r6   )tcparsercodeerrmsgr+   r6   r7   cms           r2   _expect_failurerC   +   s     $<Dzz|YYvF			k6	2bt 
3
r||,,h7
r||**F3<< 
3	2s   	B>>
Cc                 J    U R                   " 5         U R                  " U5        g N)clearupdate)r   old_converterss     r2   restore_dictrI   C   s    n%r4   c                    U R                  [        [        [        R                  " 5       5        U R                  [        [        [        R                  " 5       5        U R                  [        [
        [
        R                  " 5       5        g rE   )
addCleanuprI   r   copyr   r    )testcases    r2   save_restore_convertersrN   H   s\    j")+&7)..02&7)..02r4   c                   6   \ rS rSrSrSSS.S j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 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" 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/ r0S0 r1S1 r2S2r3g)3ClinicWholeFileTestQ   Nr+   r6   c          	      B    [        X R                  R                  XX4S9  g )NrR   )rC   r   parse)selfrawrA   r+   r6   s        r2   expect_failure"ClinicWholeFileTest.expect_failureT   s    kk//!)	:r4   c                 6    [        U 5        [        SS9U l        g )Ntest.cr+   )rN   r3   r   rU   s    r2   setUpClinicWholeFileTest.setUpX   s    %"H5r4   c                     SnU R                   R                  U5      R                  5       nUS   R                  5       nU R	                  US5        U R                  US5        g )Nz/*[clinic]
foo
[clinic]*/   z[clinic]*/[clinic]*/z
[clinic]*/)r   rT   
splitlinesrstripassertNotEqualr<   )rU   rV   cookedend_lines       r2   test_eolClinicWholeFileTest.test_eol\   s[     ,""3'224!9##% 	H&<=<0r4   c                 .    SnSnU R                  XSSS9  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   rU   rV   errs      r2   test_mangled_marker_line,ClinicWholeFileTest.test_mangled_marker_linem   s*    5 	 	CxBr4   c                 .    SnSnU R                  XSSS9  g )Nz
            /*[clinic input]
            [clinic start generated code]*/
            /*[clinic end generated code: output=0123456789abcdef input=fedcba9876543210]*/
        zKChecksum mismatch! Expected '0123456789abcdef', computed 'da39a3ee5e6b4b0d'rZ   ri   rR   rj   rk   s      r2   test_checksum_mismatch*ClinicWholeFileTest.test_checksum_mismatchy   s&    
JCxBr4   c                 .    SnSnU R                  XSSS9  g )Nz_
            /*[clinic input]
            [clinic start generated code]*/foobarfoobar!
        z(Garbage after stop line: 'foobarfoobar!'rZ   r`   rR   rj   rk   s      r2   test_garbage_after_stop_line0ClinicWholeFileTest.test_garbage_after_stop_line   s%     9CxBr4   c                 .    SnSnU R                  XSSS9  g )NzS
            /*[clinic input]
             [clinic start generated code]*/
        zRWhitespace is not allowed before the stop line: ' [clinic start generated code]*/'rZ   r`   rR   rj   rk   s      r2    test_whitespace_before_stop_line4ClinicWholeFileTest.test_whitespace_before_stop_line   s*    
1 	 	CxBr4   c                    [        S 5      nSUl        SUl        SUl        [	        USSS9n[        S5      R                  5       nUR                  U5      n[        S5      R                  5       nU R                  XE5        g )	Nz//z//[{dsl_name} start]z//[{dsl_name} stop]rZ   Fr*   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(   r   r7   rT   lstripr<   )rU   r0   clrV   outexpecteds         r2   test_parse_with_body_prefix/ClinicWholeFileTest.test_parse_with_body_prefix   s    $ 1/EH5A   UW	 	
 hhsm   VX 	 	'r4   c                 .    SnSnU R                  XSSS9  g )NzR
            /* start
            /* nested
            */
            */
        zNested block comment!rZ   r`   rR   rj   rk   s      r2   *test_cpp_monitor_fail_nested_block_comment>ClinicWholeFileTest.test_cpp_monitor_fail_nested_block_comment   s%     &CxBr4   c                 .    SnSnU R                  XSSS9  g )Nz<
            #if
            a()
            #endif
        z)Invalid format for #if line: no argument!rZ      rR   rj   rk   s      r2   *test_cpp_monitor_fail_invalid_format_noarg>ClinicWholeFileTest.test_cpp_monitor_fail_invalid_format_noarg   s%    
 :CxBr4   c                 .    SnSnU R                  XSSS9  g )NzC
            #ifdef A B
            a()
            #endif
        z?Invalid format for #ifdef line: should be exactly one argument!rZ   r   rR   rj   rk   s      r2   0test_cpp_monitor_fail_invalid_format_toomanyargsDClinicWholeFileTest.test_cpp_monitor_fail_invalid_format_toomanyargs   s&    
 PCxBr4   c                 .    SnSnU R                  XSSS9  g )Nz#elsez.#else without matching #if / #ifdef / #ifndef!rZ   r   rR   rj   rk   s      r2   $test_cpp_monitor_fail_no_matching_if8ClinicWholeFileTest.test_cpp_monitor_fail_no_matching_if   s!    >CxBr4   c                 .    SnSnU R                  X5        g )Nzy
            /*[clinic input]
            output preset nosuchpreset
            [clinic start generated code]*/
        zUnknown preset 'nosuchpreset'rj   rk   s      r2   $test_directive_output_unknown_preset8ClinicWholeFileTest.test_directive_output_unknown_preset   s    
 .C%r4   c                 .    SnSnU R                  X5        g )Nzi
            /*[clinic input]
            output pop
            [clinic start generated code]*/
        z"Can't 'output pop', stack is emptyrj   rk   s      r2   test_directive_output_cant_pop2ClinicWholeFileTest.test_directive_output_cant_pop   s    
 3C%r4   c                    [        S5      nU R                  R                  U5      nU R                  UR	                  [        S5      5      5        1 SknU H,  nU R                  US9   U R                  XB5        S S S 5        M.     UR                  5       R                  S5      S   nU R                  UR	                  S5      5        g ! , (       d  f       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=)	r   r   rT   
assertTrue
startswithsubTestassertInrb   split)rU   rV   r~   fieldsr   	last_lines         r2   test_directive_output_print/ClinicWholeFileTest.test_directive_output_print   s      
 kk$ 	v / (  	

 EE*e) +*  JJL&&t,R0	  !HI	
 +*s   (C		
C	c                 @    [        S5      nSnU R                  X5        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)r   rW   rk   s      r2   test_directive_wrong_arg_number3ClinicWholeFileTest.test_directive_wrong_arg_number  s&      
 =C%r4   c                 .    SnSnU R                  X5        g )Nz
            /*[clinic input]
            destination buffer nosuchcommand
            [clinic start generated code]*/
        z+unknown destination command 'nosuchcommand'rj   rk   s      r2    test_unknown_destination_command4ClinicWholeFileTest.test_unknown_destination_command
  s    
 <C%r4   c                 .    SnSnU R                  X5        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!rj   rk   s      r2   +test_no_access_to_members_in_converter_init?ClinicWholeFileTest.test_no_access_to_members_in_converter_init  s$     K 	 	C%r4   c                 ,    SnSnU R                  X!SS9  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]*/
        	   r6   rj   rU   rl   blocks      r2   test_clone_mismatch'ClinicWholeFileTest.test_clone_mismatch&  s#    C 	Eq1r4   c                 ,    SnSnU R                  X!SS9  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   rj   r   s      r2   #test_badly_formed_return_annotation7ClinicWholeFileTest.test_badly_formed_return_annotation6  s#    ;
 	Eq1r4   c                 ,    SnSnU R                  X!SS9  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   rj   r   s      r2   test_star_after_vararg*ClinicWholeFileTest.test_star_after_varargE  #    7	 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nr   z
            /*[clinic input]
            my_test_func

                pos_arg: object
                *
                *args: object
                kw_arg: object
            [clinic start generated code]*/
        r   r   rj   r   s      r2   test_vararg_after_star*ClinicWholeFileTest.test_vararg_after_starS  r   r4   c                 ,    SnSnU R                  X!SS9  g )NzAlready defined module 'm'!z|
            /*[clinic input]
            module m
            module m
            [clinic start generated code]*/
        ri   r   rj   r   s      r2   test_module_already_got_one/ClinicWholeFileTest.test_module_already_got_onea  s#    + 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz"Destination already exists: 'test'z
            /*[clinic input]
            destination test new buffer
            destination test new buffer
            [clinic start generated code]*/
        ri   r   rj   r   s      r2    test_destination_already_got_one4ClinicWholeFileTest.test_destination_already_got_onek  s#    2 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz'Destination does not exist: '/dev/null'zz
            /*[clinic input]
            output everything /dev/null
            [clinic start generated code]*/
        r`   r   rj   r   s      r2   test_destination_does_not_exist3ClinicWholeFileTest.test_destination_does_not_existu  s#    7
 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )NzAlready defined class 'C'!z
            /*[clinic input]
            class C "" ""
            class C "" ""
            [clinic start generated code]*/
        ri   r   rj   r   s      r2   test_class_already_got_one.ClinicWholeFileTest.test_class_already_got_one~  s#    * 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz#Can't nest a module inside a class!z
            /*[clinic input]
            class C "" ""
            module C.m
            [clinic start generated code]*/
        ri   r   rj   r   s      r2   "test_cant_nest_module_inside_class6ClinicWholeFileTest.test_cant_nest_module_inside_class  s#    3 	Eq1r4   c                 ,   Sn[        S5      n[        S5      n[        R                  " 5        nU R                  R	                  U5      nS S S 5        U R                  UWR                  5       5        U R                  WU5        g ! , (       d  f       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]*/
        )r   r   captured_stdoutr   rT   r   getvaluer<   )rU   expected_warningexpected_generatedr   stdout	generateds         r2   !test_dest_buffer_not_empty_at_eof5ClinicWholeFileTest.test_dest_buffer_not_empty_at_eof  s    5# % 6    $$&&))%0I '&(9:$67 '&s   B
Bc                 ,    SnSnU R                  X!SS9  g )Nz9Can't clear destination 'file': it's not of type 'buffer'zu
            /*[clinic input]
            destination file clear
            [clinic start generated code]*/
        r`   r   rj   r   s      r2   test_dest_clear#ClinicWholeFileTest.test_dest_clear  s#    I
 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nzunknown variable 'ets'zj
            /*[clinic input]
            set ets tse
            [clinic start generated code]*/
        r`   r   rj   r   s      r2   test_directive_set_misuse-ClinicWholeFileTest.test_directive_set_misuse  s#    &
 	Eq1r4   c                 v    [        S5      nU R                  R                  U5      nSnU R                  X25        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__);r   r   rT   r   rU   r   r   expected_docstring_prototypes       r2   test_directive_set_prefix-ClinicWholeFileTest.test_directive_set_prefix  s:       KK%%e,	'A$2>r4   c                 v    [        S5      nU R                  R                  U5      nSnU R                  X25        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]*/
        zPyDoc_VAR(fn__doc__);  // testr   r   s       r2   test_directive_set_suffix-ClinicWholeFileTest.test_directive_set_suffix  s:       KK%%e,	'G$2>r4   c                 v    [        S5      nU R                  R                  U5      nSnU R                  X25        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_suffix8ClinicWholeFileTest.test_directive_set_prefix_and_suffix  s:        KK%%e,	'D$2>r4   c                     [        S5      n[        S5      nU R                  R                  U5      nU R                  X25        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]*/
        r   r   rT   r<   )rU   r   r   r   s       r2   test_directive_printout+ClinicWholeFileTest.test_directive_printout  sF          KK%%e,	-r4   c                 ,    SnSnU R                  X!SS9  g )Nz)Can't have 'preserve' twice in one block!z|
            /*[clinic input]
            preserve
            preserve
            [clinic start generated code]*/
        ri   r   rj   r   s      r2   test_directive_preserve_twice1ClinicWholeFileTest.test_directive_preserve_twice  s#    9 	Eq1r4   c                 ,    SnSnU R                  X!SS9  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   rj   r   s      r2   test_directive_preserve_input1ClinicWholeFileTest.test_directive_preserve_input(  s#    O 	Eq1r4   c                 r    [        S5      nU R                  R                  U5      nU R                  X!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   rU   r   r   s      r2   test_directive_preserve_output2ClinicWholeFileTest.test_directive_preserve_output4  s5       KK%%e,	*r4   c                 Z    [        S5      R                  5       nSnU R                  X!SS9  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   )r   r7   rW   r   s      r2   %test_directive_output_invalid_command9ClinicWholeFileTest.test_directive_output_invalid_commandD  s9      " UW# 	$
 	Eq1r4   c                 ,    SnSnU R                  XSS9  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   rU   r   rl   s      r2   test_validate_cloned_init-ClinicWholeFileTest.test_validate_cloned_init^  s$    
 UEq1r4   c                 ,    SnSnU R                  XSS9  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   rj   r  s      r2   test_validate_cloned_new,ClinicWholeFileTest.test_validate_cloned_newm  s#    	 1Eq1r4   c                 ,    SnSnU R                  XSS9  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   rj   r  s      r2   test_no_c_basename_cloned-ClinicWholeFileTest.test_no_c_basename_cloned{  s#     :Eq1r4   c                 .   [        S5      nU R                  R                  U5        U R                  R                  nU R	                  [        U5      S5        U R	                  US   R                  S5        U R	                  US   R                  S5        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)r   r   rT   	functionsr<   lenname
c_basename)rU   rV   funcss      r2   "test_cloned_with_custom_c_basename6ClinicWholeFileTest.test_cloned_with_custom_c_basename  sz     
 
 	#%%UQ'q.q,,f5r4   c                 ,    SnSnU R                  XSS9  g )Nz
            /*[clinic input]
            class C "void *" ""
            foo1
            [clinic start generated code]*/

            /*[clinic input]
            foo2 as .illegal. = foo1
            [clinic start generated code]*/
        zIllegal C basename: '.illegal.'r	  r   rj   r  s      r2   #test_cloned_with_illegal_c_basename7ClinicWholeFileTest.test_cloned_with_illegal_c_basename  s#    	 0Eq1r4   c                 :   [        S5      nU R                  R                  U5        U R                  [        S5        U R                  R
                  nU R                  [        U5      S5        US   R                  R                  S5      nUS   R                  R                  S5      nU R                  US   S5        U R                  US   S5        U R                  S	U5        U R                  S	U5        U R                  S
U5        U R                  S
U5        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`   r   r   r   zsrc($module, a[, b])zdst($module, a[, b])z    param a	docstring)r   r   rT   rK   r	   r  r<   r  r  r   r   assertNotIn)rU   r   r  src_docstring_linesdst_docstring_liness        r2   !test_cloned_forced_text_signature5ClinicWholeFileTest.test_cloned_forced_text_signature  s        	% )%%UQ'#Ah0066t<#Ah0066t< 	,Q/1GH,Q/1GH 	m%89m%89 	k#67&9:r4   c                 ,    SnSnU R                  XSS9  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   rj   r  s      r2   )test_cloned_forced_text_signature_illegal=ClinicWholeFileTest.test_cloned_forced_text_signature_illegal  s$     CEr2r4   c                 p    S H0  n[        SU SU S35      nU R                  R                  U5        M2     g )N)r   pythonz                /*[z| input]
                # CPP directives, valid or not, should be ignored in C comments.
                #
                [z% start generated code]*/
            )r   r   rT   )rU   dslrV   s      r2   $test_ignore_preprocessor_in_comments8ClinicWholeFileTest.test_ignore_preprocessor_in_comments  sJ    %C 5   	 C KKc" &r4   r   )4__name__
__module____qualname____firstlineno__maxDiffrW   r]   rf   rm   rp   rs   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r  r  r#  r'  r,  __static_attributes__ r4   r2   rP   rP   Q   s    G6:4 :61"
CCC	C(*CCCC
&&!
F&&&&2 22222222)8V22?(?(?*.$2
2+ 2422
26$2#;J3$#r4   rP   c                   8    \ rS rSrSSS.S jrS	S jrS	S jrSrg)
ParseFileUnitTesti  TN)verifyoutputc                    [         R                  " [        U5      R                  5       5      nU R	                  [
        U5         [        USS9  S S S 5        g ! , (       d  f       g = f)NFr,   )r9   r:   r   r7   r;   r   r'   )rU   r+   expected_errorr8  r9  rA   s         r2   expect_parsing_failure(ParseFileUnitTest.expect_parsing_failure  sF     6.1779:##K8xe4 988s   A
A&c                 $    U R                  SSS9  g )Nr  z&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 	$ 	
r4   c                     SSSS.nUR                  5        H,  u  p#U R                  US9   U R                  X#S9  S S S 5        M.     g ! , (       d  f       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')zfoo.rszfoo.hszfoo.jsr[   r@  )itemsr   r=  )rU   filenames_to_errorsr+   rA   s       r2   !test_parse_file_strange_extension3ParseFileUnitTest.test_parse_file_strange_extension  sY    BBB

 !4 9 9 ;Hx0++X+U 10 !<00s   A
A	r5  )returnN)r/  r0  r1  r2  r=  rA  rF  r4  r5  r4   r2   r7  r7    s    26t5
Vr4   r7  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ClinicGroupPermuterTesti  c                 >    [        XU5      nU R                  XE5        g rE   )r   r<   )rU   lmrr9  computeds         r2   _testClinicGroupPermuterTest._test  s    *13*r4   c                 6    U R                  S//S/S//S5        g )Nstartstopstep))rT  )rS  rT  )rS  rT  rU  rP  r\   s    r2   
test_range"ClinicGroupPermuterTest.test_range  s#    

WI;F8*	r4   c                 8    U R                  SS//S/S//S5        g )Nxychattr))r\  )r\  r]  )rZ  r[  r\  )rZ  r[  r\  r]  rV  r\   s    r2   test_add_window'ClinicGroupPermuterTest.test_add_window  s%    

S#J<$6(	r4   c                 F    U R                  / SQSS//S/SS// SQ/S5        g )	N)a1a2a3b1b2c1d1d2)e1e2e3))rf  )rd  re  rf  )rd  re  rf  rg  rh  )ra  rb  rc  rd  re  rf  )ra  rb  rc  rd  re  rf  rg  rh  )ra  rb  rc  rd  re  rf  rg  rh  ri  rj  rk  rV  r\   s    r2   test_ludicrous&ClinicGroupPermuterTest.test_ludicrous  s/    

&t5vtN`?a	r4   c                 8    U R                  / / S/S/S//S5        g )Nabr1   )r5  ro  ro  rp  ro  rp  r1   rV  r\   s    r2   test_right_only'ClinicGroupPermuterTest.test_right_only#  s&    

2rSE3%.	r4   c                 6    S nU R                  [        U5        g )Nc                       [        S// / 5        g )Nro  )r   r5  r4   r2   fnPClinicGroupPermuterTest.test_have_left_options_but_required_is_empty.<locals>.fn-  s    #SE2r2r4   )assertRaises
ValueErrorrU   rx  s     r2   ,test_have_left_options_but_required_is_emptyDClinicGroupPermuterTest.test_have_left_options_but_required_is_empty,  s    	3*b)r4   r5  N)r/  r0  r1  r2  rP  rW  r^  rl  rt  r}  r4  r5  r4   r2   rJ  rJ    s     +	*r4   rJ  c                   J    \ 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g)ClinicLinearFormatTesti2  c                 T    [         R                  " U40 UD6nU R                  X$5        g rE   )	libcliniclinear_formatr<   )rU   inputr9  kwargsrO  s        r2   rP  ClinicLinearFormatTest._test3  s%    **5;F;*r4   c                 (    U R                  SS5        g )Nr.   rV  r\   s    r2   test_empty_strings)ClinicLinearFormatTest.test_empty_strings7  s    

2rr4   c                 (    U R                  SS5        g )Nr   rV  r\   s    r2   test_solo_newline(ClinicLinearFormatTest.test_solo_newline:  s    

4r4   c                 (    U R                  SS5        g )Nz
          abc
        rV  r\   s    r2   test_no_substitution+ClinicLinearFormatTest.test_no_substitution=  s    

 	r4   c                 &    U R                  SSSS9  g )N6
          abc
          {name}
          def
        z%
          abc
          def
        r.   r  rV  r\   s    r2   test_empty_substitution.ClinicLinearFormatTest.test_empty_substitutionD  s"    

   	 	r4   c                 &    U R                  SSSS9  g )Nr  z6
          abc
          GARGLE
          def
        GARGLEr  rV  r\   s    r2   test_single_line_substitution4ClinicLinearFormatTest.test_single_line_substitutionN  s"    

   	 	r4   c                 &    U R                  SSSS9  g )Nr  zH
          abc
          bingle
          bungle

          def
        zbingle
bungle
r  rV  r\   s    r2   test_multiline_substitution2ClinicLinearFormatTest.test_multiline_substitutionY  s"    

  % 	 
	&r4   c                     [         R                  " S5      nU R                  [        U5         [        R
                  " SSS9  S S S 5        g ! , (       d  f       g = f)Nzfound before '{marker}'z'no text before marker for you! {marker}not allowed!markerr9   r:   r;   r   r  r  rU   regexs     r2   test_text_before_block_marker4ClinicLinearFormatTest.test_text_before_block_markerf  sA    		34##K7##$M+9; 877   A
Ac                     [         R                  " S5      nU R                  [        U5         [        R
                  " SSS9  S S S 5        g ! , (       d  f       g = f)Nzfound after '{marker}'z&{marker} no text after marker for you!r  r  r  r  s     r2   test_text_after_block_marker3ClinicLinearFormatTest.test_text_after_block_markerl  sA    		23##K7##$L+9; 877r  r5  N)r/  r0  r1  r2  rP  r  r  r  r  r  r  r  r  r4  r5  r4   r2   r  r  2  s/    +	&;;r4   r  c                        \ rS rSrS rS rSrg)InertParseris  c                     g rE   r5  rU   r   s     r2   __init__InertParser.__init__t      r4   c                     g rE   r5  rU   r   s     r2   rT   InertParser.parsew  r  r4   r5  Nr/  r0  r1  r2  r  rT   r4  r5  r4   r2   r  r  s  s    r4   r  c                        \ rS rSrS rS rSrg)
CopyParseriz  c                     g rE   r5  r  s     r2   r  CopyParser.__init__{  r  r4   c                 &    UR                   Ul        g rE   )r  r9  r  s     r2   rT   CopyParser.parse~  s    {{r4   r5  Nr  r5  r4   r2   r  r  z  s    #r4   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
ClinicBlockParserTesti  c                    [        S 5      n[        [        X5      5      n[        U5      nU H  nUR	                  U5        M     UR
                  R                  5       nX!:X  d"   S[        U5      -   S-   [        U5      -   5       eg )Nzoutput != input!

output z	

 input )r   listr#   r$   print_blockfr   repr)rU   r  r9  languageblockswriterr   s          r2   rP  ClinicBlockParserTest._test  sx    T?k%23h'Eu% ""$j =V L} \_cdi_j jjr4   c                 $    U R                  X5      $ rE   rV  )rU   r  s     r2   
round_trip ClinicBlockParserTest.round_trip  s    zz%''r4   c                 &    U R                  S5        g )Nz@
            verbatim text here
            lah dee dah
        r  r\   s    r2   test_round_trip_1'ClinicBlockParserTest.test_round_trip_1  s      	r4   c                 &    U R                  S5        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     	 		r4   c                     [        S 5      n[        USSS9n[        U5      UR                  S'   [	        U5      UR                  S'   UR                  U5      nU R                  X%5        g )NfileFr*   inertrL   )r   r(   r  parsersr  rT   r<   )rU   r  r9  r  r1   rO  s         r2   _test_clinic"ClinicBlockParserTest._test_clinic  sX    T?8f5A(^		'&qM		&775>*r4   c                 (    U R                  SS5        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     			r4   r5  N)r/  r0  r1  r2  rP  r  r  r  r  r  r4  r5  r4   r2   r  r    s!    k(

+r4   r  c                      \ rS rSrS rS|S jrSSSS.S j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 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% r$S& r%S' r&S( r'S) r(S* r)S+ r*S, r+S- r,S. r-S/ r.S0 r/S1 r0S2 r1S3 r2S4 r3S5 r4S6 r5S7 r6S8 r7S9 r8S: r9S; r:S< r;S= r<S> r=S? r>S@ r?SA r@SB rASC rBSD rCSE rDSF rESG rFSH rGSI rHSJ rISK rJSL rKSM rLSN rMSO rNSP rOSQ rPSR rQSS rRST rSSU rTSV rUSW rVSX rWSY rXSZ rYS[ rZS\ r[S] r\S^ r]S_ r^S` r_Sa r`Sb raSc rbSd rcSe rdSf reSg rfSh rgSi rhSj riSk rjSl rkSm rlSn rmSo rnSp roSq rpSr rqSs rrSt rsSu rtSv ruSw rvSx rwSy rxSz ryS{rzg)}ClinicParserTesti  c                 h    [        5       n[        U5      n[        U5      nUR                  U5        U$ rE   )r3   r&   r"   rT   )rU   textr1   r?   r   s        r2   rT   ClinicParserTest.parse  s,    N1dUr4   c                     U R                  U5      nUR                  nU R                  [        U5      U5        [	        US   [
        5      (       d   e[	        XS   [        5      (       d   eXS   $ )Nr   )rT   
signaturesr<   r  
isinstancer   r   )rU   r  signatures_in_blockfunction_indexr   ss         r2   parse_functionClinicParserTest.parse_function  sf    

4 Q!45!A$''''!+X6666  r4   NTr5   c          
      .    [        X R                  XX4US9$ )Nr5   )rC   r  )rU   r   rl   r+   r6   r7   s         r2   rW   ClinicParserTest.expect_failure  s     t%8%8%(0uN 	Nr4   c                     U R                  [        US5      5        U R                  [        U5      R	                  5       UR
                  R	                  5       5        g )Nr  )r   hasattrr<   r   r7   r  )rU   rx  r   s      r2   checkDocstringClinicParserTest.checkDocstring  sC    K01)//1++-	/r4   c                     [        [        5       5      n[        S5      nUR                  U5        UR                  u  p4U R                  SUR                  5        U R                  SUR                  5        g )Nz5
            module os
            os.access
        accessos)r&   r3   r"   rT   r  r<   r  )rU   r?   r   modulefunctions        r2   test_trivialClinicParserTest.test_trivial  sa    <>*   	U ++8==1v{{+r4   c                     U R                  [        S5      5      nUR                  u  p#U R                  SUR                  5        U R                  SUR                  5        g )NzC
            #
            module os
            os.access
        r  r  )rT   r   r  r<   r  )rU   r   r  r  s       r2   test_ignore_line!ClinicParserTest.test_ignore_line  sT    

6 #  
 !++8==1v{{+r4   c                 >   U R                  S5      nU R                  SUR                  5        U R                  S[        UR                  5      5        UR                  S   nU R                  SUR                  5        U R                  UR                  [        5        g )NzO
            module os
            os.access
                path: int
        r  r`   path)r  r<   r  r  
parametersassertIsInstance	converterr   rU   r  ps      r2   
test_paramClinicParserTest.test_param  s    && ( 
 	8==1C 3 345'(akk=9r4   c                 |    U R                  S5      nUR                  S   nU R                  SUR                  5        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qyy)r4   c                 |    U R                  S5      nUR                  S   nU R                  SUR                  5        g )Nz
            module os
            os.access
                follow_symlinks: \
                bool \
                = \
                True
        r  Tr   r  s      r2   test_param_with_continuations.ClinicParserTest.test_param_with_continuations  s>    && (   12qyy)r4   c                    U R                  S5      nUR                  S   nU R                  [        R                  UR
                  5        U R                  SUR                  R                  5        SnSnU R                  XCSS9  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   )rU   r  r  rl   r   s        r2   &test_param_default_expr_named_constant7ClinicParserTest.test_param_default_expr_named_constant  s    && ( 
  12aii0AKK$9$9:2 	
 	Eq1r4   c                     SnSnS H:  nU R                  US9   UR                  US9nU R                  XBSS9  S S S 5        M<     g ! , (       d  f       MN  = f)Nzf
            module os
            os.access
                follow_symlinks: int = {default}
        z'Unsupported expression as default value)z	{1, 2, 3}z3 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##Eq#9 =<"

 =<    A
A	c                 b    SnSnU R                  XSS9nU R                  S[        U5      5        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)rW   r   str)rU   r   rl   excs       r2   -test_unspecified_not_allowed_as_default_value>ClinicParserTest.test_unspecified_not_allowed_as_default_value5  s:    
 <!!%Q!7FCQr4   c                 ,    SnSnU R                  XSS9  g )Nzu
            module os
            os.access
                follow_symlinks: int(c_default='MAXSIZE') = 1/0
        r  r`   r   rj   r  s      r2   *test_malformed_expression_as_default_value;ClinicParserTest.test_malformed_expression_as_default_value?  s#    
 <Eq1r4   c                 ,    SnSnU R                  X!SS9  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   rj   r   s      r2   test_param_default_expr_binop.ClinicParserTest.test_param_default_expr_binopH  s(    2 	 	Eq1r4   c                     U R                  S5      nU R                  S[        UR                  5      5        UR                  S   R                  nU R                  U[        5        g )Nz
            module os
            os.access
                follow_symlinks: bool = True
                something_else: str = ''
        ri   something_else)r  r<   r  r  r  r  r   )rU   r  convs      r2   test_param_no_docstring(ClinicParserTest.test_param_no_docstringS  s[    && (  	C 3 345""#34>>dM2r4   c                 ,    SnSnU R                  X!SS9  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
        ri   r   rj   r   s      r2   *test_param_default_parameters_out_of_order;ClinicParserTest.test_param_default_parameters_out_of_order^  s(    0 	 	Eq1r4   c                     U R                  S5      nUR                  S   nU R                  SUR                  R                  S   5        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_arguments2ClinicParserTest.disabled_test_converter_argumentsk  sH    && ( 
 'AKK,,Z89r4   c                 J    U R                  S5      nU R                  US5        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  rU   r  s     r2   test_function_docstring(ClinicParserTest.test_function_docstringt  s.    && (  	H ' 	r4   c                 J    U R                  S5      nU R                  US5        g )Nzmodule 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
        r0  r1  s     r2   "test_docstring_trailing_whitespace3ClinicParserTest.test_docstring_trailing_whitespace  s.    &&?
 	H 
' 
	r4   c                 \    U R                  [        S5      5      nU R                  US5        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  r   r  r1  s     r2   %test_explicit_parameters_in_docstring6ClinicParserTest.test_explicit_parameters_in_docstring  s5    &&v 
/ 
( 
 	H 
' 
	r4   c                 \    U R                  [        S5      5      nU R                  US5        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.
        r8  r9  r1  s     r2   test_docstring_with_comments-ClinicParserTest.test_docstring_with_comments  s5    &&v / ( & 	H 
' 
	r4   c                 \    U R                  [        S5      5      nU R                  US5        g )Nzt
            module os
            os.stat
                path: str
            This/used to break Clinic!
        zc
            stat($module, /, path)
            --

            This/used to break Clinic!
        r9  r1  s     r2   Ttest_parser_regression_special_character_in_parameter_column_of_docstring_first_lineeClinicParserTest.test_parser_regression_special_character_in_parameter_column_of_docstring_first_line  s5    &&v / (  	H ' 	r4   c                 ^    U R                  S5      nU R                  SUR                  5        g )NzA
            module os
            os.stat as os_stat_fn
        
os_stat_fn)r  r<   r  r1  s     r2   test_c_nameClinicParserTest.test_c_name  s/    && (  	x':':;r4   c                     Sn[        S5      R                  5       nU R                  [        U5         U R	                  U5        S S S 5        g ! , (       d  f       g = f)Nz\
            module os
            os.stat
                invalid syntax: int = 42
        zu
            Function 'stat' has an invalid parameter declaration:
            \s+'invalid syntax: int = 42'
        )r   r7   r;   r   r  r  s      r2   test_base_invalid_syntax)ClinicParserTest.test_base_invalid_syntax  sR    
    UW 	 ##K5& 655s   A
Ac                 ,    SnSnU R                  XSS9  g )Nz[
            module os
            os.stat
                x: int = invalid syntax
        z$Syntax error: 'x = invalid syntax\n'r`   r   rj   r  s      r2   !test_param_default_invalid_syntax2ClinicParserTest.test_param_default_invalid_syntax   s#    
 6Eq1r4   c                     SnSn[         R                  " 5        nU R                  XSS9  S S S 5        [        S5      nWR	                  5       nU R                  XC5        g ! , (       d  f       N;= f)Nzn
            cloned = fooooooooooooooooo
            This is trying to clone a nonexistent function!!
        z5Couldn't find existing function 'fooooooooooooooooo'!r   r   z            cls=None, module=<clinic.Clinic object>, existing='fooooooooooooooooo'
            (cls or module).functions=[]
        )r   captured_stderrrW   r   r   r   )rU   r   rl   stderrexpected_debug_prints        r2   1test_cloning_nonexistent_function_correctly_failsBClinicParserTest.test_cloning_nonexistent_function_correctly_fails	  sk     F$$&&15 '% '   "*3 '&s   A  
A.c                 f    U R                  S5      nU R                  UR                  [        5        g )Nz:
            module os
            os.stat -> int
        )r  r  return_converterr!   r1  s     r2   test_return_converter&ClinicParserTest.test_return_converter  s0    && (  	h779MNr4   c                 .    SnSnU R                  X5        g )NzE
            module os
            os.stat -> invalid syntax
        z7Badly formed annotation for 'os.stat': 'invalid syntax'rj   r  s      r2   $test_return_converter_invalid_syntax5ClinicParserTest.test_return_converter_invalid_syntax  s     HE'r4   c                 .    SnSnU R                  X5        g )Nz:
            module os
            os.stat -> "s"
        z6Legacy converter 's' not allowed as a return converterrj   r  s      r2   5test_legacy_converter_disallowed_in_return_annotationFClinicParserTest.test_legacy_converter_disallowed_in_return_annotation'  s     GE'r4   c                 .    SnSnU R                  X5        g )NzO
            module os
            os.stat -> fooooooooooooooooooooooo
        z?No available return converter called 'fooooooooooooooooooooooo'rj   r  s      r2   test_unknown_return_converter.ClinicParserTest.test_unknown_return_converter/  s     PE'r4   c                     U R                  S5      nUR                  S   nU R                  [        R                  R
                  UR                  5        U R                  SUR                  5        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_star7  s^    && (   12**77@AGG$r4   c                 |    U R                  S5      nUR                  S   nU R                  SUR                  5        g )Nz
            module window
            window.border
                [
                ls: int
                ]
                /
        lsr   )r  r  r<   rc  r  s      r2   
test_groupClinicParserTest.test_groupB  s=    && (  %AGG$r4   c                 v   U R                  S5      nSnU H|  u  p4U R                  X4S9   UR                  U   nU R                  UR                  U5        U R                  UR
                  [        R                  R                  5        S S S 5        M~     U R                  US5        g ! , (       d  f       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   )rZ  r   r\  r   )r]  r   r  rc  a  
            addch([y, x,] ch, [attr])


              y
                Y-coordinate.
              x
                X-coordinate.
              ch
                Character to add.
              attr
                Attributes for the character.
        
r  r   r  r<   rc  rb  r`  r   POSITIONAL_ONLYr  rU   r  datasetr  rc  r  s         r2   test_left_group ClinicParserTest.test_left_groupN  s    && ( "

 #KD45''-  %0  ):):)J)JK 65 #
 	H ' 		 65   A B))
B8	c                 v   U R                  S5      nSnU H|  u  p4U R                  X4S9   UR                  U   nU R                  UR                  U5        U R                  UR
                  [        R                  R                  5        S S S 5        M~     U R                  US5        g ! , (       d  f       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)y2rv  )x1r   )x2r   rk  )attr1r   )attr2r   )attr3r   )attr4r`   )attr5r`   )attr6r`   rl  a  
            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.
        rm  ro  s         r2   test_nested_groups#ClinicParserTest.test_nested_groupsx  s    && "( "F
 #KD45''-  %0  ):):)J)JK 65 # 	H ' 	 65rs  c                 ,    SnSnU R                  X!SS9  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
        r  r   rj   r   s      r2   0test_disallowed_grouping__two_top_groups_on_leftAClinicParserTest.test_disallowed_grouping__two_top_groups_on_left  s(    4 	
 	Eq1r4   c                 .    SnSnU R                  X5        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)rj   r  s      r2   1test_disallowed_grouping__two_top_groups_on_rightBClinicParserTest.test_disallowed_grouping__two_top_groups_on_right  #    
4 	 	E'r4   c                 .    SnSnU R                  X5        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)rj   r  s      r2   8test_disallowed_grouping__parameter_after_group_on_rightIClinicParserTest.test_disallowed_grouping__parameter_after_group_on_right  r  r4   c                 .    SnSnU R                  X5        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)rj   r  s      r2   7test_disallowed_grouping__group_after_parameter_on_leftHClinicParserTest.test_disallowed_grouping__group_after_parameter_on_left  r  r4   c                 .    SnSnU R                  X5        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.rj   r  s      r2   -test_disallowed_grouping__empty_group_on_left>ClinicParserTest.test_disallowed_grouping__empty_group_on_left  #    	> 	 	E'r4   c                 .    SnSnU R                  X5        g )Nz
            module foo
            foo.empty_group
                param: int
                [
                [
                ]
                group2 : int
                ]
        r  rj   r  s      r2   .test_disallowed_grouping__empty_group_on_right?ClinicParserTest.test_disallowed_grouping__empty_group_on_right  r  r4   c                 .    SnSnU R                  X5        g )Nz
            module foo
            foo.empty_group
                param: int
                ]
                group2: int
                ]
        z7Function 'empty_group' has a ']' without a matching '['rj   r  s      r2   -test_disallowed_grouping__no_matching_bracket>ClinicParserTest.test_disallowed_grouping__no_matching_bracket0  s     HE'r4   c                     SnSnU H,  nU R                  US9   U R                  X25        S S S 5        M.     g ! , (       d  f       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   rU   rp  rl   r   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                     U R                  S5      nU R                  SUR                  5        U R                  S[        UR                  5      5        g )NzL
            module foo
            foo.bar

            Docstring

        zbar($module, /)
--

Docstringr   r  r<   r  r  r  r1  s     r2   test_no_parameters#ClinicParserTest.test_no_parametersQ  sK    && (  	;X=O=OPC 3 345r4   c                     U R                  SSSS9nU R                  SUR                  5        U R                  S[        UR                  5      5        g )Nz
            module foo
            class foo.Bar "unused" "notneeded"
            foo.Bar.__init__

            Docstring

        ri   r`   r  r  zBar()
--

Docstringr   r  r1  s     r2   test_init_with_no_parameters-ClinicParserTest.test_init_with_no_parameters\  sW    && ( "#1 ' 6 	183E3EFC 3 345r4   c                 .    SnSnU R                  X5        g )NzM
            module foo
            foo.bar => int
                /
        z'Illegal function name: 'foo.bar => int'rj   r  s      r2   test_illegal_module_line)ClinicParserTest.test_illegal_module_linek  s    
 8E'r4   c                 .    SnSnU R                  X5        g )NzM
            module foo
            foo.bar as 935
                /
        zIllegal C basename: '935'rj   r  s      r2   test_illegal_c_basename(ClinicParserTest.test_illegal_c_basenamet  s    
 *E'r4   c                 ,    SnSnU R                  XSS9  g )Nzfoo as r  F)r7   rj   r  s      r2   test_no_c_basename#ClinicParserTest.test_no_c_basename}  s    9Ee4r4   c                 .    SnSnU R                  X5        g )NzX
            module foo
            foo.bar
                *
                *
        'Function 'bar' uses '*' more than once.rj   r  s      r2   test_single_star!ClinicParserTest.test_single_star  s     8E'r4   c                     SnSnU H,  nU R                  US9   U R                  X25        S S S 5        M.     g ! , (       d  f       M@  = f)N)zmodule 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_star4ClinicParserTest.test_parameters_required_after_star  sF    
 KEE*##E/ +* **r  c                     SnU HY  u  p#U R                  X#S9   U R                  U5      nUR                  S   nU R                  UR                  U5        S S S 5        M[     g ! , (       d  f       Mm  = f)N))TzL
                class T "void *" ""
                T.__init__
            )zm.Tz
                module m
                class m.T "void *" ""
                @classmethod
                m.T.__new__
            )zm.T.Cz
                module m
                class m.T "void *" ""
                class m.T.C "void *" ""
                m.T.C.__init__
            r  r@   r   r   rT   r  r<   fulldisplaynamerU   rp  r  r@   r   funcs         r2   test_fulldisplayname_class+ClinicParserTest.test_fulldisplayname_class  sh    
$ "JD43

4(''+  !5!5t< 43 "33   =A##
A2	c                     SnU HY  u  p#U R                  X#S9   U R                  U5      nUR                  S   nU R                  UR                  U5        S S S 5        M[     g ! , (       d  f       Mm  = f)N))r  r  )zm.funcz=
                module m
                m.func
            )zT.methzH
                class T "void *" ""
                T.meth
            )zm.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    
, "JD43

4(''+  !5!5t< 43 "33r  c                 ,    SnSnU R                  XSS9  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'ri   r   rj   r  s      r2   test_depr_star_invalid_format_10ClinicParserTest.test_depr_star_invalid_format_1  s(    > 	 	Eq1r4   c                 ,    SnSnU R                  XSS9  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'ri   r   rj   r  s      r2   test_depr_star_invalid_format_20ClinicParserTest.test_depr_star_invalid_format_2  s)    @ 	 	Eq1r4   c                 ,    SnSnU R                  XSS9  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'ri   r   rj   r  s      r2   test_depr_star_invalid_format_30ClinicParserTest.test_depr_star_invalid_format_3  s)    B 	 	Eq1r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                this: int
                * [from 3.14]
            Docstring.
        EFunction 'bar' specifies '* [from ...]' without following parameters.   r   rj   r  s      r2   (test_parameters_required_after_depr_star9ClinicParserTest.test_parameters_required_after_depr_star  s(    $ 	 	Eq1r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                * [from 3.14]
                *
                b: int
            Docstring.
        r  r  r   rj   r  s      r2   )test_parameters_required_after_depr_star2:ClinicParserTest.test_parameters_required_after_depr_star2  (    $ 	 	Eq1r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                * [from 3.14]
                *args: object
                b: int
            Docstring.
        r  r  r   rj   r  s      r2   )test_parameters_required_after_depr_star3:ClinicParserTest.test_parameters_required_after_depr_star3  r  r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                *
                * [from 3.14]
                b: int
            Docstring.
        /Function 'bar': '* [from ...]' must precede '*'r  r   rj   r  s      r2   $test_depr_star_must_come_before_star5ClinicParserTest.test_depr_star_must_come_before_star&  $     @Eq1r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                *args: object
                * [from 3.14]
                b: int
            Docstring.
        r  r  r   rj   r  s      r2   &test_depr_star_must_come_before_vararg7ClinicParserTest.test_depr_star_must_come_before_vararg3  r  r4   c                 ,    SnSnU R                  XSS9  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.r  r   rj   r  s      r2   test_depr_star_duplicate)ClinicParserTest.test_depr_star_duplicate@  $    	 DEq1r4   c                 ,    SnSnU R                  XSS9  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]'r  r   rj   r  s      r2   test_depr_star_duplicate2*ClinicParserTest.test_depr_star_duplicate2N  $    	 MEq1r4   c                 ,    SnSnU R                  XSS9  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.r  r   rj   r  s      r2   test_depr_slash_duplicate*ClinicParserTest.test_depr_slash_duplicate\  r  r4   c                 ,    SnSnU R                  XSS9  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]'r  r   rj   r  s      r2   test_depr_slash_duplicate2+ClinicParserTest.test_depr_slash_duplicate2j  r  r4   c                 .    SnSnU R                  X5        g )NzX
            module foo
            foo.bar
                /
                /
        MFunction 'bar' has an unsupported group configuration. (Unexpected state 0.d)rj   r  s      r2   test_single_slash"ClinicParserTest.test_single_slashx  #    % 	 	E'r4   c                 ,    SnSnU R                  XSS9  g )Nzi
            module foo
            foo.bar
                / [from 3.14]
            Docstring.
        EFunction 'bar' specifies '/ [from ...]' without preceding parameters.r`   r   rj   r  s      r2   *test_parameters_required_before_depr_slash;ClinicParserTest.test_parameters_required_before_depr_slash  s(    $ 	 	Eq1r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                /
                / [from 3.14]
            Docstring.
        r  r  r   rj   r  s      r2   +test_parameters_required_before_depr_slash2<ClinicParserTest.test_parameters_required_before_depr_slash2  s(    $ 	 	Eq1r4   c                 .    SnSnU R                  X5        g )Nz
            module foo
            foo.bar
                a: int
                /
                b: int
                /
        z'Function 'bar' uses '/' more than once.rj   r  s      r2   test_double_slash"ClinicParserTest.test_double_slash  s     8E'r4   c                 .    SnSnU R                  X5        g )Nz
            module foo
            foo.bar
               x: int
               y: int
               *
               z: int
               /
        $Function 'bar': '/' must precede '*'rj   r  s      r2   test_slash_after_star&ClinicParserTest.test_slash_after_star       5E'r4   c                 .    SnSnU R                  X5        g )Nz
            module foo
            foo.bar
               x: int
               y: int
               *args: object
               z: int
               /
        r  rj   r  s      r2   test_slash_after_vararg(ClinicParserTest.test_slash_after_vararg  r  r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                * [from 3.14]
                /
                b: int
            Docstring.
        z/Function 'bar': '/' must precede '* [from ...]'r  r   rj   r  s      r2   $test_depr_star_must_come_after_slash5ClinicParserTest.test_depr_star_must_come_after_slash  r  r4   c                 ,    SnSnU R                  XSS9  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   rj   r  s      r2   )test_depr_star_must_come_after_depr_slash:ClinicParserTest.test_depr_star_must_come_after_depr_slash  s$     KEq1r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                *
                / [from 3.14]
                b: int
            Docstring.
        /Function 'bar': '/ [from ...]' must precede '*'r  r   rj   r  s      r2   $test_star_must_come_after_depr_slash5ClinicParserTest.test_star_must_come_after_depr_slash  r  r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                *args: object
                / [from 3.14]
                b: int
            Docstring.
        r  r  r   rj   r  s      r2   &test_vararg_must_come_after_depr_slash7ClinicParserTest.test_vararg_must_come_after_depr_slash  r  r4   c                 ,    SnSnU R                  XSS9  g )Nz
            module foo
            foo.bar
                a: int
                / [from 3.14]
                /
                b: int
            Docstring.
        z/Function 'bar': '/' must precede '/ [from ...]'r  r   rj   r  s      r2   %test_depr_slash_must_come_after_slash6ClinicParserTest.test_depr_slash_must_come_after_slash  r  r4   c                 .    SnSnU R                  X5        g )Nz]
            module foo
            foo.bar
                /
                x: int
        r  rj   r  s      r2   1test_parameters_not_permitted_after_slash_for_nowBClinicParserTest.test_parameters_not_permitted_after_slash_for_now  r  r4   c                 ,    SnSnU R                  X!SS9  g )Nr  zt
            module foo
            foo.bar
               *vararg1: object
               *vararg2: object
        ri   r   rj   r   s      r2   'test_parameters_no_more_than_one_vararg8ClinicParserTest.test_parameters_no_more_than_one_vararg  #    7 	Eq1r4   c                 J    U R                  S5      nU R                  US5        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.
        r0  r1  s     r2   test_function_not_at_column_0.ClinicParserTest.test_function_not_at_column_0  s.    && (  	H ' 	r4   c                 J    U R                  S5      nU R                  US5        g )NzH
              module m
              m.f
              summary
        zG
            f($module, /)
            --

            summary
        r0  r1  s     r2   test_docstring_only_summary,ClinicParserTest.test_docstring_only_summary3  s.    && ( 
 	H ' 	r4   c                 J    U R                  S5      nU R                  US5        g )Nz4
              module m
              m.f


        z2
            f($module, /)
            --
        r0  r1  s     r2   test_docstring_empty_lines+ClinicParserTest.test_docstring_empty_lines@  s.    && (  	H ' 	r4   c                 J    U R                  S5      nU R                  US5        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)
        r0  r1  s     r2   (test_docstring_explicit_params_placement9ClinicParserTest.test_docstring_explicit_params_placementL  s.    && (  	H ' 	r4   c                 .    SnSnU R                  X5        g )Nzr
            module foo
            foo.bar
               *vararg1: object
            	*vararg2: object
        zBTab characters are illegal in the Clinic DSL: '\t*vararg2: object'rj   r  s      r2   test_indent_stack_no_tabs*ClinicParserTest.test_indent_stack_no_tabsl  s    'E'r4   c                 .    SnSnU R                  X5        g )Nzc
            module foo
            foo.bar
              a: object
             b: object
        zIllegal outdentrj   r  s      r2   !test_indent_stack_illegal_outdent2ClinicParserTest.test_indent_stack_illegal_outdentw  s      E'r4   c                    ^ [        [        5       5      mSTl        U4S jTR                  S'   [	        S5      nTR                  U5        U R                  TR                  5        g )NFc                     > [        T SS5      $ )NflagT)setattr)r?   s   r2   <lambda>1ClinicParserTest.test_directive.<locals>.<lambda>  s    0Mr4   setflag)r&   r3   r3  
directivesr"   rT   r   )rU   r   r?   s     @r2   test_directiveClinicParserTest.test_directive  sL    <>*'M)$i U$r4   c                     U R                  S5      nUR                  u  p#UR                  S   R                  nU R	                  U[
        5        g )Nz module os
os.access
   path: "s"r  )rT   r  r  r  r  r   )rU   r   r  r  r$  s        r2   test_legacy_converters'ClinicParserTest.test_legacy_converters  sE    

?@ ++##F+66dM2r4   c                     SnSnU H+  nU R                  US9   U R                  X1SS9  S S S 5        M-     g ! , (       d  f       M?  = f)N?Annotations must be either a name, a function call, or a string)zmodule 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  rU   rl   rp  r   s       r2   5test_legacy_converters_non_string_constant_annotationFClinicParserTest.test_legacy_converters_non_string_constant_annotation  sJ    O
 EE*##Eq#9 +* **	   7
A	c                     SnSnU H+  nU R                  US9   U R                  X1SS9  S S S 5        M-     g ! , (       d  f       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*##Eq#9 +* **rC  c                     SnSnU H,  nU R                  US9   U R                  X15        S S S 5        M.     g ! , (       d  f       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_annotationsJClinicParserTest.test_kwarg_splats_disallowed_in_function_call_annotations  sE    F
 EE*##E/ +* **r  c                 ,    SnSnU R                  X!SS9  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 *")
        ri   r   rj   r   s      r2   test_self_param_placement*ClinicParserTest.test_self_param_placement  s(    & 	 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz-A 'self' parameter cannot be marked optional.zj
            module foo
            foo.func
                self: self(type="PyObject *") = None
        r`   r   rj   r   s      r2   "test_self_param_cannot_be_optional3ClinicParserTest.test_self_param_cannot_be_optional  s#    =
 	Eq1r4   c                 ,    SnSnU R                  X!SS9  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   rj   r   s      r2   #test_defining_class_param_placement4ClinicParserTest.test_defining_class_param_placement  s)    M 	 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz7A 'defining_class' parameter cannot be marked optional.zs
            module foo
            foo.func
                cls: defining_class(type="PyObject *") = None
        r`   r   rj   r   s      r2   ,test_defining_class_param_cannot_be_optional=ClinicParserTest.test_defining_class_param_cannot_be_optional  s#    G
 	Eq1r4   c                     SnSnU R                  [        U5         U R                  U5        S S S 5        g ! , (       d  f       g = f)Nz
            module foo
            class Foo "" ""
            Foo.__init__
                cls: defining_class
                a: object
        z0Slot methods cannot access their defining class.)r;   r{  r  r  s      r2   .test_slot_methods_cannot_access_defining_class?ClinicParserTest.test_slot_methods_cannot_access_defining_class  s;     A##J4& 544s	   6
Ac                 ,    SnSnU R                  X!SS9  g )Nz!'__new__' must be a class method!zT
            module foo
            class Foo "" ""
            Foo.__new__
        r`   r   rj   r   s      r2   test_new_must_be_a_class_method0ClinicParserTest.test_new_must_be_a_class_method  s#    1
 	Eq1r4   c                     SnSSSS.nUR                  5        HD  u  p4U R                  X4S9   SU S3nUR                  U5      nU R                  XVS	S
9  S S S 5        MF     g ! , (       d  f       MX  = f)Nz:'__init__' must be a normal method; got 'FunctionKind.{}'!CLASS_METHODSTATIC_METHODGETTER)z@classmethodz@staticmethod@getter)
annotationinvalid_kindX
                    module foo
                    class Foo "" ""
                    z2
                    Foo.__init__
                ri   r   )rD  r   r  rW   )rU   err_templateannotationsra  rb  r   r<  s          r2   !test_init_must_be_a_normal_method2ClinicParserTest.test_init_must_be_a_normal_method  s    S*,

 )4(9(9(;$JO  L ! ".!4!4\!B##E!#D PO )<OOs   (A""
A1	c                 ,    SnSnU R                  XSS9  g )NzF
            class Foo "" ""
            Foo.__init__ -> long
        z,__init__ methods cannot define a return typer   r   rj   rU   r   r<  s      r2   %test_init_cannot_define_a_return_type6ClinicParserTest.test_init_cannot_define_a_return_type	  s$     HE!<r4   c                     SS/nU HR  nU R                  US9   SU S3nU S3nU R                  X4SS9  S	U S
3nU S3nU R                  X45        S S S 5        MT     g ! , (       d  f       Mf  = f)Nr`  @setterra  rc  9
                    Foo.property -> int
                z# method cannot define a return typeri   r   zU
                   module foo
                   class Foo "" ""
                   zj
                   Foo.property
                       obj: int
                       /
                z! methods cannot define parametersr  rU   re  ra  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4s   8A
A-	c                 .    SnSnU R                  X5        g )Nz
            module foo
            class Foo "" ""
            @setter
            Foo.property

            foo

            bar
            [clinic start generated code]*/
        z6docstrings are only supported for @getter, not @setterrj   ri  s      r2   test_setter_docstring&ClinicParserTest.test_setter_docstring&	  s    
 RE2r4   c                     SS/nU H:  nU R                  US9   SU SU S3nSU S3nU R                  X4S	S
9  S S S 5        M<     g ! , (       d  f       MN  = f)Nr`  rm  rn  rc  
                    ro  zCannot apply z twice to the same function!ri   r   r  rp  s        r2   test_duplicate_getset&ClinicParserTest.test_duplicate_getset5	  sy     ),%J4  L !L !	 $1<X!Y##E!#D 54 &44r  c                     SS/nU H<  nU R                  US9   SUS    SUS    S3nS	nU R                  X4S
S9  S S S 5        M>     g ! , (       d  f       MP  = f)Nr`  rm  )rm  r`  )duprc  r   rw  r   ro  z;Cannot apply both @getter and @setter to the same function!ri   r   r  )rU   dup_annotationsr|  r   r<  s        r2   2test_getter_and_setter_disallowed_on_same_functionCClinicParserTest.test_getter_and_setter_disallowed_on_same_functionC	  sy    13IJ"C#& VH VH 	 "_##E!#D '& #&&s   "A
A	c                     S H3  nU R                  US9   SU S3nSnU R                  X#SS9  S S S 5        M5     g ! , (       d  f       MG  = f)Nr{  rn  z2
                    module m
                    z,
                    m.func
                z#@getter and @setter must be methodsr`   r   r  )rU   ra  r   r<  s       r2   test_getset_no_class%ClinicParserTest.test_getset_no_classQ	  sZ    .J4L !
 "G##E!#D 54 /44s	   ;
A
	c                 ,    SnSnU R                  X!SS9  g )NzCalled @coexist twicezY
            module m
            @coexist
            @coexist
            m.fn
        r`   r   rj   r   s      r2   test_duplicate_coexist'ClinicParserTest.test_duplicate_coexist\	  s#    % 	Eq1r4   c                   ^ U R                  S5      nUR                  S   nUR                  mU4S jnSSS.SSS.SS	S.S
S	S.4nU H  nUR                  5       u  pgU R	                  XgS9   U" U5      nU R                  XxR                  5        UR                  SS9n	U(       a  U R                  SU	5        OU R                  SU	5        UR                  S	S9n
U R                  SU
5        S S S 5        M     g ! , (       d  f       M  = f)Nz
            module foo
            foo.func
                fn: object
                k: float
                i: float(unused=True)
                /
                *
                flag: bool(unused=True) = False
        r   c                 "   > TU    R                   $ rE   r  )rx  paramss    r2   r5  4ClinicParserTest.test_unused_param.<locals>.<lambda>s	  s    &*..r4   rx  F)r  unusedkiTr3  )	in_parser	Py_UNUSED)
rT   r  r  valuesr   r<   r  simple_declarationr   r   )rU   r   sigr$  rp  paramr  r  r  declparser_declr  s              @r2   test_unused_param"ClinicParserTest.test_unused_paramf	  s	   

 	 	 q!.U+E*D)t,	
 E <<>LD47J  2 ++e+<MM+t4$$[$7  22T2B  k: 87 77s   ,B C99
D	c                     U R                  [        [        5      S5        U R                  [        [        5      S5        [        R
                  " 5        nSnU R                  [        U5       n[        USSS9  S S S 5        WR                  nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  5       S5        S S S 5        g ! , (       d  f       N{= f! , (       d  f       g = f)Nz<Unspecified>z<Null>zThe igloos are meltingz	clown.txtE   )r+   line_numberr.   )r<   r  r   r   r   r   r;   r   r   r=   r+   r6   r   )rU   r   rA   rB   r  s        r2   test_scaffolding!ClinicParserTest.test_scaffolding	  s    k*O<dX. $$&&-F''V<VkrB =,,CS\\;7SZZ,V__.3 '&<< '&s%   C?-C.9A,C?.
C<	8C??
Dc                     Sn[         R                  " 5        nU R                  U5        S S S 5        [        S5      nU R	                  WR                  5       U5        g ! , (       d  f       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: 'ü', 'á', 'ß'

        )r   r   rT   r   r<   r   )rU   r   r   r   s       r2   %test_non_ascii_character_in_docstring6ClinicParserTest.test_non_ascii_character_in_docstring	  s]     $$&&JJu '    	*H5 '&s   A
A,c                 ,    SnSnU R                  X!SS9  g )NzIllegal C identifier: 17azS
            module test
            test.fn
                a as 17a: int
        r`   r   rj   r   s      r2   test_illegal_c_identifier*ClinicParserTest.test_illegal_c_identifier	  s#    )
 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz5'__len__' is a special method and cannot be convertedz9
            class T "" ""
            T.__len__
        r   r   rj   r   s      r2   "test_cannot_convert_special_method3ClinicParserTest.test_cannot_convert_special_method	  s#    E 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz@You can't specify py_default without specifying a default value!zE
            fn
                a: object(py_default='NULL')
        r   r   rj   r   s      r2   -test_cannot_specify_pydefault_without_default>ClinicParserTest.test_cannot_specify_pydefault_without_default	  s#    P 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz"Vararg can't take a default value!z=
            fn
                *args: object = None
        r   r   rj   r   s      r2   %test_vararg_cannot_take_default_value6ClinicParserTest.test_vararg_cannot_take_default_value	  s#    2 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )NzCint_converter: default value 2.5 for field 'a' is not of type 'int'z5
            fn
                a: int = 2.5
        r   r   rj   r   s      r2   #test_default_is_not_of_correct_type4ClinicParserTest.test_default_is_not_of_correct_type	  s%    & 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz%'fhi' is not a valid legacy converterz1
            fn
                a: 'fhi'
        r   r   rj   r   s      r2   test_invalid_legacy_converter.ClinicParserTest.test_invalid_legacy_converter	  s#    5 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz+Parent class or module 'baz' does not existz3
            module m
            baz.func
        r   r   rj   r   s      r2   *test_parent_class_or_module_does_not_exist;ClinicParserTest.test_parent_class_or_module_does_not_exist	  s#    ; 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz'You can't have two parameters named 'a'za
            module m
            m.func
                a: int
                a: float
        ri   r   rj   r   s      r2   test_duplicate_param_name*ClinicParserTest.test_duplicate_param_name	  r  r4   c                 ,    SnSnU R                  X!SS9  g )Nz+Parameter 'module' requires a custom C namezM
            module m
            m.func
                module: int
        r`   r   rj   r   s      r2   !test_param_requires_custom_c_name2ClinicParserTest.test_param_requires_custom_c_name	  s#    ;
 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz0Function 'func' has a ']' without a matching '['zY
            module m
            m.func
                ]
            docstring
        r`   r   rj   r   s      r2   )test_state_func_docstring_assert_no_group:ClinicParserTest.test_state_func_docstring_assert_no_group	  s#    @ 	Eq1r4   c                 ,    SnSnU R                  X!SS9  g )Nz4Docstring for 'm.func' does not have a summary line!z_
            module m
            m.func
            docstring1
            docstring2
        ri   r   rj   r   s      r2   $test_state_func_docstring_no_summary5ClinicParserTest.test_state_func_docstring_no_summary
  s#    D 	Eq1r4   c                 ,    SnSnU R                  X!SS9  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   rj   r   s      r2   1test_state_func_docstring_only_one_param_templateBClinicParserTest.test_state_func_docstring_only_one_param_template
  s#    O	 	Eq1r4   c                     U R                  SSSS9nUR                  S   nU R                  UR                  [        R
                  R                  5        g )Nz}
            module m
            class m.C "PyObject *" ""
            m.C.meth
                cls: defining_class
        ri   r`   r  cls)r  r  r<   rb  r`  r   rn  r  s      r2   test_kind_defining_class)ClinicParserTest.test_kind_defining_class
  sU    && (
 "#1 ' 6 &!2!2!B!BCr4   c                 ,    SnSnU R                  X!SS9  g )Nz?A 'defining_class' parameter cannot be defined at module level.zU
            module m
            m.func
                cls: defining_class
        r`   r   rj   r   s      r2   ,test_disallow_defining_class_at_module_level=ClinicParserTest.test_disallow_defining_class_at_module_level)
  s#    O
 	Eq1r4   r5  )r`   r   ){r/  r0  r1  r2  rT   r  rW   r  r  r  r  r  r  r  r  r  r  r   r%  r(  r-  r2  r5  r:  r=  r@  rD  rG  rJ  rP  rT  rW  rZ  r]  rd  rh  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r   r#  r&  r)  r,  r/  r9  r<  rA  rE  rH  rK  rN  rQ  rT  rW  rZ  rf  rj  rq  rt  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r4  r5  r4   r2   r  r    sg   ! !%TN
/
	,,
:*
*2*: R2	2	32:8,0@<'24O(((	%
%(TL\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2r4   r  c                       \ 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 rS rS rS rS rS rS rSrg)ClinicExternalTesti3
  Nc                     [        U 5        g rE   )rN   r\   s    r2   r]   ClinicExternalTest.setUp6
  s
    %r4   c                    [         R                  " 5        n[         R                  " 5        nU R                  [        5       n[
        R                  " U5        S S S 5        S S S 5        S S S 5        WR                  5       WR                  5       WR                  R                  4$ ! , (       d  f       NS= f! , (       d  f       N\= f! , (       d  f       Ne= frE   )
r   r   rM  rz  
SystemExitr   mainr   r=   r@   )rU   r,  r~   rl   rB   s        r2   
run_clinicClinicExternalTest.run_clinic9
  s    ##%##%j)RKK * & &
 ||~s||~r||/@/@@@ *) &% &%s:   CB7B&B7!C&
B40B77
C	C
Cc                     U R                   " U6 u  p#nUS:w  a&  U R                  SR                  SU< 3X#/5      5        U R                  US5        U$ )Nr   r   zUnexpected failure: args=r.   )r  r   joinr<   rU   r,  r~   rl   r@   s        r2   expect_success!ClinicExternalTest.expect_successB
  sR    $/$19IIdii#=w!? JKLb!
r4   c                 Z    U R                   " U6 u  p#nU R                  USSU< 35        X#4$ )Nr   zUnexpected success: args=)r  rc   r  s        r2   rW   !ClinicExternalTest.expect_failureI
  s5    $/$D!'AD7%CDxr4   c                    Sn[         R                  " U5      n[        USS9 nUR                  5       nS S S 5        U R	                  [
        [        5        U R                  SS[        U5      nU R                  US5        [        [        SS9 nUR                  5       nS S S 5        U R                  WW5        g ! , (       d  f       N= f! , (       d  f       N2= f)Nzclinic.test.cutf-8encoding-f-or.   )	r   findfileopenreadrK   r   r   r  r<   )rU   CLINIC_TESTsourcer  orig_contentsr~   new_contentss          r2   test_external ClinicExternalTest.test_externalN
  s    %!!+.&7+qFFHM , 	'!!$ff=b!&7+q668L , 	}5 ,+ ,+s   B:C:
C
Cc                    [        S5      n[        R                  " 5        n[        R                  R                  US5      n[        USSS9 nUR                  U5        S S S 5        [        R                  " U5      R                  nU R                  U5        [        R                  " U5      R                  nS S S 5        U R                  WW5        g ! , (       d  f       Nz= f! , (       d  f       N2= f)Nz
            /*[clinic input]
            [clinic start generated code]*/
            /*[clinic end generated code: output=da39a3ee5e6b4b0d input=da39a3ee5e6b4b0d]*/
        rZ   wr  r  )r   r   temp_dirr  r  r  r  writestatst_mtime_nsr  r<   )rU   r@   tmp_dirrx  r  	pre_mtime
post_mtimes          r2   test_no_change!ClinicExternalTest.test_no_change^
  s       
 !Wgx0Bb#0A 1//I#00J " 	J/ 10 "!s$   ,C$CAC$
C!	C$$
C2c                    [        S5      nSn[        R                  " 5        n[        R                  R                  US5      n[        USSS9 nUR                  U5        S S S 5        U R                  U5      u  pgU R                  UR                  U5      U< SU< 35        U R                  SU5      nU R                  US	5        S
n	[        USS9 nUR                  5       n
S S S 5        U R                  W
R                  U	5      X45        S S S 5        g ! , (       d  f       N= f! , (       d  f       NJ= f! , (       d  f       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]*/
        zChecksum mismatch! Expected 'bogus', computed '2ed19'. Suggested fix: remove all generated code including the end marker, or use the '-f' option.
rZ   r  r  r  z does not end with r  r.   zP/*[clinic end generated code: output=0acbef4794cb933e input=9543a8d2da235301]*/
)r   r   r  r  r  r  r  r  rW   r   endswithr  r<   r  )rU   invalid_inputfail_msgr  rx  r  _rl   r~   checksumr   s              r2   test_cli_force!ClinicExternalTest.test_cli_forcer
  s&    
  
( 	
 !Wgx0Bb#0A& 1
 ((,FAOOCLL2"g%8EG %%dB/CS"%F  b7+qFFH	 ,OOI..x8&13) "!00  ,+% "!s<   ,D:D!A3D:D)%*D:
D&	"D:)
D7	3D::
Ec                    [        S5      nSnSnSnS n[        R                  " 5        nU" X6U5        U" XFU5        [        R                  R                  US5      n[        R                  " US9 nU" X8U5        U R                  SS	S
U5      n	S S S 5        U HL  n
U R                  U
S9   [        R                  R                  Xj5      nU R                  UW	5        S S S 5        MN     U HL  n
U R                  U
S9   [        R                  R                  Xj5      nU R                  UW	5        S S S 5        MN     U HL  n
U R                  U
S9   [        R                  R                  Xz5      nU R                  UW	5        S S S 5        MN     S S S 5        g ! , (       d  f       GN= f! , (       d  f       GM  = f! , (       d  f       M  = f! , (       d  f       M  = f! , (       d  f       g = f)NR
            /*[clinic input]
            [clinic start generated code]*/
        pass)file1.cfile2.c)zfile1.pyzfile2.pyc                     U  HG  n[         R                  R                  X5      n[        USSS9 nUR	                  U5        S S S 5        MI     g ! , (       d  f       M[  = f)Nr  r  r  )r  r  r  r  r  )filessrcdirr@   rx  r  r  s         r2   create_files6ClinicExternalTest.test_cli_make.<locals>.create_files
  sF    ww||F/$g6!GGDM 76 66s   A
A		externals)r  -v--make--srcdirr[   )
r   r   r  r  r  r  r  r   r   r   )rU   c_codepy_codec_filespy_filesr  r  ext_pathr  r~   r+   r  s               r2   test_cli_make ClinicExternalTest.test_cli_make
  s      &)	" !W62G4 ww||G[9H##2iW8 ))$*gN	 3 $\\8\477<<:DMM$, 54 $ %\\8\477<<:D$$T3/ 54 %
 $\\8\477<<;D$$T3/ 54 $/ "! 32 54 54
 541 "!sl   AG1FG+2F( G=2F;/ G2GG
F%	 G(
F82	G;
G
G
GG
G-c                 r   [        S5      n[        R                  " SS9 nS HG  n[        R                  R                  X#5      n[        USSS9 nUR                  U5        S S S 5        MI     U R                  SS	S
US[        R                  R                  US5      S[        R                  R                  US5      SS5
      nU R                  SU5        U R                  SU5        U R                  SU5        U R                  SU5        S S S 5        g ! , (       d  f       GM  = f! , (       d  f       g = f)Nr  F)quiet)r   r  file3.cfile4.cr  r  r  r  r	  r
  z	--excluder  z	./file3.cr  r   r  )r   r   r  r  r  r  r  r  r  r   r   )rU   r@   r  rx  r  r  r~   s          r2   test_cli_make_exclude(ClinicExternalTest.test_cli_make_exclude
  s      e,@ww||G0$g6!GGDM 76 A %%h
GRWW\\'9=RWW\\';?YC MM)S)Y,Y,Y,- -, 76	 -,s$   0D(D"B*D(
D%	D((
D6c                 r   [         R                  " 5        n[        R                  R	                  US5      n[        USSS9 nUR                  S5        S S S 5        U R                  SU5      nU R                  UR                  5       U5        S S S 5        g ! , (       d  f       NI= f! , (       d  f       g = f)NrZ   r  r  r  r.   r  )
r   r  r  r  r  r  r  r  r<   r7   )rU   r  rx  r  r~   s        r2   test_cli_verbose#ClinicExternalTest.test_cli_verbose
  s    !Wgx0Bb#0A 1%%dB/CSYY["- "!00 "!s#   ,B(B:B(
B%	!B((
B6c                 J    U R                  S5      nU R                  SU5        g )Nz-hzusage: clinic.py)r  r   )rU   r~   s     r2   test_cli_help ClinicExternalTest.test_cli_help
  s!    !!$'(#.r4   c           	      .   [        S5      nSn[        S5      nU R                  S5      nU R                  UR                  U5      U5        U R                  UR	                  U5      U5        UR                  U5      nUR                  U5      nUR                  S5      n[        X%5       HV  u  pgUR                  5       nU R                  US9   U R                  UR                  U5      SU< SU< 35        S S S 5        MX     g ! , (       d  f       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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  zexpected converter z, got )r   r  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>OI;;=D	2OOI.))fTHE 32  ?22s   *D
D	c                 R    U R                  SS5      u  pSnU R                  X25        g )Nr9  rZ   z:can't specify --converters and a filename at the same timerW   r   rU   r  rl   msgs       r2   %test_cli_fail_converters_and_filename8ClinicExternalTest.test_cli_fail_converters_and_filename7  s'    $$^X>Jcr4   c                 L    U R                  5       u  pU R                  SU5        g )Nzno input filesrE  )rU   r  rl   s      r2   test_cli_fail_no_filename,ClinicExternalTest.test_cli_fail_no_filename<  s!    $$&&,r4   c                 V    U R                  SSSS5      u  pSnU R                  X25        g )Nr  out.czinput.czmoreinput.cz+error: can't use -o with multiple filenamesrE  rF  s       r2   'test_cli_fail_output_and_multiple_files:ClinicExternalTest.test_cli_fail_output_and_multiple_files@  s+    $$T7I}M;cr4   c                     SnS HA  nU R                  US9   U R                  " S/UQ76 u  p4U R                  X5        S S S 5        MC     g ! , (       d  f       MU  = f)Nz%can't use -o or filenames with --make))r  rN  )z
filename.c)optsr	  )r   rW   r   )rU   rG  rR  r  rl   s        r2   )test_cli_fail_filename_or_output_and_make<ClinicExternalTest.test_cli_fail_filename_or_output_and_makeE  sQ    54D4(,,X==c' )( 5((s   'A
A	c                 T    U R                  SSS5      u  pSnU R                  X25        g )Nr	  r
  r.   z-error: --srcdir must not be empty with --makerE  rF  s       r2   !test_cli_fail_make_without_srcdir4ClinicExternalTest.test_cli_fail_make_without_srcdirL  s)    $$Xz2>=cr4   c                    [        S5      nSn[        S5      n[        R                  " 5        n[        R                  R                  US5      n[        R                  R                  US5      n[        USSS9 nUR                  U5        S S S 5        [        USSS9 nUR                  S	5        S S S 5        U R                  U5      u  pS
U< S3n
U R                  X5        U R                  SU5      n[        USS9 nUR                  5       nU U 3nU R                  X5        S S S 5        [        USS9 nUR                  5       nU R                  X5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nm= f! , (       d  f       NJ= f! , (       d  f       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]*/
        rZ   ztest.c.hr  r  r  r.   zModified destination file z; not overwriting!r  )r   r   r  r  r  r  r  r  rW   r   r  r  r<   )rU   r   expected_checksum_lineexpected_outputr  in_fnout_fnr  r  rl   expected_errdataexpected_blocks                r2   test_file_dest!ClinicExternalTest.test_file_destQ  s     B 	 ! " & !WGGLL(3EWW\\':6FeS73q 4fcG4 5 ((/FA8
 C/ /LMM,,##D%0Aeg.!vvx$)7+A*B!C  6 / fw/1vvx  7 0' "! 4344 /. 0/' "!sm   AF1:E-F1E>1AF1 (F(F1:"F F1-
E;	7F1>
F	F1
F	F1 
F.	*F11
F?r5  )r/  r0  r1  r2  r3  r]   r  r  rW   r  r  r  r  r  r  r  rB  rH  rK  rO  rS  rV  r`  r4  r5  r4   r2   r  r  3
  sf    G&A
6 0(&3P)0V-:./GR 
- 
( 
68r4   r  z_testclinic is missingc                      \ rS rSr\" 5       R                  S \" \5       5       5        S rSS.S jr	SS.S j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 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% r(S& r)S' r*S( r+S) r,S* r-S+ r.S, r/S- r0S. r1S/ r2S0 r3S1 r4S2 r5S3 r6S4 r7S5 r8S6 r9S7 r:S8 r;S9 r<S: r=S; r>S< r?S= r@S> rAS? rBS@ rCSA rDSB rESC rFSD rGSE rHSF rISG rJSH rKSI rLSJ rMSK rNSL rOSM rPSN rQSO rRSP rSSQ rTSR rUSS rVST rWSU rXSV rYSW rZSX r[SY r\SZ r]S[ r^S\ r_S] r`S^rag)_ClinicFunctionalTesti  c              #   t   #    U  H.  oR                  S 5      (       d  M  U[        [        U5      4v   M0     g7ftest_N)r   getattr	ac_tester.0r  s     r2   	<genexpr>ClinicFunctionalTest.<genexpr>  s/      L .//'2J 5T79d34 .   88c                (   U R                  [        U5       nU" U0 UD6[        R                  " 5       R                  pvS S S 5        U R                  WR                  [        5        U R                  UR                  W5        g ! , (       d  f       NK= frE   )	assertWarnsRegexDeprecationWarningr	  	_getframef_linenor<   r+   __file__r6   )rU   r  rx  r,  kwdsrB   r  r6   s           r2   
check_deprClinicFunctionalTest.check_depr  sl    ""#5u= D)D)3==?+C+Cv > 	h/F+ >=s   'B
BNr  c                   Uc2  UR                   n[        U[        5      (       a  UR                   SU 3nS[        R
                  " U5       SU S3nU R                  " Xb/UQ70 UD6  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  r  typer0  r9   r:   ru  )rU   pnamesrx  r  r,  rt  r  s          r2   check_depr_star$ClinicFunctionalTest.check_depr_star  ss    <??D"d##--$0I		$  @ IDE 	
 	1D1D1r4   c                    Uc2  UR                   n[        U[        5      (       a  UR                   SU 3nSU;   a  SOSnSU SU S[        R
                  " U5       SU SU S3nU R                  " Xr/UQ70 UD6  g )	Nrx   r  r.   zPassing keyword argumentz to z\(\) is deprecated. Parameterz- will become positional-only in Python 3\.14.ry  )rU   r{  rx  r  r,  rt  plr  s           r2   check_depr_kwd#ClinicFunctionalTest.check_depr_kwd  s    <??D"d##--$06MSr't1VHD		$  =bT6( K<= 	
 	1D1D1r4   c                 x   U R                  [        5         [        R                  " 5         S S S 5        U R	                  [        R                  " SS5      S5        U R	                  [        R                  " / S5      / S45        U R	                  [        R                  " S5      S5        g ! , (       d  f       N= f)Nr   r`   r   r`   zwhatever class)r   N)rz  	TypeErrorrh  objects_converterr<   r\   s    r2   test_objects_converter+ClinicFunctionalTest.test_objects_converter  s    y)'') *44Q:FC44R9IJRQaLbc44Q7C	 *)s   B++
B9c                     U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " S5      S5        g ! , (       d  f       N5= f)Nr      BytesObject)r  )rz  r  rh  bytes_object_converterr<   r\   s    r2   test_bytes_object_converter0ClinicFunctionalTest.test_bytes_object_converter  sH    y),,Q/ *99.IK\] *)   A
A*c                     U R                  [        5         [        R                  " S5        S S S 5        [	        S5      nU R                  [        R                  " U5      U45        g ! , (       d  f       NA= f)Nr   s   ByteArrayObject)rz  r  rh  byte_array_object_converter	bytearrayr<   )rU   byte_arrs     r2    test_byte_array_object_converter5ClinicFunctionalTest.test_byte_array_object_converter  sT    y)11!4 */0>>xH8+V *)s   A((
A6c                     U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " S5      S5        g ! , (       d  f       N5= f)Nr   r3  )r3  )rz  r  rh  unicode_converterr<   r\   s    r2   test_unicode_converter+ClinicFunctionalTest.test_unicode_converter  sG    y)''* *44Y?N *)r  c                    U R                  [        5         [        R                  " SSS5        S S S 5        U R	                  [        R                  " 5       S5        U R	                  [        R                  " S/ S5      S5        U R	                  [        R                  " SSS	0S
5      S5        g ! , (       d  f       N= f)NFz	not a int)TTTr.   r  )FFT)z	not emptyr   r`   r   )TTF)rz  r  rh  bool_converterr<   r\   s    r2   test_bool_converter(ClinicFunctionalTest.test_bool_converter  s    y)$$UE;? *1135GH11"b!<>RS11.1a&!LNab	 *)s   B//
B=c                     U R                  [        R                  " 5       S5        U R                  [        R                  " SSSS5      S5        g )N)r   r   rv  FT)r   r   r   r   )r<   rh  bool_converter_c_defaultr\   s    r2   test_bool_converter_c_default2ClinicFunctionalTest.test_bool_converter_c_default  s@    ;;=~N;;E4PTU%	'r4   c                     U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " S5        S S S 5        / SQn[	        S U 5       5      nU R                  [        R                  " 5       U5        / SQn[	        S U 5       5      nU R                  [        R                  " U6 U5        g ! , (       d  f       N= f! , (       d  f       N= f)Nr   s   ab)   A         	   
            "   '   ?   \       c              3   8   #    U  H  n[        U5      v   M     g 7frE   ordrj  r1   s     r2   rk  ;ClinicFunctionalTest.test_char_converter.<locals>.<genexpr>       /AQ   )   1   2   3   4   5   6   7   8   9   0   a   b   c   dc              3   8   #    U  H  n[        U5      v   M     g 7frE   r  r  s     r2   rk  r    r  r  )rz  r  rh  char_convertertupler<   )rU   charsr   s      r2   test_char_converter(ClinicFunctionalTest.test_char_converter  s    y)$$Q' *y)$$U+ *r///113X>d///11598D *)))s   C
C/
C,/
C=c                 L   SSK Jn  U R                  [        5         [        R
                  " S5        S S S 5        U R                  [        5         [        R
                  " US-   5        S S S 5        U R                  [        5         [        R
                  " SUS-   5        S S S 5        U R                  [        5         [        R
                  " / 5        S S S 5        U R                  [        R
                  " 5       S5        U R                  [        R
                  " SSUS-   5      S5        U R                  [        R
                  " SSUS-   S-  S-   5      S	5        g ! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)
Nr   )	UCHAR_MAXr   r      "   8   r   r   r   ri   {   r   r   r  )	_testcapir  rz  OverflowErrorrh  unsigned_char_converterr  r<   )rU   r  s     r2   test_unsigned_char_converter1ClinicFunctionalTest.test_unsigned_char_converter  s   '}---b1 .}---i!m< .}---aQ? .y)--b1 *::<lK::1aQOQZ[::1a)a-STATWZAZ[]hi .-----))/   E E2F?F 
E/2
F
F
F#c                 V   SSK JnJn  U R                  [        5         [
        R                  " US-
  5        S S S 5        U R                  [        5         [
        R                  " US-   5        S S S 5        U R                  [        5         [
        R                  " / 5        S S S 5        U R                  [
        R                  " S5      S5        U R                  [
        R                  " S5      S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f)Nr   )SHRT_MINSHRT_MAXr   .r    )r  )	r  r  r  rz  r  rh  short_converterr  r<   )rU   r  r  s      r2   test_short_converter)ClinicFunctionalTest.test_short_converter  s    0}-%%hl3 .}-%%hl3 .y)%%b) *22598D2248'B .---))s#   C8D	D8
D	
D
D(c                 L   SSK Jn  U R                  [        5         [        R
                  " S5        S S S 5        U R                  [        5         [        R
                  " US-   5        S S S 5        U R                  [        5         [        R
                  " SUS-   5        S S S 5        U R                  [        5         [        R
                  " / 5        S S S 5        U R                  [        R
                  " 5       S5        U R                  [        R
                  " SSUS-   5      S5        U R                  [        R
                  " SSUS-   S-  S-   5      S	5        g ! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)
Nr   )	USHRT_MAXr   r   r  r  ri   r  r  )	r  r  rz  r{  rh  unsigned_short_converterr  r  r<   )rU   r  s     r2   test_unsigned_short_converter2ClinicFunctionalTest.test_unsigned_short_converter  s   'z*..r2 +}-..y1}= .}-..q)a-@ .y)..r2 *;;=|L;;Aq)a-PR[\;;Aq9q=TUBUX[B[\^ij +*----))r  c                     SSK JnJn  U R                  [        5         [
        R                  " US-
  5        S S S 5        U R                  [        5         [
        R                  " US-   5        S S S 5        U R                  [        5         [
        R                  " SSS5        S S S 5        U R                  [        5         [
        R                  " / 5        S S S 5        U R                  [
        R                  " 5       S5        U R                  [
        R                  " SSS5      SS[        S5      45        g ! , (       d  f       GN
= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   )INT_MININT_MAXr   r`   ri   )r  r  -   3)
r  r  r  rz  r  rh  r   r  r<   r  )rU   r  r  s      r2   test_int_converter'ClinicFunctionalTest.test_int_converter
  s    .}-##GaK0 .}-##GaK0 .y)##Aq!, *y)##B' *002LA00As;aCH=MN .---))))s/   D;EEE/;
E

E
E,/
E=c                 L   SSK Jn  U R                  [        5         [        R
                  " S5        S S S 5        U R                  [        5         [        R
                  " US-   5        S S S 5        U R                  [        5         [        R
                  " SUS-   5        S S S 5        U R                  [        5         [        R
                  " / 5        S S S 5        U R                  [        R
                  " 5       S5        U R                  [        R
                  " SSUS-   5      S5        U R                  [        R
                  " SSUS-   S-  S-   5      S	5        g ! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)
Nr   )UINT_MAXr   r   r  r  ri   r  r  )	r  r  rz  r{  rh  unsigned_int_converterr  r  r<   )rU   r  s     r2   test_unsigned_int_converter0ClinicFunctionalTest.test_unsigned_int_converter  s   &z*,,R0 +}-,,X\: .}-,,Q1= .y),,R0 *99;\J99!Q1MyY99!QAQR@RUX@XY[fg +*----))r  c                 T   SSK JnJn  U R                  [        5         [
        R                  " US-
  5        S S S 5        U R                  [        5         [
        R                  " US-   5        S S S 5        U R                  [        5         [
        R                  " / 5        S S S 5        U R                  [
        R                  " 5       S5        U R                  [
        R                  " S5      S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f)Nr   )LONG_MINLONG_MAXr   r  r  r  )	r  r  r  rz  r  rh  long_converterr  r<   )rU   r  r  s      r2   test_long_converter(ClinicFunctionalTest.test_long_converter%  s    0}-$$X\2 .}-$$X\2 .y)$$R( *113U;11%8(C .---))#   C7DD7
D
D
D'c                 L   SSK Jn  U R                  [        5         [        R
                  " S5        S S S 5        U R                  [        5         [        R
                  " US-   5        S S S 5        U R                  [        5         [        R
                  " SUS-   5        S S S 5        U R                  [        5         [        R
                  " / 5        S S S 5        U R                  [        R
                  " 5       S5        U R                  [        R
                  " SSUS-   5      S5        U R                  [        R
                  " SSUS-   S-  S-   5      S	5        g ! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)
Nr   )	ULONG_MAXr   r   r  r  ri   r  r  )	r  r  rz  r{  rh  unsigned_long_converterr  r  r<   )rU   r  s     r2   test_unsigned_long_converter1ClinicFunctionalTest.test_unsigned_long_converter0  s   'z*--b1 +}---i!m< .}---aQ? .y)--b1 *::<lK::1aQOQZ[::1a)a-STATWZAZ[]hi +*----))r  c                 T   SSK JnJn  U R                  [        5         [
        R                  " US-
  5        S S S 5        U R                  [        5         [
        R                  " US-   5        S S S 5        U R                  [        5         [
        R                  " / 5        S S S 5        U R                  [
        R                  " 5       S5        U R                  [
        R                  " S5      S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N|= f)Nr   )	LLONG_MIN	LLONG_MAXr   r  r  r  )	r  r  r  rz  r  rh  long_long_converterr  r<   )rU   r  r  s      r2   test_long_long_converter-ClinicFunctionalTest.test_long_long_converter>  s    2}-)))a-8 .}-)))a-8 .y)))"- *668%@66u=xH .---))r  c                 L   SSK Jn  U R                  [        5         [        R
                  " S5        S S S 5        U R                  [        5         [        R
                  " US-   5        S S S 5        U R                  [        5         [        R
                  " SUS-   5        S S S 5        U R                  [        5         [        R
                  " / 5        S S S 5        U R                  [        R
                  " 5       S5        U R                  [        R
                  " SSUS-   5      S5        U R                  [        R
                  " SSUS-   S-  S-   5      S	5        g ! , (       d  f       GN4= f! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f)
Nr   )
ULLONG_MAXr   r   r  r  ri   r  r  )	r  r	  rz  r{  rh  unsigned_long_long_converterr  r  r<   )rU   r	  s     r2   !test_unsigned_long_long_converter6ClinicFunctionalTest.test_unsigned_long_long_converterI  s    (z*2226 +}-22:>B .}-221j1nE .y)2226 *??A<P??1jSTnUW`a??1zTU~YZFZ]`F`acno +*----))r  c                 X   SSK JnJn  U R                  [        5         [
        R                  " US-
  5        S S S 5        U R                  [        5         [
        R                  " US-   5        S S S 5        U R                  [        5         [
        R                  " / 5        S S S 5        U R                  [
        R                  " 5       S5        U R                  [
        R                  " SSS 5      S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N~= f)Nr   PY_SSIZE_T_MINPY_SSIZE_T_MAXr   r  r`   r   r`   r  )	r  r  r  rz  r  rh  py_ssize_t_converterr  r<   rU   r  r  s      r2   test_py_ssize_t_converter.ClinicFunctionalTest.test_py_ssize_t_converterW  s    <}-**>A+=> .}-**>A+=> .y)**2. *779<H771dCZP .---))s#   C9D
D9
D

D
D)c                    SSK JnJn  U R                  [        5         [
        R                  " / 5        S S S 5        U R                  [
        R                  " 5       S5        U R                  [
        R                  " SSS 5      S5        U R                  [
        R                  " X"S-   US-   5      X"U45        U R                  [
        R                  " XS-
  US-
  5      XU45        g ! , (       d  f       N= f)Nr   r  r  r   r`   r  i  )r  r  r  rz  r  rh  slice_index_converterr<   r  s      r2   test_slice_index_converter/ClinicFunctionalTest.test_slice_index_converterb  s    <y)++B/ *88:LI88AtDjQ88Z[I[]knr]rs(.I	K88Z[I[]knr]rs(.I	K *)s   C))
C7c                 b   U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " / 5        S S S 5        U R                  [        R                  " 5       S5        g ! , (       d  f       Nh= f! , (       d  f       NE= f)Nr   r  )rz  r{  rh  size_t_converterr  r<   r\   s    r2   test_size_t_converter*ClinicFunctionalTest.test_size_t_converterm  sm    z*&&r* +y)&&r* *335u=	 +*))s   B
B 
B 
B.c                 $   U R                  [        5         [        R                  " / 5        S S S 5        U R	                  [        R                  " 5       S5        U R	                  [        R                  " S5      S5        g ! , (       d  f       NZ= fN)g      )@      ࿩r   )rz  r  rh  float_converterr<   r\   s    r2   test_float_converter)ClinicFunctionalTest.test_float_convertert  s`    y)%%b) *224g>2248'B *)   B
Bc                 $   U R                  [        5         [        R                  " / 5        S S S 5        U R	                  [        R                  " 5       S5        U R	                  [        R                  " S5      S5        g ! , (       d  f       NZ= fr  )rz  r  rh  double_converterr<   r\   s    r2   test_double_converter*ClinicFunctionalTest.test_double_converterz  s`    y)&&r* *335w?33D97C *)r%  c                    U R                  [        5         [        R                  " / 5        S S S 5        U R	                  [        R                  " [        SS5      5      [        SS5      45        U R	                  [        R                  " [        S5      5      [        S5      45        U R	                  [        R                  " S5      S5        U R	                  [        R                  " S5      S5        g ! , (       d  f       N= f)Nr   r`   z-1-2jr   r!  
   )r+  )rz  r  rh  py_complex_converterr<   complexr\   s    r2   test_py_complex_converter.ClinicFunctionalTest.test_py_complex_converter  s    y)**2. *771FQRTUHXY778HIGT[L\K^_77=wG77;UC *)s   C66
Dc                    U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " SSS5        S S S 5        U R                  [        5         [        R                  " SSS5        S S S 5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS	5      S
5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f)Nr   ro  rp  r1      b br  rs  r  c cro  rp  r2  )rz  r  rh  r   r{  r<   r\   s    r2   test_str_converter'ClinicFunctionalTest.test_str_converter  s    y)##A& *y)##Cc2 *z*##C#6 +00dC@/R00dDA?S00dFCEWX *)))**s#   D
D+ D<
D(+
D9<
E
c                    U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " SSS5      S5        U R                  [        5         [        R                  " SSS5        S S S 5        U R	                  [        R                  " SS[        [        S5      /5      5      S5        U R	                  [        R                  " SS[        [        S5      S[        S5      /5      5      S	5        U R	                  [        R                  " SSS
5      S	5        g ! , (       d  f       GN= f! , (       d  f       N= f)Nr   ro  rp  r1   rs  r1  r  r   r3  s   c c)rz  r  rh  str_converter_encodingr<   r  r  r\   s    r2   test_str_converter_encoding0ClinicFunctionalTest.test_str_converter_encoding  s   y),,Q/ *99#sCH/Zy),,S'3? *99#tYPSTWPXzEZ[]lm99#tYPSTWPXZ[]`ad]eOfEgh-	/99#tYOQef *) *)s   D=2E=
E
Ec           	          U R                  [        5         [        R                  " SS5        S S S 5        U R	                  [        R                  " S[        / SQ5      5      S5        g ! , (       d  f       NA= f)Nro  rp  abcr   r`   ri   )s   abcs   )rz  r  rh  py_buffer_converterr<   r  r\   s    r2   test_py_buffer_converter-ClinicFunctionalTest.test_py_buffer_converter  sQ    y)))#s3 *66ui	>RSUno *)s   A))
A7c                     U R                  [        R                  " SS5      S5        U R                  [        R                  " SSS9S5        U R                  [        R                  " SSS9S5        g )Nr   r`   r  rp  rr  )r<   rh  keywordsr\   s    r2   test_keywords"ClinicFunctionalTest.test_keywords  sY    ++Aq16:++A3V<++a15v>r4   c                 $   U R                  [        5         [        R                  " SS5        S S S 5        U R	                  [        R                  " SSS9S5        U R	                  [        R                  " SSS9S5        g ! , (       d  f       NY= f)Nr   r`   rA  r  rr  )rz  r  rh  keywords_kwonlyr<   r\   s    r2   test_keywords_kwonly)ClinicFunctionalTest.test_keywords_kwonly  sh    y)%%a+ *221:FC22Q!<fE *)s   B
Bc                    U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSS9S5        U R                  [        R                  " SSSS9S5        U R                  [        R                  " SSS	9S
5        U R                  [        R                  " SSSS9S5        g )Nr   r   NNr`   r   r`   Nri   r<  rA  r1   ro  r1   r   Nri   rs  )r<   rh  keywords_optr\   s    r2   test_keywords_opt&ClinicFunctionalTest.test_keywords_opt  s    //2OD//15|D//1a8)D//Q7F//1:IF//!q9<H//!qA>	Jr4   c           	      Z   U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        U R                  [        5         [        R                  " SSS5        S S S 5        U R                  [        R                  " SSS9S5        U R                  [        R                  " SSSS9S5        U R                  [        R                  " SSS	9S
5        U R                  [        R                  " SSSSS9S5        g ! , (       d  f       N= f)Nr   r   NNNr`   r   r`   NNri   rA  rL  r   r`   ri   NrM  )r   Nri   Nr  ro  rp  r1   dr   r`   ri   r  )r<   rh  keywords_opt_kwonlyrz  r  r\   s    r2   test_keywords_opt_kwonly-ClinicFunctionalTest.test_keywords_opt_kwonly  s    66q9;PQ66q!<>PQy)))!Q2 *66qA>@RS66q!qA?S66a@BTU66a1JLY *)s   #D
D*c                    U R                  [        R                  " S5      S5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        R                  " SSS9S5        U R                  [        R                  " SSS9S5        U R                  [        R                  " SSSS	9S
5        g ! , (       d  f       N= f)Nr   rJ  r`   rA  rK  ri   rM  rN  rs  r<  )r<   rh  keywords_kwonly_optrz  r  r\   s    r2   test_keywords_kwonly_opt-ClinicFunctionalTest.test_keywords_kwonly_opt  s    66q9?Ky)))!Q/ *66qA>M66a@,O66a1EyQ	 *)s   C
Cc                    U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R	                  [        R                  " SS5      S5        U R	                  [        R                  " SSS9S5        g ! , (       d  f       N= f! , (       d  f       Nl= f)Nr   r`   rr  r  rA  )rz  r  rh  posonly_keywordsr<   r\   s    r2   test_posonly_keywords*ClinicFunctionalTest.test_posonly_keywords  s    y)&&q) *y)&&a0 *33Aq96B33A;VD *)))s   B5
C5
C
Cc                    U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R	                  [        R                  " SSS9S5        g ! , (       d  f       N= f! , (       d  f       Nx= f! , (       d  f       NV= f)Nr   r`   rr  rA  r  )rz  r  rh  posonly_kwonlyr<   r\   s    r2   test_posonly_kwonly(ClinicFunctionalTest.test_posonly_kwonly  s    y)$$Q' *y)$$Q* *y)$$qA. *11!q96B *)))))s#   C
C?C%
C
C"%
C3c                 >   U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " SSS5        S S S 5        U R                  [        5         [        R                  " SSSS9  S S S 5        U R	                  [        R                  " SSSS9S5        U R	                  [        R                  " SSSS9S5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f)Nr   r`   ri   rs  rL  r<  rp  r1   )rz  r  rh  posonly_keywords_kwonlyr<   r\   s    r2   test_posonly_keywords_kwonly1ClinicFunctionalTest.test_posonly_keywords_kwonly  s    y)--a0 *y)--aA6 *y)--Q!< *::1a1EyQ::1QGS *)))))s#   C,
C= D,
C:=
D
Dc           	         U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " SS5      S5        U R	                  [        R                  " SSS5      S5        U R	                  [        R                  " SSSS5      S5        U R	                  [        R                  " SSS9S5        U R	                  [        R                  " SSSS	9S5        U R                  [        5         [        R                  " SSSSS
9  S S S 5        U R	                  [        R                  " SSSSS9S5        g ! , (       d  f       GN/= f! , (       d  f       NH= f)Nr   r`   rT  ri   rU  r  rX  rA  rL  rV  rp  r1   rW  )rz  r  rh  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1a@/R771aC\R77Q?AST771BOTy)**Q!qA> *77Q!qI<X *) *)s   EE'
E$'
E5c           	         U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSSS5      S5        U R                  [        5         [        R                  " SSS	9  S S S 5        U R                  [        R                  " SSSS
9S5        U R                  [        R                  " SSSSS9S5        U R                  [        5         [        R                  " SSSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rS  r`   rT  ri   rU  r  rX  rA  rL  r1   rW  rV  )r<   rh  posonly_opt_keywords_optrz  r  r\   s    r2   test_posonly_opt_keywords_opt2ClinicFunctionalTest.test_posonly_opt_keywords_opt  s   ;;A>@UV;;AqACUV;;Aq!DoV;;Aq!QGVy)..qA6 *;;AqAFX;;AqAK\Zy)..a1B *)	 *) *)s   4E4E&
E#&
E4c           	         U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        U R	                  [        R                  " SSS9S5        U R	                  [        R                  " SSSS9S5        U R	                  [        R                  " SSSSS	9S
5        U R                  [        5         [        R                  " SSSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nr   r`   rA  rT  ri   ri  rU  r  rn  rX  rV  )rz  r  rh  posonly_kwonly_optr<   r\   s    r2   test_posonly_kwonly_opt,ClinicFunctionalTest.test_posonly_kwonly_opt  s    y)((+ *y)((A. *55a1=?QR55a1BOT55a1QGVy)((1Q!< *) *)))
 *)s#   D
D#1D4
D #
D14
Ec           	      N   U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        U R                  [        5         [        R                  " SSS5        S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R                  [        R                  " SSSS9S5        U R                  [        R                  " SSSS	S
9S5        g ! , (       d  f       N= f! , (       d  f       Nm= f)Nr   rS  r`   rT  ri   rA  rL  rU  r  rs  rX  )r<   rh  posonly_opt_kwonly_optrz  r  r\   s    r2   test_posonly_opt_kwonly_opt0ClinicFunctionalTest.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!DoV99!Q!qI<X *)))s   #DD
D
D$c           
         U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R                  [        5         [        R                  " SSS5        S S S 5        U R                  [        5         [        R                  " SSSS9  S S S 5        U R	                  [        R                  " SSSS9S5        U R	                  [        R                  " SSSS9S5        U R	                  [        R                  " SSSS	S
9S5        U R	                  [        R                  " SSSS	SS9S5        g ! , (       d  f       GN}= f! , (       d  f       GNZ= f! , (       d  f       GN9= f! , (       d  f       GN= f! , (       d  f       N= f)Nr   r`   rA  ri   rs  rL  r   r`   ri   NNri  r  rs  r   r`   ri   r  Nr  r1   rW  er   r`   ri   r  r  )rz  r  rh  posonly_keywords_kwonly_optr<   r\   s    r2    test_posonly_keywords_kwonly_opt5ClinicFunctionalTest.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1Aa@ *>>q!qIK`a>>qAKMbc>>q!qANPbc>>q!qAQRSUde *)))))))))s;   F#
F5?G2G(G+#
F25
G
G
G(+
G9c           
         U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " SS5      S5        U R	                  [        R                  " SSS9S5        U R                  [        5         [        R                  " SSSS5        S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R	                  [        R                  " SSSS9S	5        U R	                  [        R                  " SSSS
9S	5        U R	                  [        R                  " SSSSS9S5        U R	                  [        R                  " SSSSS9S5        U R	                  [        R                  " SSSSSS9S5        U R	                  [        R                  " SSSSSS9S5        g ! , (       d  f       GN= f! , (       d  f       GN?= f! , (       d  f       GN= f)Nr   r`   )r   r`   NNNrA  ri   r  rr  rL  r  ri  rW  r  rs  r  rW  r  r  r  )rz  r  rh  posonly_keywords_opt_kwonly_optr<   r\   s    r2   $test_posonly_keywords_opt_kwonly_opt9ClinicFunctionalTest.test_posonly_keywords_opt_kwonly_opt!  s   y)55a8 *BB1aHJbcBB1JLdey)55aAqA *y)55Q? *BB1a1MOdeBB1QOQfgBB1aaPRdeBB1a1PQRTfgBB1aaSTUWfgBB1a1PQUVWYhi *) *)))s#   GG(G:
G%(
G7:
H	c           	         U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      S5        U R                  [        5         [        R                  " SSS9  S S S 5        U R                  [        R                  " SSS5      S5        U R                  [        R                  " SSSS9S5        U R                  [        R                  " SSSS	S
9S5        U R                  [        R                  " SSSS	S9S5        U R                  [        5         [        R                  " SSSS	5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr   rS  r`   rT  rA  ri   rU  rL  r  r  rX  rs  )r<   rh  #posonly_opt_keywords_opt_kwonly_optrz  r  r\   s    r2   (test_posonly_opt_keywords_opt_kwonly_opt=ClinicFunctionalTest.test_posonly_opt_keywords_opt_kwonly_opt1  s!   FFqIK`aFFq!LN`ay)99!qA *FFq!QOQ`aFFq!qQSbcFFq!QRSTVbcFFq!qTUVXdey)99!Q1E *) *) *)s   #E2E&
E#&
E4c                 ^   U R                  [        5         [        R                  " 5         S S S 5        U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " SS9S5        g ! , (       d  f       Ng= f! , (       d  f       ND= f)Nr   rq  r   )rz  r  rh  keyword_only_parameterr<   r\   s    r2   test_keyword_only_parameter0ClinicFunctionalTest.test_keyword_only_parameter=  sm    y),,. *y),,Q/ *99A>E	 *)))s   B	B
B
B,c                    U R                  [        5         [        R                  " 5         S S S 5        U R	                  [        R                  " SS5      S5        U R	                  [        R                  " SSS9S5        U R	                  [        R                  " SSSS5      S5        U R                  [        5         [        R                  " SS9  S S S 5        U R                  [        5         [        R                  " SSSSS9  S S S 5        g ! , (       d  f       N= f! , (       d  f       NU= f! , (       d  f       g = f)Nr   r`   )r   r`   r5  rA  ri   r  )r   r`   )ri   r  )rz  r  rh  posonly_varargr<   r\   s    r2   test_posonly_vararg(ClinicFunctionalTest.test_posonly_varargD  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"0D3
D"
D03
Ec                 f   U R                  [        5         [        R                  " 5         S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R	                  [        R                  " SSSS5      S5        g ! , (       d  f       Nk= f! , (       d  f       NI= f)Nr   r`   rA  ri   r  )r   r`   ri   r  )rz  r  rh  varargr<   r\   s    r2   test_vararg ClinicFunctionalTest.test_varargO  su    y) *y)Q!$ *))!Q15~F	 *)))s   B	B"
B"
B0c           
      n   [         R                  nU R                  [        U5        U R                  [        USSS9  U R	                  U" SSS9S5        U R	                  U" SSSS5      S5        U R	                  U" SSSSS	S9S
5        U R	                  U" SS9S5        U R	                  U" SSS9S5        g )Nr   r`   rq  rA  )r   r5  Tri   r  )r   r  Fr  )r   r  T)r   r5  Frr  )rh  vararg_with_defaultrz  r  r<   r|  s     r2   test_vararg_with_default-ClinicFunctionalTest.test_vararg_with_defaultV  s    **)R()Ra0A]3Aq!Q)>?Aq!Q!,.BCa.1a1}5r4   c           
         [         R                  nU R                  [        U5        U R                  [        USSS9  U R	                  U" SSS9S5        U R	                  U" SSSS9S5        U R	                  U" SSS5      S	5        U R	                  U" SSSS
S9S5        U R	                  U" SSSS
SS9S5        U R	                  U" SS9S5        U R	                  U" SSS9S5        U R	                  U" SSSS9S5        g )Nr   r`   rq  rA  )r   r5  r`   Nri   ri  )r   r5  r`   ri   )r   r`   ri   NNr  )r   r  r  Nr  )r   r  r  r  )r   r5  NNrr  rs  )rh  vararg_with_default2rz  r  r<   r|  s     r2   test_vararg_with_default2.ClinicFunctionalTest.test_vararg_with_default2`  s    ++)R()Ra0A%56Aa-8Aq!&=>Aq!q)+?@Aq!qA.0ABa"56a1'78a1*M:r4   c           
         U R                  [        R                  " 5       S5        U R                  [        R                  " SS9S5        U R                  [        R                  " SSS9S5        U R                  [        R                  " SSSS5      S	5        U R                  [        R                  " SSSSS
S9S5        g )N)r5  Nr`   rA  )r5  r`   r   )r  r`   ri   r  )rX  Nr  )rX  r  )r<   rh  vararg_with_only_defaultsr\   s    r2   test_vararg_with_only_defaults3ClinicFunctionalTest.test_vararg_with_only_defaultsm  s    <<>
K<<qA7K<<Q!DjQ<<Q1aHJ^_<<Q1a1MO`ar4   c           	         [         R                  nU R                  [        U5        U R	                  U" SS9S5        U R	                  U" SSS9S5        U R	                  U" SSSS9S	5        U R                  [        US5        U R	                  U" SSS9S
5        U R	                  U" SSSS9S5        U R	                  U" SSSSS9S5        g )Nr   rq  )r5  r   NNr`   rr  )r5  r   r`   Nri   rs  )r5  r   r`   ri   )r  r`   NN)r  r`   ri   Nr  )r  r`   ri   r  )rh  vararg_kwonly_req_optrz  r  r<   r|  s     r2   test_vararg_kwonly_req_opt/ClinicFunctionalTest.test_vararg_kwonly_req_optt  s    ,,)R(a"56a1'78a1*M:)R+A%:;Aa*<=Aa1-?r4   c           	      6    [         R                  " SSSSSSS9  g )Nr   r`   ri   r  r  r   )kw1kw2)rh  gh_32092_oobr\   s    r2   test_gh_32092_oob&ClinicFunctionalTest.test_gh_32092_oob  s    q!Qqa8r4   c                 4    [         R                  " SSS5        g )Nr   r`   ri   )rh  gh_32092_kw_passr\   s    r2   test_gh_32092_kw_pass*ClinicFunctionalTest.test_gh_32092_kw_pass  s    ""1a+r4   c                     Sn[         R                  " U5      n[        R                  " U5        [         R                  " U5      nU R	                  X#5        g )Nz5*A unique string is not referenced by anywhere else.*)r	  getrefcountrh  gh_99233_refcountr<   )rU   argarg_refcount_originarg_refcount_afters       r2   test_gh_99233_refcount+ClinicFunctionalTest.test_gh_99233_refcount  sB    E!ooc2##C( __S1,Ar4   c                     [         R                  " S5      nU R                  [        U5         [        R
                  " SS5        S S S 5        g ! , (       d  f       g = f)NzTgh_99240_double_free() argument 2 must be encoded string without null bytes, not strro  z b)r9   r:   r;   r  rh  gh_99240_double_free)rU   rl   s     r2   test_gh_99240_double_free.ClinicFunctionalTest.test_gh_99240_double_free  sC    ii*
 ##Is3**36 433s   A
Ac           	          S0 S4SSS0S4SSS	0S4SS	SS
.S4SSS	S.S4/nU HD  u  p#nU R                  X#S9   U R                  [        R                  " U0 UD6U5        S S S 5        MF     g ! , (       d  f       MX  = f)Nrq  )ro  r5  F)ro  r   r`   ri   	covariantT)ro  r<  Tr5  r  ro  r  r  )ro  r5  Tr  r  )r,  r  )r   r<   rh  null_or_tuple_for_varargs)rU   valid_args_for_testr,  r  r   s        r2   test_null_or_tuple_for_varargs3ClinicFunctionalTest.test_null_or_tuple_for_varargs  s     Rk40#%&##D1tS1
 ':"D(47  77HH 87 ':77s   'A,,
A;	c           	      .   U R                  [        5         [        R                  " SS9  S S S 5        U R                  [        5         [        R                  " SSS9  S S S 5        U R                  [        5         [        R                  " SSSSSS9  S S S 5        U R                  [        5         [        R                  " SSSSSS	9  S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Ng= f! , (       d  f       g = f)
NT)r  r   ro  r  r`   ri   r  r  )rz  r  rh  r  r\   s    r2   $test_null_or_tuple_for_varargs_error9ClinicFunctionalTest.test_null_or_tuple_for_varargs_error  s    y)//$? *y)//< *y)//1acTR *y)//1a4cR *) *)))))))s/   CC$;C51D
C!$
C25
D
Dc                     SnU R                  [        S5         [        R                  " U5        S S S 5        U R                  [        S5         [        R                  " U5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr   clone_f1clone_f2)r;   r  rh  r  r  )rU   incorrect_args     r2   "test_cloned_func_exception_message7ClinicFunctionalTest.test_cloned_func_exception_message  s`    ##Iz:}- ;##Iz:}- ;: ;:::s   A.A?.
A<?
Bc                     S HB  nU R                  US9   [        [        U5      nU R                  U" 5       U5        S S S 5        MD     g ! , (       d  f       MV  = f)N)clone_with_conv_f1clone_with_conv_f2r  )r   rg  rh  r<   )rU   r  r  s      r2   1test_cloned_func_with_converter_exception_messageFClinicFunctionalTest.test_cloned_func_with_converter_exception_message  sG    >D4(y$/  . )( ?((s   (A


A	c                    [         R                  " 5       nUR                  nU R                  UR                  5       [         R                  5        U R	                  [
        5         UR                  [         R                  S9  S S S 5        [        U R                  [
        S5      nU" US5        U" USS9  g ! , (       d  f       N:= f)N)r  no argumentsr   rq  )	rh  	TestClassget_defining_classassertIsrz  r  get_defining_class_argr   r;   )rU   objmethchecks       r2   test_get_defining_class,ClinicFunctionalTest.test_get_defining_class  s    !!#%%c,,.	0C0CD y)&&9+>+>&? * ..	>JdAda *)s   %B77
Cc                 P   SSK Jn  [        R                  " 5       nUR                  nU" US S 5        U" USS 5        U" USS5        U" US S5        U R                  U" USS5      [        R                  5        [        U R                  [        S5      nU" XSS 5        U" XSS5        g )Nr   )pyobject_vectorcallr5  r  r  rq  )	r  r  rh  r  r  r  r   r;   r  )rU   r  r  r  r  s        r2   test_get_defining_class_capi1ClinicFunctionalTest.test_get_defining_class_capi  s    1!!#%%D$-D"d+D"b)D$+)$B79L9LM..	>J!t4!v6r4   c                    [         R                  " 5       nU R                  UR                  S5      [         R                  S45        U R                  UR                  SS9[         R                  S45        U R	                  [
        5         UR                  [         R                  SS9  S S S 5        U R	                  [
        5         UR                  5         S S S 5        U R	                  [
        5         UR                  SS5        S S S 5        g ! , (       d  f       Nm= f! , (       d  f       NP= f! , (       d  f       g = f)Nr  r  )r  )r  r  arg1arg2)rh  r  r<   r  rz  r  )rU   r  s     r2   test_get_defining_class_arg0ClinicFunctionalTest.test_get_defining_class_arg  s    !!#33E:#--u5	7333<#--s3	5 y)&&9+>+>E&J * y)&&( *y)&&vv6 *) *) *)))s$   DD"5D3
D"
D03
Ec                 d    [         R                  nU" 5         U" S S9  U R                  SUS 5        g Nrq  'a')rh  DeprStarNewr|  rU   r  s     r2   test_depr_star_new'ClinicFunctionalTest.test_depr_star_new  s+    ##dUC.r4   c                     [         R                  " 5       R                  nU" 5         U" S S9  U R                  SUS SS9  g )Nrq  r  z_testclinic.DeprStarNew.clonedr  )rh  r  clonedr|  r|  s     r2   test_depr_star_new_cloned.ClinicFunctionalTest.test_depr_star_new_cloned  s:    ""$++

T
UB3STr4   c                 d    [         R                  nU" 5         U" S S9  U R                  SUS 5        g r  )rh  DeprStarInitr|  r  s     r2   test_depr_star_init(ClinicFunctionalTest.test_depr_star_init  s+    $$dUC.r4   c                     [         R                  " 5       R                  nU" 5         U" S S9  U R                  SUS SS9  g )Nrq  r  z_testclinic.DeprStarInit.clonedr  )rh  r  r  r|  r|  s     r2   test_depr_star_init_cloned/ClinicFunctionalTest.test_depr_star_init_cloned  s:    ##%,,

T
UB3TUr4   c                 &   [         R                  nU R                  [        US5        U" SSS9  U" SSSS9  U" SSS9  U" SSSS9  [	        U R
                  SU5      nU" SS5        U" SSS5        U" SSSS	9  U R                  [        USSSS
5        g Nro  rp  rr  r1   rs  rA  ri  'b' and 'c'rL  rW  )rh  DeprStarInitNoInlinerz  r  r   r|  rU   r  r  s      r2   test_depr_star_init_noinline1ClinicFunctionalTest.test_depr_star_init_noinline  s    ,,)S#.cScSC C3C3#,,mSAc3c3c3#)S#sC=r4   c                 d    [         R                  nU" 5         U" S 5        U R                  SUS S9  g Nr  rq  )rh  
DeprKwdNewr  r  s     r2   test_depr_kwd_new&ClinicFunctionalTest.test_depr_kwd_new  s.    ""D	E3$/r4   c                 d    [         R                  nU" 5         U" S 5        U R                  SUS S9  g r  )rh  DeprKwdInitr  r  s     r2   test_depr_kwd_init'ClinicFunctionalTest.test_depr_kwd_init  s.    ##D	E3$/r4   c                 F   [         R                  n[         R                  nU R                  [        US5        U" SSS9  U" SSSS9  U" SSS9  U" SSSS9  [        U R                  SU5      nU" SS5        U" SSS5        U" SSSS	9  U R                  [        USSSS
5        g r  )rh  DeprKwdInitNoInlinedepr_star_noinlinerz  r  r   r|  r  s      r2   test_depr_kwd_init_noinline0ClinicFunctionalTest.test_depr_kwd_init_noinline  s    ++**)S#.cScSC C3C3#,,mSAc3c3c3#)S#sC=r4   c                 V    [         R                  nU" S S9  U R                  SUS5        g )Nrq  r  ro  )rh  depr_star_pos0_len1r|  r|  s     r2   test_depr_star_pos0_len1-ClinicFunctionalTest.test_depr_star_pos0_len1+  s&    **
T
UB,r4   c                     [         R                  nU" SSS9  [        U R                  SU5      nU" SSS9  U" SS5        g )Nr   rr  z'a' and 'b'ro  rA  rp  )rh  depr_star_pos0_len2r   r|  rU   rx  r  s      r2   test_depr_star_pos0_len2-ClinicFunctionalTest.test_depr_star_pos0_len20  s<    **
Q!,,mR@cQc3r4   c                     [         R                  nU" SSSSS9  [        U R                  SU5      nU" SSSSS9  U" SSSSS9  U" SSSSS	9  g )
Nr   rV  'a', 'b' and 'c'ro  rn  rp  rs  r1   r  )rh  depr_star_pos0_len3_with_kwdr   r|  r  s      r2   !test_depr_star_pos0_len3_with_kwd6ClinicFunctionalTest.test_depr_star_pos0_len3_with_kwd7  sZ    33
Q!qA,,.@"EcQ!q!c3!q!c3q!r4   c                     [         R                  nU" SSS9  U" SSS9  U" SS9  [        U R                  SU5      nU" SS5        g )Nr   rr  ro  rA  rq  'b'rp  )rh  depr_star_pos1_len1_optr   r|  r  s      r2   test_depr_star_pos1_len1_opt1ClinicFunctionalTest.test_depr_star_pos1_len1_opt?  sC    ..
Q!
3!
Q,,eR8c3r4   c                     [         R                  nU" SSS9  U" SSS9  [        U R                  SU5      nU" SS5        g )Nr   rr  ro  rA  r'  rp  )rh  depr_star_pos1_len1r   r|  r  s      r2   test_depr_star_pos1_len1-ClinicFunctionalTest.test_depr_star_pos1_len1G  s<    **
Q!
3!,,eR8c3r4   c                     [         R                  nU" SSSSS94  U" SSSSS94  [        U R                  SU5      nU" SSSSS94  U" SSSSS	94  g )
Nr   rV  ro  rn  r  rp  rs  r1   r  )rh  depr_star_pos1_len2_with_kwdr   r|  r  s      r2   !test_depr_star_pos1_len2_with_kwd6ClinicFunctionalTest.test_depr_star_pos1_len2_with_kwdN  se    33
Q!qA
3!qA,,mR@c3!q!"c3q!"r4   c                     [         R                  nU" SSSS9  U" SSSS9  U" SSSS9  [        U R                  SU5      nU" SSS5        g )	Nr   rs  ro  ri  rp  rL  z'c'r1   )rh  depr_star_pos2_len1r   r|  r  s      r2   test_depr_star_pos2_len1-ClinicFunctionalTest.test_depr_star_pos2_len1V  sQ    **
Q!q
3!q
3q,,eR8c3r4   c                     [         R                  nU" SSSSS9  U" SSSSS9  U" SSSSS9  [        U R                  SU5      nU" SSSSS	9  U" SSSS
5        g )Nr   rV  ro  rn  rp  rs  'c' and 'd'r1   r  rW  )rh  depr_star_pos2_len2r   r|  r  s      r2   test_depr_star_pos2_len2-ClinicFunctionalTest.test_depr_star_pos2_len2^  sg    **
Q!qA
3!qA
3qA,,mR@c3q!c3S!r4   c                     [         R                  nU" SSSSSS9  U" SSSSSS9  U" SSSSSS9  [        U R                  SU5      nU" SSSSSS	9  U" SSSS
SS9  g )Nr   ro  rp  r1   rW  r  ro  rp  r1   rW  r  rp  r  r8  r1   r  rW  )r  )rh  depr_star_pos2_len2_with_kwdr   r|  r  s      r2   !test_depr_star_pos2_len2_with_kwd6ClinicFunctionalTest.test_depr_star_pos2_len2_with_kwdg  sq    33
Q!qA#
3!qA#
3qA#,,mR@c3qA&c3SA&r4   c                 &   [         R                  nU R                  [        US5        U" SSS9  U" SSSS9  U" SSS9  U" SSSS9  [	        U R
                  SU5      nU" SS5        U" SSS5        U" SSSS	9  U R                  [        USSSS
5        g r  )rh  r  rz  r  r   r|  r  s      r2   test_depr_star_noinline,ClinicFunctionalTest.test_depr_star_noinlinep  s    )))R-
SC
SC3
3#
3#,,mR@c3c3c3#)Rc3<r4   c                    [         R                  nU R                  [        US5        U" SSSSSSSSS	9  S
n[	        U R
                  [        R                  " U5      U5      nU" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U R                  [        USSSSSSSS5
        g )Nro  rp  r1   rW  r  r  ghrp  r1   rW  r  r  rF  rG  a)  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.r1   rW  r  r  rF  rG  rW  r  r  rF  rG  r  r  rF  rG  r  rF  rG  rF  rG  rG  )rh  depr_star_multirz  r  r   ru  r9   r:   rU   rx  rA   r  s       r2   test_depr_star_multi)ClinicFunctionalTest.test_depr_star_multi}  s   &&)R-
3#scSC@^ 	
 6):B?c3#scSAc3scSC3?c3SC3#=c3S#s;c3S#scS9c3S#sC37)Rc3S#sCPr4   c                     [         R                  nU" SS5        U R                  [        US5        U R                  [        USSS5        [	        U R
                  SU5      nU" SSS9  U R                  [        USSS9  g Nro  rp  r1   r'  rA  rr  )rh  depr_kwd_required_1rz  r  r   r  r  s      r2   test_depr_kwd_required_1-ClinicFunctionalTest.test_depr_kwd_required_1  ss    **
3)R-)Rc37++UB7cS)R3#6r4   c                    [         R                  nU" SSS5        U R                  [        USS5        U R                  [        USSSS5        [	        U R
                  SU5      nU" SSSS9  U" SSSS9  U R                  [        USSSS9  g )	Nro  rp  r1   rW  r  rL  ri  rs  )rh  depr_kwd_required_2rz  r  r   r  r  s      r2   test_depr_kwd_required_2-ClinicFunctionalTest.test_depr_kwd_required_2  s    **
3S)Rc2)Rc3<++]B?c3#cSC )R3#=r4   c                    [         R                  nU" S5        U" SS5        U R                  [        U5        U R                  [        USSS5        [	        U R
                  SU5      nU" SSS9  U R                  [        USSS9  g rT  )rh  depr_kwd_optional_1rz  r  r   r  r  s      r2   test_depr_kwd_optional_1-ClinicFunctionalTest.test_depr_kwd_optional_1  sx    **
3
3)R()Rc37++UB7cS)R3#6r4   c                 b   [         R                  nU" S5        U" SS5        U" SSS5        U R                  [        U5        U R                  [        USSSS5        [	        U R
                  SU5      nU" SSS9  U" SSS9  U" SSSS9  U" SSSS	9  U" SSSS9  U R                  [        USSSS
9  g )Nro  rp  r1   rW  r  rA  rL  ri  r1   rp  rs  )rh  depr_kwd_optional_2rz  r  r   r  r  s      r2   test_depr_kwd_optional_2-ClinicFunctionalTest.test_depr_kwd_optional_2  s    **
3
3
3S)R()Rc3<++]B?cScScSC cSC c3#)R3#=r4   c                     [         R                  nU" 5         U" S5        U" SS5        U" SSS5        U R                  [        USSSS5        [	        U R
                  SU5      nU" SSSS9  U" SSS9  U" SS9  g )	Nro  rp  r1   rW  r"  rL  rA  rq  )rh  depr_kwd_optional_3rz  r  r   r  r  s      r2   test_depr_kwd_optional_3-ClinicFunctionalTest.test_depr_kwd_optional_3  sx    **

3
3
3S)Rc3<++-?Dc3#cSr4   c                    [         R                  nU" SS5        U" SSS5        U R                  [        U5        U R                  [        US5        U R                  [        USSSS5        [	        U R
                  SU5      nU" SSS9  U" SSSS9  U" SSSS9  U" SSSS	9  U R                  [        USSS	9  U R                  [        USSSS
9  g )Nro  rp  r1   rW  r  rA  ri  ra  rL  rs  )rh  depr_kwd_required_optionalrz  r  r   r  r  s      r2   test_depr_kwd_required_optional4ClinicFunctionalTest.test_depr_kwd_required_optional  s    11
3
3S)R()R-)Rc3<++]B?cScSC cSC c3#)R4)R3#=r4   c                 >   [         R                  nU" SS5        U" SSS5        U R                  [        US5        [	        U R
                  SU5      nU" SSS9  U" SSSS9  U" SSSS9  U" SSSS9  U R                  [        USSS9  U R                  [        USSSS	9  g )
Nro  rp  r1   r  rA  ri  ra  rL  rs  )rh  depr_kwd_noinlinerz  r  r   r  r  s      r2   test_depr_kwd_noinline+ClinicFunctionalTest.test_depr_kwd_noinline  s    ((
3
3S)R-++]B?cScSC cSC c3#)R4)R3#=r4   c                 l   [         R                  nU" SSSSSSSSS	9  S
n[        U R                  [        R
                  " U5      U5      nU" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U" SSSSSSSSS9  U R                  [        USSSSSSSSS9
  g )Nro  rp  r1   rW  r  r  rF  rG  rN  a!  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.rM  rL  rK  rJ  rI  rH  )ro  rp  r1   rW  r  r  rF  rG  )rh  depr_kwd_multir   ru  r9   r:   rz  r  rP  s       r2   test_depr_kwd_multi(ClinicFunctionalTest.test_depr_kwd_multi  s    %%
3S#sC4V 	
 6):B?c3S#scS9c3S#s;c3SC3#=c3scSC3?c3#scSAcSC3#sC)R3#scUX\_`r4   c                    [         R                  nU R                  [        USSSSSSS5	        Sn[	        U R
                  [        R                  " U5      U5      nU" SSSSSSSS	9  U" SSSSSSSS
9  U" SSSSSSSS9  U" SSSSSSSS9  Sn[	        U R
                  [        R                  " U5      U5      nU" SSSSSSSS9  U" SSSSSSSS9  U R                  [        USSSSSSSS9	  g )Nro  rp  r1   rW  r  r  rF  zPassing 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.)rF  )r  rF  )r  r  rF  )rW  r  r  rF  zPassing 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.)r1   rW  r  r  rF  )rp  r1   rW  r  r  rF  )ro  rp  r1   rW  r  r  rF  )rh  
depr_multirz  r  r   ru  r9   r:   rP  s       r2   test_depr_multi$ClinicFunctionalTest.test_depr_multi  s   !!)Rc3S#sKQ 	 6):B?c3S#sc2c3S#4
3S#s3
3SC3#5H 	 6):B?c3#sc:cSC3#<)R3#scUXYr4   r5  )br/  r0  r1  r2  localsrG   dirrh  ru  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r#  r(  r.  r4  r8  r>  rC  rG  rP  rZ  r^  rb  rf  rk  rp  ru  ry  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r)  r-  r1  r5  r:  r@  rC  rQ  rV  rZ  r^  rc  rg  rk  ro  rs  rw  r4  r5  r4   r2   rc  rc    s   
HOO 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"Zr4   rc  c                   6    \ rS rSrS r\S 5       rS rS rSr	g)LimitedCAPIOutputTestsi
  c                      [        SS9U l        g )NTr;  )r3   r   r\   s    r2   r]   LimitedCAPIOutputTests.setUp  s    "5r4   c                      [        SU  S35      $ )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_input  s%      G 	  	r4   c                     U R                  S5      nU R                  R                  U5      nU R                  SU5        U R	                  SU5        U R	                  SU5        g )NzE
            func
                f: float
                /
        PyFloat_AS_DOUBLEzfloat f;zf = (float) PyFloat_AsDoubler  r   rT   r   r   r   s      r2   test_limited_capi_float.LimitedCAPIOutputTests.test_limited_capi_float  s[    && ( 
 KK%%e,	,i8j),4i@r4   c                     U R                  S5      nU R                  R                  U5      nU R                  SU5        U R	                  SU5        U R	                  SU5        g )NzF
            func
                f: double
                /
        r  z	double f;zf = PyFloat_AsDoubler  r   s      r2   test_limited_capi_double/LimitedCAPIOutputTests.test_limited_capi_double&  s[    && ( 
 KK%%e,	,i8k9-,i8r4   r.  N)
r/  r0  r1  r2  r]   staticmethodr  r  r  r4  r5  r4   r2   r|  r|  
  s&    6 	 		A	9r4   r|  z_testclinic_limited is missingc                   r    \ rS rSr\" 5       R                  S \" \5       5       5        S rS r	S r
S rSrg)	LimitedCAPIFunctionalTesti7  c              #   t   #    U  H.  oR                  S 5      (       d  M  U[        [        U5      4v   M0     g7fre  )r   rg  _testclinic_limitedri  s     r2   rk  #LimitedCAPIFunctionalTest.<genexpr>9  s0      V 8OOG<T ?T7#6=> 8rm  c                    U R                  [        5         [        R                  " 5         S S S 5        U R	                  [        R                  " S5      S5        U R                  [        5         [        R                  " S5        S S S 5        U R                  [        5         [        R                  " S5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NT= f! , (       d  f       g = f)Nri         ?xyz)rz  r  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"%
C3c                 |   U R                  [        5         [        R                  " 5         S S S 5        U R                  [        5         [        R                  " S5        S S S 5        U R	                  [        R                  " SS5      S5        U R                  [        5         [        R                  " SS5        S S S 5        U R                  [        5         [        R                  " SS5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nf= f! , (       d  f       g = f)Nr   r`   ri   r  r  )rz  r  r  
my_int_sumr<   r\   s    r2   test_my_int_sum)LimitedCAPIFunctionalTest.test_my_int_sumE  s    y)**, *y)**1- *,771=qAy)**32 *y)**1e4 *) *))) *)))s/   C:	D$DD-:
D
D
D*-
D;c                 6   [         R                  [         R                  4 H  nU R                  UR                  S9   U R                  U" SS5      S5        U R                  [        5         U" 5         S S S 5        U R                  [        5         U" S5        S S S 5        U R                  [        5         U" SS5        S S S 5        S S S 5        M     g ! , (       d  f       Nh= f! , (       d  f       NS= f! , (       d  f       N== f! , (       d  f       M  = f)N)r  r  g      @g      @r   2)r  my_float_summy_double_sumr   r/  r<   rz  r  )rU   r  s     r2   test_my_double_sum,LimitedCAPIFunctionalTest.test_my_double_sumP  s    ,,--
D 4==1  c35&&y1F 2&&y1G 2&&y1SM 2 21	
 211111 21sS   /D	,C4D		C'D	7
C8D	
C$ D	'
C51D	8
DD		
D	c                 F   [         R                  n " S S[        5      n " S S5      nS H[  nU R                  U" U5      U5        U" U5      nU R                  U" U5      U5        U" U5      nU R                  U" U5      U5        M]     U R	                  [
        5         U" SS-  5        S S S 5        U R                  [        S5         U" S	5        S S S 5        U R	                  [        5         U" S
5        S S S 5        U R	                  [        5         U" S5        S S S 5        U R	                  [        5         U" S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N}= f! , (       d  f       Nh= f! , (       d  f       g = f)Nc                       \ rS rSrSrg)ALimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyIntib  r5  N)r/  r0  r1  r2  r4  r5  r4   r2   MyIntr  b  s    r4   r  c                        \ rS rSrS rS rSrg)BLimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFileie  c                     Xl         g rE   _fd)rU   fds     r2   r  KLimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFile.__init__f  s    r4   c                     U R                   $ rE   r  r\   s    r2   filenoILimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFile.filenoh  s    xxr4   r  N)r/  r0  r1  r2  r  r  r4  r5  r4   r2   MyFiler  e  s     r4   r  )r   r   r`   r  i@ r`      z!bool is used as a file descriptorTr  r;  )	r  get_file_descriptorr&  r<   rz  r  ro  RuntimeWarningr  )rU   get_fdr  r  r  myintmyfiles          r2   test_get_file_descriptor2LimitedCAPIFunctionalTest.test_get_file_descriptor^  s>   $88	C 		  	  (BVBZ,"IEVE]B/BZFVF^R0 ( }-1c6N ."">#FH4LH y)3K *y)5M *y)4L *) .-H H *)))))s<    E
	E0	E0	F<	F
E
E-0
E>
F
F r5  N)r/  r0  r1  r2  ry  rG   rz  r  r  r  r  r  r4  r5  r4   r2   r  r  7  s:    
HOO V #$7 8V V3	5" r4   r  c                   *    \ rS rSrSrS rS rS rSrg)PermutationTestsi  z#Test permutation support functions.c                 ~    Sn[        [        / SQ5      5      n[        [        U5      5      nU R	                  X15        g )N)r5  )ri   r  r<  r<  )r  r<  r  r   r<   rU   r   r^  actuals       r2   test_permute_left_option_groups0PermutationTests.test_permute_left_option_groups  s7    
 C	N#1$78*r4   c                 ~    Sn[        [        / SQ5      5      n[        [        U5      5      nU R	                  X15        g )N)r5  r  r  r<  r<  )r  r<  r  r   r<   r  s       r2    test_permute_right_option_groups1PermutationTests.test_permute_right_option_groups  s7    
 C	N#2489*r4   c           	      v   SSSSS.nSSSSS.nSSSS	S.nSSS
SS.nSSSSS.nSSSSS.nSSSSS.nSSSSS.nSSSSS.n	UX#UXVUX4	n
U
 HZ  nU R                   " S0 UD6   UR                  5       u  pp[        XU5      n[        U5      nU R	                  UU5        S S S 5        M\     g ! , (       d  f       Mn  = f)Nr5  )r5  )leftrequiredrightr   rA  rL  )rA  ri  ri  r  )ri  rn  r  )ri  rn  r>  rq  )rA  rr  )ri  rs  rr  )rL  ri  rs  )rA  rr  rs  rs  )r  r  )rs  rn  rV  r=  )ro  rp  r1   rW  r  r  )r   r  r   r  r<   )rU   emptynoleft1noleft2noleft3noright1noright2noright3leftandright1leftandright2rp  r  r  r  r  r   permutationsr  s                     r2   test_permute_optional_groups-PermutationTests.test_permute_optional_groups  s4   B

 FV
 K&
 K*
 
 
R
 FR
 
 J	
 g	
 F''28--//6tuM|,  2	 (' ''s   =B))
B8	r5  N)	r/  r0  r1  r2  __doc__r  r  r  r4  r5  r4   r2   r  r    s    -	+	+N3r4   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
FormatHelperTestsi  c                     SnU HD  u  p#U R                  X#S9   [        R                  " U5      nU R                  XC5        S S S 5        MF     g ! , (       d  f       MX  = f)N)	)a
br  )za
b
r  )za
b r  )z
a
b

r  )z

a
b

r  )z

a

b

za

b) a
br  )z a
b r  )z 
 
 a
b 
 
 r  )r@  r   )r   r  normalize_snippetr<   )rU   rp  r@  r   r~   s        r2   +test_strip_leading_and_trailing_blank_lines=FormatHelperTests.test_strip_leading_and_trailing_blank_lines  sR    
  'OEE=11%8  / >=  '==   (A
A	c                     SnSnSnSnX#US.nUR                  5        HB  u  pgU R                  US9   [        R                  " XS9nU R	                  X5        S S S 5        MD     g ! , (       d  f       MV  = f)Nz;
            one
            two
            three
        zone
two
threez    one
    two
    threez%        one
        two
        three)r   r  r   )indent)rD  r   r  r  r<   )	rU   snippetzero_indentfour_indenteight_indentexpected_outputsr  r   r  s	            r2   test_normalize_snippet(FormatHelperTests.test_normalize_snippet   s     	 	 	
  +|L 0 6 6 8FV,"44WL  2 -, !9,,s   &A%%
A4	c                     SnU HD  u  p#U R                  X#S9   [        R                  " U5      nU R                  XC5        S S S 5        MF     g ! , (       d  f       MX  = f)N))r;  "abc")z\abcz"\\abc")z\a\bcz	"\\a\\bc")z\a\\bcz"\\a\\\\bc")r  z	"\"abc\"")r  z"\'a\'")rA  r   )r   r  docstring_for_c_stringr<   )rU   rp  rA  r   r~   s        r2   test_escaped_docstring(FormatHelperTests.test_escaped_docstring  sR    
 &ND4;66t<  / <; &;;r  c                 Z    SnSn[         R                  " U5      nU R                  X25        g )Nz{}, {a}z{{}}, {{a}})r  format_escaper<   )rU   rA  r   r~   s       r2   test_format_escape$FormatHelperTests.test_format_escape,  s*     %%d+'r4   c                     U R                  [        R                  " SSS9S5        SnSn[        R                  " USS9nU R                  X25        SnSn[        R                  " USS9nU R                  X25        g )Nr.   bar)prefixone
twozbarone
bartwo	
one
two
zbar
barone
bartwo
)r<   r  indent_all_linesrU   r@  r   r~   s       r2   test_indent_all_lines'FormatHelperTests.test_indent_all_lines2      33BuErJ 	
 	 ((u=' 	 	 ((u='r4   c                     U R                  [        R                  " SSS9S5        SnSn[        R                  " USS9nU R                  X25        SnSn[        R                  " USS9nU R                  X25        g )Nr.   r  )suffixr  zonefoo
twofoor  zfoo
onefoo
twofoo
)r<   r  suffix_all_linesr  s       r2   test_suffix_all_lines'FormatHelperTests.test_suffix_all_linesQ  r  r4   r5  N)r/  r0  r1  r2  r  r  r  r  r  r  r4  r5  r4   r2   r  r    s     0&3:0((>(r4   r  c                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)ClinicReprTestsiq  c                     [        S5      nSnU R                  [        U5      U5        [        SS/ SS5      nSnU R                  [        U5      U5        [        SS	/ S
SS9nSnU R                  [        U5      U5        g )Nr  z-<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  r9  r  zg<clinic.Block 'wow_so_long' input='longboi_longboi_longboi_l...' output='very_long_very_long_very_...'>)r"   r<   r  )rU   r   expected_reprblock2expected_repr_2block3expected_repr_3s          r2   test_Block_reprClinicReprTests.test_Block_reprr  s    eGem4ueR8Jf7""%
 v 	 	f7r4   c                     [        5       n[        SSUSS9nU R                  [        U5      S5        [        SSUS9nU R                  [        U5      S	5        g )
Nr  r  )r   )rz  r   r,  z2<clinic.Destination 'foo' type='file' file='eggs'>r  buffer)rz  r   z(<clinic.Destination 'bar' type='buffer'>)r3   r%   r<   r  )rU   r1   destinationdestination2s       r2   test_Destination_repr%ClinicReprTests.test_Destination_repr  s]    N!qy
 	S	
 #5xBl+-WXr4   c                 b    [        S[        5       5      nU R                  [        U5      S5        g )Nr  z<clinic.Module 'foo' at \d+>)r   r3   assertRegexr  )rU   r  s     r2   test_Module_repr ClinicReprTests.test_Module_repr  s%    |~.f'FGr4   c                 h    [        S[        5       S SS5      nU R                  [        U5      S5        g )Nr  some_typedefsome_type_objectz<clinic.Class 'foo' at \d+>)r   r3   r  r  r  s     r2   test_Class_reprClinicReprTests.test_Class_repr  s,    E<>4ASTc$BCr4   c                 V    U R                  [        [        R                  5      S5        g )Nz"<clinic.FunctionKind.CLASS_METHOD>)r<   r  r   r]  r\   s    r2   test_FunctionKind_repr&ClinicReprTests.test_FunctionKind_repr  s!    **+-Q	
r4   c                 .   [        S[        5       S S S[        5       [        R                  SS9nU R                  [        U5      S5        [        SSU5      n[        S[        R                  R                  UUS9nU R                  [        U5      S5        g )	Nr  foofooF)r  r  r  r  	full_namerS  rb  coexistz<clinic.Function 'foo'>r  )rb  r  r  z<clinic.Parameter 'bar'>)r   r3   r!   r   METHOD_INITr<   r  r   r   r`  POSITIONAL_OR_KEYWORD)rU   r  r  	parameters       r2   !test_Function_and_Parameter_reprs1ClinicReprTests.test_Function_and_Parameter_reprs  s    >13))	
 	h)BC"5%:	""88	
	 	i*DEr4   c                 ^   [         R                  R                  S5      nU R                  [	        U5      S5        SUl        UR                  R                  S5        U R                  [	        U5      S5        UR                  R                  S5        U R                  [	        U5      S5        g )NrZ   z(<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Monitorr  r  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	
r4   r5  N)r/  r0  r1  r2  r  r  r  r  r  r&  r3  r4  r5  r4   r2   r  r  q  s)    8*YHD

F,
r4   r  __main__)V	functoolsr   testr   r   test.supportr   test.support.os_helperr   r   r	   textwrapr   unittestr   r`  os.pathr  r9   r	  skip_if_missingimports_under_toolr  r   r   r   r   libclinic.convertersr   r   r   libclinic.functionr   r   r   r   r   r   r   r   r   libclinic.clanguager   libclinic.converterr   r   libclinic.return_convertersr    r!   libclinic.block_parserr"   r#   libclinic.codegenr$   r%   libclinic.dsl_parserr&   libclinic.clir'   r(   r3   rC   rI   rN   rP   r7  rJ  r  r  r  r  r  r  _testclinicrh  ImportErrorskipIfrc  r|  r  r  r  r  r  r/  r  r5  r4   r2   <module>rK     sC  
  $ " 9 9     	 
  
  8 $""8,>>QQ$ $ $ -AS9;.0 -$ ,%  ;?t0&
2U
#( U
#pV V2-*h -*`>;X >;B # #:H :zq2x q2h3T8 T8l
# 
d"$<=xZ8,, xZ >xZv%9X.. %9P 
$,.NOF 1 1 F PFRg3x(( g3TC()) C(LT
h'' T
n zMMO mE -,r[  IR  s1   #A'HH- H; 
H*-H87H8;II