
    bi                       d dl mZ d dlZd dlZd dlmZ d dlmZ	 d dl
mZmZ d dlmZ  e	j                         r ej                   dd       ej"                  j%                  d	d
 d d d d d d d d d d d d d d d d d d d d g      d        Zej"                  j%                  d	d  d! d" g      d#        Zej"                  j%                  d	ej*                  j*                  ej*                  j,                  g      d$        Zej"                  j%                  d	d% d& d' g      d(        Zej"                  j%                  d	d) d* d+ g      d,        Zd- Zej"                  j%                  d.d/d0g      d1        Zej"                  j%                  d	d2 d3 d4 d5 d6 d7 d8 d9 d: d; d< d= d> g      d?        Zd@ Zej"                  j%                  d	ej<                  ej>                  ej@                  dA g      ej"                  j%                  dB eejB                  jE                         jC                  dC            e	jB                  jE                         jC                  dCdDE      fe	jB                  jE                         jC                  dCdDE       eejB                  jE                         jC                  dC            f eejB                  jE                         jC                  dC             eejB                  jE                         jC                  dC            fg      dF               Z#ej"                  j%                  dGee	f      ej"                  j%                  d	e	j                  e	jH                  e	jJ                  g      dH               Z&ej"                  j%                  dGee	f      dI        Z'ej"                  j%                  d	ej                  ejH                  ejJ                  g      dJ        Z(ej"                  j%                  d	ej                  ejH                  ejJ                  g      dK        Z)y)L    )annotationsN)Version)EncapsulateNDArrayWrappedArray)	assert_eqz'parametrize using unsupported functionsT)allow_module_levelfuncc                .    t        j                  | |       S N)npappendxs    _/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_array_function.py<lambda>r          "))Aq/     c                2    t        j                  | | | g      S r   r   concatenater   s    r   r   r          "..!Q+ r   c                .    t        j                  | |       S r   r   covr   s    r   r   r          "&&A, r   c                .    t        j                  | |       S r   r   dotr   s    r   r   r      r   r   c                0    t        j                  | | f      S r   r   dstackr   s    r   r   r          "))QF# r   c                0    t        j                  | d      S Nr   axisr   flipr   s    r   r   r          "''!!$ r   c                0    t        j                  | | f      S r   r   hstackr   s    r   r   r      r"   r   c                .    t        j                  | |       S r   r   matmulr   s    r   r   r      r   r   c                ,    t        j                  |       S r   r   meanr   s    r   r   r          "''!* r   c                0    t        j                  | | g      S r   r   stackr   s    r   r   r          "((Aq6" r   c                0    t        j                  | | g      S r   )r   blockr   s    r   r   r      r7   r   c                ,    t        j                  |       S r   r   sumr   s    r   r   r          "&&) r   c                ,    t        j                  |       S r   r   varr   s    r   r   r      r=   r   c                0    t        j                  | | f      S r   r   vstackr   s    r   r   r      r"   r   c                @    t         j                  j                  |       S r   r   linalgnormr   s    r   r   r           "))..# r   c                ,    t        j                  |       S r   )r   minr   s    r   r   r   !   r=   r   c                ,    t        j                  |       S r   )r   aminr   s    r   r   r   "   r3   r   c                ,    t        j                  |       S r   )r   roundr   s    r   r   r   #   s    "((1+ r   c                4    t        j                  | ddd      S )Nr      r%   )r   insertr   s    r   r   r   $   s    "))Aq!!, r   c                2    t        j                  | dd      S r$   )r   deleter   s    r   r   r   %   s    "))Aqq) r   c                \    t        j                  | dk  | dk  | dkD  g| dz  | | dz  gd      S )Ng333333?g333333?gffffff?   g?)default)r   selectr   s    r   r   r   &   s8    "))Wa#gq3w'!a%AE):D
 r   c                    t         j                  j                         j                  d      }t        j                  |d      } | |      } | |      }t        |t        j                        sJ t        ||       y )Nd   rZ   2   r\   chunks)r   randomdefault_rngda
