
    >iey                       d dl mZ d dlZ ej        d           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 d dlmZ d dlmZmZ ej                            dd ej        d	ej        j        
          g          ej                            dg d          ej                            deeej        g          ej                            deeej        g          ej                            ddg          ej                            dddg          ej                            dddg          ej                            ddg          d                                                                                                 Zej                            ddi fdi fdi fdddifg          ej                            d g d!          ej                            ddg          d"                                     Zej                            d#d$d%g          d&             Zd' Zej                            d(d)d*d+d, ej        d-           ej        d.           ej        d-          df ej        d-           ej        d.           ej        d-          df ej         d-           ej         d.           ej         d-          df ej!        d-           ej!        d.           ej!        d-          df ej         d-           ej         d.           ej         d-          ej         f ej!        d-           ej!        d.           ej!        d-          ej!        fg
          d/             Z"ej        #                    d01          d2             Z$d3 Z%d4 Z&d5 Z'd6 Z(d7 Z)ej                            d8d9gd9gfd:gd:gfd;d<gd=d;gfg d>g d?fg d@g dAfdBdCgdDd<gfg          ej                            dEdFdGg          ej                            dHd%d$g          dI                                     Z*dJ Z+ej                            dKdLdd e,dMfdNdd e,dMfdLdNd e-dMfdLdd-e.dMfdLddOe.dMfdLdd.e.d-fdPdQdRe.dSfdPdQd e.dTfg          dU             Z/dV Z0ej                            dWg dX          dY             Z1ej                            dWg dX          dZ             Z2ej                            dWg dX          d[             Z3d\ Z4ej                            dg d]          ej                            d^d_ i fd=d`i fd=dadbdLifg          dc                         Z5dd Z6ej                            deg df          dg             Z7ej                            ddhdig          ej                            deg dj          dk                         Z8ej                            ddhdig          ej                            dedOdlg          dm                         Z9ej                            ddhdig          ej                            deg dn          do                         Z:ej                            ddpdqg          ej                            ded.drg          ds                         Z;ej                            dtg du          ej                            deg dv          dw                         Z<ej                            dxdydzd d{d|d.ifdydzd d}i fdydzd d~dd.ifdydzd di fdydzd di fdydzd di fdydzd di fg          d             Z=ej                            dxdd<d-d{i fdd<d.d{d|dOifdd<d.d{d| ej
        dO          ifdd<dBd{d|difdydzdd{d|difdd<dLd}i fdd<dLd~i fdd<dLd~dd ifdydzdd~ddifdydzddi fdydzddi fdydzddi fdd<dBdddDifdydzddddifdd<dBdddBifdd<d-di fg          d             Z>ej                            ddg ej?        dNd           ej@        d-          f ej?        dNd           ejA        d           f ej
        g dd           ejB        d          f ej
        g dejC                   ejC        d%          f ej
        g dejD                   ejD        d          f ej?        dNd           ej
        d-d          f ej?        dNd           ej
        d d          f ej
        g dd           ej
        dd          f ej
        g dejC                   ej
        d%ejC                  f ej
        g dejD                   ej
        dejD                  ff
          d             ZEej                            dejF        ejG        ej        e-g          ej                            dg d          ej                            dd{d}d~ddd ej        dej        H                    d1          
           ej        dej        H                    d1          
           ej        dej        H                    d1          
           ej        dej        H                    d1          
           ej        dej        H                    d1          
          g          d                                     ZIej                            di dd.ig          d             ZJd ZKd ZLd ZMej                            dddg          ej                            dddg          ej                            ddej        dej@        g          d                                     ZNej                            dddg          ej                            ddej        dej@        g          d                         ZOej                            dg d          ej                            dddg          ej                            ddej        dej@        g          d                                     ZPdS )    )annotationsNnumpy)concat)normalize_chunks)	AxisError)	assert_eq	same_keysbackendcupy)marksfuncname)
empty_likeempty	ones_likeones
zeros_likezeros	full_likefull
cast_shapecast_chunkszshape, chunks)
   r      r   namezmy-nameorderCFdtypei4c	                T   t          j        |          }	t          j                            d|i          5  t          |	|           }
t          t          |           } ||          } ||          }d| v r|
|fd}
fd}t          j        |          }d| v rL|	j	        
                    dd|                              |          } |
||          } |||||	          }n |
|||
          } ||||||          }|j        |j        k    sJ |j        |j        k    sJ t          |j        |	j                  sJ t          |                                |	j                  sJ d| vrt#          ||           |%|                     d          d         |j        v sJ n|j        |k    sJ ddk    r)t          j        |                                          sJ n(t          j        |                                          rJ d d d            d S # 1 swxY w Y   d S )Nzarray.backendr   c                      | ddi|S N
