U
    /e                  4   @   s  d dl Zd dlZd dlmZ d dlZd dlmZ	 d dl
mZmZ d dlmZ edZeejZerre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
 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
 d0d
 d1d
 d2d
 d3d
 d4d
 d5d
 ejd6d
 ejjeed7k d8d9d:ejd;d
 ejjeed7k d8d9d:ejd<d
 ejjeed7k d8d9d:g/Zejd=ed>d? Zejjeed@k dAd9dBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO Z ejdPeegejdQd dRdgejdSdTdUgdVdW Z!dS )X    N)parse)nannumelnumel)	assert_eqsparseZnumbaz0.40.0)Z
minversionc                 C   s   | S N xr   r   @/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_sparse.py<lambda>       r   c                 C   s
   t | S r   )daexpm1r	   r   r   r   r      r   c                 C   s   d|  S N   r   r	   r   r   r   r      r   c                 C   s   | d S r   r   r	   r   r   r   r      r   c                 C   s   | d S r   r   r	   r   r   r   r      r   c                 C   s   | |  S r   r   r	   r   r   r   r      r   c                 C   s   | |  S r   r   r	   r   r   r   r      r   c                 C   s   | d S )Nr   r   r	   r   r   r   r      r   c                 C   s   | d d df S N   r   r	   r   r   r   r      r   c                 C   s   | d dd ddf S )Nr      r   r	   r   r   r   r      r   c                 C   s   | j S r   )Tr	   r   r   r   r      r   c                 C   s   t | dS )N)r   r   r   )r   Z	transposer	   r   r   r   r      r   c                 C   s
   t | S r   r   Znanmeanr	   r   r   r   r       r   c                 C   s   t j| ddS Nr   axisr   r	   r   r   r   r   !   r   c                 C   s
   t | S r   )r   Znanmaxr	   r   r   r   r   "   r   c                 C   s
   t | S r   )r   Znanminr	   r   r   r   r   #   r   c                 C   s
   t | S r   )r   Znanprodr	   r   r   r   r   $   r   c                 C   s
   t | S r   )r   Znanstdr	   r   r   r   r   %   r   c                 C   s
   t | S r   )r   Znanvarr	   r   r   r   r   &   r   c                 C   s
   t | S r   )r   Znansumr	   r   r   r   r   '   r   c                 C   s   |   S r   sumr	   r   r   r   r   .   r   c                 C   s   | j ddS )Nr   )order)Zmomentr	   r   r   r   r   /   r   c                 C   s   |   S r   Zmeanr	   r   r   r   r   0   r   c                 C   s   | j ddS r   r   r	   r   r   r   r   1   r   c                 C   s   |   S r   )Zstdr	   r   r   r   r   2   r   c                 C   s   |   S r   )varr	   r   r   r   r   3   r   c                 C   s   |  t| jd S N)dotnpZarangeshaper	   r   r   r   r   4   r   c                 C   s   |  t| jd S r   )r!   r"   eyer#   r	   r   r   r   r   5   r   c                 C   s$   t j| t| jd d ddgdS )Nr   r   r   Zaxes)r   	tensordotr"   Zonesr#   r	   r   r   r   r   6   r   c                 C   s   | j ddS Nr   r   r   r	   r   r   r   r   7   r   c                 C   s   | j ddS r(   )maxr	   r   r   r   r   8   r   c                 C   s   | j ddS )Nr   r   r   r   r	   r   r   r   r   9   r   c                 C   s   |  tjS r   )Zastyper"   Z
complex128r	   r   r   r   r   :   r   c                 C   s   |  dd S )Nc                 S   s   | d S r   r   r	   r   r   r   r   ;   r   <lambda>.<locals>.<lambda>)
map_blocksr	   r   r   r   r   ;   r   c                 C   s   | j dd ddddS )Nc                 S   s   | d S r   r   r	   r   r   r   r   <   r   r+   r   TnonedepthZtrimboundaryZmap_overlapr	   r   r   r   r   <   r   c                 C   s   | j dd ddddS )Nc                 S   s   | d S r   r   r	   r   r   r   r   =   r   r+   r   Fr-   r.   r1   r	   r   r   r   r   =   r   c                 C   s
   |  dS r   )roundr	   r   r   r   r   >   r   c                 C   s$   |  | jd | jd  | jd fS )Nr   r   r   )Zreshaper#   r	   r   r   r   r   ?   r   c                 C   s   t | S r   )absr	   r   r   r   r   @   r   c                 C   s   | dkS )Ng      ?r   r	   r   r   r   r   A   r   c                 C   s
   |  dS )N)   r4   r4   rechunkr	   r   r   r   r   B   r   c                 C   s
   |  dS )Nr   r   r   r5   r	   r   r   r   r   C   r   c                 C   s
   t | S r   )r"   Zisneginfr	   r   r   r   r   D   r   c                 C   s
   t | S r   )r"   Zisposinfr	   r   r   r   r   E   r   c                 C   s
   t | S r   )r"   Z
