
    -Ph?                         d dl Z d dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 	 d dl
Z
dZn	#  dZY nxY w edd          ZdZ G d	 d
e	          Z G d dej                  ZdS )    N)inline)	safe_typecymeit)
CythonTestTF)forcequietd   c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Z ej        e d          d             ZdS )
TestInlinec                    t          j        |            t          t                    | _        t
          j                            d          r!t
          j                            dd          }nt          j
        d          }|| j        d<   d S )NTEST_TMPr   cython_inline_)prefixlib_dir)r   setUpdict	test_kwds
_call_kwdsospathisdirjointempfilemkdtemp)selfr   s     ]/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/Cython/Build/Tests/TestInline.pyr   zTestInline.setUp   st    y//7==$$ 	@gll:h77GG&.>???G%,	"""    c                 P    |                      t          di | j        d           d S )N
return 1+2   )r   assertEqualr   r   r   s    r   test_simplezTestInline.test_simple   s.    @@@@!DDDDDr   c                 V    |                      t          ddg d| j        d           d S )NZ
            cimport cython
            return cython.typeof(a), cython.typeof(b)
        g      ?)ab)doublezlist object)r&   r!   r#   s    r   
test_typeszTestInline.test_types   sX     - b- - !O- - /H	I 	I 	I 	I 	Ir   c                 X    d}d}|                      t          di | j        d           d S )N      
return a+br    )r.   r!   )r   r'   r(   s      r   test_localszTestInline.test_locals%   s8    @@@@!DDDDDr   c                 `    |                      t          di | j        t          dz              d S )Nreturn global_value + 1r,   )r1   )r"   r   r   global_valuer#   s    r   test_globalszTestInline.test_globals*   s4    MMT_MM|^_O_`````r   c                 p    |                      t          di | j        t          ddg                      d S )NQ
            a = 1
            cdef double b = 2
            cdef c = []
        r,   g       @)r'   r(   c)r5   )r"   r   r   r   r#   s    r   test_no_returnzTestInline.test_no_return-   sU         	    "&SB!7!7!7		9 	9 	9 	9 	9r   c                 r    t          di | j        d         }|                      |d          d           d S )Ndef foo(x): return x * xfoo   1   )r9   )r   r   r"   )r   r:   s     r   test_def_nodezTestInline.test_def_node4   s@    CC4?CCEJQ$$$$$r   c                 v     G d d          }t          d          d         }|                     ||           d S )Nc                       e Zd ZdS )'TestInline.test_class_ref.<locals>.TypeN)__name__
