+
    :i3                        R t ^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RI	H
t
HtHtHt ^ RIHtHtHt ^ RIHu Hu Ht ^ RIHtHtHtHt ^ RIt^ RIHt R tR tR	 t R
t!Rt"Rt#R t$^t%R t&]&! ]4      t']&! ]4      t(R t)])! ]4      t*])! ]4      t+]PX                  ! ]PZ                  ! ]P\                  4      ]PZ                  ! ]P\                  4      ]P^                  ]P^                  4      t0]PX                  ! ]PZ                  ! ]Pb                  4      ]PZ                  ! ]Pb                  4      ]P^                  ]P^                  4      t2]PX                  ! ]Pf                  ]Pf                  ]P^                  ]P^                  4      t4 ! R R]4      t5 ! R R]4      t6] ! R R]4      4       t7]8R8X  d   ]Pr                  ! 4        R# R# )z
Tests for @cfunc and friends.
N)
namedtuple)cfunccarrayfarraynjit)typestypingutils)TestCaseskip_unless_cffitagcaptured_stderr)numpy_supportc                     W,           # N abs   &&T/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_cfunc.pyadd_usecaser      s	    5L    c                     W,          pV# r   r   )r   r   cs   && r   div_usecaser      s    	AHr   c                     V ^,          # )   r   )r   s   &r   square_usecaser      s    6Mr   zfloat64(float64, float64)zfloat64(int64, int64)zfloat64(float64)c                 &    \        4        W,           # r   )objectr   s   &&r   objmode_usecaser    '   s    
H5Lr   c                    a  V 3R  lpV# )c                 x  < S	! WV34      pS	! V\         4      pVP                  V^ &   VP                  VR&   VP                  VR&   VP                  P
                  V^&   VP                  P                  V^&   ^ p\        P                  ! W#4       F"  w  rxWdWx3,          Wx,
          ,          ,          pK$  	  We^&   R# )          Nr&      NN)	CARRAY_USECASE_OUT_LENndimshapestridesflagsc_contiguousf_contiguousnpndindex
in_ptrout_ptrmnin_outsijfuncs
   &&&&     r   cfarray_usecase-make_cfarray_usecase.<locals>.cfarray_usecase1   s    6q6"723A99C;;C''A''AJJq$DAQTae$$A %Ar   r   r<   r=   s   f r   make_cfarray_usecaser@   /   s     r   c                    a  V 3R  lpV# )c                   < S	! WV3\         P                  R 7      pS	! V\        \         P                  4      pVP                  V^ &   VP                  VR&   VP
                  VR&   VP                  P                  V^&   VP                  P                  V^&   ^ p\         P                  ! W#4       F"  w  rxWdWx3,          Wx,
          ,          ,          pK$  	  We^&   R# )dtyper$   r'   N)
r0   float32r)   r*   r+   r,   r-   r.   r/   r1   r2   s
   &&&&     r   r=   3make_cfarray_dtype_usecase.<locals>.cfarray_usecaseI   s    6q6472BJJ?A99C;;C''A''AJJq$DAQTae$$A %Ar   r   r?   s   f r   make_cfarray_dtype_usecaserG   F   s     r   c                   N   a  ] tR t^it o R t]R 4       tR tR tR t	R t
RtV tR# )		TestCFuncc                \   \        \        4      ! \        4      pV P                  VP                  R4       V P                  VP
                  R4       V P                  VP                  \        4       VP                  pV P                  V\        4       V P                  RV4       VP                  pV P                  V\        4       VP                  pV P                  \        P                  ! V\        P                   4      P"                  V4       V P%                  V! RR4      R4       R# )z(
