+
    :i)                     
   R t ^ RIt^ RIt^ RIHt ^ RIHt ^ RIt^ RI	H
t
 ^ RIt^ RIHtHtHt ^ RIHtHtHt ^ RIHt ^ RIHt ^ R	IHt ^ R
IHtHtHtHtHtHtH t  ^ RI!H"t" ^ RI#H$t$H%t% Rs&R t'] R 4       t(R t) ! R R]PT                  4      t+ ! R R]PX                  4      t-]P\                  ! ]+4      R 4       t/]! ]-4       ! R R]P`                  Pb                  Pd                  Pf                  4      4       t4]! ]+4      R 4       t5]! ]+]Pl                  ]Pn                  ]PX                  4      R 4       t8]! ]-4      R 4       t9]! ]-R4      R 4       t:]R 4       t; ! R R]%]$4      t<]=R8X  d   ]P|                  ! 4        R# R# ) z!
Test NumPy Subclassing features
N)Numberwraps)ir)njittypeofobjmode)cgutilstypestyping)box)TypingError)
cpu_target)	intrinsiclower_builtinoverload_classmethodregister_modeltype_callabletypeof_implregister_jitable)numpy_support)TestCaseMemoryLeakMixinc                  D    \         e   \         P                  V 4       R # R # N)_loggerappendargss   *a/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_ndarray_subclasses.py_do_logr       s    t     c                  v    \        4       ;_uu_ 4        \        V !   R R R 4       R #   + '       g   i     R # ; ir   )r   r    r   s   *r   logr#   $   s    	 
s   
'8	c                 0   a  \        S 4      V 3R  l4       pV# )c                     < . s S! V / VB # r   )r   )r   kwargsfns   *,r   coreuse_logger.<locals>.core+   s     4"6""r!   r   )r'   r(   s   f r   
use_loggerr*   *   s     
2Y# # Kr!   c                   *   a  ] tR t^3t o RtR tRtV tR# )MyArrayTc                x   VR 8X  Ed.   Rp. pV F  p\        V\        4      '       d   VP                  V4       K,  \        V\        V 4      \        P
                  34      '       d   \        V\        V 4      4      '       d=   VP                  \        P
                  ! VP                  VP                  V4      4       MVP                  V4       Ve   WWP                  8w  d   \        R4      hK  VP                  pK  \        u # 	  V! V/ VB pV P                  VP                  VP                  V4      # \        # )__call__Nzinconsistent sizes)
isinstancer   r   typenpndarrayshapedtype	TypeErrorNotImplemented	__class__)	selfufuncmethodinputsr&   Nscalarsinprets	   &&&*,    r   __array_ufunc__MyArray.__array_ufunc__=   s    ZAGc6**NN3'd4j"**%=>>!#tDz22rzz#))SYY'LMs+}		>"+,@"AA *  II))  +F+C>>#))SYY<<!!r!    N)__name__
__module____qualname____firstlineno__ __numba_array_subtype_dispatch__r@   __static_attributes____classdictcell____classdict__s   @r   r,   r,   3   s     '+$" "r!   r,   c                   R   a a ] tR t^Vt oRV 3R lltR tR t]R 4       tRt	Vt
V ;t# )MyArrayTypec           	     D   < R V RV RV R2p\         SV `  WW4WVR7       R# )zMyArray(z, ))readonlyalignednameN)super__init__)r8   r4   ndimlayoutrP   rQ   rR   r7   s   &&&&&& r   rT   MyArrayType.__init__W   s6    $r%6(!4f!( 	 	5r!   c                    \         hr   )NotImplementedError)r8   r   r&   s   &*,r   copyMyArrayType.copy\   s
     "!r!   c                *   VR 8X  d   V F;  p\        V\        P                  \        P                  34      '       d   K5  \        u # 	  \
        ;QJ d    R V 4       F  '       d   K   RM	  RM! R V 4       4      '       d   \        # \        # \        # )r.   c              3   B   "   T F  p\        V\        4      x  K  	  R # 5ir   )r/   rM   ).0r>   s   & r   	<genexpr>.MyArrayType.__array_ufunc__.<locals>.<genexpr>h   s     B6C:c;//6s   FT)r/   r
   Arrayr   r6   allrM   )r8   r9   r:   r;   r&   r>   s   &&&*, r   r@   MyArrayType.__array_ufunc__b   si    Z!#U\\'BCC))  sB6BsssB6BBB%%!!r!   c                    \         # r   )r,   )r8   s   &r   box_typeMyArrayType.box_typen   s    r!   rB   )FT)rC   rD   rE   rF   rT   rZ   r@   propertyre   rH   rI   __classcell__r7   rK   s   @@r   rM   rM   V   s-     5