fill_value    )akold_np_funcs     >lib/python3.11/site-packages/dask/array/tests/test_creation.py<lambda>ztest_arr_like.<locals>.<lambda>7       kk1&H&Ha&H&H     c                      | ddi|S r$   r'   )r(   r)   old_da_funcs     r+   r,   ztest_arr_like.<locals>.<lambda>8   r-   r.   liker   r   )r   )r   chunksr   )r   r    )r   r    r2   r   r   _r   r   )pytestimportorskipdaskconfigsetgetattrdanpr    randomrandintastypeshape
isinstance_metandarraycomputer   splitr   	isfortran)r   r?   r   r    r   r2   r   r   r
   backend_libnp_funcda_funcr(   np_rda_rr0   r*   s                  @@r+   test_arr_likerK      s   4 %g..K	/73	4	4 *4 *4+x00"h''
5!!V$$X!K!KHHHHGHHHHGX"**1b%88??FFA71E***D71E&tDDDDD75U;;;D75U6PTUUUDzTZ''''zTZ'''' $*k&9:::::$,,..+*=>>>>>(""dD!!!<>>#&&q)TY666669$$$$c>><//////|DLLNN33333U*4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4 *4s   GHH!$H!zfuncname, kwargsr   r   r   r   r%   r&   zshape, chunks, out_shape))r   r   N)r   r   )      )r   r   rL   ))r   r   r   )r      r&   r&   )rN   rM   r&      NrM   r&   rQ   )rP   )rN   r&   rM   rR   )rP   )rN   r&   rM   autorM   )   rN   rM   r&   rQ   )rP   rS   rR   c                d   t          t          |           }t          t          |           }t          j                            dd|                              |          } ||fd|i|}	 ||f||d|}
|	j        |
j        k    sJ |	j        |
j        k    sJ d| vrt          |	|
           d S d S )Nr   r   r?   )r2   r?   r   )	r9   r;   r:   r<   r=   r>   r?   r    r   )r   kwargsr?   r    r2   	out_shaperG   rH   r(   rI   rJ   s              r+   test_arr_like_shaperX   Z   s    0 b(##Gb(##G
	!R''..u55A7100I000D71?V9????D:####:####h$ r.   endpointTFc           
     h   t          j        dd| d          }t          j        dd|           }t          ||           t          j        dd| dd	          }t          j        dd| d
          }t          ||           t          j        dd| dt                    }t          j        dd| t                    }t          ||           t          j        dd| dd          \  }}t          j        dd| d          \  }}t          j        ||          sJ t          ||           t          j        dd| ddt                    }t          j        ddd| t                    }t          ||           t          t          j        dd| dd	          j                  t          t          j        dd| dd	          j                  k    sJ t          t          j        dd| dt                    j                  t          t          j        dd| dt                    j                  k    sJ t          j	        g d          }t          j        ddd|           }t          j        t          j
        |          t          j        |          dz   d|           }t          ||           t          j        ddd|           }t          j        ddd|           }t          ||           t          j        ddd|           }t          j        ddd|           }t          ||           t          j        ddd|           }t          j        ddd|           }t          ||           t          j        ddd|           }t          j        ddd|           }t          ||           t          j        ddd|           }t          j        ddd|           }t          ||           t          j        ddd|           }t          j        ddd|           }t          ||           d S )N   1   r&   )rY   r2   )rY   gffffff?g@   )rY   r2   num)rY   r^   )rY   r2   r    )rY   r    T)rY   r2   retstep)rY   r_   )rY   r2   r^   r    )r^   rY   r    )g?g@g      @g?r   rN         )r:   linspacer;   r   floatallcloseintsortedr6   arrayargminargmax)rY   darrnparrdstepnpstepxs         r+   test_linspacero      s'   ;q"x:::DK2111EdE;sC(1"EEEDKS8<<<EdE;q"xGGGDK2>>>EdE+ahq$OOOKD%K2$GGGME6;uf%%%%%dE;sC(1"CPPPDKSb83GGGEdE
