
    bi                    
   d dl mZ d dlZd dlmZ d dlZd dlmZ  ej                  d      Z	d dl
Z
d dlZd dlmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ  ej<                         r ej>                  d	d
       d Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/ej`                  jc                  d ej                  g        ej                  g g g       ej                  g gg gg      g      d        Z2d Z3d Z4d  Z5d! Z6d" Z7d# Z8d$ Z9d% Z:d& Z;d' Z<d( Z=d) Z>dvd+Z?d, Z@d- ZAd. ZBd/ ZCd0 ZDd1 ZEej`                  jc                  d2d3d4gd5d6gd5d7gg      d8        ZFd9 ZGd: ZHd; ZId< ZJd= ZKej`                  jc                  d> ej                  d?d@A      dBf ej                  d?d@A      d*dCif ej                  d?d@A      dDf ej                  dEdFA      dBf ej                  dEdFA      d*dCif ej                  dEdFA      dDf ej                  dGdGA      dBf ej                  dGdGA      d*dCif ej                  dGdGA      dDf ej                  dGdHA      dBf ej                  dGdHA      d*dCif ej                  dGdHA      dDfg      dI        ZMej`                  jc                  d> ej                  d?d@A      dBf ej                  d?d@A      d*dCif ej                  d?d@A      dDf ej                  dEdFA      dBf ej                  dEdFA      d*dCif ej                  dEdFA      dDf ej                  dGdGA      dBf ej                  dGdGA      d*dCif ej                  dGdGA      dDf ej                  dGdHA      dBf ej                  dGdHA      d*dCif ej                  dGdHA      dDfg      dJ        ZNej`                  jc                  dKe	j                  e	j                  fdLfe
j                  e
j                  fdLf ePdM       ePdM      fdLfg      dN        ZQej`                  jc                  dKdCdCe	j                  e	j                  fdLfdCdCe
j                  e
j                  fdLfdCdC ePdM       ePdM      fdLfg      dO        ZRdP ZSdQ ZTdR ZUdS ZVdT ZWdU ZXdV ZYdW ZZdX Z[ej`                  jc                  dYg dZ      d[        Z\ej`                  jc                  d\g d]      d^        Z]d_ Z^d` Z_ej`                  jc                  dadbdcg      dd        Z`de Zadf Zbdg Zcdh Zddi Zedj Zfdk Zgdl Zhdm Zidn Zjdo Zkdp Zldq Zmdr Znds Zodt Zpdu Zqy)w    )annotationsN)product)Tasknumpy)
_breakpoints_intersect_1dcumdims_labeldivide_to_widthintersect_chunksmerge_to_numbernormalize_chunks
old_to_newplan_rechunkrechunk)	assert_eq)funcnamez'parametrize using unsupported functionsT)allow_module_levelc            
        t        dd      } t        dd      }t        d t        ||       D              }d}|d   |k(  sJ d}|d	   |k(  sJ |D cg c]  }t        |       }}dt	        dd	      fgdt	        d	d
      fgdt	        d
d      fgg}|d   |k(  sJ dt	        dd	      fgd	t	        dd	      fd
t	        dd	      fdt	        dd	      fdt	        dd	      fdt	        dd	      fgdt	        d	d
      fgg}|d	   |k(  sJ t        dd      } t        d t        ||       D              }d}	|d	   |	k(  sJ |D cg c]  }t        |       }}dt	        dd	      fgd	t	        dd	      fd
t	        dd	      fdt	        dd	      fdt	        dd	      fdt	        dd	      fgdt	        d	d
      fgdt	        d
d
      fgg}
|d	   |
k(  sJ yc c}w c c}w )zXTest the cumdims_label and _breakpoints and
    _intersect_1d internal funcs to rechunk.)   r      )r      r   n)   )r   r   r   r   r   oc              3  :   K   | ]  \  }}t        ||        y wNr   .0r   r   s      X/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_rechunk.py	<genexpr>z+test_rechunk_internals_1.<locals>.<genexpr>'        @$!Q<1%@   )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   r-   r   )r   )r   r   r   r   c              3  :   K   | ]  \  }}t        ||        y wr   r   r    s      r"   r#   z+test_rechunk_internals_1.<locals>.<genexpr>H   r$   r%   )r&   r'   r*   r(   r+   r,   r)   r.   r/   r1   r1   N)r	   tuplezipr   slice)newoldbreaksansweranswer2bi1danswer3answer4answer5answer6s              r"   test_rechunk_internals_1rB   "   sM    .
4C
(#
.C@#c3-@@FIF!9G !9%+
,=
,C
,E!QK !Qa$4#5E!QK8H7IJGq6W
U1a[	aaaaa	
 U1a[	
G q6W
13
7C@#c3-@@FG !9%+
,=
,C
,
U1a[	aaaaa	
 U1a[	
U1a[	G q6W[ -@ -s   G
=Gc                     d} d}dt        dd      ffdt        dd      ffdt        dd      fffdt        dd      fffdt        dd      ffd	t        dd      fffg}t        t        | |
            }||k(  sJ y)Convert 1 D chunks)
   rF   rF   rF   rF   )   r      r   rF   r   r   r   r-   r   
old_chunks
new_chunksNr6   listr   r8   r7   r:   crosss       r"   test_intersect_1rQ   g   s    
!C
CeArl
	E!RL 13q%1+6F5HIeArl
	eArl
	E!RL 134F
 !SSABEU??    c                 2   d} d}dt        dd      ffdt        dd      ffdt        dd      fffdt        dd      ffdt        dd      fffdt        dd      ffd	t        dd      fffd	t        dd      fffg}t        t        | |
            }||k(  sJ y)rD   ))rI   rI   rI   rI   rI   )):   r   rI      r   rI   r   r   rU   r-   r   rJ   NrM   rO   s       r"   test_intersect_2rV   t   s    
!C
CeArl
	E!RL 13q%2,6G5IJeBm
	!U1a[!1 34eArl
	E!QK 023eArl
		F !SSABEU??rR   c                     t         j                  j                         j                  ddd      } t	        j
                  | d      }d}t        ||      }|j                  |k(  sJ t         j                  |j                         | k(        sJ y)z!Try rechunking a random 1d matrixr   r      ))rF   rF   rF   chunks)r   r   r   r   r   r   N)
nprandomdefault_rnguniformda
from_arrayr   rZ   allcomputeaxr7   x2s       r"   test_rechunk_1drh      ss    
		''1b1A
a-A
C	3	B9966"**,!#$$$rR   c                 >   t         j                  j                         j                  ddd      j	                  d      } t        j                  | d      }d}t        ||      }|j                  |k(  sJ t         j                  |j                         | k(        sJ y)	z!Try rechunking a random 2d matrixr   r   i,  )rF   rX   ))r   r   r-   r   r[   rY   )r   r   )   rk   Nr\   r]   r^   r_   reshaper`   ra   r   rZ   rb   rc   rd   s       r"   test_rechunk_2drn      s    
		''1c2::8DA
