+
    :i?                         R t ^ RIt^ RIt^ RIHt ^ RIHt ^ tR
tRt	Rt
RtRt ! R R]4      t ! R R]4      t ! R R	]4      tR# )z2
Testing C implementation of the numba typed-list
N)TestCase)
_helperlibc                      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
 4       t]R 4       tR tR tR tRR l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# )ListzIA wrapper around the C-API to provide a minimal list object for
testing.
c                J    Wn         W n        V P                  W#4      V n        R# )z
Parameters
----------
tc : TestCase instance
item_size : int
    byte size for the items
allocated : int
    number of items to allocate for
N)tc	item_sizelist_newlp)selfr   r   	allocateds   &&&&W/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/tests/test_listimpl.py__init__List.__init__   s     "--	5    c                P    V P                   P                  V P                  4       R # N)r   numba_list_freer
   r   s   &r   __del__List.__del__(   s    (r   c                "    V P                  4       # r   )list_lengthr   s   &r   __len__List.__len__+   s    !!r   c                $    V P                  W4      # r   )list_setitemr   iitems   &&&r   __setitem__List.__setitem__.   s      ))r   c                $    V P                  V4      # r   )list_getitemr   r   s   &&r   __getitem__List.__getitem__1   s      ##r   c                    \        V 4      # r   )ListIterr   s   &r   __iter__List.__iter__4   s    ~r   c                (    V P                  V4       R # r   )list_delitemr$   s   &&r   __delitem__List.__delitem__7   s    !r   c                    VR8  g   \        V 4      ^ 8X  d   \        R4       V# VR8X  d   \        V 4      ^,
          pV# )   list index out of range)len
IndexErrorr$   s   &&r   handle_indexList.handle_index:   s@     r6SY!^01  "WD	AAr   c                "    V P                  4       # r   )list_allocatedr   s   &r   r   List.allocatedC   s    ""$$r   c                "    V P                  4       # r   )list_is_mutabler   s   &r   
is_mutableList.is_mutableG   s    ##%%r   c                $    V P                  ^4      # )r0   list_set_is_mutabler   s   &r   set_mutableList.set_mutableK       ''**r   c                $    V P                  ^ 4      # )    r?   r   s   &r   set_immutableList.set_immutableN   rC   r   c                (    V P                  V4       R # r   )list_append)r   r   s   &&r   appendList.appendQ   s    r   c                $    V P                  V4      # r   )list_popr$   s   &&r   popList.popT   s    }}Qr   c                    \         P                  ! 4       pV P                  P                  \         P                  ! V4      W4      pV P                  P                  V\        4       V# r   )ctypesc_void_pr   numba_list_newbyrefassertEqualLIST_OK)r   r   r   r
   statuss   &&&  r   r	   List.list_newY   sK    __''LLi
 	FG,	r   c                L    V P                   P                  V P                  4      # r   )r   numba_list_lengthr
   r   s   &r   r   List.list_lengtha   s    ww((11r   c                L    V P                   P                  V P                  4      # r   )r   numba_list_allocatedr
   r   s   &r   r8   List.list_allocatedd   s    ww++DGG44r   c                L    V P                   P                  V P                  4      # r   )r   numba_list_is_mutabler
   r   s   &r   r;   List.list_is_mutableg   s    ww,,TWW55r   c                N    V P                   P                  V P                  V4      # r   )r   numba_list_set_is_mutabler
   )r   r<   s   &&r   r@   List.list_set_is_mutablej   s    ww00*EEr   c                    V P                   P                  V P                  W4      pV\        8X  d   \	        R 4      hV\
        8X  d   \        R4      hV P                   P                  V\        4       R# )r1   list is immutableN)	r   numba_list_setitemr
   LIST_ERR_INDEXr4   LIST_ERR_IMMUTABLE
ValueErrorrU   rV   )r   r   r   rW   s   &&& r   r   List.list_setitemm   sY    ++DGGQ=^#677))011GG0r   c                4   V P                  V4      p\        P                  ! V P                  4      pV P                  P                  V P                  W4      pV\        8X  d   \        R 4      hV P                  P                  V\        4       VP                  # )r1   )r5   rQ   create_string_bufferr   r   numba_list_getitemr
   rh   r4   rU   rV   raw)r   r   item_out_bufferrW   s   &&  r   r#   List.list_getitemv   st    a  55dnnE++DGGQH^#677GG0"&&&r   c                    V P                   P                  V P                  V4      pV\        8X  d   \	        R 4      hV P                   P                  V\        4       R# )rf   N)r   numba_list_appendr
   ri   rj   rU   rV   )r   r   rW   s   && r   rI   List.list_append   sE    **477D9''011FG,r   c                l    V P                  V4      pV P                  V4      pV P                  V4       V# r   )r5   r#   r,   r   s   && r   rM   List.list_pop   s5    a   #!r   c                4   \        V\        4      '       d   V P                  P                  V P                  VP
                  VP                  VP                  4      pV\        8X  d   \        R 4      hV P                  P                  V\        4       R# V P                  V4      pV P                  P                  V P                  V4      pV\        8X  d   \        R4      hV\        8X  d   \        R 4      hV P                  P                  V\        4       R# )rf   r1   N)