from_array
isinstanceArrayr   r	   r   yres_xres_ys        r   test_array_function_daskri      sa    : 			&&z2A
a)AGEGEeRXX&&&eUr   c                ,    t        j                  |       S r   r    r   s    r   r   r   8       "))A, r   c                ,    t        j                  |       S r   r+   r   s    r   r   r   9   rk   r   c                ,    t        j                  |       S r   rB   r   s    r   r   r   :   rk   r   c                    t         j                  j                         j                  d      }t        j                  |d      }t        j                  t        d      5   | |       d d d        y # 1 sw Y   y xY w)NrY   r[   r]   z2expects a sequence of arrays as the first argumentmatch)r   r_   r`   ra   rb   pytestraisesNotImplementedErrorr	   r   rf   s      r   /test_stack_functions_require_sequence_of_arraysru   5   sa     			&&z2A
a)A	#W
  	Q      	A22A;c                   t         j                  j                         j                  d      }t        j                  |d      } | |      } | |      }| j
                  dk7  rt        |t        j                        sJ t        ||       y )NrY   r]   zmkl_fft._numpy_fft)	r   r_   r`   ra   rb   
__module__rc   rd   r   re   s        r   test_array_function_fftry   G   sl    
		&&z2A
a
+AGEGE..%***eUr   c                ,    t        j                  |       S r   )r   min_scalar_typer   s    r   r   r   V   s    "$$Q' r   c                @    t         j                  j                  |       S r   )r   rF   detr   s    r   r   r   W   s    "))--" r   c                @    t         j                  j                  |       S r   )r   rF   eigvalsr   s    r   r   r   X   s    "))##A& r   c                    t         j                  j                         j                  d      }t        j                  |d      }t        j                  t        d      5   | |       d d d        y # 1 sw Y   y xY w)NrY   r[   r]   z,The `.*` function is not implemented by Daskro   )r   r_   r`   ra   rb   rq   warnsFutureWarningrt   s      r    test_array_notimpl_function_daskr   S   sa     			&&z2A
a)A	K
  	Q  rv   c                ,    t        j                  |       S r   )r   realr   s    r   r   r   f   s    rwwqz r   c                ,    t        j                  |       S r   )r   imagr   s    r   r   r   f   s    RWWQZ r   c                ,    t        j                  |       S r   )r   	transposer   s    r   r   r   f   s    2<<PQ? r   c                p   t        j                  d      }t        |j                        t        d      k(  rt        j                  d       t
        j                  j                         j                  dd      }d||d	k  <   |j                  |j                        }t         | |       | |             y )
Nsparsez0.15.2z+https://github.com/pydata/sparse/issues/682)reason)  r   rY   r]   r   ?)rq   importorskipr   __version__skipra   r_   r`   
map_blocksCOOr   )r	   r   r   rf   s       r   test_array_function_sparser   e   s       *Fv!!"gh&77HI
		&&z*&EAAa#gJ	VZZ Ad1gtAwr   c                    t        j                  d      } t        j                  j	                         }|j                  d      }d||dk  <   |j                  d      }d||dk  <   | j                  |      }| j                  |      }t        t        j                  ||d      t        j                  ||d      j                                y )Nr   )rU   rP      r   r   )r   rP   rU   )rU   r   )axes)	rq   r   r   r_   r`   r   r   	tensordottodense)r   rngr   rf   xxyys         r   $test_array_function_sparse_tensordotr   t   s      *F
))


!C

9AAa#gJ

9AAa#gJ	AB	AB
Q'b"6)J)R)R)Tr   r^   rY   r   rZ   c                   t        j                  d      }|j                  j                         j                  d      }t	        j
                  || d      }t        j                  j                  |      \  }}}t        j                  j                  |      \  }}}	t        ||       t        ||       t        |	|       y )Ncupyr   F)r^   asarray)