a 89A
C	3	B9966"**,!#$$$rR   c                 B   d} t         j                  j                         j                  ddd      j	                  d      }t        j                  ||       }d}t        ||      }|j                  |k(  sJ t         j                  |j                         |k(        sJ y)	z!Try rechunking a random 4d matrix)rj   rj   rj   rj   r   r   '  rF   rF   rF   rF   rY   )rF   rr   rr   rr   Nrl   )r8   re   rf   r7   rg   s        r"   test_rechunk_4drs      s    
C
		''1e4<<YGA
a$A
C	3	B9966"**,!#$$$rR   c                 "   t         j                  j                         j                  ddd      j	                  d      } t        j                  | d      }|j                  d      }t         j                  |j                         | k(        sJ y )Nr   r   d   rF   rF   rj   rY   )r-   r-   r-   r   rw   )
r\   r]   r^   r_   rm   r`   ra   r   rb   rc   re   rf   ys      r"   test_rechunk_expandrz      sl    
		''1c2::8DA
a'A			5	6A66!))+"###rR   c                 h   d\  } }t         j                  j                         j                  dd| |z        j	                  | f|z        }t        t        d| dz
        t        d| dz
              D ]  \  }}| |z
  |ff|z  }t        j                  ||      }| |z
  |ff|z  }t         j                  |j                  |      j                         |k(        sJ | |z
  |z
  dkD  sw|| |z
  |z
  |ff|z  }|j                  |      j                         }t         j                  ||k(        rJ  y )Nr-   r   r   r   rY   )r\   r]   r^   r_   rm   r   ranger`   ra   rb   r   rc   )	re   r<   origoffoff2r8   rf   r7   ry   s	            r"   test_rechunk_expand2r      s0   FQ99  "**1aA6>>taxHDU1a!e_eAq1uo> %	TC~!#MM$s+D$!A%vvaiisi+335=>>>s7T>ATC.014C			%--/A66!t)$$$%rR   c                 L   d} d}t         j                  j                         j                  ddd      j	                  d      }t        j                  ||       }|j                  |      }|j                  |k(  sJ t         j                  |j                         |k(        sJ y)	z6Test rechunking can be done as a method of dask array.)r   r   r-   r   r   r   )rw   rw   rw   rw   r   r   rp   rq   rY   Nrl   )r8   r7   re   rf   rg   s        r"   test_rechunk_methodr      s    
C
C
		''1e4<<YGA
a$A	
#	B9966"**,!#$$$rR   c                 `   d\  } }t        ||       }d}t        j                  j                         j	                  ddd      j                  d      }t        j                  ||      }t        ||      }|j                  |k(  sJ t        j                  |j                         |k(        sJ y)	z!Test that blockshape can be used.)rv   r   r-   ))r   r   r   rw   r   r   ru   rv   rY   N)r   r\   r]   r^   r_   rm   r`   ra   r   rZ   rb   rc   )	new_shaperL   new_blockdimsrK   re   rf   check1s          r"   test_rechunk_blockshaper      s    ,Iz$Z;M*J
		''1c2::8DA
a
+AQz*F==M)))66&.."a'(((rR   c                     t        j                  dd      } | j                  d      j                  | j                  k(  sJ y )Nr   r   rY   r   )r`   onesr   dtyperf   s    r"   
test_dtyper      s5    
$A99D9!''177222rR   c                    t        j                  dd      } | j                  ddi      }|j                  dk(  sJ t        j                  dd      } | j                  ddi      }|j                  dk(  sJ t        j                  dd      } | j                  ddi      }|j                  d	k(  sJ t        j                  dd      } | j                  d d
d      }|j                  dk(  sJ y )N   r   r      rY   r      )r   r   r   r   r   r   r   r   autor   r   ))r   r   r   r   r   r   r   r`   r   r   rZ   rf   ry   s     r"   test_rechunk_with_dictr      s    
(A			!R	!A88,,,,
(A			!X	'A88,,,,
(A			!R	!A88))))
(A			Tf-	.A882222rR   c                      t        j                  dd        j                  i       j                   j                  k(  sJ t	        j
                  t         fd       y )Nr   r   rY   c                 (     j                  d      S )N rY   )r   r   s   r"   <lambda>z/test_rechunk_with_empty_input.<locals>.<lambda>   s    aiiri&: rR   )r`   r   r   rZ   pytestraises
ValueErrorr   s   @r"   test_rechunk_with_empty_inputr      sE    
(A99B9&&!((222
MM*:;rR   c                 ^   t        j                  t        j                  d      d      } | j	                  d      j
                  t        j                  dd      j
                  k(  sJ | j	                  d dd      j
                  t        j                  dd      j
                  k(  sJ y )Nr   r   rY   Nr   r   r   r   r   )r`   ra   r\   r   r   rZ   r   s    r"   !test_rechunk_with_null_dimensionsr      s    
bggh'7A99I9&--&1Q1X1XXXX			Ta	)00778F+22	3	3rR   c                     t        j                  t        j                  d      d      } | j	                  d      }|j
                  dk(  sJ | j                         |j                         k(  j                         sJ y )Nr   r   rY   r-   )r|   )r`   ra   r\   aranger   rZ   rc   rb   r   s     r"   test_rechunk_with_integerr      s\    
biil1-A			!A88y   IIK199;&++---rR   c                     t         j                  d      } t        j                  | d      }|j	                  d      }|j
                  dk(  sJ |j                         | k(  sJ y )N*   r   rY   )r\   arrayr`   ra   r   rZ   rc   rx   s      r"   test_rechunk_0dr      sP    
A
a#A			"A88r>>99;!rR   arrc                F    | j                          | j                  dk(  sJ y )Nr   )r   size)r   s    r"   test_rechunk_empty_arrayr     s     KKM88q==rR   c                     t        j                  dd      } | j                  d      }|j                  dk(  sJ t	        | |       y )N)r   rF   rj   rY   r   r   )r   )r   r   r   r   r   r`   r   r   rZ   r   r   s     r"   test_rechunk_emptyr   
  s<    