zeros_liker	   r   r   r   r   G   r   z0.13.0z,https://github.com/pydata/xarray/issues/5654)reason)Zmarksc                 C   s
   t | S r   )r"   Z	ones_liker	   r   r   r   r   N   r   c                 C   s   t j| ddS )Nr   Z
fill_value)r"   Z	full_liker	   r   r   r   r   U   r   funcc                 C   s   t jjddd}d||dk < |tjj}| |}| |}t||dd |jr| }t	|tjs|dk
 t|jd	 kstd S )
Nr   r   r4   r   r   r   chunksr   皙?F)Z
check_metar   r   )r   randomr,   r   COO
from_numpyr   r#   compute
isinstancer   r"   prodAssertionError)r:   r
   yxxyyzzr   r   r   
test_basic^   s    rK   z0.7.0+10z2fixed in https://github.com/pydata/sparse/pull/256c                  C   s   t jjddd} d| | dk < t jjddd}d||dk < | tjj}|tjj}tt j| |dd	t j||dd	 tt j| |d
d	t j||d
d	 tt j| |dd	t j||dd	 d S )Nr;   r<   r=   r   r?   )r4   r   r   r7   )r   r   r&   )r   r   )r*   )r   r   )r   r@   r,   r   rA   rB   r   r'   )r
   rG   rH   rI   r   r   r   test_tensordotp   s    ""rL   c                  C   s  t jjddd} d| | dk < tj|  }| tjj} t| jtjsLt	t| d jtjsbt	t| j
ddjtjs|t	t| jddjtjst	t| d dd d d	f jtjst	t| d
jtjst	t| | jtjst	t|  jtjst	tt| | gjtjst	tt| | d d | gjtjsDt	tt| | gjtjsbt	tt| d d | d d gjtjst	tt| d d | d d gjtjst	d S )N
   rN      rP   r=   r   r?   r   r   rP   r   )r   r   )r   r@   r   rA   rB   rC   r,   rD   _metarF   r   r   r6   Zpersistr"   Zconcatenatestack)rG   zr   r   r   test_metadata   s"    $(.rT   c                  C   sd   t d tjjddd} d| | dk < | tjj} |  }d|ksHt	d|ksTt	d	|ks`t	d S )
NZjinja2rM   rO   r=   r   r?   rA   r   ZBytes)
pytestimportorskipr   r@   r,   r   rA   rB   Z_repr_html_rF   )rG   textr   r   r   test_html_repr   s    
rX   c                  C   sR   dd } t |  }tj|dtjtdd}t	|j
tjsDtt|| d S )Nc                   S   s   t jtdS )Nr   )r   rA   rB   r"   r$   r   r   r   r   f   s    z!test_from_delayed_meta.<locals>.f)r   r   r   )r#   meta)daskZdelayedr   Zfrom_delayedr   rA   rB   r"   r$   rD   rQ   rF   r   )rY   dr
   r   r   r   test_from_delayed_meta   s
    r]   c                  C   sT   t jtd} tj| dd}t|jt js2t	t
|| t| t jsPt	d S )NrN   rO   r=   )r   rA   rB   r"   r$   r   Z
from_arrayrD   rQ   rF   r   rC   )r
   r\   r   r   r   test_from_array   s
    
r^   c                  C   sN   t jddd} | jtjjtjtdd}t|jtjs@t	t
|| d S )NrN   rP   r=   r   )rZ   )r   r$   r,   r   rA   rB   r"   rD   rQ   rF   r   r
   rG   r   r   r   test_map_blocks   s     r`   c                  C   s6   t jtd} tjj| dd}t|t js2t	d S )Nr   r   )ndim)
r   rA   rB   r"   r$   r   utilsZmeta_from_arrayrD   rF   r_   r   r   r   test_meta_from_array   s    rc   r   r   r%   keepdimsTFc                 C   sX   t jd}d||dk < t j||dk< tjj|dd}t| |||d| |||d d S )Nr;   r   r?   g?g        r9   )r   rd   )r"   r@   nanr   rA   rB   r   )r   r   rd   r
   xsr   r   r   
test_numel   s     rg   )"Znumpyr"   rU   Zpackaging.versionr   parse_versionr[   Z
dask.arrayarrayr   Zdask.array.reductionsr   r   Zdask.array.utilsr   rV   r   __version__ZSPARSE_VERSIONparammarkZxfailZ	functionsZparametrizerK   ZskipifrL   rT   rX   r]   r^   r`   rc   rg   r   r   r   r   <module>   s   




K



	