isinstanceslicer   numba_list_delete_slicer
   startstopstepri   rj   rU   rV   r5   numba_list_delitemrh   r4   )r   r   rW   s   && r   r,   List.list_delitem   s    aWW44TWW56WW56VV56VV=F ++ !455GG0 !!!$AWW//;F' !:;;-- !455GG0r   c                P    V P                   P                  WP                  4       R # r   )r   numba_list_iterr
   )r   itptrs   &&r   	list_iterList.list_iter   s    ww/r   c                   \         P                  ! ^ 4      pV P                  P                  V\         P                  ! V4      4      pV\
        8X  d   \        R4      hV\        8X  d   \        hV P                  P                  V^ 4       \         P                  V P                  ,          P                  VP                  4      pVP                  # )rE   zlist mutated)rQ   rR   r   numba_list_iter_nextrT   LIST_ERR_MUTATEDrj   LIST_ERR_ITER_EXHAUSTEDStopIterationassertGreaterEqualc_charr   from_addressvalue)r   r   birW   r   s   &&   r   list_iter_nextList.list_iter_next   s    __Q--6<<#
 %%^,,..GG&&vq1MMDNN2@@JD::r   )r   r
   r   N)r2   )"__name__
__module____qualname____firstlineno____doc__r   r   r   r    r%   r)   r-   r5   propertyr   r<   rA   rF   rJ   rN   r	   r   r8   r;   r@   r   r#   rI   rM   r,   r   r   __static_attributes____classdictcell____classdict__s   @r   r   r      s     6 )"*$ % % & &++ 
256F1'-1(0 r   r   c                   :   a  ] tR t^t o RtR tR tR t]tRt	V t
R# )r(   z An iterator for the `List`.
    c                P   Wn         V P                   P                  P                  4       p\        P                  V,          ! ^ 4      V n        \        P                  ! V P
                  \        P                  4      V n        V P                   P                  V P                  4       R# rE   N)
parentr   numba_list_iter_sizeofrQ   c_char_pit_state_bufcastrR   itr   )r   r   itsizes   && r   r   ListIter.__init__   se    668#__v5q9++d//Adgg&r   c                    V # r    r   s   &r   r)   ListIter.__iter__   s    r   c                L    V P                   P                  V P                  4      # r   )r   r   r   r   s   &r   __next__ListIter.__next__   s    {{))$''22r   )r   r   r   N)r   r   r   r   r   r   r)   r   nextr   r   r   s   @r   r(   r(      s      '3 Dr   r(   c                      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R tR tR tRtV tR# )TestListImplc                P   \         P                  p\         P                  pRR lpV! R\         P                  4      V n        V! R\         P                  \         P                  ! V4      \         P
                  \         P
                  .4      V n        V! RRV.4      V n        V! R\         P                  V.4      V n        V! R\         P                  V.4      V n	        V! R\         P                  V.4      V n
        V! R	RV\         P                  .4      V n        V! R
\         P                  V\         P
                  \         P                  .4      V n        V! R\         P                  V\         P                  .4      V n        V! R\         P                  V\         P
                  \         P                  .4      V n        V! R\         P                  V\         P
                  .4      V n        V! R\         P                  V\         P
                  \         P
                  \         P
                  .4      V n        V! R\         P$                  4      V n        V! RRVV.4      V n        V! R\         P                  V\         P                  ! \         P                  4      .4      V n        R# )zEBind to the c_helper library and provide the ctypes wrapper.
        c                 l    \         P                  ! V.VO5!  pV! \        P                  V ,          4      # r   )rQ   	CFUNCTYPEr   	c_helpers)namerestypeargtypesprotos   &&& r   wrap TestListImpl.setUp.<locals>.wrap   s-    $$W8x8E--d344r   	test_listr	   	list_freeNr   r8   r;   r@   r   rI   r#   r,   list_delete_slicelist_iter_sizeofr   r   )r   )rQ   rR   c_intnumba_test_listPOINTER	c_ssize_trS   r   rZ   r]   r`   rc   r   rg   rs   rn   r~   rz   c_size_tr   r   r   )r   list_titer_tr   s   &   r   setUpTestListImpl.setUp   sH    	5
  $LL 
 #LL^^F#V%5%5v7G7GH
  $H 
 "&LLH"
 %)LLH%