'A			&A88''''aOrR   c                     t        j                  dd      } | j                  ddi      }|j                  dk(  sJ t	        | |       y )Nr   r   r-   rY   r   r   )r   r   r`   zerosr   rZ   r   r   s     r"   test_rechunk_zero_dim_arrayr     s?    
"A			1a&A88|###aOrR   c                     t        j                  dd      } | j                  ddd      }|j                  dk(  sJ t	        | |       y )N)r   r   r0   rF   r-   rY   r   r   )r   r   )r   r   r   r   r   rw   r   r   s     r"   test_rechunk_zero_dim_array_IIr     s@    
q)A			aA,A88<<<<aOrR   c                    t        j                  dd      } | j                  | j                        }t        j                         r8| j                         j                  |j                         j                  k(  sJ y | |u sJ y )Nr   r   rY   )r`   r   r   rZ   _array_expr_enabledoptimize_namer   s     r"   test_rechunk_samer     sa    
(A			!((A	zz|!!QZZ\%7%7777AvvrR   c                    t        j                  d       t        j                  d      } t        j                  dd      }| j	                  |      j
                  }t        j                  t        j                  fdf}|j                  |k(  sJ |j                  |      }t        j                         r8|j                         j                  |j                         j                  k(  sJ y ||u sJ y )Npandasdask.dataframerv   r   rF   shaperZ   rr   )r   importorskipr`   r   ra   valuesr\   nanrZ   r   r   r   r   ddrf   ry   rL   results        r"   test_rechunk_same_fully_unknownr   (  s    
!			-	.B
hw/A
aA66266"E*J88z!!!YYz"F	 &&!**,*<*<<<<{{rR   c                    t        j                  d       t        j                  d      } t        j                  dd      }| j	                  |      j
                  }t        d      t        d      fdf}|j                  |      }t        j                         r8|j                         j                  |j                         j                  k(  sJ y||u sJ y)	zSimilar to test_rechunk_same_fully_unknown but testing the behavior if
    ``float("nan")`` is used instead of the recommended ``np.nan``
    r   r   rv   r   r   r   rr   N)r   r   r`   r   ra   r   floatr   r   r   r   r   s        r"   &test_rechunk_same_fully_unknown_floatsr   6  s     !			-	.B
hw/A
aA<u.6JYYz"F	 &&!**,*<*<<<<{{rR   c                    t        j                  d       t        j                  d      } t        j                  dd      }| j	                  |      j
                  }t        j                  ||g      }ddt        j                  t        j                  fdf}|j                  |k(  sJ |j                  |      }t        j                         r8|j                         j                  |j                         j                  k(  sJ y ||u sJ y )Nr   r   rv   r   r   r   rr   )r   r   r`   r   ra   r   concatenater\   r   rZ   r   r   r   r   )r   rf   ry   zrL   r   s         r"   #test_rechunk_same_partially_unknownr   F  s    
!			-	.B
hw/A
aA
1vAa(%0J88z!!!YYz"F	 &&!**,*<*<<<<{{rR   c                     t        j                  dd      } t        j                  dd      }|j                  d      }| j                  |j                  k(  sJ y )Nr   )r   )r   r   rY   )r   r   r   r   s     r"   #test_rechunk_with_zero_placeholdersr   U  sI    
!45A
!56A			%&A88qxxrR   c                     t        j                  dd      } | j                  d      }|j                  dk(  sJ t	        | |       y )Nr   r   rY   )r   r   r   r   r   s     r"   test_rechunk_minus_oner   \  s<    
(A			'A88))))aOrR   c                     t         j                  j                         j                  dddd      } | j	                  d      }t        |j                        dkD  sJ y )NrF   g?rv   )rF   r   rY   )r   rF   rX   )r`   r]   r^   normalr   lendaskr   s     r"   test_rechunk_intermediatesr   c  sL    
		&&r3&IA			'Aqvv;rR   c                 P    t        dd      } | dk(  sJ t        dd      } | dk(  sJ y )N)r   	   rF   rF   )r   r   r   rF      r   r   )r   r   r   r-   r-   r-   r-   r-   r   r-   r   r   r   r   r   )r
   rY   s    r"   test_divide_to_widthr   i  s8    Z,FZ2A6FBBBBrR   c                    t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | d	k(  sJ t        d
d      } | dk(  sJ t        d
d      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ t        dd      } | dk(  sJ y )Nrq   r   r   r-   )rI   rF   rF   r   rI   rI   r   )(   
rF   rF   rF   rF   rF   rF   rF   rF   rF   rF   )2   r   )r   rX   rX   )r   r   r   rk   rF   )r   r   rk   rF   )r2   rk   rF   )   rF   )    )r   r   r   r   r-   r   r   r0   )r   r   r   r-   r   r   )r   r   r-   r   r   )r   r   r-   r   )r   r-   r   )r   r   )r   )r   rY   s    r"   test_merge_to_numberr   q  s   Y*F%%%%Y*F%%%%Y*F\!!!Y*FXY*FU??Z+FYZ+F\!!!.2F^###.2F[   .2FX.2FU??2A6F''''2A6F_$$$2A6F\!!!2A6FY2A6FV2A6FT>>rR   r   c                "    t        | ||||      S )N)itemsizeblock_size_limit	threshold)r   )rK   rL   r   r   r   s        r"   _planr     s    ) rR   c                D    t        |       t        |      k(  sJ | |k(  sJ y r   )r   )stepsexpecteds     r"   _assert_stepsr     s&    u:X&&&HrR   c                    d} d}t         j                  fdz  }t         j                  fdz  }t        dd      }t        |dg       t        | df|df      }t        ||dfg       t        | f|f      }t        ||fg       t        |f| f      }t        || fg       t        | | f||f      }t        |||fg       t        ||f| | f      }t        || | fg       t        || f| | f      }t        || | fg       t        | | | | f| || | f      }t        || || | fg       t        || f| |f      }t        || | f| |fg       t        | | z   | |z   f||z   | | z   f      }t        || | z   | | z   f||z   | | z   fg       t        ||z   | | z   | |z   f||z   ||z   | | z   f      }t        ||       t        | | f||fd      }t        |||fg       t        || f| |fd	      }t        || | f| |fg       d
}t        || f| |fd	      }t        ||| f| |fg       t        || f| |fdd      }t        ||       d} ddz  }t        || f| |fd	      }t	        |      dk(  sJ |d   | |fk(  sJ t        t	        |      dz
        D ]S  }||   }||dz      }	t	        |	d         t	        |d         dz  k  sJ t	        |	d         t	        |d         dz  k\  rSJ  y )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rI   r   r   )r   i  r   rq   i  i  rF   )r   r   )  r   r   r   i r-   r   r   g       @)r\   r   r   r   r   r}   )