Basic usage and properties of a cfunc.
r          @g      @g      @N)r   add_sigr   assertEqual__name____qualname__assertIs__wrapped__native_nameassertIsInstancestrassertInaddressintctypescastc_void_pvalueassertPreciseEqual)selffsymboladdrcts   &    r   
test_basicTestCFunc.test_basick   s     'N;']37amm[1fc*mV,yydC(XXR9??F3c2r   c                    ^ RI Hp VP                  4       w  r#\        \        4      ! \
        4      pVP                  VP                  4      pV P                  VR4       R# )r#   )cffi_usecasesg      @N)	numba.testsre   load_inline_moduler   
square_sigr   _numba_test_funcptrcffir\   )r]   re   ffilibr^   ress   &     r   	test_cffiTestCFunc.test_cffi   sH    - 335*n-%%aff-T*r   c                    \        \        R \        P                  /R7      ! \        4      pV P                  VP                  ^^4      R4       R# )r   )localsrK   N)r   div_sigr   int64r   r\   rX   )r]   r^   s   & r   test_localsTestCFunc.test_locals   s8     '3"45kBA4r   c                $   \        \        4      ! \        4      p\        4       ;_uu_ 4       pV P	                  VP                  ^^4      R4       RRR4       V P                  XP                  4       R4       \        4       ;_uu_ 4       pVP                  ^^ 4      pV P	                  VR4       RRR4       VP                  4       pV P                  RV4       V P                  RV4       R#   + '       g   i     L; i  + '       g   i     LY; i)r(   g      @N g        zZeroDivisionError:zException ignored)	r   rr   r   r   r\   rX   rM   getvaluerU   )r]   r^   errrm   s   &   r   test_errorsTestCFunc.test_errors   s    'N;'###AHHQNC8 ,#((1a.C ##C-	 
 lln*C0)3/  s   #C,	%C?,C<	?D	c                    \        \        4      ! \        4      pVP                  4       pV P	                  VP
                  V4       V P	                  R V4       R# )zfadd doubleN)r   rL   r   inspect_llvmrU   rR   )r]   r^   irs   &  r   test_llvm_irTestCFunc.test_llvm_ir   s<    'N;'^^ammR(mR(r   c                   V P                  \        4      ;_uu_ 4        \        \        RR7      ! \        4       RRR4       V P                  4       ;_uu_ 4       p\        \        4      ! \        4       RRR4       V P                  R\        XP                  4      4       R#   + '       g   i     Lq; i  + '       g   i     LJ; i)z'
Object mode is currently unsupported.
T)forceobjNzUntyped global name 'object')
assertRaisesNotImplementedErrorr   rL   r   assertTypingErrorr    rU   rT   	exception)r]   raisess   & r   test_object_modeTestCFunc.test_object_mode   sv     233'D)+6 4##%%'N?+ &4c&:J:J6KL	 43%%s   B#B6#B3	6C	r   N)rN   
__module__rO   __firstlineno__rb   r   rn   rt   rz   r   r   __static_attributes____classdictcell____classdict__s   @r   rI   rI   i   s9     3, + +50 )M Mr   rI   c                   l   a  ] tR t^t o RtR tR tR tR tR t	R t
R tR	 tR
 tR tR tR tRtV tR# )
TestCArrayz"
Tests for carray() and farray().
c                "   \         P                  ! ^
^4      P                  R4      P                  \         P                  4      p\         P
                  ! \        \         P                  R7      pV! V! V4      V! V4      .VP                  O5!   V# )
   rC   r   r&   )r0   arangereshapeastyperE   emptyr)   r+   )r]   pointer_factoryr<   r   r8   s   &&&  r   run_carray_usecaseTestCArray.run_carray_usecase   sc    IIb"%%f-44RZZ@hh-RZZ@_Q!5@@
r   c                l    V P                  W4      pV P                  W4      pV P                  WE4       R # r   )r   r\   )r]   r   pyfuncr   expectedgots   &&&&  r   check_carray_usecaseTestCArray.check_carray_usecase   s0    **?C%%o=.r   c                T    VP                   P                  \         P                  4      # r   )rX   data_asrZ   r]   arrs   &&r   make_voidptrTestCArray.make_voidptr   s    zz!!&//22r   c                |    VP                   P                  \         P                  ! \         P                  4      4      # r   )rX   r   POINTERc_floatr   s   &&r   make_float32_pointerTestCArray.make_float32_pointer   s$    zz!!&.."@AAr   c                |    VP                   P                  \         P                  ! \         P                  4      4      # r   )rX   r   r   c_doubler   s   &&r   make_float64_pointerTestCArray.make_float64_pointer   s$    zz!!&.."ABBr   c                  a  V 3R  lp\         P                  ! ^4      P                  R4      P                  \         P                  4      P                  VR7      pV! S P                  V4      VP                  4      pV! WT4       V! S P                  V4      VP                  4      pV! WTP                  R4      4       V! S P                  V4      VP                  VP                  4      pV! WT4       V! S P                  V4      VP                  \         P                  4      pV! WT4       V! S P                  V4      VP                  VP                  4      pV! WT4       V! S P                  V4      VP                  \         P                  4      pV! WTP                  \         P                  4      4       S P                  \        4      ;_uu_ 4        V! S P                  V4      VP                  4       RRR4       S P                  \        4      ;_uu_ 4        V! VP                   P"                  VP                  4       RRR4       S P                  \        4      ;_uu_ 4       pV! S P                  V4      VP                  \         P                  4       RRR4       S P%                  R\'        XP(                  4      4       R#   + '       g   i     L; i  + '       g   i     L; i  + '       g   i     L]; i)c                    < SP                  W4       SP                  V P                  P                  VP                  P                  4       R # r   )r\   rM   rX   data)r   r   r]   s   &&r   eq*TestCArray.check_carray_farray.<locals>.eq   s3    ##C2SZZ__hoo.B.BCr   )orderKNz%mismatching dtype 'int32' for pointerr   )r0   r   r   r   rE   copyr   r+   sizeravelrD   r   int32viewr   	TypeErrorrX   r   rU   rT   r   )r]   r<   r   r   baser   r   s   f&&    r   check_carray_farrayTestCArray.check_carray_farray   s   	D yy|##F+222::>CC%CP **40$**=
1**40$))<
1jjo **40$**djjI
1**40$**bjjI
1 ""4($**djjA
1""4($**bhh?
1ii!" y))""4($**5 * y))!!4::. * y))V**40$**bhhG *=&**+	- *) *) *)s$   #K	(K(2K/	K	K,	/K?	c                2    V P                  \        R4       R# )z
Test pure Python carray().
CN)r   r   r]   s   &r   test_carrayTestCArray.test_carray        	  -r   c                2    V P                  \        R4       R# )z
Test pure Python farray().
FN)r   r   r   s   &r   test_farrayTestCArray.test_farray   r   r   c              #    a"   \         P                  \         P                  \         P                  \         P                  \         P
                  \         P                  3 F[  o\        ;QJ d!    . V3R lVP                   4       F  NK  	  5M! V3R lVP                   4       4      pVP                  ! V!  x  K]  	  R# 5i)zr
