
    PhD              
          d dl Z d dlmZmZ d dlZd dlZddlmZm	Z	m
Z
mZmZmZ ddlmZ ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ  d Z!d Z"d	 Z#d
 Z$d Z%d Z&d Z'd Z(d Z)ejT                  jW                  dg d      ejT                  jW                  dg d      d               Z,d Z-ejT                  jW                  d e.d       e.dd        e	d       e	d dg      g      d        Z/d Z0y)    N)assert_raisessuppress_warnings   )onesasarrayreshaperesult_typeallequal)Array)_all_dtypes_boolean_dtypes_real_floating_dtypes_floating_dtypes_complex_floating_dtypes_integer_dtypes_integer_or_boolean_dtypes_real_numeric_dtypes_numeric_dtypesint8int16int32int64uint64boolc                      t        d       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd	       t        t         fd
       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        ddgg      t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd       t        t         fd        t        t         fd!       t        t         fd"       y )#N      c                       d d S Nr    as   rC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\site-packages\numpy/array_api/tests/test_array_object.py<lambda>z%test_validate_index.<locals>.<lambda>,   s    ae    c                       d d S Nr"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>-   s    afr'   c                       d dd   S )Nr   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>.   s    a2hr'   c                       d dd   S )Nr,   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>/   s    aBir'   c                       dd  S r!   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>0   s    aer'   c                       dd  S r)   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>1   s    afr'   c                       dd d   S )Nr   r,   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>2   s    a2hr'   c                       dd d   S )Nr*   r,   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>3   s    aBir'   c                       dd df   S N.   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>5   s    aBQBir'   c                       dd df   S N.r.   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>6   s    aCRCjr'   c                       dd ddf   S N.r5   r,   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>7   s    aEQrE	lr'   c                       dd ddf   S )N.ir,   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>8   s    aFRF
mr'   c                       ddd f   S r4   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>9   s    aABir'   c                       ddd f   S r7   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>:   s    aBCjr'   c                       ddd df   S r9   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>;   s    aAErE	lr'   c                       ddd df   S )N.r.   r,   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda><   s    aBFF
mr'   c                  &      d d df   dk(  df   S Nr      r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>?   s    a!A#	!nr'   c                  &      d d df   dk(  df   S )Nr   rA   .r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>@   s    a!A#	#&6r'   c                       d d   dk(  f   S )N.r   rA   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>A   s    aQqT1Wor'   c                       g d   S )NTTTr"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>B   s    a(:&;r'   c                       d   S )N)rE   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>C   s    a(;&<r'   r   rA   c                          S Nr"   r$   idxs   r%   r&   z%test_validate_index.<locals>.<lambda>G   s	    afr'   c                       f   S rH   r"   rI   s   r%   r&   z%test_validate_index.<locals>.<lambda>H   s    agr'   c                       ddg   S r@   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>I       aAir'   c                       d   S )N)r   rA   rO   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>J   s
    a&7r'   c                       ddg   S r@   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>K   rM   r'   c                  :     t        j                  ddgg         S r@   )nparrayr#   s   r%   r&   z%test_validate_index.<locals>.<lambda>L   s    a1a&(:&;r'   c                       d   S )Nr"   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>O   	    aer'   c                       d   S )Nr   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>P   rU   r'   c                       d   S Nr   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>Q   s	    adr'   c                       d d  S rH   r"   r#   s   r%   r&   z%test_validate_index.<locals>.<lambda>R   s	    adr'   )r   r   
