
    h?                         S SK r S SKrS SKrS SKJr  S SKJrJr  S SKJ	r	   S SK
r
Sr\" SSS9rSr " S	 S
\	5      r " S S\R                   5      rg!   Sr N0= f)    N)inline)	safe_typecymeit)
CythonTestTF)forcequietd   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\R"                  " \(       + S5      S 5       rSrg)
TestInline   c                 &   [         R                  " U 5        [        [        5      U l        [
        R                  R                  S5      (       a!  [
        R                  R                  SS5      nO[        R                  " SS9nXR                  S'   g )NTEST_TMPr   cython_inline_)prefixlib_dir)r   setUpdict	test_kwds
_call_kwdsospathisdirjointempfilemkdtemp)selfr   s     W/var/www/fran/franai/venv/lib/python3.13/site-packages/Cython/Build/Tests/TestInline.pyr   TestInline.setUp   s_    y/77==$$ggll:h7G&&.>?G%,	"    c                 N    U R                  [        S0 U R                  D6S5        g )N   )z
return 1+2assertEqualr   r   r   s    r   test_simpleTestInline.test_simple   s    @@!Dr   c                 T    U R                  [        SS/ S.U R                  D6S5        g )Ng      ?)ab)doublezlist object)zZ
            cimport cython
            return cython.typeof(a), cython.typeof(b)
        r"   r$   s    r   
test_typesTestInline.test_types   s8     - b- !OO- /H	Ir   c                 V    SnSnU R                  [        S0 U R                  D6S5        g )N      r!   )z
return a+br"   )r   r(   r)   s      r   test_localsTestInline.test_locals%   s(    @@!Dr   c                 \    U R                  [        S0 U R                  D6[        S-   5        g )Nr.   )zreturn global_value + 1)r#   r   r   global_valuer$   s    r   test_globalsTestInline.test_globals*   s$    MT__M|^_O_`r   c           	      `    U R                  [        S0 U R                  D6[        SS/ S95        g )Nr.   g       @)r(   r)   c)zQ
            a = 1
            cdef double b = 2
            cdef c = []
        )r#   r   r   r   r$   s    r   test_no_returnTestInline.test_no_return-   s3       	  "&SB!7		9r   c                 d    [        S0 U R                  D6S   nU R                  U" S5      S5        g )Nfoo   1   )zdef foo(x): return x * x)r   r   r#   )r   r;   s     r   test_def_nodeTestInline.test_def_node4   s,    C4??CEJQ$r   c                 V     " S S5      n[        S5      S   nU R                  X!5        g )Nc                       \ rS rSrSrg)'TestInline.test_class_ref.<locals>.Type9    N)__name__
__module____qualname____firstlineno____static_attributes__rD   r   r   TyperB   9   s    r   rJ   )r   r#   )r   rJ   tps      r   test_class_refTestInline.test_class_ref8   s(    	 	F^F#"r   c                 x    SS K n[        SSS0U R                  D6nU R                  [	        U5      [
        5        g )Nr   r(   r!   )zl
        b = cy.declare(float, a)
        c = cy.declare(cy.pointer(cy.float), &b)
        return b
        )cythonr   r   r#   typefloat)r   cyr)   s      r   	test_pureTestInline.test_pure>   s=     % 	% OO	%
 	a%(r   c                 B    U R                  [        S/ SQSS0S9S5        g )Nzreturn sum(x))r.   r/   r!   boundscheckF)xcython_compiler_directives   r#   r   r$   s    r   test_compiler_directives#TestInline.test_compiler_directivesG   s+    ?/<e.DF 		