Generate a bunch of concrete signatures by varying the width
and signedness of size arguments (see issue #1923).
c              3   V   <"   T F  pV\         P                  8X  d   SMTx  K   	  R # 5ir   )r   intp).0r   actual_sizes   & r   	<genexpr>.TestCArray.make_carray_sigs.<locals>.<genexpr>  s'      3"1Q )*UZZQ>"1s   &)N)
r   r   r   intcuintpuint32uintctupleargsreturn_type)r]   
formal_sigr   r   s   && @r   make_carray_sigsTestCArray.make_carray_sigs   s     
 "JJUZZ!KKu{{DK5 3",//355 3",//3 3D(($//	Ds   B>Cc                   TpV P                  \        4       F:  p\        V4      ! V4      pV P                  V P                  W5P
                  4       K<  	  TpV P                  \        4       F:  p\        V4      ! V4      pV P                  V P                  W5P
                  4       K<  	  V P                  4       ;_uu_ 4       p\        \        4      ! V4      pR R R 4       V P                  R\        XP                  4      4       TpV P                  \        4       F:  p\        V4      ! V4      pV P                  V P                  W5P
                  4       K<  	  R #   + '       g   i     L; i)Nz7mismatching dtype 'float32' for pointer type 'float64*')r   carray_float32_usecase_sigr   r   r   rX   r   carray_float64_usecase_sigrU   rT   r   carray_voidptr_usecase_sig)r]   usecasedtype_usecaser   sigr^   r   s   &&&    r   check_numba_carray_farray$TestCArray.check_numba_carray_farray
  s    (()CDCc
6"A%%d&?&?R E
 (()CDCc
6"A%%d&?&?R E ##%%01&9A &O&**+	- (()CDCc
6"A%%d&?&?R E &%s   EE-	c                :    V P                  \        \        4       R# )z;
Test Numba-compiled carray() against pure Python carray()
N)r   carray_usecasecarray_dtype_usecaser   s   &r   test_numba_carrayTestCArray.test_numba_carray"       	&&~7KLr   c                :    V P                  \        \        4       R# )z;
Test Numba-compiled farray() against pure Python farray()
N)r   farray_usecasefarray_dtype_usecaser   s   &r   test_numba_farrayTestCArray.test_numba_farray(  r   r   r   N)rN   r   rO   r   __doc__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   s   @r   r   r      sR     /
3BC&-P..	0S0MM Mr   r   c                   B   a  ] tR tRt o Rt]3R ltR tR tR tRt	V t
R# )	TestCffiStructi/  z
typedef struct _big_struct {
    int    i1;
    float  f2;
    double d3;
    float  af4[9];
} big_struct;

typedef struct _error {
    int bits:4;
} error;

