
    hB              
          S SK r S SKJrJr  S SKrS SKrSSKJrJ	r	J
r
JrJrJr  SSKJr  SSKJrJrJrJrJrJrJrJrJrJrJrJrJrJrJr   S r!S r"S	 r#S
 r$S r%S r&S r'S r(S r)\RT                  RW                  S/ SQ5      \RT                  RW                  S/ SQ5      S 5       5       r,S r-\RT                  RW                  S\." S5      \." SS 5      \	" S5      \	" S S/5      /5      S 5       r/S r0g)    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                    ^ ^ [        S5      m [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S	 j5        [        [        U 4S
 j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        SS//5      m[        [        U U4S j5        [        [        U U4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S j5        [        [        U 4S  j5        [        [        U 4S! j5        [        [        U 4S" j5        g )#N      c                     > T S S $ Nr    as   a/var/www/fran/franai/venv/lib/python3.13/site-packages/numpy/array_api/tests/test_array_object.py<lambda>%test_validate_index.<locals>.<lambda>,   s    ae    c                     > T S S $ Nr"   r#   s   r%   r&   r'   -   s    afr(   c                     > T S SS2   $ )Nr   r"   r#   s   r%   r&   r'   .   s    a2hr(   c                     > T S SS2   $ )Nr-   r"   r#   s   r%   r&   r'   /   s    aBir(   c                     > T SS  $ r!   r"   r#   s   r%   r&   r'   0   s    aer(   c                     > T SS  $ r*   r"   r#   s   r%   r&   r'   1   s    afr(   c                     > T SS S2   $ )Nr   r-   r"   r#   s   r%   r&   r'   2   s    a2hr(   c                     > T SS S2   $ )Nr+   r-   r"   r#   s   r%   r&   r'   3   s    aBir(   c                     > T SS S24   $ N.   r"   r#   s   r%   r&   r'   5   s    aBQBir(   c                     > T SS S24   $ N.r/   r"   r#   s   r%   r&   r'   6   s    aCRCjr(   c                     > T SS SS24   $ N.r6   r-   r"   r#   s   r%   r&   r'   7   s    aEQrE	lr(   c                     > T SS SS24   $ )N.ir-   r"   r#   s   r%   r&   r'   8   s    aFRF