CxrBBBG 	CxrJJJO	P	PQ Q Q Q 
ArHQeDDDI 	ArHQeLLLQ	R	RS S S S 	%%%&&AK1a(333E;ry||RYq\\A%5q8LLLDdEK1a(333E;q!Q222DdEK1a(333E;q!Q222DdEK1a(333E;q!Q222DdEK1a(333E;q!Q222DdEK1a(333E;q!Q222DdEK1a(333E;q!Q222DdEr.   c                 @   t          j        dd          } t          j        d          }t          | |           t          j        ddd          } t          j        dd          }t          | |           t          j        dddd          } t          j        ddd          }t          | |           t          j        d	dd
d          } t          j        d	dd
          }t          | |           t          j        ddt                    } t          j        dt                    }t          | |           t          j        dddt
                    } t          j        ddt
                    }t          | |           t          t          j        ddd          j                  t          t          j        ddd          j                  k    sJ t          t          j        ddt                    j                  t          t          j        ddt                    j                  k    sJ t          j        dddd          } t          j        ddd          }t          | |           t          j        dddd          } t          j        ddd          }t          | |           t          j	        t          d          5  t          j        ddd           d d d            n# 1 swxY w Y   t          j        d          j        dk    sJ d S )NM   r]   r2   rN   r&   r      	   5   r2   r    r    r   ra   g      rL         ?	whatsthismatchr   )r2   r{   )r   )r:   aranger;   r   rc   re   rf   r6   r4   raises	TypeErrorr2   rj   rk   s     r+   test_aranger      s)   9R###DIbMMEdE9Q1%%%DIaEdE9QAb)))DIaQEdE 9RBq)))DIb!R  EdE9R%000DIb&&&EdE9Q1C000DIa3'''EdE")Ar!,,,122f
	!R"""'7 7     ")Br777<==
	"Ru---2B B    
 9Q4+++DIaD!!EdE9QC+++DIaS!!EdE 
y	4	4	4 . .
	"R1----. . . . . . . . . . . . . . . 9R==8++++++s   K44K8;K8zstart,stop,step,dtype)r   ra   ra   N)      ?rN   ra   N)ra   g      @ra   N)ra   rN   rz   Nra   rN   c                    t          j        | |||          }t          j        | |||d          }t          ||           d S )Nrx   ry   )r    r2   )r;   r   r:   r   )startstopstepr    a_npa_das         r+   test_arange_dtypesr      sL    , 9UD$e444D9UD$eB???DdDr.   zcCasting floats to ints is not supported since edgebehavior is not specified or guaranteed by NumPy.)reasonc                     t          j        ddddd          } t          j        dddd          }t          | |           d S )Ngffffff
@g333333"g      пrM   i8rw   rx   r:   r   r;   r   r   s     r+   test_arange_cast_float_int_stepr     sL    
 9S$at<<<DIc4d333EdEr.   c                    t          j        dddd          } t          j        ddd          }t          | |           t          j        dddd	          } t          j        ddd          }t          | |           t          j        d
ddd          } t          j        d
dd          }t          | |           t          j        d
ddd          } t          j        d
dd          }t          | |           d S )N       @g      *@g333333?r   rr   g@r   grM   r   ra   g{Gz?rL   gQ?r   r   s     r+   test_arange_float_stepr     s    9S$A...DIc4%%EdE9S#tA...DIc3%%EdE9Q4+++DIaD!!EdE9Q4+++DIaD!!EdEr.   c                     t          j        t                    5  t          j        dt                                 d d d            d S # 1 swxY w Y   d S )Nra   rr   )r4   r   
ValueErrorr:   indicestupler'   r.   r+   test_indices_wrong_chunksr   !  s    	z	"	" ) )

4(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   #A

AAc                 X   d} t          j        d|           }|j        d| z   k    sJ t          j                            ddi          5  d}t          d|t          	          }t          j        |d          }|j        d
d          }||k    sJ 	 d d d            d S # 1 swxY w Y   d S )N))ra   r   rN   rM   rO   r   rr   )ra   ra   array.chunk-size50 MiB'  r   rS   r?   r    ra   )r:   r   r2   r6   r7   r8   r   re   )r2   rj   r?   expectedresultactuals         r+   test_indices_dimensions_chunksr   &  s   #F:hv...D;)f,,,,,	,h7	8	8 " "#F%sCCCE&111qrr"6!!!!!" " " " " " " " " " " " " " " " " "s   
ABB#&B#c                    t          j        t                      t                                } t          j        t                                }| j        |j        k    sJ | j        |j        k    sJ t          | |           t          j        t                      t          t                                } t          j        t                      t                    }| j        |j        k    sJ | j        |j        k    sJ t          | |           t          j        dt          d          } t          j        dt                    }| j        |j        k    sJ | j        |j        k    sJ t          | |           t          j        dt          d          } t          j        dt                    }| j        |j        k    sJ | j        |j        k    sJ t          | |           d S )Nrr   r   r   r   ra   rN   )ra   ra   rN   )r:   r   r   r;   r?   r    r   rc   r   s     r+   test_empty_indicesr   4  s   :eggegg...DJuwwE:$$$$:$$$$dE:egguUWW555DJuww&&E:$$$$:$$$$dE:dE$///DJtU##E:$$$$:$$$$dE:iy999DJy%((E:$$$$:$$$$dEr.   c                    t          j        dd          } t          j        d          }t          | |           t          j        dt          d          } t          j        dt                    }t          | |           t          j        dd          } t          j        d          }t          | |           t          j        dd          } t          j        d          }t          | |           d S )Nr   rr   rN   ra   rN   rM   ra   rN   )r:   r   r;   r   rc   r   s     r+   test_indicesr   N  s    :d4(((DJtEdE:dE$///DJtU##EdE:fV,,,DJvEdE:fV,,,DJvEdEr.   zshapes, chunksr'   r   rN   rM   r   )r   r   r   )r   r   r   )r   r   r   )r&   )r   r   r   r   r   r   r   indexingijxysparsec                   g }g }g }t          | |          D ]\  }}|                    t          j                            |                     t	          j        |d         |          }	|                    |	           |	                                }
|                    |
j        d                    t          t          t          |                              }|dk    rAt          |          dk    r.|d         |d         c|d<   |d<   |d         |d         c|d<   |d<   t          |          }t          j        |||d}t	          j        |||d}t          |t                    sJ t          |          t          |          k    sJ t          |||          D ]?\  }}}t          ||           |r|j        |         ||         k    sJ 2|j        |k    sJ @d S )Nry   rr   r   r   ra   )r   r   )zipappendr;   r<   r:   
from_arrayflattenr2   listrangelenr   meshgridr@   r   )shapesr2   r   r   xi_axi_dxi_dc
each_shape
each_chunkxi_d_exi_d_efdor_ar_de_r_ae_r_dis                    r+   test_meshgridr   `  s    DDE"%ff"5"5 ( (
JBI$$Z00111tBx
;;;F..""W^A&''''	eCJJ	 	 B4CJJNN!ube1r!u"1XuQxa%(%LLE
+thv
>
>
>C
+thv
>
>
>Cc4     s88s3xxsC,, ) )ua% 	)<?eAh.....<5((((() )r.   c                 (   g d} t          j        g d          }t          j        | |d          \  }}||z  }t          j        | |d          \  }}||z  }|j        t          |           t          |          fk    sJ t          ||           d S )N)ra   rN   rM   )r   r&   r[   rQ   r   )r   )r;   rg   r   r:   r?   r   r   )r(   brn   yzx_dy_dz_ds           r+   test_meshgrid_inputcoercionr     s    		A
A;q!d+++DAq	AA{1a$///HC
)C9QQ(((((ar.   zN, M, k, dtype, chunksrM   rS   r   ry   r[   r`   rM   r   )rM   rS   c           	     |    t          t          j        | ||||          t          j        | |||                     d S N)r   r:   trir;   )NMr)   r    r2   s        r+   test_trir     s<     bfQ1eV,,bfQ1e.D.DEEEEEr.   c                    t          t          j        dd          t          j        d                     t          t          j        d          t          j        d                     t          t          j        dd          t          j        d                     t          t          j        ddd          t          j        dd                     t          t          j        ddd          t          j        dd                     t          t          j        ddd          t          j        dd                     t          t          j        ddd          t          j        dd                     t          t          j        ddd	
          t          j        dd	                     t          t          j        ddd
          t          j        dd                     t          t          j        dddd          t          j        ddd                     t          t          j        dddd          t          j        ddd                     t          t          j        dddd          t          j        ddd                     t          t          j        dddd          t          j        ddd                     t          t          j        ddt                    t          j        dt                               t          t          j        ddt                    t          j        dt                               t          t          j        ddt                    t          j        dt                               t          t          j        ddd           t          j        dd                      t
          j                            ddi          5  t          j        dd          } d| j        cxk     rdk     sn J 	 d d d            d S # 1 swxY w Y   d S )Nrt   rM   rr   r   rT   )r2   r   )r   rQ   rN   )r2   r)   )r)   r   r&   )r2   r   r)   )r   r)   r[      rv   rw   rx   ry   r   r   r   rS   r       )	r   r:   eyer;   re   r6   r7   r8   npartitionsrn   s    r+   test_eyer     s   bfQq!!!26!99---bfQii###bfR"""BF2JJ///bfQqB'''R999bfRQ'''a999bfQqB'''R999bfRQ'''a999bfQqA&&&qA777bfQqB'''R999bfQqB!,,,bfQ".B.B.BCCCbfRQ"---rvbA/D/D/DEEEbfQqA+++RVAa-@-@-@AAAbfRQ"---rvbA/D/D/DEEEbfQq,,,bfQc.B.B.BCCCbfR---rvb/D/D/DEEEbfR#...r0E0E0EFFFbfQq---rvat/D/D/DEEE	,h7	8	8 & &F5&!!1=%%%%2%%%%%%%& & & & & & & & & & & & & & & & & &s   ,Q  QQr)   )r   rM   rv   r`   c                X   t          j        d                              d          }t          j        t
          d          5  t          j        ||            d d d            n# 1 swxY w Y   t          j        d                              d          }t          j        t
          d          5  t          j        ||            d d d            n# 1 swxY w Y   d}t          j        t          d          5  t          j        ||            d d d            d S # 1 swxY w Y   d S )N   )rN   rM   r   zArray must be 1d or 2d onlyr|   ra   z%v must be a dask array or numpy array)	r;   r   reshaper4   r   r   r:   diagr   )r)   vs     r+   test_diag_bad_inputr     s    		)$$Y//A	z)F	G	G	G  