typedef double (*myfunc)(big_struct*, size_t);
c                B    ^ RI Hp V! 4       pVP                  V4       V# )r#   )FFI)rj   r   cdef)r]   srcr   rk   s   &&  r   get_ffiTestCffiStruct.get_ffi@  s    e
r   c                H   V P                  4       pVP                  R 4      p\        P                  ! VRR7      pV P	                  V\
        P                  4       V P                  \        V4      ^4       V P                  VP                  R4      \
        P                  4       V P                  VP                  R4      \
        P                  4       V P                  VP                  R4      \
        P                  4       V P                  VP                  R4      \
        P                  ! \
        P                  R
R7      4       VP                  R4      p\        P                  ! VRR7      pV P	                  V\        P                  4       V P                  VP                  ^ ,          \
        P                   ! V4      4       V P                  VP                  ^,          \
        P"                  4       V P                  VP$                  \
        P                  4       R	# )
big_structTuse_record_dtypei1f2d3af4)rD   r+   myfuncN)	   )r   typeofcffi_supportmap_typerS   r   RecordrM   lenr   rE   float64NestedArrayr   	Signaturer   CPointerr   r   )r]   rk   r   nbtyper  r   s   &     r   test_type_parsing TestCffiStruct.test_type_parsingG  sg   llnZZ-
&&zDIfell3Va(t,ekk:t,emm<t,emm<MM% EMM>	
 H%##FTBc6#3#34!ennV&<=!ekk2%--8r   c                f  a V P                  4       pVP                  R 4      p\        P                  ! VRR7      p\        P                  ! VP                  R4      RR7      p\        R 4       o\        V4      V3R l4       pVP                  R4      pVP                  RV4      p\        ^4       F{  pV^{,          Wx,          n	        V^,          Wx,          n
        ^V,           ^,          Wx,          n        \        ^	4       F&  p	V^
,          V	,           Wx,          P                  V	&   K(  	  K}  	  \        VP                  RV4      4      p
VP                  V
^4      p\        P                   ! VP#                  V4      \$        P&                  ! V4      ^R	7      pS! V4      pV P)                  W4       R
# )r   Tr   r  c                    ^ p\        V P                  4       Ff  pW,          pWP                  VP                  ,          VP                  ,          ,          pWV,          P
                  P                  4       ,          pKh  	  V# )r#   )ranger   r   r   r   r   sum)r   tmpr:   elems   &   r   calc0TestCffiStruct.test_cfunc_callback.<locals>.calcd  s]    C499%www(47722Aw{{(( & Jr   c                 *   < \        W4      pS! V4      # r   )r   )ptrr6   r   r  s   && r   foo/TestCffiStruct.test_cfunc_callback.<locals>.foom  s    #>D:r   zbig_struct[3]zbig_struct*size_t)bufferrD   r+   N)r   r  r  r  r   r   newrY   r  r   r   r   r   rW   rX   r0   ndarrayr  r   as_dtyperM   )r]   rk   r   nb_big_structr   r  mydatar  r:   r;   r`   r   arrayexpectr  s   &             @r   test_cfunc_callback"TestCffiStruct.test_cfunc_callback^  s^   llnZZ-
$--j4P##CJJx$84P		 
	 
s	 
	
 )hh}f-qACCFICCFIQ#CFI1X !B


1 	  388Hc*+jjq! 

::f%((7
 e%r   c                0   V P                  4       pV P                  \        4      ;_uu_ 4       p\        P                  ! VP                  R 4      RR7       RRR4       V P                  R\        XP                  4      4       R#   + '       g   i     L7; i)errorTr   Nz0field 'bits' has bitshift, this is not supported)	r   r   
ValueErrorr  r  r  rM   rT   r   )r]   rk   r   s   &  r   test_unsupport_bitsize%TestCffiStruct.test_unsupport_bitsize  sl    llnz**f!!

7#!% + 	>  !	
 +*s   (BB	r   N)rN   r   rO   r   c_sourcer   r  r$  r)  r   r   r   s   @r   r   r   /  s+     H # 9.)&V
 
r   r   __main__):r   rX   os
subprocesssyscollectionsr   numpyr0   numbar   r   r   r   
numba.corer   r   r	   numba.core.typing.cffi_utilscore
cffi_utilsr  numba.tests.supportr
   r   r   r   unittestnumba.npr   r   r   r   rL   rr   rh   r    r)   r@   r   r   rG   r   r   voidr  rE   r   r   r  r   voidptrr   rI   r   r   rN   mainr   r   r   <module>r=     s  
  	  
 "  - - + + 3 32 2  " &
!
  & &f-%f-( 2&9 1&9 "ZZu}}(E(-u}}(E(-

EJJ@  #ZZu}}(E(-u}}(E(-

EJJ@  #ZZu}}(-

EJJ@ FM FMRzM zMz d
X d
 d
N zMMO r   