U
    /eO                     @   sH  d dl Zd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZmZmZmZmZ d dlmZ dd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zejdddgdd Zejdddgdd Zdd Zdd  Zd!d" Z d#d$ Z!d%d& Z"d'd( Z#d)d* Z$d+d, Z%d-d. Z&d/d0 Z'd1d2 Z(ejd3e)e)fgd4d5 Z*d6d7 Z+d8d9 Z,d:d; Z-d<d= Z.d>d? Z/d@dA Z0dBdC Z1dDdE Z2dFdG Z3dHdI Z4dJdK Z5ejdLddgdMdN Z6dOdP Z7dQdR Z8dSdT Z9ejdUdVdWdgdXdY Z:ejdZd d[gd\d]ggd^d_ Z;d`da Z<dbdc Z=ddde Z>dfdg Z?dhdi Z@djdk ZAdldm ZBdS )n    N)assert_equal)Array)_parse_gufunc_signature_validate_normalize_axesapply_gufunc	as_gufuncgufunc)	assert_eqc                	   C   s  t tddgdf t tddgdf t tddgdf t tdddgdf t td	dgdf t td
dgddgf t tddddgdf tt td W 5 Q R X tt td W 5 Q R X tt td W 5 Q R X tt td W 5 Q R X d S )Nz(x)->()x z	(x,y)->()r   yz  (x, y) ->()z(x),(y)->()r   z(x)->(y)z(x)->(y),()z(),(a,b,c),(d)->(d,e))abc)d)r   ez
(x)(y)->()z	(x),(y)->z
((x))->(x)z	(x)->(x),)r   r   pytestraises
ValueErrorr   r   r   @/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_gufunc.pytest__parse_gufunc_signature   s$    r   c               	   C   s   dd } t jjddd}tt t| d|dd W 5 Q R X t| d|dgd t| d|d	gd t| d|dt gd t| d|d	t gd tt t| d|d
gd W 5 Q R X tt t| d|ddgd W 5 Q R X d S )Nc                 S   s   t j| ddS Naxisnpmeanr
   r   r   r   foo)   s    z7test_apply_gufunc_axes_input_validation_01.<locals>.foo      r$   sizechunks(i)->()r   )axesr   r      )darandomnormalr   r   r   r   tuple)r!   r   r   r   r   *test_apply_gufunc_axes_input_validation_01(   s    r1   c               	   C   sp   dd } t jtdddgddd}t jtdddgddd}tt t| d	||d
|jd W 5 Q R X d S )Nc                 S   s   | | S Nr   r   r   r   r   add>   s    z3test_apply_gufunc_axes_args_validation.<locals>.addr,         r   r'   namer   	(),()->()r   output_dtypes	r-   
from_arrayr   arrayr   r   r   r   dtyper3   r   r   r   r   r   &test_apply_gufunc_axes_args_validation=   s
    r@   c               	   C   s   t t tdgd ddgd W 5 Q R X t t tddgd ddgd W 5 Q R X t t tddgd ddgd W 5 Q R X tddgd ddgd\} }| dgkst|dgkstd S )Nr,   r   FijrD   r   r*   )r   r   r   r   AssertionErrorrC   or   r   r    test__validate_normalize_axes_01G   s      rI   c               	   C   s   t d ddddgd\} }| ddgks(t|dgks6tt d dddgd\} }| dgksZt|dgkshtt d ddddgd\} }| ddgkst|dgksttt t d ddddgd W 5 Q R X tt t d ddddgd W 5 Q R X tt t d ddddgd W 5 Q R X d S )Nr   FrC   r   r*   TrE   r   rF   r   r   r   rG   r   r   r    test__validate_normalize_axes_02V   s    rL   c               	   C   s   t d dddgd\} }| dgks$t|dgks2ttt t d dddgd W 5 Q R X tt t ddgd ddgd W 5 Q R X tt t ddgd dddgd W 5 Q R X d S )	Nr   TrJ   r   r*   r+   rB   rE   rK   rG   r   r   r    test__validate_normalize_axes_03m   s     rM   c                  C   sn   dd } t jjddd}t| d|d|jf d}|\}}t|tsFt| j	d	ksXt| j	d	ksjtd S )
Nc                 S   s   t j| ddt j| ddfS r   r   r    stdr
   r   r   r   stats}   s    z#test_apply_gufunc_01.<locals>.stats
   r#   r$      rT   r$   r%   
(i)->(),()r4   r9   rR   r#   )
r-   r.   r/   r   r>   
isinstancer0   rF   computeshape)rP   r   resultr    rO   r   r   r   test_apply_gufunc_01|   s    r[   c                  C   s^   dd } t jjddd}t| d|d|jf dd	\}}| jd
ksHt| jd
ksZtd S )Nc                 S   s   t j| ddt j| ddfS r   rN   r
   r   r   r   rP      s    z$test_apply_gufunc_01b.<locals>.statsrQ   rT   r%   rU   r4   Tr:   allow_rechunkrV   r-   r.   r/   r   r>   rX   rY   rF   )rP   r   r    rO   r   r   r   test_apply_gufunc_01b   s       
 
r_   	vectorizeFTc                 C   s@   dd }t jjddd}t|d|d| d}| jd	ks<td S )
Nc                 S   s   t j| ddS r   r   r
   r   r   r   rP      s    z5test_apply_gufunc_output_dtypes_string.<locals>.statsrQ   rS   r%   r(   fr:   r`   rV   r-   r.   r/   r   rX   rY   rF   )r`   rP   r   r    r   r   r   &test_apply_gufunc_output_dtypes_string   s    rd   c                 C   sj   dd }t jjddd}t|d|d| d\}}}| jd	ksBt| jd	ksTt| jd	ksftd S )
Nc                 S   s(   t j| ddt j| ddt j| ddfS r   )r   r    rO   minr
   r   r   r   rP      s    zBtest_apply_gufunc_output_dtypes_string_many_outputs.<locals>.statsrQ   rS   r%   z(i)->(),(),())ra   ra   ra   rb   rV   rc   )r`   rP   r   r    rO   re   r   r   r   3test_apply_gufunc_output_dtypes_string_many_outputs   s        rf   c                  C   s2   dd } t | ddtdd}t|tjdtd d S )Nc                 S   s   |dkst | S )Nr4   )rF   )r   barr   r   r   r!      s    z5test_apply_gufunc_pass_additional_kwargs.<locals>.foo()->()g      ?r4   )r:   rg   r>   )r   floatr	   r   r=   )r!   retr   r   r   (test_apply_gufunc_pass_additional_kwargs   s    rl   c                  C   sR   dd } t jjddd}t jjddd}t| d|||jd}| jd	ksNtd S )