1               		)$$Y//A	z)F	G	G	G  
1               	
A	y(O	P	P	P  
1                 s6   A%%A),A)2CCC<DD#&D#c                   t          j        d          }t          t          j        ||           t          j        ||                      t          j        dd          }t          j        ||           }t          j        ||           }t          ||           t          t          j        ||           j                  t          t          j        ||           j                  k    sJ ||z   dz   }t          j        ||           }t          j        ||           }t          ||           t          j        dd          }t          j        ||           }t          j        ||           }t          ||           t          t          j        ||           j                  t          t          j        ||           j                  k    sJ d S )NrT   rM   rr   )r;   r   r   r:   r   rf   r6   )r)   r   rj   rk   s       r+   test_diag_2d_array_creationr     sr    		"AbgammRWQ]]+++ 		"QA71a==DGAqMMEdE"'!Q--$%%10B)C)CCCCC	A	A71a==DGAqMMEdE
	"R   A71a==DGAqMMEdE"'!Q--$%%10B)C)CCCCCCCr.   c                   t          j        d                              d          }t          t	          j        ||           t          j        ||                      t	          j        |d          }t          t	          j        ||           t          j        ||                      t	          j        |d          }t          t	          j        ||           t          j        ||                      t          j        d                              d          }t          t	          j        ||           t          j        ||                      t	          j        |d          }t          t	          j        ||           t          j        ||                      t	          j        |d          }t          t	          j        ||           t          j        ||                      d S )	N@   r`   r`   r   rr   )rM   rN   rM   r   ra   rN   ra   (   )r&   r`   )rM   rN   r   )r;   r   r   r   r:   r   r   )r)   rn   dr   s       r+   test_diag_extractionr     sn    		"f%%AbgammRWQ]]+++