"
"   r!   rM   c                 $    \         P                  ! V P                  4      p\         P
                  ! T 4      pT P                  P                  '       * p\        Y P                  Y4R7      #   \         d    \	        R T P                  : 24      hi ; i)zUnsupported array dtype: )rP   )
r   
from_dtyper4   rY   
ValueError
map_layoutflags	writeablerM   rU   )valcr4   rV   rP   s   &&   r   typeof_ta_ndarrayrr   s   sv    G((3 %%c*F99&&&HuhhBB	  G#))EFFGs    A* *%Bc                   2   a a ] tR t^~t oV 3R ltRtVtV ;t# )MyArrayTypeModelc                  < VP                   pR \        P                  ! VP                  4      3R\        P                  3R\        P
                  3R\        P
                  3R\        P                  ! VP                  4      3R\        P                  ! \        P
                  V4      3R\        P                  ! \        P
                  V4      3R\        P
                  3.p\        \        V `+  WV4       R# )	meminfoparentnitemsitemsizedatar3   stridesextra_fieldN)rU   r
   MemInfoPointerr4   pyobjectintpCPointerUniTuplerS   rt   rT   )r8   dmmfe_typerU   membersr7   s   &&&  r   rT   MyArrayTypeModel.__init__   s    ||,,W]];<u~~&uzz"$U^^GMM23ennUZZ67uzz489EJJ'	
 	.sWEr!   rB   )rC   rD   rE   rF   rT   rH   rI   rh   ri   s   @@r   rt   rt   ~   s     F Fr!   rt   c                     R  pV# )c                 \    \        VP                  \        V 4      VP                  R 7      pV# ))r4   rU   rV   )rM   r4   lenrV   )r3   r4   bufouts   &&& r   typertype_myarray.<locals>.typer   s&    ))#e*SZZ
 
r!   rB   )contextr   s   & r   type_myarrayr      s     Lr!   c           	         ^ RI HpHp VP                  R,          pVw  rxp	V! V4      ! WV	R7      p
V! VP                  4      ! W4      pV! VV
P
                  V
P                  V
P                  V
P                  V
P                  R7       VP                  4       pV P                  P                  WP                  V4       V# )    )
make_arraypopulate_array)value)rz   r3   r{   ry   rv   )numba.np.arrayobjr   r   r   return_typerz   r3   r{   ry   rv   	_getvaluenrtincref)r   buildersigr   r   r   srcarytyr3   r4   r   srcaryretaryr?   s   &&&&         r   impl_myarrayr      s    <xx|HE#!'#>F (:F6!>>"OO!>>+ 


CKKw5Jr!   c                    VP                   P                  '       g   Q h\        P                  ! V P                  4      pVP
                  P                  VP
                  P                  V4      4      pVP                  P                  WV4      pVP                   P                  P                  VP                  W4       V# r   )r   
enable_nrtr   as_dtyper4   env_manager
read_const	add_constpyapinrt_adapt_ndarray_to_pythonr   decrefr   )typrp   rq   np_dtypedtypeptrnewarys   &&&   r   	box_arrayr      s    99%%cii0H}}''(?(?(IJHWW008DFIIMMC-Mr!   	_allocatec                    R pV# )z;Implements a Numba-only classmethod on the array type.
    c                 0    \        R W4       \        W4      # )LOG _ol_array_allocate)r#   allocator_MyArray)cls	allocsizealigns   &&&r   impl _ol_array_allocate.<locals>.impl   s    $i7 22r!   rB   )r   r   r   r   s   &&& r   _ol_array_allocater      s    3 Kr!   c                     R  p\         P                  ! \         P                  4      p\        P                  ! WAV4      pWS3# )c                    V P                   P                  4        Vw  rEVP                  p\        P                  ! ^ 4      p\
        P                  p\        P                  ! VR4      p	\
        P                  ! WiRR7      p
VP                  V
R4      p\        P                  ! V\
        P                  Wx.4      p\
        P                  ! WlRR7      pVP                  P                  R4       \        V\        P                  4      '       d"   V P!                  \"        P$                  V4      pMVP&                  V8X  g   Q R4       hVP                  WW[.4      pRVn        V# )    "_nrt_get_sample_external_allocator)rR   'NRT_MemInfo_alloc_safe_aligned_externalnoaliaszalign must be a uint32allocate_MyArrayrB   )r   _require_nrtmoduler   IntTyper	   	voidptr_tFunctionTypeget_or_insert_functioncallintp_treturn_valueadd_attributer/   builtinsintget_constantr
   uint32r0   rR   )r   r   r   r   sizer   modu32voidptrget_alloc_fntyget_alloc_fn	ext_allocfntyr'   r   s   &&&&           r   r   allocator_MyArray.<locals>.impl   s     "nnjjn##"555&J
 LLr2	w(FG++E
 	%%i0eX\\**((u=E::$>&>>$||Bu 89&	r!   )r
   r}   r   r   	signature)	typingctxr   r   r   mipr   s   &&&   r   r   r      s7    6 

u}}
-C


35
1C9r!   c                   r   a  ] tR t^t o R tR tR tR t]P                  R 4       t
R t]R 4       tRtV tR	# )
TestNdarraySubclassesc                T   \         R 4       p\        P                  ! ^4      p\        VP                  VP
                  V4      pVP                  V4      pV! V4      pV P                  V\        4       V P                  \        V4      \        V4      4       V P                  WE4       R# )z6This tests the path to `MyArrayType.box_type`
        c                     V ^,           # )   rB   as   &r   foo6TestNdarraySubclasses.test_myarray_return.<locals>.foo   s    q5Lr!   Nr   r1   aranger,   r3   r4   py_funcassertIsInstanceassertIsr0   assertPreciseEqualr8   r   r   r   expectedgots   &     r   test_myarray_return)TestNdarraySubclasses.test_myarray_return   s     
	 
	 iilCIIsyy#.;;q>!fc7+d8nd3i0.r!   c                T   \         R  4       p\        P                  ! ^4      p\        VP                  VP
                  V4      pVP                  V4      pV! V4      pV P                  V\        4       V P                  \        V4      \        V4      4       V P                  WE4       R# )c                     V # r   rB   r   s   &r   r   8TestNdarraySubclasses.test_myarray_passthru.<locals>.foo   s    Hr!   Nr   r   s   &     r   test_myarray_passthru+TestNdarraySubclasses.test_myarray_passthru   s    		 
	 iilCIIsyy#.;;q>!fc7+d8nd3i0.r!   c                   \         R  4       p\        P                  ! ^4      pVP                  V4      pV! V4      pV P	                  V\
        4       V P                  \        V4      \        V4      4       V P                  W44       R# )c                 D    \        V P                  V P                  V 4      # r   r,   r3   r4   )r   s   &r   r   7TestNdarraySubclasses.test_myarray_convert.<locals>.foo  s    399cii55r!   N)	r   r1   r   r   r   r,   r   r0   r   )r8   r   r   r   r   s   &    r   test_myarray_convert*TestNdarraySubclasses.test_myarray_convert  sn    		6 
	6 iil;;s##hc7+d8nd3i0.r!   c                    R  p\         P                  ! ^4      pV! V4      pV P                  \        V4      \         P                  4       V P                  W2V,           4       R# )c                 ~    \        V P                  V P                  V 4      p\        P                  ! V4      V ,           # r   r,   r3   r4   r1   asarrayr   	converteds   & r   r   ?TestNdarraySubclasses.test_myarray_asarray_non_jit.<locals>.foo  s,    		399c:I::i(3..r!   N)r1   r   r   r0   r2   r   r8   r   r   r   s   &   r   test_myarray_asarray_non_jit2TestNdarraySubclasses.test_myarray_asarray_non_jit  sG    	/ iil#hd3i,3Y/r!   c                    V P                  4        \        R  4       p\        P                  ! ^4      pV! V4      pV P	                  \        V4      \        P                  4       R# )c                 p    \        V P                  V P                  V 4      p\        P                  ! V4      # r   r   r   s   & r   r   7TestNdarraySubclasses.test_myarray_asarray.<locals>.foo!  s'    		399c:I::i((r!   N)disable_leak_checkr   r1   r   r   r0   r2   r   s   &   r   test_myarray_asarray*TestNdarraySubclasses.test_myarray_asarray  sP    !		) 
	) iil#h 	d3i,r!   c                L   \         R  4       p\        P                  ! ^\        P                  R7      pV P	                  \
        4      ;_uu_ 4       pV! V4       RRR4       RpV F(  pV P                  V\        XP                  4      4       K*  	  R#   + '       g   i     LB; i)c                 T    \        V P                  V P                  V 4      pW,           # r   r   r   s   & r   r   ATestNdarraySubclasses.test_myarray_ufunc_unsupported.<locals>.foo-  s!    		399c:I((r!   r4   N)zNo implementation of functionz3add(MyArray(1, float32, C), MyArray(1, float32, C)))	r   r1   r   float32assertRaisesr   assertInstr	exception)r8   r   r   raisesmsgms   &     r   test_myarray_ufunc_unsupported4TestNdarraySubclasses.test_myarray_ufunc_unsupported,  s}    		) 
	) ii,{++vH ,FAMM!S!1!123  ,+s   	BB#	c                   \         R 4       p\        P                  ! ^\        P                  R7      p\	        VP
                  VP                  V4      pVP                  V4      pV! V4      pV P                  WT4       \        p\        P                  p\        VP                  4      pVP                  V4      p	V P                  VRV^ ,          P                  V	3RV^,          P                  V	3.4       R# )z*
Checks that our custom allocator is used
c                     V \         P                  ! V P                  \         P                  R 7      ,           pV R,           pW3# )r  y              ?)r1   r   r   float64)r   brq   s   &  r   r   BTestNdarraySubclasses.test_myarray_allocator_override.<locals>.foo@  s/    BIIaffBJJ77ABA4Kr!   r  r   N)r   r1   r   r  r,   r3   r4   r   r   r   r   target_contextr   get_preferred_array_alignmentassertEqualnbytes)
r8   r   r   r   r   r   logged_lines	targetctxnb_dtyper   s
   &         r   test_myarray_allocator_override5TestNdarraySubclasses.test_myarray_allocator_override;  s    
 
	 
	
 ii,CIIsyy#.;;q>!f.--	#))$77A%x{'9'95A%x{'9'95A(
 	r!   rB   N)rC   rD   rE   rF   r   r   r   r  unittestexpectedFailurer  r  r*   r#  rH   rI   rJ   s   @r   r   r      sL     //
/0 - -4  r!   r   __main__)?__doc__r   r%  numbersr   	functoolsr   numpyr1   llvmliter   numbar   r   r   
numba.corer	   r
   r   numba.core.pythonapir   numba.core.errorsr   numba.core.registryr   numba.extendingr   r   r   r   r   r   r   numba.npr   numba.tests.supportr   r   r   r    r#   r*   r2   r,   ra   rM   registerrr   r(   	datamodelmodelsStructModelrt   r   r   DTyper   r   r   r   r   rC   mainrB   r!   r   <module>r;     s          ' ' - - $ ) */ / / # 9 
  
 "bjj  "F%++ : gC C Fuzz++22>> F F  w  wU[[A B, [  k;/ 0  BmOX m` zMMO r!   