
    /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N)
r   r7   reescapeassertRaisesRegexr   assertEqual	exceptionr+   r6   )tcparsercodeerrmsgr+   r6   r7   cms           r2   _expect_failurerD   +   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 r9   )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 r9   )
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   )rD   r   parse)selfrawrB   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,   )r:   r;   r   r7   r<   r   r'   )rU   r+   expected_errorr8  r9  rB   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+   rB   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 r9   )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 r9   )	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r:   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 r9   r5  rU   r   s     r2   __init__InertParser.__init__t      r4   c                     g r9   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 r9   r5  r  s     r2   r  CopyParser.__init__{  r  r4   c                 &    UR                   Ul        g r9   )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g r9   )r   listr#   r$   print_blockfr   )rU   r  r9  languageblockswriterr   s          r2   rP  ClinicBlockParserTest._test  sN    T?k%23h'Eu% ""$r4   c                 $    U R                  X5      $ r9   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$ r9   )r3   r&   r"   rT   )rU   textr1   r@   r   s        r2   rT   ClinicParserTest.parse  s,    N1dUr4   c                 z    U R                  U5      nUR                  nU R                  [        U5      U5        XS   $ r9   )rT   
signaturesr=   r  )rU   r  signatures_in_blockfunction_indexr   ss         r2   parse_functionClinicParserTest.parse_function  s;    

4 Q!45   r4   NTr5   c          
      .    [        X R                  XX4US9$ )Nr5   )rD   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
        r.  r/  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  r/  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.
        r6  r7  r/  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!
        r7  r/  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  r/  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!   r/  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=   ra  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  ra  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=   ra  r`  r^  r   POSITIONAL_ONLYr  rU   r  datasetr  ra  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)y2rt  )x1r   )x2r   ri  )attr1r   )attr2r   )attr3r   )attr4r`   )attr5r`   )attr6r`   rj  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.
        rk  rm  s         r2   test_nested_groups#ClinicParserTest.test_nested_groupsx  s    && "( "F
 #KD45''-  %0  ):):)J)JK 65 # 	H ' 	 65rq  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   rn  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  r/  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  r/  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  rA   r   r   rT   r  r=   fulldisplaynamerU   rn  r  rA   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.
        r.  r/  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
        r.  r/  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, /)
            --
        r.  r/  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)
        r.  r/  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   r1  
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   rn  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 +* **rA  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annotationsr_  r`  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r_  ra  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   rc  r_  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   rg  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^  rk  rl  ra  
                    rm  zCannot apply z twice to the same function!ri   r   r  rn  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^  rk  )rk  r^  )dupra  r   ru  r   rm  z;Cannot apply both @getter and @setter to the same function!ri   r   r  )rU   dup_annotationsrz  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)Nry  rl  z2
                    module m
                    z,
                    m.func
                z#@getter and @setter must be methodsr`   r   r  )rU   r_  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                   $ r9   r  )rx  paramss    r2   r3  4ClinicParserTest.test_unused_param.<locals>.<lambda>s	  s    &*..r4   rx  F)r  unusedkiTr1  )	in_parser	Py_UNUSED)
rT   r  r  valuesr   r=   r  simple_declarationr   r   )rU   r   sigr"  rn  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=   reprr   r   r   r   r<   r   r   r>   r+   r6   r   )rU   r   rB   rC   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=   r`  r^  r   rl  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+  r0  r3  r8  r;  r>  rB  rE  rH  rN  rR  rU  rX  r[  rb  rf  ro  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-  r7  r:  r?  rC  rF  rI  rL  rO  rR  rU  rX  rd  rh  ro  rr  rv  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 r9   )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r9   )
r   r   rK  rz  
SystemExitr   mainr   r>   rA   )rU   r*  r~   rl   rC   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   rA   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   rA   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srcdirrA   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   rA   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 )Nr8  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 filesrD  )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 filenamesrD  rE  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  rM  )z
filename.c)optsr  )r   rW   r   )rU   rF  rQ  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 --makerD  rE  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  rA  rG  rJ  rN  rR  rU  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r9   )	assertWarnsRegexDeprecationWarningr  	_getframef_linenor=   r+   __file__r6   )rU   r  rx  r*  kwdsrC   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  
isinstancetyper0  r:   r;   rt  )rU   pnamesrx  r  r*  rs  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 )	Nrw   r  r.   zPassing keyword argumentz to z\(\) is deprecated. Parameterz- will become positional-only in Python 3\.14.rx  )rU   r{  rx  r  r*  rs  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  	TypeErrorrg  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  rg  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  rg  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   r2  )r2  )rz  r  rg  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  rg  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   rt  FT)r   r   r   r   )r=   rg  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r9   ordri  r1   s     r2   rj  ;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r9   r  r  s     r2   rj  r    r  r  )rz  r  rg  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  OverflowErrorrg  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  rg  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{  rg  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  rg  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{  rg  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  rg  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{  rg  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  rg  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{  rg  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  rg  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  rg  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{  rg  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  rg  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  rg  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  rg  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  rg  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  rg  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  rg  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=   rg  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  rg  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=   rg  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=   rg  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=   rg  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  rg  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  rg  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  rg  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  rg  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=   rg  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  rg  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=   rg  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  rg  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  rg  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=   rg  #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  rg  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  rg  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  rg  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  )rg  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  )rg  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=   rg  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  )rg  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)rg  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   )rg  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  getrefcountrg  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)r:   r;   r<   r  rg  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=   rg  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  rg  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  rg  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   rf  rg  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  )	rg  	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  rg  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)rg  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')rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  
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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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   )rg  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  )rg  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  )rg  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  )rg  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  )rg  depr_star_multirz  r  r   rt  r:   r;   rU   rx  rB   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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  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  )rg  depr_kwd_multir   rt  r:   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  )rg  
depr_multirz  r  r   rt  r:   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   dirrg  rt  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   rb  rb    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   rb  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rd  )r   rf  _testclinic_limitedrh  s     r2   rj  #LimitedCAPIFunctionalTest.<genexpr>9  s0      V 8OOG<T ?T7#6=> 8rl  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 r9   _fd)rU   fds     r2   r  KLimitedCAPIFunctionalTest.test_get_file_descriptor.<locals>.MyFile.__init__f  s    r4   c                     U R                   $ r9   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  rn  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g)PermutationTestsi  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leftandright2rn  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  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   rn  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\'")r@  r   )r   r  docstring_for_c_stringr=   )rU   rn  r@  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   r@  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_namerQ  r`  coexistz<clinic.Function 'foo'>r  )r`  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%  r2  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  r:   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   rD   rI   rN   rP   r7  rJ  r  r  r  r  r  r  _testclinicrg  ImportErrorskipIfrb  r|  r  r  r  r  r  r/  r  r5  r4   r2   <module>rJ     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