a'''AbgammRWQ]]+++
a 9:::AbgammRWQ]]+++ 		%  ((AbgammRWQ]]+++
a'''AbgammRWQ]]+++
a 6777AbgammRWQ]]+++++r.   c            	        t          j        d          } t          j        t                    5  t          j        |            d d d            n# 1 swxY w Y   t          j        d                              d          } t          j        t                    5  t          j        | dd           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          j        d	                              d
          } t          j	        | d          } t          t          j        |           t          j        |                      t          t          j        | d          t          j        | d                     t          t          j        | d          t          j        | d                     t          j        t                    5  t          j        | d           d d d            n# 1 swxY w Y   t          t          j        | d          t          j        | d                     t          t          j        | dd          t          j        | dd                     t          j        d                              d          } t          j	        | d          } t          t          j        |           t          j        |                      t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | d          t          j        | d                     t          t          j        | d          t          j        | d                     t          t          j        | ddd          t          j        | ddd                     t          j        d                              d          } t          t          j        | dd          t          j        | dd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          j	        | d          } t          t          j        | ddd          t          j        | ddd                     t          t          j        | ddd          t          j        | ddd                     t          j        d                              d          } t          t          j        | dd          t          j        | dd                     t          j	        | d          } t          t          j        | dd          t          j        | dd                     d S )NrT   r   rN   rN   r   )axis1axis2)r   )r   x   )r   r&   r[   rN   rr   r   )offsetir   ry   ra   )r   r   i  )rN   rM   r   r&   r[   )ra   r   )ra   rN   ra   )rN   ra   rN   )r&   ra   rM   )r   r   r   r   rv   i  )r`   r`   r[   )r   r   rN   )r;   r   r4   r   r   r:   diagonalr   r   r   r   )r   s    r+   test_diagonalr     s2   
	"A	z	"	"  