rq   r   r_   r`   ra   rb   rF   svdr   r   )
r^   r   r   rf   u_bases_basev_baseusvs
             r   test_array_function_cupy_svdr      s    v&D!((4A
a6AYY]]1-FFFiimmAGAq!aaar   c                2    t        j                  | | | g      S r   r   r   s    r   r   r      r   r   c                .    t        j                  | |       S r   r   r   s    r   r   r      r   r   c                .    t        j                  | |       S r   r   r   s    r   r   r      r   r   c                0    t        j                  | | f      S r   r    r   s    r   r   r      r"   r   c                0    t        j                  | d      S r$   r'   r   s    r   r   r      r)   r   c                0    t        j                  | | f      S r   r+   r   s    r   r   r      r"   r   c                .    t        j                  | |       S r   r.   r   s    r   r   r      r   r   c                ,    t        j                  |       S r   r1   r   s    r   r   r      r3   r   c                0    t        j                  | | g      S r   r5   r   s    r   r   r      r7   r   c                ,    t        j                  |       S r   r;   r   s    r   r   r      r=   r   c                ,    t        j                  |       S r   r?   r   s    r   r   r      r=   r   c                0    t        j                  | | f      S r   rB   r   s    r   r   r      r"   r   c                @    t         j                  j                  |       S r   rE   r   s    r   r   r      rH   r   c                    t        t        j                  j                         j                  d            }t	        j
                  |d      }t        ||dd        | |      } | |      }t        ||dd       y )NrY   r[   r]   F)
check_meta
check_type)r   r   r_   r`   ra   rb   r   )r	   r   rf   r   r   s        r   test_unregistered_funcr      sn    ( 	29900299*EFA 	a)A au7 
aB 
aB b"59r   c                    t        j                  t        j                  g d      d      } t	        j
                  t        d      5  t        t        j                  |             g dk(  sJ 	 d d d        y # 1 sw Y   y xY w)N)   rU   r   rP   )rU   r]   z4The `numpy.sort` function is not implemented by Daskro   )r   rU   rP   r   )	ra   rb   r   arrayrq   r   r   listsortr   s    r   test_non_existent_funcr      sa     	bhh|,T:A	S
 0 BGGAJ<///0 0 0s   &A88Bc                0    t        j                  | |g      S r   r5   )r   rf   s     r   r   r      s    RXXq!f% r   zarr_upcast, arr_downcast)
   r   )   r   r]   c                v    t         | ||            t         | ||            cxk(  rt        |      k(  sJ  J y)z.Test proper dispatch on binary NumPy functionsN)type)r	   
arr_upcastarr_downcasts      r   $test_binary_function_type_precedencer      sH    : 	T*l+,\:./	
			r   like_nsc                   |j                  dt        j                        }t         | d|      t	        j                   d             t         | d|      t	        j                   d             t         | t        j
                  d      |t        j                        t	        j                   dt        j                               t         | d|t        j                        t	        j                   dt        j                               t         | d|t        j                        t	        j                   dt        j                               t         | t	        j                   dt        j
                        |      t	        j                   dt        j
                               t         | t	        j                   d      |      t	        j                   d             t         | t	        j                   dt        j
                        |t        j                        t	        j                   dt        j                               y )Nr   dtyper   likeg?r   r   )r   r   int16r   ra   int8int32)r	   r   r   s      r   	test_liker      sO    =="((=+Dd14 "((1+.d3T"BHHSM2d2771:D9288ARXX;VWd14rxx0"((1BHH2MNd3T2BHHQbhh4OPd288ARWW-D9288ARWW;UVd288C=t,bhhsm<RXXarww'd"((C
"((#r   c                4   | j                  d      }t        t        j                  d|      t        j                  d             t        t        j                  d|t        j
                        t        j                  dt        j
                               y )Nr   r   r   r   r   )r   r   ra   trir   float32)r   r   s     r   test_tri_liker      sW    ==DbffQT"BFF1I.bffQT4bffQbjj6QRr   c                ^    t         | dt        j                  d             | d             y )Nr   r   )r   ra   r   r	   s    r   test_like_with_numpy_funcr     s    d1288A;'a1r   c           	     t    t         | dt        t        j                  d             | dt                     y )Nr   )r   r   r   )r   floatra   r   r   s    r   #test_like_with_numpy_func_and_dtyper     s$    d1E4d1E6JKr   )*
__future__r   numpyr   rq   packaging.versionr   
dask.arrayr   ra   dask.array.tests.test_dispatchr   r   dask.array.utilsr   _array_expr_enabledr   markparametrizeri   ru   fftfft2ry   r   r   r   r   r   r   equalr/   r   r_   r`   r   r   
asanyarrayr   r   r   r    r   r   <module>r      s-   "   %  K &2FKK9dS 
!+#$#!""##,)	
+898 
 "&&**bffkk!:; < 
'"& 
!#79RS	 	   J
#;< = 
+#$#!"##$:%$:,0 


		
%	  ..077ABII!!#**8F*C	

 II!!#**8F*Cryy446==hGH	

 ..077ABryy446==hGH	
"#4 RH-"((BJJ!FG H ." RH-S .S "((BJJ!FG2 H2 "((BJJ!FGL HLr   