
    sg                         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 d dlmc mc 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copyxp_assert_equalis_numpySCIPY_ARRAY_APIzDArray API test; set environment variable SCIPY_ARRAY_API=1 to run it)reasonc                   v   e Zd Zd Zed        Zej                  j                  d      d        Z	d Z
 eddg      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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       R/var/www/html/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_likes2   s    	"1a r   z	jax.numpyz)JAX arrays do not support item assignment)reasons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_copy8   s    
 : 	"C

9%AQ3A AaDAaDAaDQ41Q4<<Q41Q4<<Q41Q4<<a5BqE>!>	"r   dtype)int32int64float32float64shape )r   c                 T   t        ||      }|j                  |j                  d|      |      }|r|n|d   }t        j                  d      d   }t	        ddd      }|t
        k(  rt        ||fi | n1t        j                  t        d      5  t        ||fi | d d d        t	        ddd      }|j                  j                  t        |j                        v rt        ||fi | n1t        j                  t        d	      5  t        ||fi | d d d        t	        ddd      }|j                  |j                  k(  rt        ||fi | y t        j                  t        d
      5  t        ||fi | d d d        y # 1 sw Y   xY w# 1 sw Y   |xY w# 1 sw Y   y xY w)Nr   )r:   r@   TF)check_namespacecheck_dtypecheck_shapezNamespaces do not match.r$   zdtypes do not match.zShapes do not match.)getattrbroadcast_tor    	np_compatdictr   r   r'   r(   AssertionErrorr:   namestrr?   )r   r   r:   r?   r   r   optionss          r   test_strict_checkszTestArrayAPI.test_strict_checksK   sw   
 E"OOBJJqJ6>AAbEa $tER8Aq,G,~5OP 11001 u$ER77<<3qww<'Aq,G,~5KL 11001 u%TR77aggAq,G,~5KL 11001 11 11 11 1s$   F	F/FFFF'c                 d   t        |      st        j                  d       t        |      ryt        j                  t        d      5  t        |j                  d      |j                  d             d d d        t        |j                  d      |j                  d             y y # 1 sw Y   5xY w)NzScalars only exist in NumPyzTypes do not match.r$   g        r   )r	   r'   skipr(   rI   r   r    r>   )r   r   s     r   test_check_scalarzTestArrayAPI.test_check_scalarj   sz    |KK56B<~5JK ?

2

1>?BJJqM2::b>: ? ?s   +B&&B/N)r   
__module____qualname__r   r   r"   r'   markfilterwarningsr.   r0   r2   usefixturesr9   parametrizerM   rP   r@   r   r   r   r      s    1     [[ =># ?# kJKM[[/0"  1M" [[W&NO[[Wr4j11 2 P 18 ; ;r   r   )numpyr   r'   scipy.conftestr   scipy._lib._array_apir   r   r   r   r   r	   !scipy._lib.array_api_compat.numpy_libarray_api_compatrG   rS   r2   skipifr   r@   r   r   <module>r^      sp      /  6 5;;//  '899U  Wc; c;Wc;r   