A               		!V$$A	z	"	" ) )
AQa(((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) 
y	!	! ! !
AR    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 
y	!	! ! !
AR    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 		)$$Y//A
a"""Abk!nnbk!nn---bk!B'''Qr)B)B)BCCCbk!C((("+a*D*D*DEEE	z	"	" ! !
AR    ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! bk!2&&&AR(@(@(@AAAbk!AR000"+aQS2T2T2TUUU 		#$$,,_==A
a IJJJAbk!nnbk!nn---
Aaq222
Aaq222  
 
Ab333
Ab333  
 
Ab333
Ab333  
 bk!QQ!2!2333bk!R  "+a"4"4555bk!Q1%%r{1aA'>'>???
	#$$,,_==Abk!1A...AQa0P0P0PQQQ
Aaq222
Aaq222  
 
Aaq222
Aaq222  
 
Ab333
Ab333  
 
Ab333
Ab333  
 
Ab!444
Ab!444  
 
Ab!444
Ab!444  
 	a"""A
Aaq222
Aaq222   
Ab333
Ab333  
 		#y))Abk!Ba000"+aRS2T2T2TUUU
a	***Abk!Ba000"+aRS2T2T2TUUUUUsY   AAAB>>CC"DD	D	)EEEI44I8;I8)Nf8r   zfunc, kwargsc                    | |z   S r   r'   )rn   r   s     r+   r,   r,   o  s
    a!e r.   c                    | ||z  z   S r   r'   rn   r   cs      r+   r,   r,   p      1q1u9 r.   c                    | ||z  z   S r   r'   r  s      r+   r,   r,   q  r  r.   r  c                    t          j        | fd|d|}t          j        | fdd|d|}t          ||           t          j        | fdd|d|}t	          ||          sJ d S )NrO   r   r   )r?   r2   r    )r;   fromfunctionr:   r   r	   )funcr    rV   r(   r   d2s         r+   test_fromfunctionr  k  s     	BF%BB6BBA
QF6QQ&QQAaOOO		RVF%	R	R6	R	RBQr.   c            	        t           j                            d          } t          j        | d          }g d}g d}|D ]A}|D ]<}t	          |                     ||          |                    ||                     =Bt	          |                    dd          t          j        |dd                     t          j        t                    5  t          j        |t          j	        d	                     d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |dd            d d d            n# 1 swxY w Y   t          j        t                    5  t          j        |d           d d d            n# 1 swxY w Y   d
D ]J}t          j        t                    5  t          j        |d|           d d d            n# 1 swxY w Y   Kt          j	        d          } t          j	        dd          }t	          |                     d          |                    d                     dD ]8}t          t          |                    |          j                            sJ 9d S )Nr   rT   r]   r   r&   rM   rr   )r   ra   rN   r&   )rv   r   ry   r   ra   rN   )axisrN   r   r   )rM   r   r&   r   rM   )ra   rN   rM   r   )r;   r<   r:   r   r   repeatr4   r   NotImplementedErrorr   r   allr   r2   )rn   r   repeatsaxesrr(   invalid_axiss          r+   test_repeatr    sS   
	&&A
a	***AllG   D @ @ 	@ 	@Aahhqqh))188AA8+>+>????	@ ahhq!nnbi1a00111	*	+	+ $ $
	!RYr]]###$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ 
*	+	+  
	!Q               
*	+	+  
	!Q                 / /]:&& 	/ 	/Ia....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 		!A
	!D!!!Aahhqkk188A;;''' / /6!((1++,--....../ /sH   (DDD+EEE2FFF<G  G$	'G$	reps)rN   r   r   r   )rN   rM   r   r   c                >   t          j        g d          }ddgddgg}t          t          j        |                                |           t          j        ||                      t          t          j        ||           t          j        ||                      d S )Nr   ra   rN   rM   r   )r:   asarrayr   r;   tilerC   )r  r(   r   s      r+   test_tile_basicr    s    

999A
Q!QAbgaiikk4(("'!T*:*:;;;bga4 0 011111r.   )r~   r   )r  r  )r   ra   rN   rM   r&   r   r   c                    t           j                            |           }t          j        ||          }t	          t          j        ||          t          j        ||                     d S Nrr   r;   r<   r:   r   r   r  r?   r2   r  rn   r   s        r+   test_tile_chunksr!    [     		A
a'''Abga4 0 011111r.   r   c                    t           j                            |           }t          j        ||          }t	          j        t                    5  t          j        ||           d d d            d S # 1 swxY w Y   d S r  )r;   r<   r:   r   r4   r   r   r  r   s        r+   test_tile_neg_repsr$    s     		A
a'''A	z	"	"  
4                 s   A22A69A6)r   r   rN   r   )r   rM   r   r   c                    t           j                            |           }t          j        ||          }t	          t          j        ||          t          j        ||                     d S r  r  r   s        r+   test_tile_zero_repsr'    r"  r.   )ra   ra   r   r(  )r%  )ra   r   )rM   rN   r&   c                    t          j        |           }t          j        ||          }t	          t          j        ||          t          j        ||                     d S r  )r;   r   r:   r   r   r  r   s        r+   test_tile_empty_arrayr*    sS     	A
a'''Abga4 0 011111r.   r?   )r   r   )rM   r   rM   r   )r   rM   rN   r   r   )r   r   r   r   )rN   rM   rN   r   c                    t           j                            |           }t          j        |          }t	          t          j        ||          t          j        ||                     d S r   )r;   r<   r:   r  r   r  )r?   r  rn   r   s       r+   !test_tile_np_kroncompare_examplesr,    sT    
 		A