! &*LLH&
" *.!V\\"*
& #'LLV%%v7#
 "&LLV__%"
 #'LLV%%v7#
 #'LLV%%&#
 (,LLV%%v'7'79I9IJ(
$ '+OO'
#
  $ 
 %)LLv/%
!r   c                J    V P                  4       pV P                  V^ 4       R# r   )r   rU   )r   rets   & r   test_simple_c_testTestListImpl.test_simple_c_test4  s     ""$a r   c                V    \        V ^^ 4      pV P                  \        V4      ^ 4       R#    N)r   rU   r3   r   ls   & r   test_lengthTestListImpl.test_length9  s$    q!Q#r   c                    \        ^4       FG  p\        V ^V4      pV P                  \        V4      ^ 4       V P                  VP                  V4       KI  	  R# )   N)ranger   rU   r3   r   )r   r   r   s   &  r   test_allocationTestListImpl.test_allocation=  sF    rAT1a ASVQ'Q[[!, r   c                    \        V ^^4      pVP                  R4       V P                  \        V4      ^4       V^ ,          pV P                  VR4       R# )r      abcdefghNr   rJ   rU   r3   r   r   rs   &  r   test_append_get_string#TestListImpl.test_append_get_stringC  sI    q!	Q#aDK(r   c                   \        V ^^4      pVP                  \        P                  ! R^4      4       V P	                  \        V4      ^4       \        P                  ! RV^ ,          4      ^ ,          pV P	                  V^4       R# )r   qN)r   rJ   structpackrU   r3   unpackr   s   &  r   test_append_get_int TestListImpl.test_append_get_intJ  sd    q!	S!$%Q#MM#qt$Q'Ar   c                   \        V ^^4      pVP                  R4       V P                  \        V4      ^4       VP                  R4       V P                  \        V4      ^4       V^,          pV P                  VR4       R# )r   r   s   hijklmnoNr   r   s   &  r   test_append_get_string_realloc+TestListImpl.test_append_get_string_reallocQ  si    q!	Q#	Q#aDK(r   c                "   \        V ^^ 4      pV P                  \        4      ;_uu_ 4        V^ ,           RRR4       V P                  \        4      ;_uu_ 4        RV^ &   RRR4       R#   + '       g   i     L=; i  + '       g   i     R# ; i)r   Nr   )r   assertRaisesr4   r   s   & r   !test_set_item_getitem_index_error.TestListImpl.test_set_item_getitem_index_errorZ  sb    q!z**aD +z**AaD +* +****s   
A*A=*A:	=B	c                    \        V ^^ 4      p. ROpV F  pVP                  V4       K  	  . pV F  pVP                  V4       K  	  V P                  W$4       R# )r0   N   a   b   c   d   e   f   g   h)r   rJ   rU   )r   r   valuesr   receivedjs   &     r   	test_iterTestListImpl.test_itera  sS    q!AAHHQK AOOA *r   c                   \        V ^^ 4      p. ROpV F  pVP                  V4       K  	  V P                  \        V4      ^4       VP	                  4       pV P                  RV4       V P                  \        V4      ^4       V Uu. uF  qUNK  	  ppV P                  WBRR 4       VP	                  ^ 4      pV P                  RV4       V P                  \        V4      ^4       VP	                  ^4      pV P                  RV4       V P                  \        V4      ^4       . ROpV Uu. uF  qUNK  	  ppV P                  WF4       R# u upi u upi )r0   r   r   r   Nr   r2   r   r   r   r   r   r   rJ   rU   r3   rN   r   r   r   r   r   r   expecteds   &      r   test_popTestListImpl.test_popk  s$   q!AAHHQK Q#557x(Q# >q!Aq>#2;/558x(Q#558x(Q#1 >q!Aq>, " "   
E,
Ec                    \        V ^^ 4      pV P                  \        4      ;_uu_ 4        VP                  4        RRR4       R#   + '       g   i     R# ; ir   )r   r   r4   rN   r   s   & r   test_pop_index_error!TestListImpl.test_pop_index_error  s9    q!z**EEG +***s   AA	c                   \        V ^^ 4      p. ROpV F  pVP                  V4       K  	  V P                  \        V4      ^4       VP	                  4       pV P                  RV4       V P                  \        V4      ^4       V Uu. uF  qUNK  	  ppV P                  WBRR 4       VP	                  ^ 4      pV P                  RV4       V P                  \        V4      ^4       VP	                  ^4      pV P                  RV4       V P                  \        V4      ^4       . ROpV Uu. uF  qUNK  	  ppV P                  WF4       R# u upi u upi )      aaaa   dddds   hhhhN)r     bbbb   ccccr     eeee   ffff   ggggs   hhhhhr2   )r	  r
  r  r  r  r   r   s   &      r   test_pop_byteTestListImpl.test_pop_byte  s&   q!7AHHQK Q#557(+Q# >q!Aq>#2;/558(+Q#558(+Q#@ >q!Aq>, " "r  c                    \        V ^^ 4      p. ROpV F  pVP                  V4       K  	  V P                  \        V4      ^4       V^  V P                  \        V4      ^4       V P                  \	        V4      VR,          4       VR V P                  \        V4      ^4       V P                  \	        V4      V^R 4       V^ V P                  \        V4      ^4       V P                  \	        V4      . RO4       R# )r0   :r0   NNNr   r2   r   r   rJ   rU   r3   listr   r   r   r   s   &   r   test_delitemTestListImpl.test_delitem  s    q!AAHHQK Q# aDQ#a&*-bEQ#a&2,/aDQ#a"@Ar   c                p   \        V ^^ 4      p. R	OpV F  pVP                  V4       K  	  V P                  \        V4      ^4       VR V P                  \        V4      ^4       V P                  \	        V4      VR,          4       VR V P                  \        V4      ^4       V P                  \	        V4      . R
O4       VR V P                  \        V4      ^4       V P                  \	        V4      RR.4       VR V P                  \        V4      ^ 4       V P                  \	        V4      . 4       R# )r0   r   r   :rE   r      :r0   r   r  rE   r0   r0   :r     r0   :rE   r  r0   Nr   )r   r   r   r  r  s   &   r   test_delete_sliceTestListImpl.test_delete_slice  s   q!AAHHQK Q# eHQ#a&-0 eHQ#a"45 eHQ#a4,/ eHQ#a"%r   c                  aa \        V S^ 4      pVV3R lp\        S4       F  pVP                  V! V4      4       K  	  V P                  \	        V4      S4       \        S4       F!  pV P                  W5,          V! V4      4       K#  	  R# )rE   c                 l   < R P                  SV ,
          ^,
          S4      P                  R4      pVRS # )z{:0{}}zlatin-1N)formatencode)vtmpr   nmaxs   & r   	make_item,TestListImpl.check_sizing.<locals>.make_item  s2    //$(Q,	:AA)LCz	?"r   N)r   r   rJ   rU   r3   )r   r   r"  r   r#  r   s   &ff   r   check_sizingTestListImpl.check_sizing  sp    y!$	# tAHHYq\"  	Q&tAQT9Q<0 r   c                `    \        ^^4       F  pV P                  V^V,          R7       K  	  R# )r0   )r   r"  N)r   r%  r$   s   & r   test_sizingTestListImpl.test_sizing  s)    q"A15 r   c                   \        V ^^4      p\        P                  ! R^4      pVP                  V4       V P	                  VP
                  4       V P                  \        V4      ^4       \        P                  ! RV^ ,          4      ^ ,          pV P                  V^4       VP                  4        V P                  VP
                  4       V P                  \        4      ;_uu_ 4       pVP                  V4       RRR4       V P                  R\        XP                  4      4       V P                  \        4      ;_uu_ 4       pW!^ &   RRR4       V P                  R\        VP                  4      4       V P                  \        4      ;_uu_ 4       pVP!                  4        RRR4       V P                  R\        VP                  4      4       V P                  \        4      ;_uu_ 4       pV^  RRR4       V P                  R\        VP                  4      4       V P                  \        4      ;_uu_ 4       pVR RRR4       V P                  R\        VP                  4      4       VP#                  4        V P	                  VP
                  4       V P                  \        V4      ^4       \        P                  ! RV^ ,          4      ^ ,          pV P                  V^4       R#   + '       g   i     EL; i  + '       g   i     EL; i  + '       g   i     ELy; i  + '       g   i     EL?; i  + '       g   i     EL; i)r   r   Nrf   r  )r   r   r   rJ   
assertTruer<   rU   r3   r   rF   assertFalser   rj   assertInstr	exceptionrN   rA   )r   r   oner   raisess   &    r   test_mutabilityTestListImpl.test_mutability  sM   q!kk#q!	%Q#MM#qt$Q'A 	
&z**fHHSM +)3v/?/?+@Az**faD +)3v/?/?+@Az**fEEG +)3v/?/?+@Az**f! +)3v/?/?+@Az**f% +)3v/?/?+@A	 	%Q#MM#qt$Q'A3 +** +** +** +** +**s<   +K/LL1L+?L?/L 	L	L(	+L<	?M	)r]   rs   rz   r~   r   rn   r`   r   r   r   rZ   rS   rc   rg   r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r%  r(  r2  r   r   r   s   @r   r   r      sb     k
Z!
$-))+-2
-4B(&81 6
' 'r   r   r2   )r   rQ   r   numba.tests.supportr   numbar   rV   rh   LIST_ERR_NO_MEMORYr   r   ri   objectr   r(   r   r   r   r   <module>r<     se      (      \6 \~v &I8 Ir   