
    xKg                        d dl Z d dlZd dlmZmZ d dlmZmZ d dl	m
Z
 d dlmZmZ d dlmZmZ d dlmZ d dlmZ d d	lmZmZ d d
lmZ  G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zy)    N)TestCasecaptured_stdout)njit	literally)types)tuple_setitembuild_full_slice_tuple)to_fixed_tupleempty_inferred)memcpy_region)dump_refcount)trailing_zerosleading_zeros)TypingErrorc                       e Zd ZdZd Zd Zy)TestTupleIntrinsicz!Tests for numba.unsafe.tuple
    c           
         t         d        }t        j                  d       t        d      D ]4  }t        j                  dd      }t        t        |      D cg c]  }t        j                  d|       c}      }t        t        |      D cg c]  }t        j                  dd       c}      }t        t        t        |                  }t        j                  |       t        |      }t        |      }t        j                  |      }	||	t        j                  |      <    ||||      \  }
}| j                  |
|       | j                  |t        |	             7 y c c}w c c}w )Nc                 P    | }t        ||      D ]  \  }}t        |||      } | |fS N)zipr   )tupidxsvalsout_tupivs         f/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/tests/test_unsafe_intrinsics.pyfooz2TestTupleIntrinsic.test_tuple_setitem.<locals>.foo   s3    GD$1'A6 (<    {         
   r   )r   randomseedrangerandinttuplelistlenshufflenpasarrayassertEqual)selfr   _nr   r   r   r   
expect_tup
expect_outgot_tupgot_outs               r   test_tuple_setitemz%TestTupleIntrinsic.test_tuple_setitem   s#   		  
	  	CrAq"%AuQx@x!1-x@AC%(C(Q&..R0(CDDc$i()DNN4 ;DsJJ/J+/Jrzz$'("3d3GWWj1WeJ&78!  ACs   E&
E+
c           	         t         d        }t        dd      D ]  }t        j                  j                  t        j                  |      dz         }t        d|dz         D ])  }t        j
                  j                  | |||             + | j                  t              5   |||dz          d d d         y # 1 sw Y   xY w)Nc                 0    | t        t        |               S r   )r	   r   )ar1   s     r   full_slice_arrayz=TestTupleIntrinsic.test_slice_tuple.<locals>.full_slice_array.   s     +IaL9::r   r"      )	r   r&   r,   r$   arangetestingassert_array_equalassertRaisesr   )r/   r:   r1   r9   r   s        r   test_slice_tuplez#TestTupleIntrinsic.test_slice_tuple-   s    		; 
	; q!A		  1!12A1a!e_

--a1A!Q1GH %"";/ AE* 0/	  0/s   !B99C	N)__name__
__module____qualname____doc__r6   r@    r   r   r   r      s    96+r   r   c                   "    e Zd ZdZd Zd Zd Zy)TestNdarrayIntrinsicz#Tests for numba.unsafe.ndarray
    c           	         dt         fd       }t        j                  j                  d       t	        d      D ]  }t        j                  j                  d      } ||      \  }}}}| j                  |t        |d d              | j                  |t        |d d              | j                  |t        |d d              | j                  |d        | j                  t              5 } |t        j                  j                  d             d d d        | j                  d	t        j                               t         d
        }	| j                  t              5 } |	t        j                  j                  d      d       d d d        d}
