U
    /e                     @   s"  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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d dd dd dd gdd Zejddd dd d d gd!d" Zejdejjejjgd#d$ Zejdd%d d&d d'd gd(d) Zejdd*d d+d d,d gd-d. Zd/d0 Zejd1d2d3gd4d5 Zejdd6d d7d d8d d9d d:d d;d d<d d=d d>d d?d d@d dAd dBd gdCdD ZdEdF ZejdejejejdGd gejdHe
ejdIejjdIdJdKfejjdIdJdKe	ejdIfe
ejdIe	ejdIfgdLdM Zejdejejej ej!gdNdO Z"ejj#e dPdQejdejejej gdRdS Z$ejj#e dPdQejdejejej gdTdU Z%dS )V    N)
_numpy_120)EncapsulateNDArrayWrappedArray)	assert_eqfuncc                 C   s   t | | S N)npappendx r   H/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_array_function.py<lambda>       r   c                 C   s   t | | | gS r   r   Zconcatenater
   r   r   r   r      r   c                 C   s   t | | S r   r   Zcovr
   r   r   r   r      r   c                 C   s   t | | S r   r   dotr
   r   r   r   r      r   c                 C   s   t | | fS r   r   Zdstackr
   r   r   r   r      r   c                 C   s   t j| ddS Nr   Zaxisr   Zflipr
   r   r   r   r      r   c                 C   s   t | | fS r   r   Zhstackr
   r   r   r   r      r   c                 C   s   t | | S r   r   matmulr
   r   r   r   r      r   c                 C   s
   t | S r   r   Zmeanr
   r   r   r   r      r   c                 C   s   t | | gS r   r   stackr
   r   r   r   r      r   c                 C   s   t | | gS r   )r   blockr
   r   r   r   r      r   c                 C   s
   t | S r   r   sumr
   r   r   r   r      r   c                 C   s
   t | S r   r   varr
   r   r   r   r      r   c                 C   s   t | | fS r   r   Zvstackr
   r   r   r   r      r   c                 C   s   t j| S r   r   linalgZnormr
   r   r   r   r      r   c                 C   s
   t | S r   )r   minr
   r   r   r   r      r   c                 C   s
   t | S r   )r   Zaminr
   r   r   r   r      r   c                 C   s
   t | S r   )r   roundr
   r   r   r   r      r   c                 C   s   t j| ddddS )Nr      r   )r   insertr
   r   r   r   r      r   c                 C   s   t j| dddS r   )r   deleter
   r   r   r   r       r   c                 C   s0   t j| dk | dk | dkg| d | | d gddS )Ng333333?g333333?gffffff?   g?)default)r   selectr
   r   r   r   r   !   s     c                 C   sH   t jd}tj|dd}| |}| |}t|tjs:tt|| d S )Nd   r/   2   r1   chunks)r   randomda
from_array
isinstanceArrayAssertionErrorr   r   r   yZres_xZres_yr   r   r   test_array_function_dask
   s    r<   c                 C   s
   t | S r   r   r
   r   r   r   r   3   r   c                 C   s
   t | S r   r   r
   r   r   r   r   4   r   c                 C   s
   t | S r   r#   r
   r   r   r   r   5   r   c              	   C   s@   t jd}tj|dd}tjtdd | | W 5 Q R X d S )Nr.   r0   r2   z2expects a sequence of arrays as the first argumentmatch)r   r4   r5   r6   pytestraisesNotImplementedErrorr   r   r;   r   r   r   /test_stack_functions_require_sequence_of_arrays0   s    	 rC   c                 C   sR   t jd}tj|dd}| |}| |}| jdkrDt|tjsDtt|| d S )Nr.   r2   zmkl_fft._numpy_fft)	r   r4   r5   r6   
__module__r7   r8   r9   r   r:   r   r   r   test_array_function_fftB   s    
rE   c                 C   s
   t | S r   )r   Zmin_scalar_typer
   r   r   r   r   Q   r   c                 C   s   t j| S r   )r   r%   Zdetr
   r   r   r   r   R   r   c                 C   s   t j| S r   )r   r%   Zeigvalsr
   r   r   r   r   S   r   c              	   C   s@   t jd}tj|dd}tjtdd | | W 5 Q R X d S )Nr.   r0   r2   z,The `.*` function is not implemented by Daskr=   )r   r4   r5   r6   r?   warnsFutureWarningrB   r   r   r    test_array_notimpl_function_daskN   s    	 rH   c                 C   s
   t | S r   )r   realr
   r   r   r   r   a   r   c                 C   s
   t | S r   )r   imagr
   r   r   r   r   a   r   c                 C   s
   t | S r   )r   Z	transposer
   r   r   r   r   a   r   c                 C   sH   t d}tjjddd}d||dk < ||j}t| || | d S )Nsparse)  rL   r.   r2   r   ?)r?   importorskipr5   r4   Z