__module____qualname__ r   r   Typer@   9   s        Dr   rE   )r   r"   )r   rE   tps      r   test_class_refzTestInline.test_class_ref8   sV    	 	 	 	 	 	 	 	F^^F#T"""""r   c                     dd l }t          dddi| j        }|                     t	          |          t
                     d S )Nr   l
        b = cy.declare(float, a)
        c = cy.declare(cy.pointer(cy.float), &b)
        return b
        r'   r    )rI   )cythonr   r   r"   typefloat)r   cyr(   s      r   	test_purezTestInline.test_pure>   s\     % % 	% O	% %
 	a%(((((r   c                 Z    |                      t          dg dddi          d           d S )Nzreturn sum(x))r,   r-   r    boundscheckF)xcython_compiler_directives   r"   r   r#   s    r   test_compiler_directivesz#TestInline.test_compiler_directivesG   sO    ?YY/<e.DF F F 		
 	
 	
 	
 	
r   c                 H   d}|                       t          |d          d         dd          d           |                       t          |d          d         dd          d           |                       t          |d          d         dd          d           d S )Nzdef f(int a, int b): return a/br-   )language_levelf   r    g      @rT   )r   inline_divcodes     r   test_lang_versionzTestInline.test_lang_versionO   s    :9F>!444S9!A>>	
 	
 	
 	9F>!444S9!A>>	
 	
 	
 	9F>!444S9!A>>	
 	
 	
 	
 	
r   c                 L   d}|                       t          |          d         dd          d           |                       t          |          d         dd          d           |                       t          |          d         dd          d	           |                       t          |          d         dd          d           t          |          d         }|                       |dd          d           |                       |dd          d           d S )
Nz!def f(int a, int b): return a * brX   rY   r-   
   r       rS      rT   )r   inline_mulcoderX   s      r   test_repeated_usezTestInline.test_repeated_use_   s   <4//4Q::B???4//4Q::B???4//4Q::B???4//4Q::B???>""3'1a"%%%1a"%%%%%r   zNumPy is not availablec                     dd l } |j        d          }d|d<   |                     t          |          d           |                     t	          d	d|i| j        d           d S )
Nr   )r]      r]   )r   r   z&numpy.ndarray[numpy.float64_t, ndim=2]return a[0,0]r'   g      $@)rd   )numpyndarrayr"   r   r   r   )r   re   r'   s      r   
test_numpyzTestInline.test_numpyj   ss    EM(###1'OPPPHH1HHH$OOOOOr   N)rA   rB   rC   r   r$   r*   r/   r3   r7   r=   rG   rN   rU   r[   ra   unittestskipIf	has_numpyrg   rD   r   r   r   r      s       - - -E E EI I IE E E
a a a9 9 9% % %# # #) ) )
 
 

 
 
 	& 	& 	& X_]$<==P P >=P P Pr   r   c                   :    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	dS )

TestCymeitNc                 X   t          |fd|i|\  }|                     t          |          d           t          fd|D                       }t	          |t
                    r|                     |d           n|                     |d           |                     d           |S )N
setup_coder   c              3   "   K   | ]	}|z  V  
d S NrD   ).0timingnumbers     r   	<genexpr>z"TestCymeit._run.<locals>.<genexpr>{   s'      ==6v======r   i g-C6?r]   )r   assertGreaterminmax
isinstanceintassertGreaterEqual)r   codern   kwargstimingsmax_timers   s         @r   _runzTestCymeit._runt   s     GG*GGG3w<<+++ ====W=====h$$ 	6##Hg6666##Hf55562&&&r   c                 :    d}|                      d|d           d S )N!numbers = list(range(0, 1000, 3))sum([num for num in numbers])r    repeatr   r   rn   s     r   test_benchmark_simplez TestCymeit.test_benchmark_simple   s&    8
		1:a	HHHHHr   c                     dd l }d}|                     d||j        d          }|D ]}|                     |t                     d S Nr   r   r   r    )timerr   )timer   perf_counterassertIsInstancerL   r   r   rn   r}   rr   s        r   test_benchmark_timerzTestCymeit.test_benchmark_timer   s`    8
));ZtO`ij)kk 	1 	1F!!&%0000	1 	1r   c                     dd l }d}|                     d||j        d          }|D ]}|                     |t                     d S r   )r   r   perf_counter_nsr   ry   r   s        r   test_benchmark_timer_nsz"TestCymeit.test_benchmark_timer_ns   s`    8
));ZtOclm)nn 	/ 	/F!!&#....	/ 	/r   c                 6    d}|                      d|           d S )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_setupz)TestCymeit.test_benchmark_multiline_setup   s%    
 			/:.....r   c                 :    d}|                      d|d           d S )Nz numbers = list(range(0, 100, 3))zm
            sum([
                num
                    for num in numbers
                ])
            r    r   r   r   s     r   test_benchmark_multiline_codez(TestCymeit.test_benchmark_multiline_code   s9    7
		   	 	
 	
 	
 	
 	
r   c                 6    |                      ddd           d S )Nzfsum(range(100))mathr-   )import_moduler   r   r#   s    r   test_benchmark_in_modulez#TestCymeit.test_benchmark_in_module   s!    		$F1	EEEEEr   rp   )
rA   rB   rC   r   r   r   r   r   r   r   rD   r   r   rl   rl   s   s            I I I1 1 1/ / /
/ 
/ 
/

 

 

F F F F Fr   rl   )r   r   rh   Cython.Shadowr   Cython.Build.Inliner   r   Cython.TestUtilsr   re   rj   r   r   r2   r   TestCaserl   rD   r   r   <module>r      s   				               1 1 1 1 1 1 1 1 ' ' ' ' ' 'LLLIIIIIDt4(((	^P ^P ^P ^P ^P ^P ^P ^PB>F >F >F >F >F" >F >F >F >F >Fs   ) /