cfncnfr   msteps2iprevsuccs
             r"   test_plan_rechunkr	    sh   AA
&&QB
&&RB "bME%"1b'Ar7#E%1b'# 1$E%1$ 1$E%1$ 1a&1a&!E%1a&"1a&1a&!E%1a&"1a&1a&!E%1a&"1aA,Aq!-E%1aA,( 1a&1a&!E%1a&1a&)*1q5!a%.1q5!a%.1E%1q5!a%.1q5!a%.9: 27AE1q5)BGQUAE+BCE% 1a&1a&A.E%1a&" 1a&1a&37E%1a&1a&)* 	A1a&1a&37E%1a&1a&)*Aq6Aq6D2FF&%  	AtA1a&1a&59Eu:??9A3u:>" 2QxQU|47|s47|c111147|s47|c11112rR   c            	        d} d}t        | | | | | f|||||f      }t        ||||||fg       t        ||||| f| | | ||f      }t        || | | || f| | | ||fg       t        | | ||| f| | | ||fd      }t        || | | || f| | | ||fg       y )Nrr   
r   r   r   r   r   r   r   r   r   r   g     @r   r   r   )r   r  r   s      r"   test_plan_rechunk_5dr    s    AA1aAq/Aq!Q?3E%1aAq/*+1aAq/Aq!Q?3E%1aAq/Aq!Q?;<1aAq/Aq!Q?SIE%1aAq/Aq!Q?;<rR   c                    d} d}| |z   }| | z   }||z   }|| z   }t        ||f||f      }t        |||fg       t        ||f||f      }t        |||fg       t        ||f||f      }t        |||f||fg       t        |||f|||f      }t        ||||f|||fg       t        |||f|||fd      }t        ||||f|||fg       y )Nrr   r  ru   r   r  )r   r  cfccfffcr   s          r"   test_plan_rechunk_heterogeneousr    s   AA	
QB	
QB	
QB	
QB 2r(RH%E%2r($2r(RH%E%2r($ 2r(RH%E%2r(RH-.2r2,R-E%2r2,R56 2r2,RsCE%2r2,R56rR   c                    ddz  df} dddz  f}t        | |d      }t        |      dkD  sJ t        j                  d	d
      }|j	                  d|j
                  d   dz  f      }t        |j                        dk  sJ y )Nr   r   ) r   )i8 r   )r   r   )r   r  )r   r  rY   i )r   r   r`   r   r   r   r   )re   r<   r   rf   ry   s        r"   test_plan_rechunk_asymmetricr    s    	k"A	(T/"AA*Eu:>>
 7A			4t+,-Aqvv;rR   c                     d} t         j                  j                         j                  | | dfd| df      }t	        j
                  d      5 }|j                  | ddf      }d d d        rJ y # 1 sw Y   xY w)NrI   ru   r   )r   rZ   T)record)r`   r]   r^   r   warningscatch_warningsr   )Nrf   ws      r"   test_rechunk_warningr  $  sy    
A
		&&Q3KAs&LA		 	 	- #IIq!Sk"# L5q# #s   A00A9zshape,chunksr   r   r   r   )r   r   c                    t        j                  | |       }|j                  |      }t        |j                        }t        d |j                         D              rJ y )NrY   c              3     K   | ]8  }t        |t              r&t        |j                        j	                  d        : yw)concatN)
isinstancer   r   func
startswith)r!   tasks     r"   r#   z6test_dont_concatenate_single_chunks.<locals>.<genexpr>4  s6      dD! 	&&x0s   >A )r`   r   r   dictr   anyr   )r   rZ   rf   ry   dsks        r"   #test_dont_concatenate_single_chunksr)  -  sY     	e$A			&A
qvv,C JJL    rR   c            
        t         j                  t         j                  fdf} t         j                  t         j                  fdf}t        t        | |            }dt	        dd d       fdt	        ddd       fffdt	        dd d       fdt	        ddd       fffdt	        dd d       fdt	        ddd       fffdt	        dd d       fdt	        ddd       fffg}||k(  sJ y )Nr   r   r   r   r   r   r\   r   rN   r   r6   rK   rL   r   r   s       r"   test_intersect_nanr.  ;  s    66266"D)J66266"F+J":z:;FeAtT"
