
    
g                         d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZ d dlm
Z ej                  j                   Zej                  j#                  ed    d       G d d	             Zy)
    N)array_api_compatible)_GLOBAL_CONFIGarray_namespace_asarrayxp_copyxp_assert_equalis_numpy	np_compat)r   SCIPY_ARRAY_APIzDArray API test; set environment variable SCIPY_ARRAY_API=1 to run itreasonc                      e Zd Zd Zed        Zej                  j                  d      d        Z	d Z
 edd      ej                  j                  d	      ed
                      Zeej                  j                  dg d      ej                  j                  dddg      d                      Zed        Zed        Zy)TestArrayAPIc                     t        j                  g d      t        j                  g d      }}t        ||      }d|j                  v sJ dt        d<   t        ||      }d|j                  v sJ dt        d<   y )Nr         zarray_api_compat.numpyFr   T)nparrayr   __name__r   )selfxyxps       \/var/www/dash_apps/app1/venv/lib/python3.12/site-packages/scipy/_lib/tests/test_array_api.pytest_array_namespacez!TestArrayAPI.test_array_namespace   so    xx	"BHHY$71Q"'2;;666,1()Q"'2;;666,0()    c                     t        g d|      t        t        j                  d      |      }}|j                  g d      }t	        ||       t	        ||       y )Nr   r      )r   r   arangeasarrayr   )r   r   r   r   refs        r   test_asarrayzTestArrayAPI.test_asarray   sC    	b)8BIIaLR+H1jj#33r   zignore: the matrix subclassc                    d}t        j                  t        |      5  t        t        j
                  j                  d      t	        j                  d             d d d        d}t        j                  t        |      5  t        t	        j                  d      t	        j                  d             d d d        d}t        j                  t        |      5  t        t               g       d d d        t        j                  t        |      5  t        d       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   QxY w# 1 sw Y   y xY w)Nz0of type `numpy.ma.MaskedArray` are not supportedmatchr   z(of type `numpy.matrix` are not supportedz/only boolean and numerical dtypes are supportedabc)	pytestraises	TypeErrorr   r   mar   matrixobject)r   msgs     r   test_raiseszTestArrayAPI.test_raises#   s    @]]9C0 	9BEEKKNBHHQK8	9 9]]9C0 	7BHHQK16	7 @]]9C0 	(VXJ'	(]]9C0 	#E"	# 	#	9 	9	7 	7	( 	(	# 	#s/   =D% 3D1D=E	%D.1D:=E	Ec                 N    t        g d       t        ddd       t        d       y )Nr   r   r   r    )r   )r   s    r   test_array_likeszTestArrayAPI.test_array_likes3   s    	"1a r   z	jax.numpyz)JAX arrays do not support item assignmentr   skip_xp_backendsc                     |d fD ]q  }|j                  g d      }t        ||      }d|d<   d|d<   d|d<   |d   |d   k7  sJ |d   |d   k7  sJ |d   |d   k7  sJ t        |      t        |      k7  rqJ  y )	N)r   r   r    r   
   r      r      r   )r"   r   id)r   r   _xpr   r   s        r   	test_copyzTestArrayAPI.test_copy9   s    
 : 	"C

9%Ac"A AaDAaDAaDQ41Q4<<Q41Q4<<Q41Q4<<a5BqE>!>	"r   dtype)int32int64float32float64shape )r    c                    t        ||      }|j                  |j                  d|      |      }|r|n|d   }t        j                  d      d   }g d}t	        t        |g d            }|t        k(  rt        ||fi | n1t        j                  t        d      5  t        ||fi | d d d        t	        t        |g d            }|j                  j                  t        |j                        v rt        ||fi | n1t        j                  t        d	      5  t        ||fi | d d d        t	        t        |g d
            }|j                  |j                  k(  rt        ||fi | n@t        j                  t        d      5  t        ||j                  |      fi | d d d        t	        t        |g d            }t        |      r'|j                  |j                  k(  rt        ||fi | y t        |      r2t        j                  t        d      5  t        ||fi | d d d        y y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   )r;   rA   )check_namespacecheck_dtypecheck_shapecheck_0d)TFFFzNamespaces do not match.r&   )FTFFzdtypes do not match.)FFTFzShapes do not match.)FFFTzArray-ness does not match.)getattrbroadcast_tor"   r
   dictzipr   r   r)   r*   AssertionErrorr;   namestrr@   r	   )r   r   r;   r@   r   r   kwarg_namesoptionss           r   test_strict_checkszTestArrayAPI.test_strict_checksL   s   
 E"OOBJJqJ6>AAbEa $Ss;(CDE8Aq,G,~5OP 11001 s;(CDE77<<3qww<'Aq,G,~5KL 11001 s;(CDE77aggAq,G,~5KL =2::a=<G<= s;(CDEB<AGGqww.Aq,G,b\~5QR 11001 1 )1 11 1= =1 1s0   H:II"I :III I)c                 j   t        |      st        j                  d       t        |j	                  d      |j	                  d             t        |j                  d      |j                  d             t        |j	                  d      |j	                  d      d       t        |j                  d      |j                  d      d       d}t        j                  t        |      5  t        |j                  d      |j	                  d             d d d        t        j                  t        |      5  t        |j	                  d      |j                  d             d d d        t        j                  t        |      5  t        |j                  d      |j                  d             d d d        t        j                  t        |      5  t        |j                  d      |j                  d             d d d        t        |j                  d      |j	                  d      d       t        |j	                  d      |j                  d      d       t        |j                  d      dd       t        d|j                  d      d       t        |j                  d      dd       t        d|j                  d      d       t        |j	                  d      |j                  d      d	          y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   lxY w# 1 sw Y   +xY w)