Nc                 S   s   t d| |S )Nz...i,...j->...ijr   einsumr   r   r   r   outer_product   s    z+test_apply_gufunc_02.<locals>.outer_productr"   )rT   r$   r%   rR   r,   (   (i),(j)->(i,j)r9   rR   r#   r$   rq   r^   )ro   r   r   r   r   r   r   test_apply_gufunc_02   s
    rt   c                  C   s*   dd } t | dtd}| dks&td S )Nc                   S   s   dS )Nr,   r   r   r   r   r   r!      s    z,test_apply_gufunc_scalar_output.<locals>.fooz->()r9   r,   r   intrX   rF   r!   r   r   r   r   test_apply_gufunc_scalar_output   s    rx   c                  C   sn   dd } t jtdddgddd}t jtdddgddd}t| d	|||jd
}t|tdddg d S )Nc                 S   s   | | S r2   r   r   r   r   r   r3      s    z*test_apply_gufunc_elemwise_01.<locals>.addr,   r4   r5   r   r6   r   r8   r9         r-   r<   r   r=   r   r>   r	   )r3   r   r   zr   r   r   test_apply_gufunc_elemwise_01   s
    r}   c               	   C   sn   dd } t jtdddgddd}t jtdddgddd}tt t| d	|||jd
 W 5 Q R X d S )Nc                 S   s   | | S r2   r   r   r   r   r   r3      s    z+test_apply_gufunc_elemwise_01b.<locals>.addr,   r4   r5   r   r6   r   r8   r9   r;   r?   r   r   r   test_apply_gufunc_elemwise_01b   s
    r~   c                  C   s   dd } t jtdddgddd}t jtdddgddd}t| d	||d|jf d