1Abga4 0 011111r.   z&shape, chunks, pad_width, mode, kwargsr   rT   r   r&   constantconstant_valuesedgelinear_ramp
end_valuesreflect	symmetricwrapr   c                    t           j                            |           }t          j        ||          }t          j        |||fi |}t          j        |||fi |}||u sJ t          ||           d S r  r;   r<   r:   r   padr   	r?   r2   	pad_widthmoderV   np_ada_arI   rJ   s	            r+   test_pad_0_widthr?    s     9E""D=f---D6$	422622D6$	422622D4<<<<dDr.   r~   ry   r   ))ra   r   r   )r@  r   )r@  )r   rM   maximumstat_lengthmean)r   r   minimumc                4   t           j                            |           }t          j        ||          }t          j        |||fi |}t          j        |||fi |}|dk    r$t          |||          |||                     d S t          ||           d S )Nrr   r   r8  r:  s	            r+   test_padrF    s    D 9E""D=f---D6$	422622D6$	422622Dw$y)+,d9iZ3G.HIIIII$r.   r=  	pad_valueint64rx   float64)z
2000-01-01z
2000-01-02z
2000-01-03z
2000-01-04zdatetime64[ns]z
1972-01-01)TFTT)abbcdeef00c                    d}t          j        | d          }t          j        | |d|          }t          j        ||d|          }t	          ||           d S )Nr   r   rr   r/  )r<  r0  )r:   r   r;   r9  r   )r=  rG  r;  r>  rI   rJ   s         r+   test_pad_constant_valuesrP  "  sd    D I=d+++D6$	
INNND6$	
INNNDdDr.   
pad_widths)rN   r   r   )r   ))rM   ra   )r   r   r%  r<  zUBug when pad_width is larger than dimension: https://github.com/dask/dask/issues/5303medianzNot implementedz7Empty leads to undefined values, which may be differentc                &   t          j        d                              ddd                              |           }t	          j        |d          }t          j        |||          }t	          j        |||          }t          ||           d S )Nr   rN   rM   r   rS   rr   )r<  )r;   r   r   r>   r:   r   r9  r   )r    rQ  r<  r=  r>  rI   rJ   s          r+   test_pad_3d_datarT  M  s    X 9Y''1a0077>>D=f---D6$
...D6$
...DdDr.   rV   scalerc                      fd}d}d}d}t           j                            |          }t          j        ||          }t          j        |||fi  }t          j        |||fi  }t          ||           d S )Nc                    |k    sJ |                     dd          }| |d         z  | d |d         <   ||d         z  | |d          d <   | S )NrU  ra   r   )get)vectorr;  iaxisinner_kwargsrU  rV   s        r+   udf_padztest_pad_udf.<locals>.udf_pad  sh    %%%%!!(A.."(9Q<!7~1~"(9Q<"7	!}r.   r-  r.  )r   r   rr   r8  )	rV   r\  r?   r2   r;  r=  r>  rI   rJ   s	   `        r+   test_pad_udfr]    s         EF I9E""D=f---D6$	755f55D6$	755f55DdDr.   c                     t           j                            ddi          5  t          j        d          } d| j        cxk     rdk     sn J 	 d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   )r6   r7   r8   r:   r   r   r   s    r+   test_auto_chunksr_    s    	,h7	8	8 & &GN##1=%%%%2%%%%%%%& & & & & & & & & & & & & & & & & &s   +AA"Ac                     t          j        t                    5  t          j        ddd           d d d            d S # 1 swxY w Y   d S )Nr   
auto_chunkrS   rr   )r4   r   r   r:   r   r'   r.   r+   test_string_auto_chunkrb    s    	z	"	" = =
V<<<<= = = = = = = = = = = = = = = = = =s   ?AAc                 J   t          j        dd          } t          j        dd          }t          j        |          }t          j        d          }t	          ||           t	          ||z   d|z             || z   }t	          |t          j        dd                     d S )Nr   r   rr   )r`   rN   r   )r:   r   r   r;   r   r   )rn   ddr   r   As        r+   test_diagonal_zero_chunksrf    s    
v&&&A		'	'	'B
BAwt}}Haa!eQ\"""	AAa%%&&&&&r.   fnshape_chunks))2   r   )r   rN   ))ri  r~   u4c                J   t          t          |           }t          t          |           }|\  }}t          j                            ||          }||dk              }|                                }	|	|	dk              }
t           |||           ||
|                     d S N)sizer2   rz   rx   )r9   r:   r;   r<   standard_normalrC   r   )rg  rh  r    dafnnpfnr?   r2   x1y1x2y2s              r+   test_nan_zeros_ones_likeru    s     2r??D2r??D ME6		"	"f	"	=	=B	BHB	B	BHBRuRu    r.   c                n   | \  }}t           j                            ||          }||dk              }|                                }||dk              }t          j        ||                                          }t          j        ||          }	|j        |	j        k    sJ |j        |	j        k    sJ d S rl  )r:   r<   rn  rC   r   r;   r?   r    )
rh  r    r?   r2   rq  rr  rs  rt  r   r   s
             r+   test_nan_empty_likerw    s     !ME6		"	"f	"	=	=B	BHB	B	BHB=5)))1133D=5)))D:####:######r.   val)r   g        c   ry   c                   |\  }}t           j                            ||          }||dk              }|                                }||dk              }t	          t          j        || |          t          j        || |                     d S rl  )r:   r<   rn  rC   r   r   r;   )	rx  rh  r    r?   r2   rq  rr  rs  rt  s	            r+   test_nan_full_liker{    s     !ME6		"	"f	"	=	=B	BHB	B	BHB
RE***
RE***    r.   )Q
__future__r   r4   r5   r   r;   tlzr   r6   
dask.arrayrg   r:   dask.array.corer   dask.array.numpy_compatr   dask.array.utilsr   r	   markparametrizeparamgpur   r   r  rK   rX   ro   r   float32int32uint32uint64r   xfailr   r   r   r   r   r   r   r   rc   boolre   r   r   r   r   r   r   r  r  r  r!  r$  r'  r*  r,  r?  rF  r   rH  rI  
datetime64bool_str_rP  uint8int16skiprT  r]  r_  rb  rf  ru  rw  r{  r'   r.   r+   <module>r     sf   " " " " " "   G                      , , , , , , - - - - - - 1 1 1 1 1 1 1 1 lfl6999:  	 	 	  tRZ'@AAbj(ABB+=*>??$	!2333*--4&)).4 .4 *) .- 43 @? CB BA 	 ..4b 	r	b	r	|Q'(	  	 	 	  4&))  *)  . dE]337 7 437t-, -, -,` 	A

