
    sh'                         S SK r S SKrS SKJrJr  S SKJs  Js  J	r
  S SKJrJr  S SKJrJr  S SKJs  Jr  S SKrSS0rSS0r\ " S S	\5      5       r\S
:X  a  \R4                  " 5         gg)    N)jitnjit)typeserrors)TestCaseskip_unless_cffiforceobjTnopythonc                       \ rS rSrSrS rS r\4S jrS r	S r
S r\4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g)TestCFFI   Fc                 X    [         R                  " 5         [         R                  " 5         g N)modinitinit_oolselfs    i/Users/tiagomarins/Projetos/claudeai/copy_bank/venv/lib/python3.13/site-packages/numba/tests/test_cffi.pysetUpTestCFFI.setUp   s    
    c                 *   [         R                  " [        R                  R	                  [        R
                  5      5      nU R                  [        UR                  5      S5        U R                  UR                  S   [        R                  5        g )N   r   )cffi_supportmap_typer   ffitypeofcffi_sinassertEquallenargsr   double)r   	signatures     r   test_type_mapTestCFFI.test_type_map   sY     ))#''..*FG	Y^^,a0*ELL9r   c                     [        [        R                  440 UD6" U5      nS H!  nU R                  U" U5      U" U5      5        M#     g )N)g333333r   g?gQ	@)r   r   r#   assertPreciseEqual)r   pyfuncflagscfuncxs        r   _test_functionTestCFFI._test_function"   s>    U\\O-u-f5)A##F1IuQx8 *r   c                 B    U R                  [        R                  5        g r   )r.   r   use_cffi_sinr   s    r   test_sin_functionTestCFFI.test_sin_function(   s    C,,-r   c                     [         R                  n[        S5      " U5      nU R                  U" 5       S5        U R                  U" 5       S5        g )N T)r   use_cffi_boolean_truer   r    r   r*   r,   s      r   test_bool_function_oolTestCFFI.test_bool_function_ool+   s?    **R	&!4($'r   c                 H    U R                  [        R                  [        S9  g N)r+   )r.   r   r1   no_pyobj_flagsr   s    r   test_sin_function_npmTestCFFI.test_sin_function_npm1   s    C,,NCr   c                 B    U R                  [        R                  5        g r   )r.   r   use_cffi_sin_ool)r   r+   s     r   test_sin_function_oolTestCFFI.test_sin_function_ool4   s    C001r   c                 H    U R                  [        R                  [        S9  g r;   )r.   r   r@   r<   r   s    r   test_sin_function_npm_ool"TestCFFI.test_sin_function_npm_ool7   s    C00Gr   c                 B    U R                  [        R                  5        g r   )r.   r   use_two_funcsr   s    r   test_two_funcsTestCFFI.test_two_funcs:   s    C--.r   c                 B    U R                  [        R                  5        g r   )r.   r   use_two_funcs_oolr   s    r   test_two_funcs_oolTestCFFI.test_two_funcs_ool>   s    C112r   c                     [         R                  n[        SS9" U5      n[         R                  [         R                  S4[         R                  [         R                  S4[         R                  [         R                  S4[         R                  [         R                  S4[         R
                  [         R                  S4[         R
                  [         R                  S4[         R                  [         R
                  S4[         R                  [         R
                  S4[         R                  [         R                  S4[         R                  [         R                  S4[         R                  [         R
                  S4[         R                  [         R
                  S44 H)  u  p4nU" X4U5      nU" X4U5      nU R                  Xv5        M+     U R                  [        UR                  5      SUR                  5        g )NTr
   g      ?g      r   )
r   use_func_pointerr   r   cffi_coscffi_sin_oolcffi_cos_oolr    r!   	overloads)r   r*   r,   fafbr-   expectedgots           r   test_function_pointerTestCFFI.test_function_pointerA   se   %%T"6*\\3<<-\\3<<.\\3<<-\\3<<.s//5s//6s//5s//6\\3++S1\\3++T2\\3++S1\\3++T24KRQ ba(H"CS+4" 	U__-q%//Br   c                 z    [         R                  n[        SS9" U5      nU R                  U" 5       U" 5       5        g )NTrO   )r   use_user_defined_symbolsr   r    r7   s      r   test_user_defined_symbols"TestCFFI.test_user_defined_symbolsW   s0    --T"6*57+r   c                 |    U" X#5        [         R                  R                  U[         R                  " U5      5        g r   )nptestingassert_allclosesin)r   r,   r-   ys       r   check_vector_sinTestCFFI.check_vector_sin\   s%    a


""1bffQi0r   c                     [         R                  " S5      R                  U5      n[         R                  " U5      n[	        SS9" U5      nU R                  XSU5        g )N
   TrO   )r`   arangeastype
zeros_liker   re   )r   r*   dtyper-   rd   r,   s         r   _test_from_buffer_numpy_array&TestCFFI._test_from_buffer_numpy_array`   sG    IIbM  'MM!T"6*e*r   c                 `    U R                  [        R                  [        R                  5        g r   )rm   r   vector_sin_float32r`   float32r   s    r   test_from_buffer_float32!TestCFFI.test_from_buffer_float32f       **3+A+A2::Nr   c                 `    U R                  [        R                  [        R                  5        g r   )rm   r   vector_sin_float64r`   float64r   s    r   test_from_buffer_float64!TestCFFI.test_from_buffer_float64i   rt   r   c                    Sn[         R                  " U5      [         R                  " US-  US-  5      S-  -   n[         R                  " U5      n[        SS9" [        R
                  5      nU" X#5        [         R                  R                  UR                  U5        [        SS9" [        R                  5      nU" X#5        [         R                  R                  UR                  U5        g )Nrh         y              ?TrO   )r`   ri   zerosr   r   vector_extract_realra   assert_equalrealvector_extract_imagimag)r   nr-   rd   
real_cfunc
imag_cfuncs         r   test_from_buffer_struct TestCFFI.test_from_buffer_structl   s    IIaL299QUAE2R77HHQK$'(?(?@
1


*$'(?(?@
1


*r   c                     [         R                  n[        SS9" U5      n[        R                  " S[	        S5      5      n[        R                  " SS/[        U5      -  5      nU R                  X#U5        g )NTrO   frh   r   )r   rp   r   arrayranger!   re   )r   r*   r,   r-   rd   s        r   test_from_buffer_pyarray!TestCFFI.test_from_buffer_pyarrayw   sZ    ''T"6*KKU2Y'KKaS3q6\*e*r   c                    [         R                  n[        SS9" U5      n[        R                  " S5      R                  [        R                  5      S S S2   n[        R                  " U5      nU R                  [        R                  5       nU" X45        S S S 5        U R                  S[        WR                  5      5        g ! , (       d  f       N4= f)NTrO   rh   r{   z3from_buffer() unsupported on non-contiguous buffers)r   rp   r   r`   ri   rj   rq   rk   assertRaisesr   TypingErrorassertInstr	exception)r   r*   r,   r-   rd   raisess         r   test_from_buffer_errorTestCFFI.test_from_buffer_error~   s    ''T"6*IIbM  ,SqS1MM!v112f!K 3K&**+	- 32s   	C
Cc                 .   [         R                  " SS/S[         R                  S9n[         R                  " U5      n[         R                  " SS/SS//S[         R                  S9n[         R                  " U5      n[         R                  " SS/S[         R                  S9n[         R                  " U5      n[         R                  " SS/SS//S[         R                  S9n[         R                  " U5      nUR	                  S5      n	[
        R                  n
[        S	S
9" U
5      nU R                  XU5        U" X45        [         R                  " U5      nSS/US'   [         R                  R                  XL5        U R                  XU5        U R                  [        R                  5       nU" Xx5        S S S 5        [         R                  R                  Xy5        U R                  S[!        WR"                  5      5        g ! , (       d  f       NS= f)Nr   r{   C)orderrl   r|      FKTrO   r   zAfrom_buffer() only supports multidimensional arrays with C layout)r`   r   rq   rk   copyr   rp   r   re   rc   ra   rb   r   r   r   r   r   r   )r   c1c1_zerosc2c2_zerosf1f1_zerosf2f2_zerosf2_copyr*   r,   sin_c2r   s                 r   "test_from_buffer_numpy_multi_array+TestCFFI.test_from_buffer_numpy_multi_array   s   XXq!fCrzz:==$XX1v1v&cD==$XXq!fCrzz:==$XX1v1v&cD==$''#,''T"6*e2bFq	


""84e2v112f" 3


""2/Y&**+	- 32s   0	H
Hc                    ^^ [         R                  m[        SS9U4S j5       m[        SS9UU4S j5       nSnU R                  U" U5      T" U5      T" US-   5      -   5        g)zR
Issue #2263

Linkage error due to multiple definition of global tracking symbol.
TrO   c                    > T" U 5      $ r   r5   )r-   my_sins    r   inner2TestCFFI.test_indirect_multiple_use.<locals>.inner   s    !9r   c                 ,   > T" U 5      T" U S-   5      -   $ )Nr   r5   )r-   r   r   s    r   foo0TestCFFI.test_indirect_multiple_use.<locals>.foo   s    8fQUm++r   g+?r   N)r   r   r   r    )r   r   r-   r   r   s      @@r   test_indirect_multiple_use#TestCFFI.test_indirect_multiple_use   sl      
d		 
	 
d		, 
	, QVAE]!:;r   r5   N)__name__
__module____qualname____firstlineno___numba_parallel_test_r   r%   enable_pyobj_flagsr.   r2   r8   r=   rA   rD   rH   rL   rY   r]   re   rm   rr   rx   r   r   r   r   r   __static_attributes__r5   r   r   r   r      s    
 ":
 ,> 9.(D += 2H/3C,,
1+OO	++	--8<r   r   __main__)r   numpyr`   numbar   r   numba.core.typing.cffi_utilscoretyping
cffi_utilsr   
numba.corer   r   numba.tests.supportr   r   numba.tests.cffi_usecasestestscffi_usecasesr   unittestr   r<   r   r   mainr5   r   r   <module>r      ss       3 3 $ : ( '  !$' d# f<x f< f<R zMMO r   