\}}t|tdddg t|tdddg d S )Nc                 S   s   | j dkst| | | | fS )Nr4   r,   rY   rF   r   r   r   r   addmul   s    z-test_apply_gufunc_elemwise_02.<locals>.addmulr,   r4   r5   r   r6   r   (),()->(),()r9   ry   rz   	   r{   )r   r   r   z1Zz2r   r   r   test_apply_gufunc_elemwise_02   s    r   c                  C   sD   dd } t | dtddid}|jdks*tt|tdd	dg d S )
Nc                   S   s   t jdddgtdS )Nr,   r4   r5   ri   )r   r=   rv   r   r   r   r   r!      s    z&test_gufunc_vector_output.<locals>.fooz->(i_0)Zi_0r5   r:   output_sizesr5   r,   r4   )r   rv   r'   rF   r	   r   r=   rw   r   r   r   test_gufunc_vector_output   s    r   c                  C   s\   dd } t jtdddgddd}t| d|td	}|jd
ksBtt|tdddg d S )Nc                 S   s   | j dkstd|  S )Nr   r4   r   r
   r   r   r   r!      s    z,test_apply_gufunc_elemwise_loop.<locals>.foor,   r4   r5   r   r6   rh   r9   )r4   r,   ry   rz   	r-   r<   r   r=   r   rv   r'   rF   r	   r!   r   r|   r   r   r   test_apply_gufunc_elemwise_loop   s
    r   c                  C   s\   dd } t jtdddgddd}t| d|td	}|jd
ksBtt|tdddg d S )Nc                 S   s   | j dkstd|  S )Nr   r4   r   r
   r   r   r   r!      s    z,test_apply_gufunc_elemwise_core.<locals>.foor,   r4   r5   r   r6   (i)->(i)r9   r   ry   rz   r   r   r   r   r   test_apply_gufunc_elemwise_core   s
    r   c                  C   sB   dd } t | dttfd\}}| dks.t| dks>td S )Nc                   S   s   dS )N)r,   r4   r   r   r   r   r   r!     s    z0test_apply_gufunc_two_scalar_output.<locals>.fooz->(),()r9   r,   r4   ru   r!   r   r   r   r   r   #test_apply_gufunc_two_scalar_output  s    r   c                  C   s\   dd } t | dttfdddd\}}| dks6t|jd	ksDtt|tjd
td d S )Nc                   S   s   dt jdtdfS )Nr,   r4   r5   ri   )r   onesrj   r   r   r   r   r!     s    z0test_apply_gufunc_two_mixed_outputs.<locals>.fooz
->(),(i,j)r4   r5   rB   r   r,   )r   r   r   ri   )	r   rv   rj   rX   rF   r'   r	   r   r   r   r   r   r   #test_apply_gufunc_two_mixed_outputs  s       
r   r:   c                    s@    fdd}t jd}|t t|d|| d}t | d S )Nc                    s    S r2   r   r
   r   r   r   r!   &  s    z,test_apply_gufunc_output_dtypes.<locals>.foorR   rh   r9   )r   r.   randnastyperv   r   r	   )r:   r!   r   dyr   r   r   test_apply_gufunc_output_dtypes$  s
    
r   c                  C   sV   dd } t jddtd}t jddtd}t| d||td}t|d	tjd
td  d S )Nc                 S   s   t d| |S )Nz...ij,...jk->ikrm   r   r   r   r   r!   1  s    z#test_gufunc_two_inputs.<locals>.foor   d   r'   r>   )r5   ry   (i,j),(j,k)->(i,k)r9   r5   )r4   ry   ri   )r-   r   rv   r   r	   r   r!   r   r   r   r   r   r   test_gufunc_two_inputs0  s
    r   c                  C   sT   dd } t jdtd}tjddtd}t| d||td	}t|d