mr(   c                     > T SSS 24   $ r5   r"   r#   s   r%   r&   r'   9   s    aABir(   c                     > T SSS 24   $ r8   r"   r#   s   r%   r&   r'   :   s    aBCjr(   c                     > T SSS S24   $ r:   r"   r#   s   r%   r&   r'   ;   s    aAErE	lr(   c                     > T SSS S24   $ )N.r/   r-   r"   r#   s   r%   r&   r'   <   s    aBFF
mr(   c                  &   > T T S S 2S4   S:H  S4   $ Nr      r"   r#   s   r%   r&   r'   ?   s    a!A#	!nr(   c                  &   > T T S S 2S4   S:H  S4   $ )Nr   rB   .r"   r#   s   r%   r&   r'   @   s    a!A#	#&6r(   c                     > T ST S   S:H  4   $ )N.r   rB   r"   r#   s   r%   r&   r'   A   s    aQqT1Wor(   c                     > T / SQ   $ )NTTTr"   r#   s   r%   r&   r'   B   s    a(:&;r(   c                     > T S   $ )N)rF   r"   r#   s   r%   r&   r'   C   s    a(;&<r(   r   rB   c                     > T T   $ Nr"   r$   idxs   r%   r&   r'   G   s	    afr(   c                     > T T4   $ rI   r"   rJ   s   r%   r&   r'   H   s    agr(   c                     > T SS/   $ rA   r"   r#   s   r%   r&   r'   I       aAir(   c                     > T S   $ )N)r   rB   rP   r"   r#   s   r%   r&   r'   J   s
    a&7r(   c                     > T SS/   $ rA   r"   r#   s   r%   r&   r'   K   rN   r(   c                  <   > T [         R                  " SS//5         $ rA   )nparrayr#   s   r%   r&   r'   L   s    a1a&(:&;r(   c                     > T S   $ )Nr"   r"   r#   s   r%   r&   r'   O   	    aer(   c                     > T S   $ )Nr   r"   r#   s   r%   r&   r'   P   rV   r(   c                     > T S   $ Nr   r"   r#   s   r%   r&   r'   Q   s	    adr(   c                     > T S S  $ rI   r"   r#   s   r%   r&   r'   R   s	    adr(   )r   r   
IndexErrorr   rJ   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                  T  ^	^
^^^^^ 0 SS_SS_SS_SS_S	S_S
S_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS_SS0En S m	[        S5      nU R                  5        GH  u  mnT/nTS;  a  STSS  -   nSTSS  -   nX4U/-  nSS S!US"4 GH  mU GH  m
T	" 5        GH  mUS:X  d  US:X  a  TR                  [        ;   d  US:X  a  TR                  [        ;   dj  US:X  a  TR                  [
        ;   dP  US:X  a  TR                  [        ;   d6  US#:X  a  TR                  [        ;   d  US:X  Ga3  TR                  [        ;   Ga  TR                  [        ;   a  [        T5      [        :X  d  TR                  [
        ;   a  [        T5      [         :X  d_  TR                  [        ;   a  [        T5      [        [         4;   d2  TR                  [        ;   a  [        T5      [        [        [         4;   aq  TR                  [
        ;   a  TU:X  a  [        [         U
UU4S$ j5        GM  [#        5        nUR%                  [&        S%5        [)        TT
5      " T5        S S S 5        GM  [        [*        U
UU4S& j5        GM     U GH  m
T	" 5        GH  mT	" 5        GH  mTR                  [,        :X  a%  TR                  [.        [0        [2        [4        4;   Gd(  TR                  [,        :X  a$  TR                  [.        [0        [2        [4        4;   d  TR                  [
        ;   a  TR                  [
        ;  d  TR                  [
        ;   a  TR                  [
        ;  d  TR                  [        ;   a  TR                  [        ;  dx  TR                  [        ;   a  TR                  [        ;  dP  TR                  [        ;   a  TR                  [        ;  d(  TR                  [        ;   a-  TR                  [        ;  a  [        [*        U
UU4S' j5        GM~  T
R7                  S5      (       aG  [9        TR                  TR                  5      TR                  :w  a  [        [*        U
UU4S( j5        GM  US:X  aR  TR                  [        ;   a  TR                  [        ;   Gdf  TR                  [        ;   a  TR                  [        ;   Gd=  US:X  a)  TR                  [        ;   a  TR                  [        ;   Gd  US:X  a(  TR                  [        ;   a  TR                  [        ;   d  US:X  a(  TR                  [
        ;   a  TR                  [
        ;   d  US:X  aP  TR                  [
        ;   a  TR                  [
        ;   d  TR                  [        ;   a  TR                  [        ;   d\  US#:X  a(  TR                  [        ;   a  TR                  [        ;   d.  US:X  a=  TR                  [        ;   a)  TR                  [        ;   a  [)        TT
5      " T5        GM  [        [*        U
UU4S) j5        GM     GM     GM     GM     GM     GM     SSSSS*.nUR                  5        Hp  u  mnT	" 5        H_  mUS:X  a  TR                  [        ;   d  US:X  a'  TR                  [        ;   a  [)        TT5      " 5         MJ  [        [*        UU4S+ j5        Ma     Mr     U	4S, jnS- H  m
S. H  mU" 5        H  m[        T5      [        [         4;   a  TR                  [        ;   d'  [        T5      [         :X  a,  TR                  [
        ;   a  [        [:        U
UU4S/ j5        Mo  [        [*        U
UU4S0 j5        M     M     M     U" 5        GH  mU" 5        GH  mTR                  [,        :X  a%  TR                  [.        [0        [2        [4        4;   Gd   TR                  [,        :X  a$  TR                  [.        [0        [2        [4        4;   d  TR                  [
        ;   a  TR                  [
        ;  d  TR                  [
        ;   a  TR                  [
        ;  dx  TR                  [        ;   a  TR                  [        ;  dP  TR                  [        ;   a  TR                  [        ;  d(  TR                  [        ;   d  TR                  [        ;   aB  [        [*        UU4S1 j5        [        [*        UU4S2 j5        [        [*        UU4S3 j5        GM  TR<                  S4:X  d0  TR<                  S4:X  d   TR<                  S   TR<                  S5   :w  a  [        [:        UU4S6 j5        [        [:        UU4S7 j5        [9        TR                  TR                  5      TR                  :w  a  [        [*        UU4S8 j5        GM/  [        [:        UU4S9 j5        GMG  TR?                  T5        TRA                  T5        [9        TR                  TR                  5      TR                  :w  a  [        [*        UU4S: j5        GM  TR<                  S5   TR<                  S   :w  a  [        [:        UU4S; j5        GM  TRC                  T5        GM     GM     g ! , (       d  f       G
M
  = f)<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      #    [          H  n [        SU S9v   M     [         H  n [        SU S9v   M     [         H  n [        SU S9v   M     g 7f)NrB   dtypeF      ?)r   r   r   r   )ds    r%   _array_vals#test_operators.<locals>._array_valsl   sJ      A!1%% ! A%q)) !!A#Q'' "s   AAgꌠ9Y>)F)rc   rm   rg   re   rj   rf   __rr   __irB   rx   y              ?Fbooleanc                  (   > [        TT 5      " T5      $ rI   getattr_opr$   ss   r%   r&    test_operators.<locals>.<lambda>       CQRASr(   z"invalid value encountered in powerc                  (   > [        TT 5      " T5      $ rI   r   r   s   r%   r&   r      s    C9Kr(   c                  (   > [        TT 5      " T5      $ rI   r   r   xys   r%   r&   r      r   r(   c                  (   > [        TT 5      " T5      $ rI   r   r   s   r%   r&   r      r   r(   c                  (   > [        TT 5      " T5      $ rI   r   r   s   r%   r&   r      r   r(   )__abs__
__invert____neg____pos__c                  &   > [        T T5      " 5       $ rI   r   )r$   ops   r%   r&   r      s    B1Ar(   c               3      >#    T" 5        H  n U v   M	     [          H'  n[        SUS9v   [        SUS9v   [        SUS9v   M)     g 7f)Nr   rv   )r   r   )r   r   )r   r   )r$   ry   rz   s     r%   _matmul_array_vals*test_operators.<locals>._matmul_array_vals   sH     AG AvQ''vQ''vQ'' s   AA)
__matmul____rmatmul____imatmul__)rB   rx   Fc                  (   > [        TT 5      " T5      $ rI   r   r   s   r%   r&   r      s    gaoa6Hr(   c                  (   > [        TT 5      " T5      $ rI   r   r   s   r%   r&   r      s    WQ_Q5Gr(   c                  &   > T R                  T5      $ rI   r   r   r   s   r%   r&   r      s    ar(   c                  &   > TR                  T 5      $ rI   r   r   s   r%   r&   r          q1Ar(   c                  &   > T R                  T5      $ rI   r   r   s   r%   r&   r      r   r(   r"   r   c                  &   > T R                  T5      $ rI   r   r   s   r%   r&   r      s    !,,q/r(   c                  &   > TR                  T 5      $ rI   r   r   s   r%   r&   r     s    !--2Br(   c                  &   > T R                  T5      $ rI   r   r   s   r%   r&   r         Q]]15Er(   c                  &   > T R                  T5      $ rI   r   r   s   r%   r&   r         ammA6Fr(   c                  &   > T R                  T5      $ rI   r   r   s   r%   r&   r   
  r   r(   c                  &   > T R                  T5      $ rI   r   r   s   r%   r&   r     r   r(   )"intitemsrw   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   rz   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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 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   /)j
j'c                    ^^^ [        S5      m[        S5      n [        S5      m[        S5      m[        T5      S:X  d   e[        U 5      S:X  d   e[        T5      S:X  d   e[        R
                  " U 5      S:X  d   e[        [        S 5        [        [        S 5        [        [        S 5        [        [        S 5        [        [        S	 5        [        T5      [        U 5      s=L a$  [        T5      s=L a  [        T5      s=L a  SL d   e   e[        T5      [        U 5      s=:X  a  [        T5      s=:X  a  S:X  d   e   e[        [        U4S
 j5        [        T5      [        U 5      s=:X  a  [        T5      s=:X  a  S:X  d   e   e[        [        U4S j5        [        T5      [        U 5      s=:X  a'  [        T5      s=:X  a  [        T5      s=:X  a  S:X  d   e   e[        R
                  " U 5      S:X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        g )NFr                           c                  ,    [        [        S/5      5      $ )NF)r   r   r"   r(   r%   r&   0test_python_scalar_construtors.<locals>.<lambda>  s    T'5'*:%;r(   c                  ,    [        [        S/5      5      $ rZ   )r   r   r"   r(   r%   r&   r     s    S!%6r(   c                  ,    [        [        S/5      5      $ )Nr   )r   r   r"   r(   r%   r&   r      s    U7C5>%:r(   c                  ,    [        [        S/5      5      $ )Nr   )r   r   r"   r(   r%   r&   r   !  s    WWbT]%;r(   c                  B    [         R                  " [        S/5      5      $ rZ   )operatorindexr   r"   r(   r%   r&   r   "  s    X^^GQCL%Ar(   c                     > [        T 5      $ rI   )r   cs   r%   r&   r   )  s	    SVr(   c                     > [        T 5      $ rI   )r   r   s   r%   r&   r   -  s	    U1Xr(   c                  0   > [         R                  " T 5      $ rI   r   r   )bs   r%   r&   r   4      X^^A%6r(   c                  0   > [         R                  " T 5      $ rI   r   )fs   r%   r&   r   5  r   r(   c                  0   > [         R                  " T 5      $ rI   r   r   s   r%   r&   r   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            	      .  ^  [        S5      m T R                  S:X  d   e[        [        T R	                  S5      T 5      5      (       d   e[        [        U 4S j5        [        [        [        T SS9T 5      5      (       d   e[        [        U 4S j5        g )Nr   cpuc                  &   > T R                  S5      $ )Ngpu)	to_devicer#   s   r%   r&   &test_device_property.<locals>.<lambda>>  s    akk%&8r(   devicec                     > [        T SS9$ )Nr   r   )r   r#   s   r%   r&   r   A  s    ga&>r(   )r   r   r
   r   r   r   r   r   r#   s   @r%   test_device_propertyr   9  st    VA88uuQ[['+,,,,*89uWQu-q12222*>?r(   c                    ^ [        S5      m[        S5      n [        [        U4S j5        [        U R                  [
        5      (       d   eU R                  R                  S:X  d   e[        TR                  [
        5      (       d   eTR                  R                  S:X  d   e[        U R                  [
        5      (       d   eU R                  R                  S:X  d   eg )N)rB   r   r   r   r   c                     > T R                   $ rI   )Tr#   s   r%   r&   'test_array_properties.<locals>.<lambda>F  s	    accr(   )r   r   )rB   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            
         [        S[        S9n [        R                  " U 5      U R                  L d   e[        R                  " U [        R
                  S9n[        R                  " [        R                  " U[        R                   " S[        R
                  S95      5      (       d   eUR                  [        R
                  :X  d   eg )Nr   rv   )	r   r   rS   r   _arrayfloat64r
   r   rw   )r$   r   s     r%   test___array__r   P  s    V5!A::a=AHH$$$


1BJJ'A66"((1bggfBJJ?@AAAA77bjj   r(   c                  P    [        S5      n U S S S 24   nUR                  S:X  d   eg )Nr6   )rB   r6   )r   r   )r$   	indexed_as     r%   test_allow_newaxisr   W  s*    QA$'
I??f$$$r(   c                      [        S5      n [        R                  " [        5         U S     S S S 5        g ! , (       d  f       g = f)Nr   r   r   )Nr   r   r   pytestraisesr\   r#   s    r%   (test_disallow_flat_indexing_with_newaxisr   \  s*    YA	z	"	* 
#	"	"s	   5
Ac                      [        S5      n [        R                  " [        5         U S [	        S5      4     S S S 5        g ! , (       d  f       g = f)Nr   T)r   r   r   r\   r   r#   s    r%   test_disallow_mask_with_newaxisr   a  s4    YA	z	"	$
 
#	"	"s   A  
Ar   )r"   )r6   r   r   )stringFTc                     [        U 5      n[        R                  " [        5         X!     S S S 5        g ! , (       d  f       g = frI   r   )r   r   r$   s      r%   test_error_on_invalid_indexr   f  s*     	UA	z	"	 
#	"	"s	   4
Ac                  6    [        S5      n U [        S5           g )Nr"   T)r   r   r#   s    r%   !test_mask_0d_array_without_errorsr   m  s    RAgdmr(   r   r6   TrB   c                    [        S5      n[        R                  " [        5         USU 4     S S S 5        [        R                  " [        5         XS4     S S S 5        g ! , (       d  f       N8= f! , (       d  f       g = f)Nr   .r   )r   r$   s     r%   )test_error_on_invalid_index_with_ellipsisr   q  sV     	YA	z	"	#q&	 
#	z	"	S&	 
#	" 
#	"	"	"s   A A1 
A.1
A?c                      [        S[        S9n X    R                  S:X  d   e[        S[        S9n [        S[        S9n[        R                  " [
        5         X     SSS5        g! , (       d  f       g= f)aY  
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   rv   rX   N)r   bool_r   r   r   r\   )r$   keys     r%   !test_array_keys_use_private_arrayr  {  sY     	V5!A4::TA
vU
#C	z	"	 
#	"	"s   A''
A5)1r   numpy.testingr   r   numpyrS   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(   