#aq!T):%;	<>eAtT"
#aq!T):%;	<>eAtT"
#aq!T):%;	<>eAtT"
#aq!T):%;	<>	H XrR   c                    t         j                  fdf} t         j                  fdf}t        t        | |            }dt	        dd d       fdt	        ddd       fffdt	        dd d       fdt	        ddd       fffg}||k(  sJ y Nrr   rj   r   r   rF   r,  r-  s       r"   test_intersect_nan_singler1  I  s    66)U#J66)V$J":z:;FeAtT"
#aq!T):%;	<>eAtT"
#aq"d);%<	=?H XrR   c                    t        t        j                  gdz        df} t        t        j                  gdz        df}t        t	        | |            }dt        dd d       fdt        ddd       fffdt        dd d       fdt        ddd       fffdt        dd d       fdt        ddd       fffdt        dd d       fdt        ddd       fffdt        dd d       fdt        ddd       fffdt        dd d       fdt        ddd       fffd	t        dd d       fdt        ddd       fffd	t        dd d       fdt        ddd       fffg}||k(  sJ y )
Nr   rr   rj   r   r   rF   r   r   r-   )r4   r\   r   rN   r   r6   r-  s       r"   test_intersect_nan_longr3  U  s   1%u-J1%v.J":z:;FeAtT"
#aq!T):%;	<>eAtT"
#aq"d);%<	=?eAtT"
#aq!T):%;	<>eAtT"
#aq"d);%<	=?eAtT"
#aq!T):%;	<>eAtT"
#aq"d);%<	=?eAtT"
#aq!T):%;	<>eAtT"
#aq"d);%<	=?	H XrR   c                 ~   t        j                  d      } t        j                  d      }t        j                  j	                         j                  d      }|j                  | j                  |      d      j                  }|j                  d      }t        j                  |j                  d         j                         sJ t        j                  |j                  d         j                         sJ |j                  d   dk(  sJ t        j                  |d	
      j                  d      }t        ||       y )Nr   r   r   rF   r   Nrj   r   r   rj   ))rH   rH   rr   rY   )r   r   r\   r]   r^   standard_normalfrom_pandas	DataFramer   r   isnanrZ   rb   r`   ra   r   )pdr   r   rf   r   r   s         r"    test_rechunk_unknown_from_pandasr<  f  s    			X	&B			-	.B
))


!
1
1(
;C
r||C(!,33AYY~&F88AHHQK $$&&&88FMM!$%))+++==v%%%}}S):;CCNSHfhrR   c                    t        j                  d       t        j                  d      } | j                  t        j                  dd            j
                  }|j                  d      }t        j                  |j                  d         j                         sJ t        j                  |j                  d         j                         sJ |j                  d   d	k(  sJ t        ||       y )
Nr   r   r   r   r   r   r   r   r   )r   r   ra   r`   r   r   r   r\   r:  rZ   rb   r   )r   rf   r   s      r"   test_rechunk_unknown_from_arrayr>  t  s    
!			-	.B
bggF6:;BBAYYy!F88AHHQK $$&&&88FMM!$%))+++88A;$arR   z	x, chunksr5  )rH   rF   r   )Nr   r   r6  )r   rF   r   rv   )rF   r   c                *   t        j                  d       t        j                  d      }|j                  |       j                  }|j	                  |      }| j	                  |      }t        |j                  |j                         t        ||       y Nr   r   )r   r   ra   r   r   assert_chunks_matchrZ   r   )rf   rZ   r   ry   r   r   s         r"   )test_rechunk_with_fully_unknown_dimensionrB    so    $ !			-	.B
aAYYvFyy Hx7fhrR   c                   t        j                  d       t        j                  d      }|j                  |       j                  }t	        j
                  | |g      }t	        j
                  | | g      }|j                  |      }|j                  |      }t        |j                  |j                         t        ||       y r@  )
r   r   ra   r   r`   r   r   rA  rZ   r   )rf   rZ   r   ry   r   xxr   r   s           r"   -test_rechunk_with_partially_unknown_dimensionrE    s    $ !			-	.B
aA
1vA	A	BYYvFzz&!Hx7fhrR   rL   rj   r   c                X   t        j                  d       t        j                  d      }t        j                  dd      }|j	                  |      j
                  }|j                  |       }|j                  d      }t        |j                  |j                         t        ||       y Nr   r   rv   )r   r   r   r6  )
r   r   r`   r   ra   r   r   rA  rZ   r   )rL   r   rf   ry   r   r   s         r"   2test_rechunk_with_fully_unknown_dimension_explicitrH    s     !			-	.B
hv.A
aAYYz"Fyy(Hx7fhrR   c                   t        j                  d       t        j                  d      }t        j                  dd      }|j	                  |      j
                  }t        j                  ||g      }t        j                  ||g      }|j                  |       }|j                  d      }t        |j                  |j                         t        ||       y rG  )r   r   r`   r   ra   r   r   r   rA  rZ   r   )rL   r   rf   ry   r   rD  r   r   s           r"   6test_rechunk_with_partially_unknown_dimension_explicitrJ    s     !			-	.B
hv.A
aA
1vA	A	BYYz"Fzz.)Hx7fhrR   c                h    t        | |      D ]#  \  }}t        d t        ||      D              r#J  y )Nc              3  Z   K   | ]#  \  }}t         j                  |      xs ||k(   % y wr   )r\   r:  )r!   lrs      r"   r#   z&assert_chunks_match.<locals>.<genexpr>  s(     ETQ288A;(!q&(Es   )+)r5   rb   )leftrightldimrdims       r"   rA  rA    s8    $& F
dESt_EEEEFrR   c                    t        j                  d       t        j                  d      } t        j                  dd      }| j	                  |      j
                  }t        j                  t        d      5  |j                  d       d d d        t        j                  t        d	      5  |j                  t        j                  t        j                  t        j                  fdf       d d d        t        j                  t        d	      5  |j                  d
       d d d        t        j                  t        d	      5  t        j                  ||g      }|j                  dddt        j                  t        j                  fdf       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   rv   rj   r   zChunks do not addmatch)N)r   r   r   zChunks must be unchanging)rj   rj   r   r-   r   )r   r   r`   r   ra   r   r   r   r   r\   r   r   )r   rf   ry   r   s       r"   test_rechunk_unknown_raisesrV    sT   