| j                  |
t        |j                               y # 1 sw Y   xY w# 1 sw Y   =xY w)Nr;   c                 r    t        | d      }t        | d      }t        |       }t        | d      }||||fS )Nr"   )length   r   r
   )arrayr9   bcdconsts        r   r   z5TestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.fooB   sA    uQ/Aua(Aue,Aua(AaA:r   r    r#   r"   rK   rE   r"   rK   zNot supported on array.ndim=2c                     t        | |      S r   rL   )rM   rJ   s     r   tuple_with_lengthzCTestNdarrayIntrinsic.test_to_fixed_tuple.<locals>.tuple_with_length]   s    !%00r   z$*length* argument must be a constant)r   r,   r$   r%   r&   r.   r(   r?   r   assertInstr	exception)r/   r   r0   arrr9   rN   rO   rP   raisesrT   	expectmsgrQ   s              @r   test_to_fixed_tuplez(TestNdarrayIntrinsic.test_to_fixed_tuple?   s|   		 
	 			srA))""1%CSJAq!QQc"1g/Qc"1g/Qc"1g/Q#  {+v		  () ,5&**+	- 
	1 
	1 {+vbii..q115 ,:	iV%5%5!67 ,+ ,+s   .&F9"'G9GGc                     t         d        } |       }t        j                  dgdz        }t        j                  j	                  ||       y )Nc                  b    t        d      } d}t        t        |             D ]
  }|dz   | |<    | S N)r#   g?rK   )r   r&   r*   Sr9   r   s      r   funcz;TestNdarrayIntrinsic.test_issue_3586_variant1.<locals>.funcg   s5    u%AA3q6]1u! #Hr   @r#   r   r,   r-   r=   r>   r/   ra   gotexpects       r   test_issue_3586_variant1z-TestNdarrayIntrinsic.test_issue_3586_variant1f   E    		 
	 fSEBJ'


%%c62r   c                     t         d        } |       }t        j                  dgdz        }t        j                  j	                  ||       y )Nc                  d    t        d      } d}t        | j                        D ]
  }|dz   | |<    | S r^   )r   r&   sizer_   s      r   ra   z;TestNdarrayIntrinsic.test_issue_3586_variant2.<locals>.funct   s5    u%AA166]1u! #Hr   rb   r#   rc   rd   s       r   test_issue_3586_variant2z-TestNdarrayIntrinsic.test_issue_3586_variant2s   rh   r   N)rA   rB   rC   rD   r[   rg   rl   rE   r   r   rG   rG   <   s    %8N33r   rG   c                       e Zd ZdZd Zy)TestBytesIntrinsicz!Tests for numba.unsafe.bytes
    c                    t         d        }t        j                  dt        j                        }t        j                  dt        j                        } ||d|dd       g d}t        j
                  j                  ||       y )Nc                 t    t        | j                  j                  ||j                  j                  ||d       y )Nr"   )r   ctypesdata)dst	dst_indexsrc	src_indexnbytess        r   r   z2TestBytesIntrinsic.test_memcpy_region.<locals>.foo   s*     #**//9**//9faAr   r#   )dtype   r"      )
r   r   r   r   r"   rK   r;   ry   rz   r   )r   r,   zerosint8r<   r=   r>   )r/   r   rP   sexpecteds        r   test_memcpy_regionz%TestBytesIntrinsic.test_memcpy_region   sk    		A 
	A
 HHRrww'IIb( 	Aq!Q1


%%a2r   N)rA   rB   rC   rD   r   rE   r   r   rn   rn      s    3r   rn   c                       e Zd Zd Zy)TestRefCountc                    t         d        }t               5 } |        d d d        j                         }d}t        j                  d d d   }t        j
                  j                  |gdz        }| j                  |j                  |      |       | j                  |j                  |      |       y # 1 sw Y   xY w)Nc                  b    t        j                  d      } | | f}t        |        t        |       y )Nr#   )r,   onesr   )r9   rN   s     r   use_dump_refcountz:TestRefCount.test_dump_refcount.<locals>.use_dump_refcount   s(    AAA!!r   zdump refct of {}r"   rK   )	r   r   getvaluer   float64Tuple