NScalars only exist in NumPyr           FrF   Array-ness does not match:.*r&   *   rA   )	r	   r)   skipr   r?   r"   r*   rK   r=   r   r   messages      r   test_check_scalarzTestArrayAPI.test_check_scalart   s*   |KK56 	

1rzz!}5

2

27

1rzz!}uE

2

2G 1]]>9 	;BJJrNBJJqM:	;]]>9 	;BJJqM2::b>:	;]]>9 	:BJJrNBHHRL9	:]]>9 	:BHHRL"**R.9	: 	

2

1F

1rzz"~F

2U;BJJrNU;

2U;BJJrNU; 	

1rzz"~b'9:'	; 	;	; 	;	: 	:	: 	:s0   *+L8+L+L+L(LLL%(L2c                 j   t        |      st        j                  d       t        |j	                  d      |j	                  d             t        |j	                  d      |j	                  d      d       t        |j                  d      |j                  d      d       d}t        j                  t        |      5  t        |j                  d      |j                  d             d d d        t        j                  t        |      5  t        |j                  d      |j	                  d             d d d        t        j                  t        |      5  t        |j                  d      |j                  d             d d d        t        |j	                  d      |j                  d             t        |j                  d      |j                  d             d	}t        j                  t        |      5  t        |j                  d      |j	                  d      d       d d d        t        j                  t        |      5  t        |j	                  d      |j                  d      d       d d d        t        j                  t        |      5  t        |j                  d      |j                  d      d       d d d        t        j                  t        |      5  t        |j                  d      |j                  d      d       d d d        t        d|j                  d             t        d|j                  d             y # 1 sw Y   sxY w# 1 sw Y   2xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)
NrR   r   TrT   rS   zResult is a NumPy 0d-array.*r&   rV   rU   )	r	   r)   rW   xp_assert_equal_no_0dr?   r"   r*   rK   r=   rX   s      r   test_check_scalar_no_0dz$TestArrayAPI.test_check_scalar_no_0d   s   |KK56 	bjjmRZZ];bjjmRZZ]TJbjjnbjjntL 1]]>9 	B!"**R."**R.A	B]]>9 	A!"**R."**Q-@	A]]>9 	@!"**R."((2,?	@ 	bjjmRZZ^<bhhrlBJJrN; 1]]>9 	P!"**R."**Q-$O	P]]>9 	P!"**Q-B$O	P]]>9 	N!"**R."((1+M	N]]>9 	N!"((1+rzz"~M	N 	b"**R.1b"**R.11	B 	B	A 	A	@ 	@	P 	P	P 	P	N 	N	N 	NsT    +M+M)+M6 -N-N -N0-N)M&)M36N NNN&)N2N)r   
__module____qualname__r   r   r$   r)   markfilterwarningsr0   r2   r3   usefixturesr:   parametrizerP   rZ   r]   rA   r   r   r   r      s    1     [[ =># ?# kHJ[[/0"  1J" [[W&NO[[Wr4j1"1 2 P "1J ; ;D #2 #2r   r   )numpyr   r)   scipy.conftestr   scipy._lib._array_apir   r   r   r   r   r	   r
   scipy._lib._array_api_no_0dr\   r`   r3   skipifr   rA   r   r   <module>ri      ss      /   Q;;//  '899U  Wk2 k2Wk2r   