!			-	.B
hv.A
aA	z)<	= %			#$% 
z)D	E 6			BFFBFFBFF+V456 
z)D	E $			"#$ 
z)D	E 7NNAq6"			Aq!RVVRVV,f567 7% %6 6$ $7 7s2   8F-AF(F4AG F%(F14F= G	c                 2   t         j                  t         j                  fdf} t         j                  t         j                  fdf}t        | |      }dt        dd d       fgdt        dd d       fggdt        ddd       fgdt        ddd       fggg}||k(  sJ y )Nr+  r   r   r   r   r   r\   r   r   r6   r8   r7   r   r   s       r"   test_old_to_new_singlerZ    s    FFBFFT
"CFFBFFV
$CS!F eAtT"
#	$5D$+?'@&ABeAq$
 	!QaD(9$:#;<H
 XrR   c                     t         j                  fdf} t         j                  fdf}t        | |      }dt        dd d       fggdt        ddd       fgdt        ddd       fggg}||k(  sJ y r0  rX  rY  s       r"   test_old_to_newr\    s    FF9e
CFF9f
CS!FeAtT"
#	$%eAq$
 	!QaT(:$;#<=H
 XrR   c            	     b   t        t        j                  gdz        df} t        t        j                  gdz        df}t        | |      }dt	        dd d       fgdt	        dd d       fgdt	        dd d       fgdt	        dd d       fggdt	        ddd       fgdt	        dd	d       fggg}||k(  sJ y )
Nr   rr   rj   r   r   r   r-   r   rF   )r4   r\   r   r   r6   rY  s       r"   test_old_to_new_larger^    s    "&&A
&C"&&A
'CS!F q$%&'q$%&'q$%&'q$%&'		
 eAq$
 	!QaT(:$;#<=H XrR   c            	         d} d}t        | |      }dt        ddd       fdt        ddd       fdt        ddd       fgdt        ddd       fgdt        ddd       fd	t        ddd       fggg}||k(  sJ y )
NrE   rG   r   rF   r   r   r   r-   r   )r   r6   rY  s       r"   test_old_to_new_knownr`  $  s    
!C
CS!F q"d#$q%2t*<&=5AtCT?UVq"d#$%q"d#$q%2t*<&=>	
H XrR   c                     t        j                  d      }  | j                  dd      j                  d      }t	        |j                               dk(  sJ y )Nz
dask.array)r   rF   ru   )r   rF   rF   rY   )r   rF   r   r   )r   r   r   r   r   rc   )r`   rf   s     r"   test_rechunk_zero_dimrb  2  sH    			\	*B[199+FAqyy{q   rR   c                 l    t        j                  dd      } | j                  d      }t        | |       y )N)r2   r   ))r2   )rF   r   r   r   r   r   rY   )r   r-   )r`   r   r   r   r   s     r"   test_rechunk_empty_chunksrd  9  s*    
!<=A			&AaOrR   c                     t        j                  dd      } | j                  d      }|j                         }t	        |      dk  sJ y )N   r   rY   r   rF   )r`   r   r   __dask_graph__r   )rf   ry   r(  s      r"   $test_rechunk_avoid_needless_chunkingrh  ?  s?    
1A			!A



Cs8urR   zshape,chunks,bs,expected))ru   r   rF   r   )ru   r   rF   r   )ru   ru   rF   r   )rI   r2   rF   )r2   r2   r0   )rI   )r   r   r   r   r0   r   r   r2   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   rF   )rF   rF   r   )rX   )
r-   r-   r-   r-   r-   r-   r-   r-   r-   r-   r2   )r0   r0   r0   r0   r0   )rI   )r   r   r   r   r   r   r   r   r   r   r   r   r   )rI   rv   r   rk  )rj  )rF   r   r   )r   r   r   r   r   r   )rI   )r   rU   r   r   ri  )&   )rF   rU   rF   r   )r   r   r   r   r   r   r   r-   c                    t        j                  | |f      }|j                  ddi||j                  j                  z        }|j
                  |fk(  sJ y )NrY   r   r   r   r`   r   r   r   r   rZ   )r   rZ   bsr   rf   ry   s         r"   test_rechunk_auto_1drp  F  sO    . 	vi(A			1f+QWW5E5E0E	FA88{"""rR   zprevious_chunks,bs,expected)))r   r   r   )rF   rF   rF   rF   rF   rF   rF   rF      ))r-   )r   rX   ))r   rI   r   )r   r   r   r   ri  ))r   r   rs  r   )ru  ri  c                    t        t        t        |             }t        ddd||t        j
                  |       }||k(  sJ y )Nr   r   )limitr   previous_chunks)r4   mapsumr   r\   int8)rx  ro  r   r   r   s        r"   test_normalize_chunks_auto_2dr|  b  sG     #c?+,Evgg'F XrR   c                 2   t        j                  dd      } | j                  dddd| j                  j                  z        }|j
                  d	k(  sJ t        j                  dd      } | j                  d
d| j                  j                  z        }|j
                  dk(  sJ t        j                  dd      } | j                  ddid| j                  j                  z        }|j
                  d   | j
                  d   k(  sJ |j
                  d   dk(  sJ t        j                  dd      } | j                  ddid| j                  j                  z        }|j
                  d   | j
                  d   k(  sJ |j
                  d   dk(  sJ y )Nr   r   rY   r   r   r   rI   r   )rs  )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   P   )rs  rk  r   r   rv   ))