IndexErrorr   rI   s   @@r%   test_validate_indexr\      sq    	VA *m,*n-*./*/0*m,*n-*./*/0*/0*01*23*34*/0*01*23*34 *45*67*56*;<*<= Aq6(
C*n-*o.*/0*78*/0*;< *m,*m,*l+*l+r'   c                    	
 i ddddddddd	dd
dddddddddddddddddddddddddi} d 	t        d      }| j                         D ]_  \  }g}dvrddd  z   }ddd  z   }|||gz  }dd d!|d"fD ]0  |D ]'  
 	       D ]  |dk(  s|dk(  rj                  t        v su|dk(  rj                  t        v s^|dk(  rj                  t
        v sG|dk(  rj                  t        v s0|d#k(  rj                  t        v s|dk(  rj                  t        v r
j                  t        v rt              t        k(  s{j                  t
        v rt              t         k(  sWj                  t        v rt              t        t         fv s.j                  t        v rt              t        t        t         fv rkj                  t
        v r|k(  rt        t         
fd$       bt#               5 }|j%                  t&        d%        t)        
             d d d        t        t*        
fd&        |D ]`  
 	       D ]R   	       D ]D  j                  t,        k(  r#j                  t.        t0        t2        t4        fv sj                  t,        k(  r"j                  t.        t0        t2        t4        fv s؉j                  t
        v rj                  t
        vsj                  t
        v rj                  t
        vsj                  t        v rj                  t        vslj                  t        v rj                  t        vsHj                  t        v rj                  t        vs$j                  t        v r)j                  t        vrt        t*        
fd'       ^
j7                  d      rDt9        j                  j                        j                  k7  rt        t*        
fd(       |dk(  rJj                  t        v rj                  t        v s?j                  t        v rj                  t        v s|dk(  r$j                  t        v rj                  t        v s|dk(  r$j                  t        v rj                  t        v s|dk(  r$j                  t
        v rj                  t
        v s|dk(  rHj                  t
        v rj                  t
        v svj                  t        v rj                  t        v sR|d#k(  r$j                  t        v rj                  t        v s)|dk(  r8j                  t        v r&j                  t        v r t)        
             0t        t*        
fd)       G U c * 3 b ddddd*}|j                         D ]e  \  } 	       D ]V  |dk(  rj                  t        v s|dk(  r$j                  t        v r t)                      Ct        t*        fd+       X g 	fd,}d-D ]  
d.D ]   |       D ]z  t              t        t         fv rj                  t        v s$t              t         k(  r(j                  t
        v rt        t:        
fd/       ft        t*        
fd0       |    |       D ]   |       D ]  j                  t,        k(  r"j                  t.        t0        t2        t4        fv sj                  t,        k(  r"j                  t.        t0        t2        t4        fv sj                  t
        v rj                  t
        vsj                  t
        v rj                  t
        vslj                  t        v rj                  t        vsHj                  t        v rj                  t        vs$j                  t        v sj                  t        v r>t        t*        fd1       t        t*        fd2       t        t*        fd3       `j<                  d4k(  s.j<                  d4k(  sj<                  d   j<                  d5   k7  rt        t:        fd6       t        t:        fd7       t9        j                  j                        j                  k7  rt        t*        fd8       t        t:        fd9       j?                         jA                         t9        j                  j                        j                  k7  rt        t*        fd:       j<                  d5   j<                  d   k7  rt        t:        fd;       jC                           y # 1 sw Y   	(xY w)<N__add__numeric__and__integer_or_boolean__eq__r
   __floordiv__zreal numeric__ge____gt____le__
__lshift__integer__lt____mod____mul____ne____or____pow__
__rshift____sub____truediv__floating__xor__c               3      K   t         D ]  } t        d|         t        D ]  } t        d|         t        D ]  } t        d|         y w)NrA   dtypeF      ?)r   r   r   r   )ds    r%   _array_valsz#test_operators.<locals>._array_valsl   sK      A!1%% ! A%q)) !!A#Q'' "s   AAgꌠ9Y>)F)rb   rl   rf   rd   ri   re   __rr   __irA   rw   y              ?Fbooleanc                  (     t                     S rH   getattr_opr$   ss   r%   r&   z test_operators.<locals>.<lambda>       CQRASr'   z"invalid value encountered in powerc                  (     t                     S rH   r~   r   s   r%   r&   z test_operators.<locals>.<lambda>   s    C9Kr'   c                  (     t                     S rH   r~   r   xys   r%   r&   z test_operators.<locals>.<lambda>   r   r'   c                  (     t                     S rH   r~   r   s   r%   r&   z test_operators.<locals>.<lambda>   r   r'   c                  (     t                     S rH   r~   r   s   r%   r&   z test_operators.<locals>.<lambda>   r   r'   )__abs__
__invert____neg____pos__c                  &     t                      S rH   r~   )r$   ops   r%   r&   z test_operators.<locals>.<lambda>   s    B1Ar'   c               3      K           D ]  } |   t         D ]/  }t        d|       t        d|       t        d|       1 y w)Nr   ru   )r   r   )r   r   )r   r   )r$   rx   ry   s     r%   _matmul_array_valsz*test_operators.<locals>._matmul_array_vals   sI     AG AvQ''vQ''vQ'' s   A
A)
__matmul____rmatmul____imatmul__)rA   rw   Fc                  (     t                     S rH   r~   r   s   r%   r&   z test_operators.<locals>.<lambda>   s    ogaoa6Hr'   c                  (     t                     S rH   r~   r   s   r%   r&   z test_operators.<locals>.<lambda>   s    _WQ_Q5Gr'   c                  &     j                        S rH   r   r   r   s   r%   r&   z test_operators.<locals>.<lambda>   s    ar'   c                  &    j                         S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>       q1Ar'   c                  &     j                        S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>   r   r'   r"   r   c                  &     j                        S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>   s    !,,q/r'   c                  &    j                         S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>  s    !--2Br'   c                  &     j                        S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>      Q]]15Er'   c                  &     j                        S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>      ammA6Fr'   c                  &     j                        S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>
  r   r'   c                  &     j                        S rH   r   r   s   r%   r&   z test_operators.<locals>.<lambda>  r   r'   )"intitemsrv   r   r   r   r   r   r   typer   r   floatr   complexr   OverflowErrorr   filterRuntimeWarningr   	TypeErrorr   r   r   r   r   