r   c                     SnU R                  [        USS9S   " SS5      S5        U R                  [        USS9S   " SS5      S5        U R                  [        USS9S   " SS5      S5        g )Nzdef f(int a, int b): return a/br/   )language_levelf   r!   g      @rZ   )r   inline_divcodes     r   test_lang_versionTestInline.test_lang_versionO   s    :>!4S9!A>	
 	>!4S9!A>	
 	>!4S9!A>	
r   c                    SnU R                  [        U5      S   " SS5      S5        U R                  [        U5      S   " SS5      S5        U R                  [        U5      S   " SS5      S	5        U R                  [        U5      S   " SS5      S5        [        U5      S   nU R                  U" SS5      S5        U R                  U" SS5      S5        g )
Nz!def f(int a, int b): return a * br_   r`   r/   
   r!      rY      rZ   )r   inline_mulcoder_   s      r   test_repeated_useTestInline.test_repeated_use_   s    </4Q:B?/4Q:B?/4Q:B?/4Q:B?>"3'1a"%1a"%r   zNumPy is not availablec                     SS K nUR                  " S5      nSUS'   U R                  [        U5      S5        U R                  [	        SSU0U R
                  D6S5        g )	Nr   )re      re   )r   r   z&numpy.ndarray[numpy.float64_t, ndim=2]r(   g      $@)zreturn a[0,0])numpyndarrayr#   r   r   r   )r   rm   r(   s      r   
test_numpyTestInline.test_numpyj   sR    MM(##1'OPH1HH$Or   )r   N)rE   rF   rG   rH   r   r%   r+   r0   r4   r8   r>   rL   rS   r[   rb   ri   unittestskipIf	has_numpyro   rI   rD   r   r   r   r      sf    -EIE
a9%#)

 	& __]$<=P >Pr   r   c                   B    \ rS rSrSS jrS rS rS rS rS r	S	 r
S
rg)
TestCymeits   Nc                 "  ^ [        U4SU0UD6u  nmU R                  [        U5      S5        [        U4S jU 5       5      n[	        U[
        5      (       a  U R                  US5        OU R                  US5        U R                  TS5        U$ )N
setup_coder   c              3   ,   >#    U  H	  oT-  v   M     g 7fNrD   ).0timingnumbers     r   	<genexpr>"TestCymeit._run.<locals>.<genexpr>{   s     =W6Ws   i g-C6?re   )r   assertGreaterminmax
isinstanceintassertGreaterEqual)r   coderx   kwargstimingsmax_timer}   s         @r   _runTestCymeit._runt   s     G*GG3w<+ =W==h$$##Hg6##Hf562&r   c                 *    SnU R                  SUSS9  g )N!numbers = list(range(0, 1000, 3))sum([num for num in numbers])r!   repeatr   r   rx   s     r   test_benchmark_simple TestCymeit.test_benchmark_simple   s    8
		1:a	Hr   c                     SS K nSnU R                  SX!R                  SS9nU H  nU R                  U[        5        M     g Nr   r   r   r!   )timerr   )timer   perf_counterassertIsInstancerQ   r   r   rx   r   r|   s        r   test_benchmark_timerTestCymeit.test_benchmark_timer   s@    8
));ZO`O`ij)kF!!&%0 r   c                     SS K nSnU R                  SX!R                  SS9nU H  nU R                  U[        5        M     g r   )r   r   perf_counter_nsr   r   r   s        r   test_benchmark_timer_ns"TestCymeit.test_benchmark_timer_ns   s@    8
));ZOcOclm)nF!!&#. r   c                 ,    SnU R                  SU5        g )Nz
        numbers = list(range(0, 100, 3))

        def csum(numbers):
            result = 0
            for number in numbers:
                result += number
            return result
        zcsum(numbers)r   r   s     r   test_benchmark_multiline_setup)TestCymeit.test_benchmark_multiline_setup   s    
 			/:.r   c                 *    SnU R                  SUSS9  g )Nz numbers = list(range(0, 100, 3))zm
            sum([
                num
                    for num in numbers
                ])
            r!   r   r   r   s     r   test_benchmark_multiline_code(TestCymeit.test_benchmark_multiline_code   s%    7
		   	 	
r   c                 &    U R                  SSSS9  g )Nzfsum(range(100))mathr/   )import_moduler   r   r$   s    r   test_benchmark_in_module#TestCymeit.test_benchmark_in_module   s    		$F1	Er   rD   rz   )rE   rF   rG   rH   r   r   r   r   r   r   r   rI   rD   r   r   ru   ru   s   s'     I1/
/

Fr   ru   )r   r   rq   Cython.Shadowr   Cython.Build.Inliner   r   Cython.TestUtilsr   rm   rs   r   r   r3   r   TestCaseru   rD   r   r   <module>r      si    	     1 'I t4(	^P ^PB>F"" >FQIs   A A