r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   rk  rn  r   s     r"   test_rechunk_auto_2dr  v  sb   
(A			bV$rAGG<L<L7L	MA88))))
(A			,agg6F6F1F	GA88((((
&*A			1f+QWW5E5E0E	FA88A;!((1+%%%88A;("""
!CDA			1f+QWW5E5E0E	FA88A;!((1+%%%88A;/)))rR   c                    t        j                  dd      } | j                  dddd| j                  j                  z        }|j
                  d   | j
                  d   k(  sJ |j
                  d	   d
k(  sJ |j
                  d   d
k(  sJ y )N)rI   rI   rI   r   rY   r   r      r   r   r   rv   r   rn  r   s     r"   test_rechunk_auto_3dr    s    
i1A			f(3AQAQ;Q	RA88A;!((1+%%%88A;("""88A;("""rR   r   ru   r   c                   t         j                  j                  ddi      5  t        j                  | ddfdd      }|j                  d      }|j                  d| d	z  z  d
d
fk(  sJ |j                  d      j                  |j                  k(  sJ 	 d d d        t         j                  j                  ddi      5  j                  d      }| dk(  r|j                  dk(  sJ |j                  dk(  sJ d d d        t         j                  j                  ddi      5  t        j                  | ddfdd      }|j                  d      }|j                  d| z  ddfk(  sJ 	 d d d        t         j                  j                  ddi      5  t        j                  | ddfdd      }|j                  d      }|j                  d| z  ddfk(  sJ 	 d d d        y # 1 sw Y   IxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Narray.chunk-size10MiBr   r   r   r   uint8rZ   r   r   rr   rF   r  7MiBru   ))r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r   r  r  ))r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r2   r0   r  r  1MiBfloat64r   )j  r  i  i  )r  r  r  r  r     r   configsetr`   r   r   rZ   )r   rf   ry   r   s       r"   test_rechunk_auto_image_stackr    s   	,g6	7 4GGQdOO7KIIfxxEQ"W-w@@@@yy ''188333	4 
,f5	6 EIIf888CCCC88DDDDE 
,f5	6 HGGQdOO9MIIfxxD1HoGGGGH
 
,f5	6 
GGQdOO9MIIfxx1H**
 
 	
 

 
%4 4E EH H

 
s2   A1G=9G(AG4AH G%(G14G= H	c                    t         j                  j                  ddi      5  t        j                  ddd      } | j                  d      }|j                  dk(  sJ 	 d d d        t         j                  j                  dd	i      5  j                  d      }|j                  d
k(  sJ 	 d d d        t         j                  j                  dd	i      5  j                  ddi      }|j                  dk(  sJ |j                  ddi      }|j                  dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr  r  )ru   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   r   r   r   r   r   r   i  i  r  r   ))dr   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   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   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   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r   )r   )
h   r  r  r  r  r  r  r  r  @   r  r  )rf   ry   r   s      r"   test_rechunk_downr    s0   	,g6	7 :GG%oWMIIfxx9999:
 
,f5	6 ?IIfxx>>>>? 
,f5	6 EIIq&k"xx9999IIq&k"xxDDDDE E: :
? ?E Es$   ;D'#D3A	D?'D03D<?Ec                     t         j                  j                  ddi      5  t        j                  dd      } | j                  d      }|j                  dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  1BrF   )r   rY   r   )r  r  r   s     r"   test_rechunk_zeror    s]    	,d3	4 (GGBt$IIfxx<'''( ( (s   :A&&A/c                    t        j                  dd      } | j                  ddi      j                  dk(  sJ | j                  | j                   di      j                  dk(  sJ t        j                  t              5 }| j                  d	di       d d d        d	t        j                        v sJ t        j                  t              5 }| j                  d
di       d d d        dt        |j                        v sJ t        j                  t              5 }| j                  ddi       d d d        dt        |j                        v sJ y # 1 sw Y   xY w# 1 sw Y   }xY w# 1 sw Y   ;xY w)N)r   r-   r   r   rY   r   r   )ru  rq  r   r   )r   rq  rt  blahru   100iz-100)r`   r   r   rZ   ndimr   r   	TypeErrorstrvaluer   )rf   infos     r"   test_rechunk_bad_keysr    s=   
1%A99b!W$$(AAAA99qvvgq\"))-LLLL	y	! T			61+ S_$$$	z	" d			3( C

O###	z	" d			4) S_$$$ 
 
 s$    EEE*EE'*E3c                     d} t        j                  t        j                  |       d      }|j	                  dd      }|j	                  dd      }|j
                  d   dk(  sJ |j
                  d   d	k(  sJ y )
N   ru   rY   TrZ   balanceFr   ru   ru   rI   n   r  r`   ra   r\   r   r   rZ   arr_lenrf   balanced
unbalanceds       r"   test_balance_basicsr    st    G
bii(5AyyTy2H#u5JQ>111??1+++rR   c                     d} t        j                  t        j                  |             }|j	                  dd      }|j	                  dd      }|j
                  d   dk(  sJ |j
                  d   dk(  sJ y )	Nr  ru   Tr  Fr   r  r  r  r  s       r"   test_balance_chunks_unchangedr    sr    G
bii()AyyTy2H#u5JQ>111??1+++rR   c                    d} t        j                  t        j                  |             }|j	                  dd      }|j	                  dd      }|j
                  d   dk(  sJ |j
                  d   dk(  sJ d	} t        j                  t        j                  |             }|j	                  d
d      }|j	                  d
d      }|j
                  d   dk(  sJ |j
                  d   dk(  sJ y )N   r   Tr  Fr   )r   r   r-   )r   r   r   r   r2   r-   r   )r-   r-   r   r  r  s       r"   test_balance_smallr    s    G
bii()Ayy4y0H!U3J??1***Q<///G
bii()Ayy4y0H!U3J??1'''Q9,,,rR   c                    d} d}t        j                  t        j                  |             }|j	                  | |z  d      }|j	                  | |z  d      }|j
                  d   dk(  sJ |j
                  d   dk(  sJ y )	Nru   r   Tr  Fr   )r  r  r  r  r  r  r  r   )	r   r   r   r   r   r   r   r   r   r  r  n_chunksrf   r  r  s        r"   test_balance_n_chunks_sizer    s    GH
bii()Ayy8 3TyBH'X"5uEJ??1!1111Q#3333rR   c                 z   d} d}t        j                  t        j                  |             }t	        j
                  t        d      5  |j                  | |z  d      }d d d        |j                  | |z  d      }j                  |j                  k(  sJ d}|j                  | |z  d       y # 1 sw Y   SxY w)	Nru   r   zTry increasing the chunk sizerT  Tr  FrF   )	r`   ra   r\   r   r   warnsUserWarningr   rZ   r  s        r"   test_balance_raisesr    s    GH
bii()A	k)H	I G99Gx$79FG'X"5uEJ??j/////HIIW($I7G Gs   B11B:c                    d} t        j                  t        j                  j	                         j                  | | f            }|j                  dd      }|j                  dd      }|j                  dk(  sJ |j                  dk(  sJ y )	N   r   )ru   ru   Tr  F)ru   ru   rF   r  )i   r  r  r`   ra   r\   r]   r^   r_   r   rZ   r  rf   r  r  s       r"   test_balance_basics_2dr    s    A
bii++-55Aq65BCAyy
Dy9H*e<J @@@@??6666rR   c                 *   d} t        j                  t        j                  j	                         j                  | | f            }|j                  dd      }|j                  dd      }|j                  d| ffk(  sJ |j                  d| ffk(  sJ y )	Nr  r  )ru   r   Tr  Fr  r  r  r  s       r"   "test_balance_2d_negative_dimensionr  '  s    A
bii++-55Aq65BCAyy	4y8H)U;J! 6666??zA40000rR   c                 :   d} t        j                  t        j                  j	                         j                  | | f            }|j                  dd      }|j                  dd      }|j                  |j                  k(  sJ |j                  d   | fk(  sJ y )Nr  r  )10MBr   Tr  Fr   r  r  s       r"   test_balance_different_inputsr  1  s    A
bii++-55Aq65BCAyydy;H,>J??j/////??1!%%%rR   c                 6   g d} | D ]  }t        dd      D ]  }t        j                  t        j                  j                         j                  |            }|j                  t        |      |z  d      }t        |j                  d         |k(  rJ   y )N)i  i  i  i  i  i  i  i	  i  i  i  i%  i'  i-  r   rI   r  Tr  r   )
r}   r`   ra   r\   r]   r^   r_   r   r   rZ   )
array_lensr  nchunksrf   ry   s        r"    test_balance_split_into_n_chunksr  ;  s    J"  /Q| 	/Gbii335==1=EFA		Q7!2D	AAqxx{#w...	//rR   c                     t        j                  dd      } | j                  d      }t        j                  dd      }|| }} | j                  d      }t        ||       y )N)r   r   r   rY   )r   r   r   r   r   )r`   r   r   r   )re   r   r   s      r"   test_rechunk_with_zeror  U  sU    
v&AYY-.Fwwv&<=H AxAYYvFfhrR   c            	     :   ddl m}  d}d}t         | ||            }dt        ddd       fdt        ddd       ffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       ffdt        ddd       fdt        ddd       fffg}||k(  sJ y )Nr   r   r   r   )r+  ru  r   r   r   dask.array.rechunkr   rN   r6   r   r8   r7   r   r   s        r"   "test_intersect_chunks_with_nonzeror  `  s    3
C
C"3,-F q!T"#aq!T):%;<q!T"#aq!T):%;<	

 q!T"#aq!T):%;<q!T"#aq!T):%;<	
	H XrR   c                    ddl m}  d}d}t         | ||            }dt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffg}||k(  sJ d}d}t         | ||            }dt        ddd       fdt        ddd       ffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       ffdt        ddd       fdt        ddd       fffg}||k(  sJ d}d	}t         | ||            }dt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffg
}||k(  sJ d}d
}t         | ||            }dt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffdt        ddd       fdt        ddd       fffg}||k(  sJ y )Nr   r  r  )r  ru  r   r   r   r-   ))r   r   r   r   r   ru  ))r   r   r   r   ru  r  r  s        r"   test_intersect_chunks_with_zeror  s  sg   3
C
 C"3,-F eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;	H X
 C
C"3,-F q!T"#aq!T):%;<q!T"#aq!T):%;<	

 q!T"#aq!T):%;<q!T"#aq!T):%;<	
	H X
C
#C"3,-FeAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;H X
C
 C"3,-FeAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;eAq$
 1eAq$&7"8	9;	H XrR   c                    ddl m}  d}d} | ||      }dt        dd      fgdt        dd      fgdt        dd      fggg}||k(  sJ d}d} | ||      }dt        dd      fgdt        dd      fggg}||k(  sJ d}d	} | ||      }dt        dd      fgd
t        dd      fgd
t        dd
      fgd
t        d
d      fggg}||k(  sJ y )Nr   )r   )r   ))r   r   r   r   r   )r   )r   ))r   r   r   r   r   )r  r   r6   )r   r8   r7   r   r   s        r"   test_old_to_new_with_zeror    s"   -
C
CS!FeAqk"#q%1+&6%71eAqk:J9KLMHX
C
CS!FeAqk"#q%1+&6%789HX
C
CS!FeAqk
	q%1+./1eAqk2B1Cq%PQST+FVEWXH XrR   c                 2   d} d}t        j                  t         j                  t        j                  | d      ddddd      } |j                  | }t        ||       |j	                  |      }t        ||       |j                  |j                  k(  sJ y )	N)r  ru   i#  )r  r  r  )r   r   r   rY   r   )r   r   r   T)trim_excess)r`   coarsenmeanr   r   r   rZ   )r   final_chunksr   r   result_bs        r"   .test_rechunk_non_perfect_slicing_of_dimensionsr    s     EL
**

{+!	C S[[,'Fc6{{<(Hc6==HOO+++rR   )r   g    cAr   )r
__future__r   r  	itertoolsr   r   dask._task_specr   r   r\   mathr   
dask.arrayr   r`   r  r   r   r	   r
   r   r   r   r   r   r   dask.array.utilsr   
dask.utilsr   r   skiprB   rQ   rV   rh   rn   rs   rz   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	  r  r  r  r  r)  r.  r1  r3  r<  r>  r   rB  rE  r   r   rH  rJ  rA  rV  rZ  r\  r^  r`  rb  rd  rh  rp  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rR   r"   <module>r     s(   "     V!      ' 2FKK9dSBJ
%%%$%%	)3
3$<. 	HBHHRL("((B8,hbhhrd|.DE
  C%P
B2J=7<  dD\FF#3ff5EF	" 
 	x	19=	x	1Aq6:	x	1>B	z'	2I>	z'	2QF;	z'	2NC	x	19=	x	1Aq6:	x	1>B	x	0)<	x	01a&9	x	0.A" #"  	x	19=	x	1Aq6:	x	1>B	z'	2I>	z'	2QF;	z'	2NC	x	19=	x	1Aq6:	x	1>B	x	0)<	x	01a&9	x	0.A"	 #"	  
&&"&&	6"
((DHH	v&
,e	%v.   
Q	(
Q$((	#V,
QeeEl	+V4
 
 F
7(
	"! ,#-,# !		*(# sDk*
 +
:E$(%*,,-$4871&/4 &EP0,rR   