from_typesrU   format)r/   r   streamoutputpatarytytuptys          r   test_dump_refcountzTestRefCount.test_dump_refcount   s    		 
	 &  " cc"&&w{3cjj'0cjj'0 s   B55B>N)rA   rB   rC   r   rE   r   r   r   r      s    1r   r   c                   $    e Zd Zd Zd Zd Zd Zy)TestZeroCountsc           
         t        d       }t        d       }g d}t        j                  D ]  }| j                   | |d             | |d            cxk(  xr |j                  k(  nc        t        |j                        D ];  } |d|z        }| j                   ||       ||      z   dz   |j                         = |D ]A  }| j                   | ||            d       | j                   | ||dz               d       C  t        j                  D ]:  }| j                   | |d             | |d            cxk(  xr |j                  k(  nc        t        |j                  dz
        D ]s  } |d|z        }| j                   ||       ||      z   dz   |j                         | j                   ||       d       | j                   ||       ||              u |D ]c  }|j                  |cxk  r|j                  k  sn %| j                   | ||            d       | j                   | ||dz               d       e = y )Nc                     t        |       S r   )r   xs    r   <lambda>z0TestZeroCounts.test_zero_count.<locals>.<lambda>   s	    M!,r   c                     t        |       S r   )r   r   s    r   r   z0TestZeroCounts.test_zero_count.<locals>.<lambda>   s	    N1-r   )rK   *   ~      r   rK   r"   )r   r   unsigned_domain
assertTruebitwidthr&   r.   assertGreatersigned_domainminvalmaxval)r/   lztzevensTr   valr1   s           r   test_zero_countzTestZeroCounts.test_zero_count   s   ,--.!&&AOOBqtH1Q4>AJJ>?1::&Qi  C2c7!2Q!6

C ' ""2ad8Q/  Aa!eHq1  ' $$AOOBqtH1Q4>AJJ>?1::>*Qi  C2c7!2Q!6

C  SD1-  C"cT(3	 +
 xx100""2ad8Q/  Aa!eHq1	  %r   c                     t        fd      j                  t        d t        j                        }t        |t              D ]c  } j                  t              5 }  |d             d d d         j                  dj                  |      t        j                               e  fd} |dd        |d	d
       y # 1 sw Y   ZxY w)Nc                       |  S r   rE   )r   ra   s    r   r   z0TestZeroCounts.check_error_msg.<locals>.<lambda>   s	    ar   c                 8    t        | t        j                         S r   )
isinstancer   Integerr   s    r   r   z0TestZeroCounts.check_error_msg.<locals>.<lambda>   s    *Q66r   )keyrK   z;{} is only defined for integers, but value passed was '{}'.c                     j                  t        t        f      5 } |   d d d        j                  dj	                        t        j                               y # 1 sw Y   >xY w)Nz{}() )r?   r   	TypeErrorrU   r   rV   rW   )argsstringecfunc	func_namer/   s      r   checkz-TestZeroCounts.check_error_msg.<locals>.check   sQ    ""K#;<t =MMy)AKK  =<s   A  A)rR   z-takes 2 positional arguments but 3 were givenrE   z&missing 1 required positional argument)r   _namefilterr   number_domainsortedrV   r?   r   rU   r   rW   )r/   ra   unsupported_typestypr   r   r   r   s   ``    @@r   check_error_msgzTestZeroCounts.check_error_msg   s    ()JJ	"68K8K
 +5C"";/1c!f 0MMM	3'AKK  6	 	fEFb:;% 0/s   #CC	c                 .    | j                  t               y r   )r   r   r/   s    r   test_trailing_zeros_errorz(TestZeroCounts.test_trailing_zeros_error   s    ^,r   c                 .    | j                  t               y r   )r   r   r   s    r   test_leading_zeros_errorz'TestZeroCounts.test_leading_zeros_error   s    ]+r   N)rA   rB   rC   r   r   r   r   rE   r   r   r   r      s    28<8-,r   r   )r$   numpyr,   numba.tests.supportr   r   numbar   r   
numba.corer   numba.cpython.unsafe.tupler   r	   numba.np.unsafe.ndarrayr
   r   numba.core.unsafe.bytesr   numba.core.unsafe.refcountr   numba.cpython.unsafe.numbersr   r   numba.core.errorsr   r   rG   rn   r   r   rE   r   r   <module>r      sf      9 !  L B 1 4 F )*+ *+ZB38 B3J3 3(18 1,=,X =,r   