
    Ae&                         d dl Z d dlZd dlmZ d dlmZ d dlmZ 	 d dlZdZ	 e
dd      ZdZ G d	 d
e      Zy#  dZ	Y xY w)    N)inline)	safe_type)
CythonTestTF)forcequietd   c                   Z    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erd Zyy)
TestInlinec                     t        j                  |        t        t              | _        t        j
                  j                  d      r!t        j
                  j                  dd      }nt        j                  d      }|| j                  d<   y )NTEST_TMPr   cython_inline_)prefixlib_dir)
r   setUpdict	test_kwdsospathisdirjointempfilemkdtemp)selfr   s     =lib/python3.12/site-packages/Cython/Build/Tests/TestInline.pyr   zTestInline.setUp   s^    i77==$ggll:h7G&&.>?G$+y!    c                 N    | j                  t        di | j                  d       y )N   )z
return 1+2assertEqualr   r   r   s    r   test_simplezTestInline.test_simple   s    ??Cr   c                 T    | j                  t        ddg d| j                  d       y )Ng      ?)ab)doublezlist object)zZ
            cimport cython
            return cython.typeof(a), cython.typeof(b)
        r   r    s    r   
test_typeszTestInline.test_types   s8     , b, !NN, .G	Hr   c                 V    d}d}| j                  t        di | j                  d       y )N      r   )z
return a+br   )r   r#   r$   s      r   test_localszTestInline.test_locals#   s(    ??Cr   c                 \    | j                  t        di | j                  t        dz          y )Nr(   )zreturn global_value + 1)r   r   r   global_valuer    s    r   test_globalszTestInline.test_globals(   s$    LT^^Ll]^N^_r   c                 f    | j                  t        di | j                  t        ddg              y )Nr(   g       @)r#   r$   c)zQ
            a = 1
            cdef double b = 2
            cdef c = []
        )r   r   r   r   r    s    r   test_no_returnzTestInline.test_no_return+   s3      ~~	 !%qC2 6		8r   c                 d    t        di | j                  d   }| j                   |d      d       y )Nfoo   1   )zdef foo(x): return x * x)r   r   r   )r   r2   s     r   test_def_nodezTestInline.test_def_node2   s,    B4>>B5IQ$r   c                 b     G d dt               }t        d      d   }| j                  ||       y )Nc                       e Zd Zy)'TestInline.test_class_ref.<locals>.TypeN)__name__
__module____qualname__ r   r   Typer8   7   s    r   r=   )objectr   r   )r   r=   tps      r   test_class_refzTestInline.test_class_ref6   s,    	6 	F^F#T"r   c                 x    dd l }t        dddi| j                  }| j                  t	        |      t
               y )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_purezTestInline.test_pure<   s=     $ 	$ NN	$
 	a%(r   c                 H    | j                  t        dg dddi      d       y )Nzreturn sum(x))r(   r)   r   boundscheckF)xcython_compiler_directives   r   r   r    s    r   test_compiler_directivesz#TestInline.test_compiler_directivesE   s+    ?/<e.DF 		
r   c                     d}| j                   t        |d      d   dd      d       | j                   t        |d      d   dd      d       y )Nzdef f(int a, int b): return a/br)   )language_levelf   r   g      @rL   )r   inline_divcodes     r   test_lang_versionzTestInline.test_lang_versionM   s[    :9F>!4S9!A>	
 	9F>!4S9!A>	
r   c                     dd l } |j                  d      }d|d<   | j                  t        |      d       | j                  t	        dd|i| j
                  d       y )	Nr   )
      rU   )r   r   z&numpy.ndarray[numpy.float64_t, ndim=2]r#   g      $@)zreturn a[0,0])numpyndarrayr   r   r   r   )r   rW   r#   s      r   
test_numpyzTestInline.test_numpy[   sT    h'AAcFYq\+STVKqKDNNKTRr   N)r9   r:   r;   r   r!   r&   r*   r-   r0   r5   r@   rF   rM   rS   	has_numpyrY   r<   r   r   r
   r
      sM    ,DHD
`8%#)


 	S r   r
   )r   r   Cython.Shadowr   Cython.Build.Inliner   Cython.TestUtilsr   rW   rZ   r   r   r,   r
   r<   r   r   <module>r^      sM       ) 'I t4(	PS PSIs	   : A 