t jdtd  d S )Nc                 S   s   | | S r2   r   r   r   r   r   r!   ;  s    z%test_gufunc_mixed_inputs.<locals>.foor   ri   )r,      r   r   r8   r9   r4   )r4   r   )r   r   rv   r-   r   r	   r   r   r   r   test_gufunc_mixed_inputs:  s
    r   c                  C   sR   dd } t jddtd}tjdtd}t| d||d	d
}t|tjddtd d S )Nc                 S   s   | | j ddS Nr,   r   sumr   r   r   r   r!   E  s    z/test_gufunc_mixed_inputs_vectorize.<locals>.foor   r5   rT   r4   r5   rT   r   rT   ri   z(m,n),(n)->(m)Tr`   r   r5   rR   )r-   r   rv   r   r   r	   fullr   r   r   r   "test_gufunc_mixed_inputs_vectorizeD  s
    r   c                  C   s~   dd } t jddtd}tjdtd}t| d||d	d
}t|tjddtd t jd}t jdt	d	ddd }|| d S )Nc                 S   s   | | j ddS r   r   r   r   r   r   r!   U  s    z-test_gufunc_vectorize_whitespace.<locals>.foor   r   r   rT   ri   z(m, n),(n)->(m)Tr   r   rR   )rz   rT   rT   z(n, n)->(n, n))	signaturer:   r`   c                 S   s   t j| S r2   )r   Zlinalginvr
   r   r   r   gufoo`  s    z/test_gufunc_vectorize_whitespace.<locals>.gufoo)
r-   r   rv   r   r   r	   r   r.   r   rj   )r!   r   r   r   r   r   r   r    test_gufunc_vectorize_whitespaceO  s    
r   c                  C   s\   t jjddd} dd }t|dddtd	d
}|| }| }t|tsJt|j	dksXtd S )NrR   rT   r4   rT   r%   c                 S   s   t j| ddS r   r   r
   r   r   r   r!   l  s    ztest_gufunc.<locals>.foor(   r   FT)r   r   keepdimsr:   r`   rR   )