1zrz!}}d;	!hbhqkk828A;;5	1yry||YRYq\\48	1yry||YRYq\\48	1yry||YRYq\\29=	1yry||YRYq\\29= * + * 8    	   $) ) )
" " "  4  $ 
t
$
d|$			///0	!	!	!#;#;#;<
$&$(
 
 dD\22E4=11) ) 21 32
 
)<
 
 
 	
D!UF#	
D!UF#	
Aq$	
D!S&!	
D"c6"	
D!S!	
Ar3	
Aq#{#	 F F F& & &2 mmm,,  -," mmm,,D D -,D0 mmm,,, , -,,,dV dV dVN "4"4"455		R 	$	$	$b)	$	$	$sAh/    65 /  /  /F !J!J!JKK2 2 LK2 =:S*TUU!>!>!>??2 2 @? VU2 =:S*TUU"b**  +* VU =:S*TUU!@!@!@AA2 2 BA VU2 +ACS*TUU!Y002 2 10 VU2 GGG  !R!R!RSS2 2 TS 2 ,	61j+<a*@A	61fb)	61mlA->?	61i,	61k2.	61fb)	61gr* 	 	 	 ,	aR(	a&7%<=	a&7"%FG	v
->,IJ 23	
 
a$	a+	aq(9:-.	
 
6+Y;	6+["=	6+VR8	v	M6+BC	6+VmEU5VW	v	M6+BC	a"%9   B C   B [	1G	$	$	$hbhqkk2	1I	&	&	&

16BHHHH&   BM,''	
 
+++28	<	<	<hbhuooN	***"'	:	:	:GBGDMMJ	1G	$	$	$hbhq&@&@&@A	1I	&	&	&)(D(D(DEBHHHH&   BH\)9:::	
 BH...bh???BHU"(+++	

 BH---RW===BHT)))	
3   B C   B 28RXrz4"HIIHHH  
+""n #  	
 	
 	
 	+""n #  	
 	
 	
 	+""n #  	
 	
 	
 	+""*;"<<	
 	
 	
 	+""P #  	
 	
 	
;#& &N O& &  JIV B1#677  87*& & &= = =
	' 	' 	' k:;;*<n)MNN4T28"DEE  FE ON <; *<n)MNN4T28"DEE	$ 	$ FE ON	$  0 0 011*<n)MNN4T28"DEE	 	 FE ON 21	 	 	r.   