map_blocksCOOr   )r   rK   r   r;   r   r   r   test_array_function_sparse`   s
    
rP   c                  C   sx   t d} tjd}d||dk < tjd}d||dk < | |}| |}ttj||ddtj||dd  d S )NrK   )r+   r(      r   rM   )rQ   r(   r+   )r+   r   )Zaxes)r?   rN   r   r4   rO   r   Z	tensordotZtodense)rK   r   r;   xxyyr   r   r   $test_array_function_sparse_tensordotm   s    


 rT   r3   r.   rL   r/   c           
      C   sl   t d}|jd}tj|| dd}tj|\}}}tj|\}}}	t|| t|| t|	| d S )NcupyrU   F)r3   asarray)	r?   rN   r4   r5   r6   r%   Zsvdr   r   )
r3   rV   r   r;   Zu_baseZs_baseZv_baseusvr   r   r   test_array_function_cupy_svd|   s    


r[   c                 C   s   t | | | gS r   r   r
   r   r   r   r      r   c                 C   s   t | | S r   r   r
   r   r   r   r      r   c                 C   s   t | | S r   r   r
   r   r   r   r      r   c                 C   s   t | | fS r   r   r
   r   r   r   r      r   c                 C   s   t j| ddS r   r   r
   r   r   r   r      r   c                 C   s   t | | fS r   r   r
   r   r   r   r      r   c                 C   s   t | | S r   r   r
   r   r   r   r      r   c                 C   s
   t | S r   r   r
   r   r   r   r      r   c                 C   s   t | | gS r   r   r
   r   r   r   r      r   c                 C   s
   t | S r   r   r
   r   r   r   r      r   c                 C   s
   t | S r   r!   r
   r   r   r   r      r   c                 C   s   t | | fS r   r#   r
   r   r   r   r      r   c                 C   s   t j| S r   r$   r
   r   r   r   r      r   c                 C   sR   t tjd}tj|dd}t||ddd | |}| |}t||ddd d S )Nr.   r0   r2   F)Z
check_metaZ
check_type)r   r   r4   r5   r6   r   )r   r   r;   rR   rS   r   r   r   test_unregistered_func   s    r\   c               	   C   sX   t jtddddgdd} tjtdd$ tt| ddddgksJt	W 5 Q R X d S )	N   r+   rQ   r(   )r+   r2   z4The `numpy.sort` function is not implemented by Daskr=   )
r5   r6   r   arrayr?   rF   rG   listsortr9   r
   r   r   r   test_non_existent_func   s     ra   c                 C   s   t | |gS r   r   )r   r;   r   r   r   r      r   zarr_upcast, arr_downcast)
   rb   )   rc   r2   c                 C   s6   t | ||t | ||  kr,t |ks2n tdS )z.Test proper dispatch on binary NumPy functionsN)typer9   )r   Z
arr_upcastZarr_downcastr   r   r   $test_binary_function_type_precedence   s
    re   c              	   C   sN   t r t| d| dd| d n*tjtdd | d| dd W 5 Q R X d S )Nr]   likez*The use of ``like`` required NumPy >= 1.20r=   )r   r   r?   r@   RuntimeErrorr   r   r   r   test_like_raises   s     rj   zNEP-35 is not available)reasonc                 C   s    t | dtdd| d d S )Nr]   rf   )r   r5   r^   ri   r   r   r   test_like_with_numpy_func   s    rl   c                 C   s&   t | dttdd| dtd d S )Nr]   )dtyperg   )rm   )r   floatr5   r^   ri   r   r   r   #test_like_with_numpy_func_and_dtype   s    ro   )&Znumpyr   r?   Z
dask.arrayr^   r5   Zdask.array.numpy_compatr   Zdask.array.tests.test_dispatchr   r   Zdask.array.utilsr   markZparametrizer<   rC   ZfftZfft2rE   rH   rP   rT   r[   r\   ra   equalr   r   r4   re   rW   Z
asanyarrayZtrirj   Zskipifrl   ro   r   r   r   r   <module>   s   






 




		