startswithr	   
ValueErrorshaper   r   r   )binary_op_dtypesBIG_INTdtypesopsropiopsupunary_op_dtypesr   ry   r   r$   r   r   r   r   s            @@@@@@@r%   test_operatorsr   T   s%   9' 	% 		
 	. 	. 	. 	i 	. 	> 	9 	% 	& 	9 	i  	9!" 	z#$ 	'%*( $iG&,,.
FdQQ"QR&.C"QR&.CC:CS"gu-A$A  5"i/AGG4N"n4DX9X"i/AGG4N"&::qwwJd?d"i/AGG4N"j0QWW@P5P WW7DGtO !? :tAw#~ !+@ @T!WQVX[P\E\ !+C CQT[]bdgShHh77o5!w,)-9ST "3!4 #

>+O!Q /3 2	 "5!4 &i1KLE 'J C(]!,A !"6 1agg$uV[A\6\#$77f#4T5RWY^D_9_#$77o#=!''Q`B`#$77o#=!''Q`B`#$77o#=!''Q`B`#$77o#=!''Q`B`#$77.>#>177RbCb#$77.>#>177RbCb -i9S T !$u 5$/$AQWW$L -i9S T"(E/qww/7QVWV]V]apVp9:O9SXYX_X_crXr$*n$<L`A`efelel  qE  fE$*i$7AGG<V[\[b[bfu[u#)Y#6177o;UZ[ZaZaetZt#)-A#AqwwRaGafgfmfm  rA  gAJK''UdJdijipip  uD  jD#)Y#6177o;UZ[ZaZaetZt#)Z#7AGGGW<W\]\c\cgw\w /3 2 -i9S TC "/ + M  . /f *	O &++-
FA)#GG.11GG99 2 i)AB  .( < A')Gs|+;K0KAw#~!''_*D "*.HI!)-GH * ! <  !#%A6!agg$ue1L&L77f$T5%4O)O77o-!''2P77o-!''2P77..177BR3R77..177BR3R77o-77o-i)@Ai)ABi)ABB!''R-1771:3Kj*ABj*BCqww0AGG;!)-EF!*.FGQa qww0AGG;!)-EFWWQZ1771:-!*.FGMM!$; & "o "5!4s   )f::gc                  N   t        d      t        d      } t        d      t        d      t              dk(  sJ t        |       dk(  sJ t              dk(  sJ t	        j
                  |       dk(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d	        t              t        |       cxu r!t              cxu rt              cxu rdu sJ  J t              t        |       cxk(  rt              cxk(  rdk(  sJ  J t        t        fd
       t              t        |       cxk(  rt              cxk(  rdk(  sJ  J t        t        fd       t              t        |       cxk(  r$t              cxk(  rt              cxk(  rdk(  sJ  J t	        j
                  |       dk(  sJ t        t        fd       t        t        fd       t        t        fd       y )NFr                           c                  ,    t        t        dg            S )NF)r   r   r"   r'   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>  s    T'5'*:%;r'   c                  ,    t        t        dg            S rY   )r   r   r"   r'   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>  s    S!%6r'   c                  ,    t        t        dg            S )Nr   )r   r   r"   r'   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>   s    U7C5>%:r'   c                  ,    t        t        dg            S )Nr   )r   r   r"   r'   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>!  s    WWbT]%;r'   c                  @    t        j                  t        dg            S rY   )operatorindexr   r"   r'   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>"  s    X^^GQCL%Ar'   c                      t               S rH   )r   cs   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>)  s	    SVr'   c                      t               S rH   )r   r   s   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>-  s	    U1Xr'   c                  .    t        j                         S rH   r   r   )bs   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>4      X^^A%6r'   c                  .    t        j                         S rH   r   )fs   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>5  r   r'   c                  .    t        j                         S rH   r   r   s   r%   r&   z0test_python_scalar_construtors.<locals>.<lambda>6  r   r'   )	r   r   r   r   r   r   r   r   r   )ir   r   r   s    @@@r%   test_python_scalar_construtorsr     s   A
AAA7eq6Q;;8s??>>!!!! );<)67):;);<)AB 7d1g<a<DG<u<<<<< q6SV*s1v******)^, 8uQx2582s22222)-. 1:EwqzEWQZE2EEEEE >>!!!!)67)67)67r'   c                      t        d        j                  dk(  sJ t        t         j	                  d                   sJ t        t         fd       t        t        t         d                   sJ t        t         fd       y )Nr   cpuc                  &     j                  d      S )Ngpu)	to_devicer#   s   r%   r&   z&test_device_property.<locals>.<lambda>>  s    akk%&8r'   devicec                      t         d      S )Nr   r   )r   r#   s   r%   r&   z&test_device_property.<locals>.<lambda>A  s    ga&>r'   )r   r   r
   r   r   r   r   r   r#   s   @r%   test_device_propertyr   9  sn    VA88uuQ[['+,,,*89uWQu-q1222*>?r'   c                     t        d      t        d      } t        t        fd       t        | j                  t
              sJ | j                  j                  dk(  sJ t        j                  t
              sJ j                  j                  dk(  sJ t        | j                  t
              sJ | j                  j                  dk(  sJ y )N)rA   r   r   r   r   c                       j                   S rH   )Tr#   s   r%   r&   z'test_array_properties.<locals>.<lambda>F  s	    accr'   )r   r   )rA   r   r   )r   r   r   