r-   r.   r/   r   rj   rX   rW   r   rF   rY   )r   r!   r   r   valyr   r   r   test_gufunci  s    	r   c                  C   sZ   t jjddd} tdddtddd	d
 }|| }| }t|tsHt|j	dksVtd S )Nr   r   r%   r(   r   FT)r   r   r:   r`   c                 S   s   t j| ddS r   r   r
   r   r   r   r!     s    ztest_as_gufunc.<locals>.foor   )
r-   r.   r/   r   rj   rX   rW   r   rF   rY   )r   r!   r   r   r   r   r   test_as_gufunc~  s    
r   c                  C   s   dd } t jjddd}t jjddd}t| d||d	tf d
d\}}}| jdksZt| jdkslt| jdks~td S )Nc                 S   sB   t | jdkstt |jdks$tt| |\} }| || | fS )Nr4   r5   )lenrY   rF   r   Zbroadcast_arraysr   r   r   r   r!     s    z4test_apply_gufunc_broadcasting_loopdims.<locals>.foorR   r$   )r   r$   r%   )r#   r,   r$   )r5   r,   r$   z(i),(i)->(i),(i),(i)r5   Frb   )r#   rR   r$   )r-   r.   r/   r   rj   rX   rY   rF   )r!   r   r   r   r   r|   r   r   r   'test_apply_gufunc_broadcasting_loopdims  s         r   c               	   C   sh   dd } t jjddd}t jjddd}tt}t| d||tdd	 W 5 Q R X d
t|j	ksdt
d S )Nc                 S   s   | | S r2   r   r   r   r   r   r!     s    z2test_apply_gufunc_check_same_dimsizes.<locals>.foor   r   r%   )ry   r8   Tr\   zdifferent lengths in arraysr-   r.   r/   r   r   r   r   rj   strvaluerF   r!   r   r   excinfor   r   r   %test_apply_gufunc_check_same_dimsizes  s    r   c               	   C   sX   dd } t jjddd}tt}t j| d|tdd W 5 Q R X d	t|j	ksTt
d S )
Nc                 S   s   t j| ddS r   )r   r   r
   r   r   r   r!     s    z6test_apply_gufunc_check_coredim_chunksize.<locals>.foor   r5   r%   r(   Fr\   zconsists of multiple chunksr   )r!   r   r   r   r   r   )test_apply_gufunc_check_coredim_chunksize  s
    r   c               	   C   sj   dd } t jjddd}t jjddd}tt}t j| d||tdd	 W 5 Q R X d
t|j	ksft
d S )Nc                 S   s   | | S r2   r   r   r   r   r   r!     s    z<test_apply_gufunc_check_inhomogeneous_chunksize.<locals>.foor   ))r4   r4   r4   r4   r%   ))r4   r5   r5   r8   Fr\   z with different chunksize presentr   r   r   r   r   /test_apply_gufunc_check_inhomogeneous_chunksize  s         r   c               	   C   s\  t dd} t d}tj| dd}tj|dd}dd }t|d||d	}|||d	}t|| t|d||d	d
d}|||d	d
d}t|| t|d||d	d
d
d}|||d	d
d}t|| dd }tt	}t|d| W 5 Q R X t
|j}|dstd|kstd|ks"tdd }t|d||\}	}
t|	||  t|
||  d S )N2   )rT   rR   rR   rT   r'   c                 _   s   | dd}| t| |S )Ncasti8)popr   r   )r   argskwargsr   r   r   r   r!     s    z*test_apply_gufunc_infer_dtype.<locals>.fooz(),(),()->()r,   Zf8)r   )r   r:   c                 S   s   t dd S )NZWoops)RuntimeErrorr
   r   r   r   r!     s    rh   z`dtype` inference failedz#Please specify the dtype explicitlyr   c                 S   s   | | | | fS r2   r   r   r   r   r   r!     s    r   )r   ZarangeZreshaper-   r<   r   r	   r   r   r   r   r   
startswithrF   )r   r   Zdxr   r!   Zdzr|   r   msgZz0r   r   r   r   test_apply_gufunc_infer_dtype  s2    




r   r   c                 C   sV   dd }t jdd}tj|dd}t j|d| d}t|d	|d| d
d}t|| d S )Nc                 S   s   t j| ddS r   r   medianr
   r   r   r   mymedian  s    z+test_apply_gufunc_axis_01.<locals>.mymedianrR   rT   r4   r   r   r   r   r(   Tr   r   r]   r   r.   r   r-   r<   r   r   r	   )r   r   r   da_mdmr   r   r   test_apply_gufunc_axis_01  s         r   c                  C   sT   dd } t jdd}tj|dd}t jj|dd}t| d	|dd
d}t|| d S )Nc                 S   s   t jj| ddS r   )r   fftr
   r   r   r   myfft  s    z(test_apply_gufunc_axis_02.<locals>.myfftrR   rT   r4   r   r   r   r   Tr   r]   )r   r.   r   r-   r<   r   r   r	   )r   r   r   r   r   r   r   r   test_apply_gufunc_axis_02  s    r   c                  C   sT   ddd} t jddd}tj|dd	}| |d
d}t| d|d
dd}t|| d S )NrR   r   c                 S   s8   t jj| |d}d||| < t jj||d}t |S )Nr   r   )r   r   Zifftreal)r   Zcnr   r   Znxr   r   r   myfilter  s    z,test_apply_gufunc_axis_02b.<locals>.myfilterr5   rz   ry   r4   r   r,   r   r   Tr   )rR   r   )r   r.   r   r-   r<   r   r	   )r   r   r   r   r   r   r   r   test_apply_gufunc_axis_02b  s    
r   c                  C   sZ   dd } t jddd}tj|dd}t j|dd	}t| d
|dddidd}t|| d S )Nc                 S   s   t j| ddS r   )r   diffr
   r   r   r   mydiff  s    z)test_apply_gufunc_axis_03.<locals>.mydiffr5   rz   ry   r4   r   r,   r   r   rC   rT   T)r   r   r]   )r   r.   r   r-   r<   r   r   r	   )r   r   r   r   r   r   r   r   test_apply_gufunc_axis_03  s         r   r   r   c                 C   s^   dd }t jdd}tj|dd}t j|| s2dn| dd	}t|d
|| ddd}t|| d S )Nc                 S   s   t j| ddS r   r   r
   r   r   r   r   &  s    z1test_apply_gufunc_axis_keepdims.<locals>.mymedianrR   rT   r4   r   r   Tr   r(   r   r   )r   r   r   r   r   r   r   r   r   test_apply_gufunc_axis_keepdims$  s         r   r)   r,   r*   r   c                 C   s~   dd }t jdd}t jdd}tj|dd}tj|dd}t j|dd	t j|d
d	 }t|d||| dd}t|| d S )Nc                 S   s   t j| ddt j|dd S r   )r   rO   r    r   r   r   r   mystats5  s    z*test_apply_gufunc_axes_01.<locals>.mystatsrR   rT   rz   r4   r   r   r   r,   z(i),(j)->()Tr)   r]   )	r   r.   r   r-   r<   rO   r    r   r	   )r)   r   r   r   r   Zdb_r   r   r   r   r   test_apply_gufunc_axes_013  s    r   c                  C   sz   dd } t jddd}t jddd}tj|dd}tj|dd}t d	||}t| d
||dddgdd}t|| d S )Nc                 S   s   t d| |S )Nz...ij,...jk->...ikrm   r   r   r   r   matmulC  s    z)test_apply_gufunc_axes_02.<locals>.matmulr5   r4   r,      rT   r   zjiu,juk->uikr   rA   )r   r   )r   r   Tr   )r   r.   r   r-   r<   rn   r   r	   )r   r   r   r   dbr   r   r   r   r   test_apply_gufunc_axes_02B  s    r   c                  C   sP   t jjddd} t jjddd}dd }t|d| |d	d
}| jdksLtd S )Nr"   r   r%   rp   )rT   r,   rq   c                 S   s   t d| |S )Nzi,j->ijrm   r   r   r   r   ro   \  s    z?test_apply_gufunc_axes_two_kept_coredims.<locals>.outer_productrr   Tr   rs   rc   )r   r   ro   r   r   r   r   (test_apply_gufunc_axes_two_kept_coredimsX  s
    r   c                  C   s   t d} | | jd d  | jd d  | jd d  fgddd }tjjddd}tjjddd}|| }|||dd	}t|| d S )
Nnumbaz(n),(n)->(n)c                 S   s,   t | jd D ]}| | ||  ||< qd S )Nr   rangerY   )r   r   resrC   r   r   r   gf  s    z)test_apply_gufunc_via_numba_01.<locals>.gr"   r$   r%   r   r   )r   importorskipguvectorizefloat64r-   r.   r/   r	   )r   r   r   r   r   r   r   r   r   test_apply_gufunc_via_numba_01c  s    
( 
r   c                  C   sr   t d} | | jd d  | jd d  fgddd }tjjddd}|jdd	d
}||dd	d
}t|| d S )Nr   z(n)->()c                 S   s4   d|d< t | jd D ]}|d  | | 7  < qd S )Ng        r   r   )r   r   rC   r   r   r   mysumy  s    z-test_apply_gufunc_via_numba_02.<locals>.mysumr"   r$   r%   r   Tr   )	r   r   r   r   r-   r.   r/   r   r	   )r   r   r   r   r   r   r   r   test_apply_gufunc_via_numba_02v  s    
$
r   c                  C   s   t d} dd }tjjddd}|| jj}t|d|d|j	f d	\}}t
|j| js^tt
|j| jsptt
|j| jstt|| t|| d S )
Nsparsec                 S   s   t j| ddt j| ddfS r   )r   r   r    r
   r   r   r   rP     s    z&test_preserve_meta_type.<locals>.statsrQ   rS   r%   rU   r4   r9   )r   r   r-   r.   r/   Z
map_blocksZCOOZ
from_numpyr   r>   rW   Z_metarF   r	   )r   rP   r   r   r    r   r   r   test_preserve_meta_type  s    

r   c                  C   s|   dd } t jjddd}tjdtjdtjdtjdf}t| d||d	}| | }t	|d |d  t	|d
 |d
  d S )Nc                 S   s    t j| ddt j| dt jdfS )Nr   r   )r   r>   )r   r    rO   float32r
   r   r   r   rP     s    z*test_apply_gufunc_with_meta.<locals>.statsrQ   rS   r%   r   ri   rU   )metar,   )
r-   r.   r/   r   r   r   r   r   rX   r	   )rP   r   r   rZ   expectedr   r   r   test_apply_gufunc_with_meta  s     r   c                  C   s   t jddd} | |  f}tjdtjdtjdtjdf}t jd|ddd	 }|| }t|d
 |d
  tt|d  g|d   d S )N)r,   r   <   )r,   r   r   r   r   ri   z(i,j) ->(i,j), ())r   r   c                 S   s   | t |  fS r2   )r   Z
atleast_1dmax)Zarrr   r   r   array_and_max  s    z/test_as_gufunc_with_meta.<locals>.array_and_maxr   r,   )	r-   r   r   r   r=   r   r   r	   rX   )stackr   r   r   rZ   r   r   r   test_as_gufunc_with_meta  s     
r  )CZnumpyr   r   Znumpy.testingr   Z
dask.arrayr=   r-   Zdask.array.corer   Zdask.array.gufuncr   r   r   r   r   Zdask.array.utilsr	   r   r1   r@   rI   rL   rM   r[   r_   markZparametrizerd   rf   rl   rt   rx   r}   r~   r   r   r   r   r   r   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   <module>   st   

	
	

		



*


