
    ڏDj                         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 edd      ZdZ G d	 d
e	      Z G d dej                         Zy#  dZY 3xY w)    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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
_call_kwdsospathisdirjointempfilemkdtemp)selfr   s     aC:\Crop_Prediction\Backend\crop-ai-system\venv\Lib\site-packages\Cython/Build/Tests/TestInline.pyr   zTestInline.setUp   s^    y/77==$ggll:h7G&&.>?G%,	"    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    @@!Dr   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- !OO- /H	I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(    @@!Dr   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$    MT__M|^_O_`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       	  "&SB!7		9r   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   r4   s     r   test_def_nodezTestInline.test_def_node4   s,    C4??CEJQ$r   c                 X     G d d      }t        d      d   }| j                  ||       y )Nc                       e Zd Zy)'TestInline.test_class_ref.<locals>.TypeN)__name__
__module____qualname__ r   r   Typer:   9   s    r   r?   )r   r!   )r   r?   tps      r   test_class_refzTestInline.test_class_ref8   s*    	 	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=     % 	% OO	%
 	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_directivesG   s+    ?/<e.DF 		
r   c                     d}| j                   t        |d      d   dd      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      @rM   )r   inline_divcodes     r   test_lang_versionzTestInline.test_lang_versionO   s    :9F>!4S9!A>	
 	9F>!4S9!A>	
 	9F>!4S9!A>	
r   c                    d}| j                   t        |      d   dd      d       | j                   t        |      d   dd      d       | j                   t        |      d   dd      d	       | j                   t        |      d   dd      d       t        |      d   }| j                   |dd      d       | j                   |dd      d       y )
Nz!def f(int a, int b): return a * brQ   rR   r+   
   r      rL      rM   )r   inline_mulcoderQ   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<   | j                  t        |      d       | j                  t	        dd|i| j
                  d       y )	Nr   )rV      rV   )r   r   z&numpy.ndarray[numpy.float64_t, ndim=2]r%   g      $@)zreturn a[0,0])numpyndarrayr!   r   r   r   )r   r]   r%   s      r   
test_numpyzTestInline.test_numpyj   sT    EMM(##1'OPH1HH$Or   N)r;   r<   r=   r   r#   r(   r,   r/   r2   r7   rA   rG   rN   rT   rZ   unittestskipIf	has_numpyr_   r>   r   r   r   r      sh    -EIE
a9%#)

 	& X__]$<=P >Pr   r   c                   8    e Zd Zd	dZd Zd Zd Zd Zd Zd Z	y)

TestCymeitNc                    t        |fd|i|\  }| j                  t        |      d       t        fd|D              }t	        |t
              r| j                  |d       n| j                  |d       | j                  d       |S )N
setup_coder   c              3   (   K   | ]	  }|z    y wNr>   ).0timingnumbers     r   	<genexpr>z"TestCymeit._run.<locals>.<genexpr>{   s     =6v=s   i g-C6?   )r   assertGreaterminmax
isinstanceintassertGreaterEqual)r   coderf   kwargstimingsmax_timerk   s         @r   _runzTestCymeit._runt   s     G*GG3w<+ =W==h$##Hg6##Hf561%r   c                 0    d}| j                  d|d       y )N!numbers = list(range(0, 1000, 3))sum([num for num in numbers])r   repeatrx   r   rf   s     r   test_benchmark_simplez TestCymeit.test_benchmark_simple   s    8
		1:a	Hr   c                     dd l }d}| j                  d||j                  d      }|D ]  }| j                  |t                y Nr   rz   r{   r   )timerr}   )timerx   perf_counterassertIsInstancerE   r   r   rf   rv   rj   s        r   test_benchmark_timerzTestCymeit.test_benchmark_timer   sG    8
));ZtO`O`ij)k 	1F!!&%0	1r   c                     dd l }d}| j                  d||j                  d      }|D ]  }| j                  |t                y r   )r   rx   perf_counter_nsr   rr   r   s        r   test_benchmark_timer_nsz"TestCymeit.test_benchmark_timer_ns   sG    8
));ZtOcOclm)n 	/F!!&#.	/r   c                 ,    d}| j                  d|       y )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                 0    d}| j                  d|d       y )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   s%    7
		   	 	
r   c                 ,    | j                  ddd       y )Nzfsum(range(100))mathr+   )import_moduler}   r~   r"   s    r   test_benchmark_in_modulez#TestCymeit.test_benchmark_in_module   s    		$F1	Er   rh   )
r;   r<   r=   rx   r   r   r   r   r   r   r>   r   r   rd   rd   s   s'     I1/
/

Fr   rd   )r   r   r`   Cython.Shadowr   Cython.Build.Inliner   r   Cython.TestUtilsr   r]   rb   r   r   r.   r   TestCaserd   r>   r   r   <module>r      si    	     1 'I t4(	^P ^PB>F"" >FQIs   A A