isinstancer   r   r   mT)r   r$   s    @r%   test_array_propertiesr   C  s    YAVA*k*acc5!!!3399addE"""44::"""addE"""44::r'   c            	         t        dt              } t        j                  |       | j                  u sJ t        j                  | t        j
                        }t        j                  t        j                  |t        j                   dt        j
                                    sJ |j                  t        j
                  k(  sJ y )Nr   ru   )	r   r   rR   r   _arrayfloat64r
   r   rv   )r$   r   s     r%   test___array__r   P  s~    V5!A::a=AHH$$$


1BJJ'A66"((1bggfBJJ?@AAA77bjj   r'   c                  N    t        d      } | d d d f   }|j                  dk(  sJ y )Nr5   )rA   r5   )r   r   )r$   	indexed_as     r%   test_allow_newaxisr   W  s*    QA$'
I??f$$$r'   c                      t        d      } t        j                  t              5  | d    d d d        y # 1 sw Y   y xY w)Nr   r   r   )Nr   r   r   pytestraisesr[   r#   s    r%   (test_disallow_flat_indexing_with_newaxisr   \  s*    YA	z	"	* 
#	"	"   4=c                      t        d      } t        j                  t              5  | d t	        d      f    d d d        y # 1 sw Y   y xY w)Nr   T)r   r   r   r[   r   r#   s    r%   test_disallow_mask_with_newaxisr   a  s4    YA	z	"	$
 
#	"	"s	   ?Ar   )r"   )r5   r   r   )stringFTc                     t        |       }t        j                  t              5  ||    d d d        y # 1 sw Y   y xY wrH   r   )r   r   r$   s      r%   test_error_on_invalid_indexr   f  s,     	UA	z	"	% 
#	"	"r   c                  6    t        d      } | t        d          y )Nr"   T)r   r   r#   s    r%   !test_mask_0d_array_without_errorsr   m  s    RAgdmr'   r   r5   TrA   c                     t        d      }t        j                  t              5  |d| f    d d d        t        j                  t              5  || df    d d d        y # 1 sw Y   3xY w# 1 sw Y   y xY w)Nr   .r   )r   r$   s     r%   )test_error_on_invalid_index_with_ellipsisr   q  sX     	YA	z	"	#q&	 
#	z	"	!S&	 
#	" 
#	"	"	"s   AA+A(+A4c                      t        dt              } | |    j                  dk(  sJ t        dt              } t        dt              }t        j                  t
              5  | |    ddd       y# 1 sw Y   yxY w)aq  
    Indexing operations convert array keys before indexing the internal array

    Fails when array_api array keys are not converted into NumPy-proper arrays
    in __getitem__(). This is achieved by passing array_api arrays with 0-sized
    dimensions, which NumPy-proper treats erroneously - not sure why!

    TODO: Find and use appropriate __setitem__() case.
    )r   r   ru   rW   N)r   bool_r   r   r   r[   )r$   keys     r%   !test_array_keys_use_private_arrayr   {  s]     	V5!AQ4::TA
vU
#C	z	"	# 
#	"	"s   !A00A9)1r   numpy.testingr   r   numpyrR   r    r   r   r   r	   r
   r   _array_objectr   _dtypesr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r\   r   r   r   r   r   r   r   r   markparametrizer   r   slicer   r   r"   r'   r%   <module>r     s     :   > > !    &6,p{%|$8N@ !%


 "78"9: ; 9
 %(E!QKA	@r'   