
    biQ|                       d dl mZ d dlZd dlmZ d dlmZ  ej                  d       d dlZ	d dl
mZ d dlmZ  ej                         rd dlmZmZmZmZmZmZmZmZmZmZ n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mZ ej@                  jB                  Z"d Z#d Z$d Z%ej@                  jM                   ej                         d      d        Z'd Z(d Z)d Z*d Z+d Z,d Z-d Z.d Z/d Z0d Z1ej@                  je                  dg d      d        Z3ej@                  jM                   ej                         d      d        Z4d  Z5d! Z6d" Z7d# Z8ej@                  jM                   ej                         d$      d%        Z9ej@                  je                  d&d'      d(        Z:d) Z;d* Z<d+ Z=d, Z>ej@                  je                  d-d d d.d/d d.d0d0d.d1d2d.g      d3        Z?d4 Z@d5 ZAej@                  je                  d6d7d8g      d9        ZBd: ZCd; ZDd< ZEd= ZFd> ZGd? ZHej@                  jM                   ej                         d@      dA        ZIej@                  je                  dg dB      dC        ZJdD ZKdE ZLej@                  je                  dFdGdGgdHdHgdIdJgdKdLgdMdNgdOdPgdQdRgdSdTgg      dU        ZMdV ZNej@                  je                  dWdXdYdZd[d\d]d^d_d`dadbdbdbgd dcgfg
      dd        ZOej@                  je                  deg df      dg        ZPej@                  je                  dhg di      dj        ZQdk ZRdl ZSdm ZTej@                  jM                   ej                         dn      do        ZUy)p    )annotationsN)
from_array)collections_to_exprnumpy)assert_array_almost_equal)

boundariesconstantensure_minimum_chunksizenearestoverlapoverlap_internalperiodicreflectsliding_window_viewtrim_internal)r   )
r   r	   r
   r   r   r   r   pushr   r   )	assert_eq	same_keysc                    t        j                  d      j                  d      } t        j                  | d      }t        |ddd      }|j                  d	      }|j                  d
k(  sJ t        j                  g dg dg dg dg dg dg dg dg dg dg dg dg      }t        ||       t        t        |ddd      |      sJ y )N@      r      r   chunks      r   r   sync)	scheduler)   r#      r%   
r   r   r      r   r'   r   r%   r#      
r   	   
         r,   r-            
               r5   r6            
               r>   r?            
    !   "   #   $   rG   rH   %   &   '   
(   )   *   +   ,   rP   rQ   -   .   /   
0   1   2   3   4   rY   rZ   5   6   7   
8   9   :   ;   <   rb   rc   =   >   ?   )nparangereshapedar   r   computer   arrayr   r   )xdgresultexpecteds        X/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_overlap.pytest_overlap_internalrs   0   s    
		"f%A
a'AaL)AYYY(F88''''xx*24444444444	
H" fh%aQ16:::    c                 n   t        j                  d      j                  d      } t        j                  | d      }t        |ddd      }|j                  dk(  sJ t        j                  g d	g d
g dg dg dg dg dg dg dg dg
      }t        ||       t        t        |ddd      |      sJ y )Nr   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/   r0   )	r2   r3   r4   r5   r5   r6   r7   r8   r9   )	r;   r<   r=   r>   r>   r?   r@   rA   rB   )	rD   rE   rF   rG   rG   rH   rI   rJ   rK   )	rM   rN   rO   rP   rP   rQ   rR   rS   rT   )	rV   rW   rX   rY   rY   rZ   r[   r\   r]   )	r_   r`   ra   rb   rb   rc   rd   re   rf   
rg   rh   ri   rj   r   r   r   rl   r   r   rm   rn   rp   rq   s       rr    test_overlap_internal_asymmetricrz   M   s    
		"f%A
a'AaV!78F==,,,,xx'.00000000	
H fh%aV)?@&IIIrt   c                 >   t        j                  d      j                  d      } t        j                  | d      }t        |ddd      }|j                  dk(  sJ t        j                  g d	g d
g      }t        ||       t        t        |ddd      |      sJ y )NrD   )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   r*   r+   r,   r-   r,   r-   r.   r/   r0   )r2   r3   r4   r5   r6   r5   r6   r7   r8   r9   r;   r9   r;   r<   r=   r>   r?   r>   r?   r@   rA   rB   rx   ry   s       rr   &test_overlap_internal_asymmetric_smallr~   f   s    
		"g&A
a'AaV!78F==0000xxV	
H< fh%aV)?@&IIIrt   zblockwise fusion needed)reasonc                     t        j                  dd      } t        | dddd      }t        t	        |g      j                               d	k(  sJ |j                  d
k(  sJ y )N)rM   rc   r+   r+   r   r   r   r   r   )axesboundaryr;   ))r   r   r   r   )r#   r#   r#   r#   r#   r#   )rj   onesr   lenr   __dask_graph__r   )rn   es     rr   test_trim_internalr      s[    
*Aa!lY?A"A3'6689R???889999rt   c                    t        j                  d      j                  d      } t        j                  | d      }t        |dd      }|j                  d   |j                  d   dz   k(  sJ |j                  d	   |j                  d	   k(  sJ t        |d	d d f   |d
d d f          t        |dd d f   |dd d f          y )Nr   r   r   r   r   r   axisdepthr   r   )rg   rh   ri   rj   r   r   shaper   rm   rn   r   s      rr   test_periodicr      s    
		"f%A
a'A!$A771:a'''771:###a1gqQx a1gqQx rt   c                     t        j                  d      } t        j                  | d      }t	        |dd      }t        j
                  g d      }t        ||       t	        |dd      }t        j
                  g d	      }t        ||       y )
Nr+   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*   )rg   rh   rj   r   r   rl   r   rm   rn   r   rq   s       rr   test_reflectr      m    
		"A
a'A#AxxBCHa#Axx<=Hart   c                     t        j                  d      } t        j                  | d      }t	        |dd      }t        j
                  g d      }t        ||       t	        |dd      }t        j
                  g d	      }t        ||       y )
Nr+   r$   r   r   r   r   )r   r   r   r   r   r'   r   r%   r#   r(   r   r*   r*   r*   r   r   )rg   rh   rj   r   r   rl   r   r   s       rr   test_nearestr      r   rt   c                    t        j                  d      j                  d      } t        j                  | d      }t        |ddd      }|j                  d   |j                  d   d	z   k(  sJ |j                  d
   |j                  d
   k(  sJ t        |d
d d f   t        j                  d| j                        dz         t        |dd d f   t        j                  d| j                        dz         y )Nr   r   r   r   r   r   r+   )r   r   valuer   r   r   dtyper   )
rg   rh   ri   rj   r   r	   r   r   r   r   r   s      rr   test_constantr      s    
		"f%A
a'A!2.A771:a'''771:###a1grwwq0256aAh1B67rt   c                 *   t        j                  d      j                  d      } t        j                  | d      }t        |ddddd	d      }t        j                  g d
g d
g dg dg dg dg dg dg dg dg d
g d
g      }t        ||       y )Nr   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   )
r0   r   r*   r+   r,   r-   r.   r/   r0   r   )
r9   r2   r3   r4   r5   r6   r7   r8   r9   r2   )
rB   r;   r<   r=   r>   r?   r@   rA   rB   r;   )
rK   rD   rE   rF   rG   rH   rI   rJ   rK   rD   )
rT   rM   rN   rO   rP   rQ   rR   rS   rT   rM   )
r]   rV   rW   rX   rY   rZ   r[   r\   r]   rV   )
rf   r_   r`   ra   rb   rc   rd   re   rf   r_   )rg   rh   ri   rj   r   r   rl   r   r   s       rr   test_boundariesr      s    
		"f%A
a'A1!lj$9:Axx***1444444**	
H  art   c                 v   t        j                  d      j                  d      } t        j                  | d      }t        |ddddd	d
      }|j                  dk(  sJ t        j                  g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg      }t        ||       t        |t        |ddddd	d
            sJ t        j                  ddg      }t        |      D ci c]  \  }}||
 }}}t        ||dd	d
      }|j                  dk(  sJ t        ||       t        |t        |ddddd	d
            sJ t        |dddddd
      }t        j                  g dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg      }t        ||       |j                  dk(  sJ t        j                  ddg      }t        |      D ci c]  \  }}||
 }}}t        ||ddd
      }t        ||       |j                  dk(  sJ y c c}}w c c}}w ) Nr   r   r   r   r   r   r   d   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/   r0   r0   )r2   r2   r3   r4   r5   r6   r5   r6   r7   r8   r9   r9   )r;   r;   r<   r=   r>   r?   r>   r?   r@   rA   rB   rB   )rD   rD   rE   rF   rG   rH   rG   rH   rI   rJ   rK   rK   )rM   rM   rN   rO   rP   rQ   rP   rQ   rR   rS   rT   rT   )rV   rV   rW   rX   rY   rZ   rY   rZ   r[   r\   r]   r]   )r_   r_   r`   ra   rb   rc   rb   rc   rd   re   rf   rf   none)
r   r   r   r   r   r   r   r   r   r   r&   r)   r1   r:   rC   rL   rU   r^   )r   r$   )rg   rh   ri   rj   r   r   r   rl   r   r   uint16	enumerate)rm   rn   ro   rq   u_depthkvs          rr   test_overlapr      s/   
		"f%A
a'AQ1CI0FGA88''''xxHH09<<<<<<<<<<HH!	
H( aQQ1CI@VWXXXiiAG )' 231q!t3G3sy+ABA88''''aQQ1CI@VWXXXQ1CF0CDAxx>>*24444444444>>!	
H( a88''''iiAG )' 231q!t3G3sv+>?Aa88''''E 4> 4s   7H/0H5c                 B   t        j                  dd      } t         j                  j                  | ddd       | j                  d ddd       t	        j
                  t              5  t         j                  j                  | ddd	       d d d        t	        j
                  t              5  | j                  d
 ddd	       d d d        t        j                  dd      } t         j                  j                  | ddd	       y # 1 sw Y   |xY w# 1 sw Y   PxY w)Nr#   r%   r   r   r   T)allow_rechunkc                    | S N rm   s    rr   <lambda>z2test_overlap_allow_rechunk_kwarg.<locals>.<lambda>(  s    a rt   Fc                    | S r   r   r   s    rr   r   z2test_overlap_allow_rechunk_kwarg.<locals>.<lambda>,  s    ! rt   r   )rj   rh   r   map_overlappytestraises
ValueErrorarrs    rr    test_overlap_allow_rechunk_kwargr   $  s    
))Aa
 CJJsAy=OOKITOB	z	" C


39EBC	z	" HQ	GH ))Aa
 CJJsAy>C CH Hs   *$D	/D	DDc                     t        j                  dd      } t        j                  t              5  | j                  d ddid| j                         d d d        y # 1 sw Y   y xY w)	Nr+   r%   r   c                    | t        |       z   S r   r   r   s    rr   r   z<test_asymmetric_overlap_boundary_exception.<locals>.<lambda>6  s    a#a&j rt   r   r   r   r   r   r   r   )rj   rh   r   r   NotImplementedErrorr   r   r   s    rr   *test_asymmetric_overlap_boundary_exceptionr   2  sV    
		"QA	*	+ 
	 Fiqww 	 	

 
 
s   #AA&c                 N   t        j                  dd      } | j                  d d| j                  d      }t	        |t        j                  d      dz   dz   dz          t        j                  dd      } | j                  d t        j                  d      | j                  d      }t        |j                  D cg c]  }t        |      t        u  c}      sJ t	        |t        j                  d      dz   dz   dz          t        j                  d	d
      } | j                  d ddid      }|j                  d   | j                  d   k(  sJ t        j                  d      j                  d      } t        j                  | d      }|j                  d d|j                  d      }|j                  d dddddd|j                        }|j                  d ddiddi|j                        }|j                  d ddiddd|j                        }t	        || dz          t	        || dz          t	        || dz          t	        |t        j                  | ddddf   dz   | ddddf   dz   g| ddddf   dz   | ddddf   dz   gg             y c c}w )Nr+   r%   r   c                    | t        |       z   S r   r   r   s    rr   r   z"test_map_overlap.<locals>.<lambda><  s    CF
 rt   r   r   )r   r   r   c                    | t        |       z   S r   r   r   s    rr   r   z"test_map_overlap.<locals>.<lambda>A  s    !c!f* rt   r   )r'   r   c                    | S r   r   r   s    rr   r   z"test_map_overlap.<locals>.<lambda>G       rt   r   r   r   r2   r   r   r   c                     | | j                   z   S r   sizer   s    rr   r   z"test_map_overlap.<locals>.<lambda>M      !aff* rt   c                     | | j                   z   S r   r   r   s    rr   r   z"test_map_overlap.<locals>.<lambda>P  r   rt   r   r   r   c                     | | j                   z   S r   r   r   s    rr   r   z"test_map_overlap.<locals>.<lambda>V  r   rt   c                     | | j                   z   S r   r   r   s    rr   r   z"test_map_overlap.<locals>.<lambda>Y  r   rt   rw   r-   r   r   r#   )rj   rh   r   r   r   rg   int64allr   typeintr   r   ri   r   block)	rm   yszrn   exp1exp2exp3exp4s	            rr   test_map_overlapr   :  s   
		"QA	*!177YWAa2"Q&*+
		"QA	BHHQKqww 	 	A !''2QaC2333a2"Q&*+
(A	k!Q)DA88A;!((1+%%%
		"f%A
a'A==AQWWy  D ==l6*gg	  D ==QFa^177  D ==&k'gg	  D dAFdAFdAE
!QqSkAoq1ac{Q/!AaC1H+/1QqS!A#X;QR?1ST	
= 3s   =J"c                     t        j                  dd      } | j                  d dd      }t        |j                        d| j
                  d   z  k(  sJ t        |t        j                  d      d	z          y )
Nr+   r%   r   c                    | dz   S Nr   r   r   s    rr   r   zKtest_map_overlap_escapes_to_map_blocks_when_depth_is_zero.<locals>.<lambda>k  s
    A rt   r   r   r   r   r   )rj   rh   r   r   dask	numblocksr   rg   rm   r   s     rr   9test_map_overlap_escapes_to_map_blocks_when_depth_is_zeror   i  s`    
		"QA	oQ@Aqvv;!akk!n,,,,a2"#rt   r   )Nr   r   r   r   r   c                    t        j                  dd      }|j                  d d| |j                        }t	        ||       y )Nr+   r%   r   c                    | S r   r   )is    rr   r   z+test_map_overlap_no_depth.<locals>.<lambda>u  r   rt   r   r   )rj   rh   r   r   r   )r   rm   r   s      rr   test_map_overlap_no_depthr   p  s7     			"QA	kXQWWMAaOrt   zreshape neededc                 @   t        j                  dd      } t        j                  dd      }t        j                  d | |dd      }t        |dt	        j                  d      z         t        j                  dd	      } t        j                  dd
      }t        j                  d | |dd      }|j
                  dk(  sJ t        |dt	        j                  d      z         t        j                  dd      } t        j                  dd      }t        j                  d | |dd      }|j
                  dk(  sJ t        |dt	        j                  d      z         t        j                  dd      } t        j                  d      j                  dd      j                  d      }t        j                  d | |dd      }|j
                  dk(  sJ |j                  dk(  sJ t        |dt	        j                  d      t        j                     z         y )Nr+   r%   r   c                    | |z   S r   r   r   s     rr   r   z-test_map_overlap_multiarray.<locals>.<lambda>~  
    AE rt   r   r   r   r   )r   r'   r%   )r%   r'   r   c                    | |z   S r   r   r   s     rr   r   z-test_map_overlap_multiarray.<locals>.<lambda>  r   rt   ))r   r'   r'   r   r+   r   r   r   c                    | |z   S r   r   r   s     rr   r   z-test_map_overlap_multiarray.<locals>.<lambda>  r   rt   )r   )r   r   c                    | |z   S r   r   r   s     rr   r   z-test_map_overlap_multiarray.<locals>.<lambda>  r   rt   )r   r   r   r+   )
rj   rh   r   r   rg   r   ri   rechunkr   newaxisrm   r   r   s      rr   test_map_overlap_multiarrayr   y  s    			"QA
		"QA
)1aq6JAaRYYr]"# 			"Y'A
		"Y'A
)1aq6JA88&&&aRYYr]"# 			"U#A
		"Y'A
)1aq6JA88|###aRYYr]"# 			"U#A
		"a$,,^<A
)1aq6JA88((((77gaRYYr]2::../rt   c                     t        j                  dd      } t        j                  dd      }t        j                  d | |d      }t        |j                  d       t        |j                         d	       y )
Nr   r+   r   r   r%   c                    | |z   S r   r   r   s     rr   r   z6test_map_overlap_multiarray_defaults.<locals>.<lambda>  r   rt   r   r   g      4@rj   r   r   r   r   sumr   s      rr   $test_map_overlap_multiarray_defaultsr     sW     	b!A
"A
)1a&AAaggwaeegtrt   c                    t        j                  dd      t        j                  dd      fd}  | ddg      dk(  sJ  | ddg      dk(  sJ  | ddg      d	k(  sJ  | dd
g      dk(  sJ  | ddg      dk(  sJ  | ddg      dk(  sJ t        j                  t              5   | ddg       d d d        y # 1 sw Y   y xY w)Nr%   r   r   c           	     Z    t        j                  d | ddd      j                         S )Nc                D    | j                         |j                         z   S r   )r   r   s     rr   r   zKtest_map_overlap_multiarray_different_depths.<locals>.run.<locals>.<lambda>  s    1557* rt   r   Fr   )r   r   trimr   )rj   r   rk   )r   rm   r   s    rr   runz9test_map_overlap_multiarray_different_depths.<locals>.run  s2    ~~*
 ')	rt   r   r+   r   r-   r/   r   r2   r6   rA   r#   )rj   r   r   r   r   )r   rm   r   s    @@rr   ,test_map_overlap_multiarray_different_depthsr     s    
A
A	 1v;"1v;"1v;"1v;"1v;"1v;" 
z	" QF  s   *B>>Cc                    t        j                  dd      } t        j                  dd      }t        j                  t              5  t        j
                  d | |dd      j                          d d d        y # 1 sw Y   y xY w)	Nr+   r   r   r$   c                    | |z   S r   r   r   s     rr   r   zHtest_map_overlap_multiarray_uneven_numblocks_exception.<locals>.<lambda>  s
    Q rt   Fr   )align_arraysr   )rj   rh   r   r   r   r   rk   r   s     rr   6test_map_overlap_multiarray_uneven_numblocks_exceptionr    sa    
		"U#A
		"V$A	z	" 
156	

')	  s   *A;;Bc            	        d } t        j                  dd      }t        j                  dd      }t        j                  | ||ddd	d
      }t        ||       |j                  dk(  sJ t        |j                         d       y )Nc                d    | j                   |j                   z   }t        j                  d      |z  S Nr'   r'   )r   rg   r   r   s      rr   funcz9test_map_overlap_multiarray_block_broadcast.<locals>.func  s&    FFQVVOwwv""rt   r-   r-   r   )r2   r-   )r   r#   r  r   Tr   )r   r   r   r   r   g      v@r   )r  rm   r   r   s       rr   +test_map_overlap_multiarray_block_broadcastr
    st    # 	b!A
(A
a6		A aO77faeeg)*rt   z__array_function__ neededc            	     R   t        j                  dd      t        j                  dd      t        j                  dd      g} d }t        j                  |g| d	d
dd
dgdd}t        d | D              }|j                  dk(  sJ t        |j                         |k(        sJ y )N)r-   r   r   )r	  r   r   r   )r-   r   r   ))r   r   r   r   )r-   r   r   ))r   r   r   r   c                 N    t        j                  t        d | D              g      S )Nc              3  4   K   | ]  }|j                     y wr   r   .0rm   s     rr   	<genexpr>zEtest_map_overlap_multiarray_variadic.<locals>.func.<locals>.<genexpr>  s     2QVV2s   rg   rl   r   )argss    rr   r  z2test_map_overlap_multiarray_variadic.<locals>.func  s    xx2T22344rt   r   r   Fr   r   )r   r   r   	drop_axisr   c              3  f   K   | ])  }t        j                  |d d dd      j                   + y w)Nr   r   r	   )mode)rg   padr   r  s     rr   r  z7test_map_overlap_multiarray_variadic.<locals>.<genexpr>  s)     LA"1qz:??Ls   /1r'   )rj   r   r   r   r   r   rk   )xsr  rm   size_per_slices       rr   $test_map_overlap_multiarray_variadicr    s    
 	
=1

>2

>2	
B5 				 a&	A LLLN77d??qyy{n,---rt   r  )r   r   r}   r   r   r   rv   r   ))r   )r   )r  r   )r   r   )r   r  r   c                    t         j                  j                         j                  dd      } fd} ||      }d}d}t	        j
                         r fn D cg c]  }||j                  z   c}t        fdt        |      D              }t        j                  |||| t              j                         }t        |j                         |       y c c}w )	N)r%   r+   r   )r   r%   r   r   c                (    | j                        S )N)r   )mean)rm   r  s    rr   _meanzItest_map_overlap_trim_using_drop_axis_and_different_depths.<locals>._mean  s    vv9v%%rt   )r   r   r   )r   r'   r   c              3  4   K   | ]  \  }}|v rd n|  ywr   Nr   )r  r   rn   
_drop_axiss      rr   r  zMtest_map_overlap_trim_using_drop_axis_and_different_depths.<locals>.<genexpr>!  s      K$!QqJ!A-K   )r   r   r  r   )rj   randomdefault_rngstandard_normalrg   isscalarndimtupler   r   floatrk   r   )	r  rm   r   rq   r   r   rn   r   r#  s	   `       @rr   :test_map_overlap_trim_using_drop_axis_and_different_depthsr,     s    ( 			//
9/MA& QxH )HE!#Y!7)YJ&01!aff*1JK)E:JKKE
qIU	gi  h..0!4 2s   !Cc                    t        j                  dd      } | j                  d      }d }t        j                  || ddd	      }|j                  dk(  sJ t        j                  ||ddd	      }|j                  dk(  sJ y )
Nr   r$   r   r+   c                    | dd S )Nr   r   r   r   s    rr   oversumzTtest_map_overlap_assumes_shape_matches_first_array_if_trim_is_false.<locals>.oversum.  s    2wrt   r   Fr   )r   r   r   )rj   r   r   r   r   )x1x2r/  z1z2s        rr   Ctest_map_overlap_assumes_shape_matches_first_array_if_trim_is_falser4  )  sv    	v	&B	BB 
156	JB88u	156	JB88urt   c                    d } t        j                  d      }t        j                  t              5  t        j
                  || ddd      }|j                         dk(  sJ |j                  dk(  sJ 	 d d d        t        j                  t              5  t        j
                  || ddd      }|j                         dk(  sJ |j                  dk(  sJ 	 d d d        t        j                  t              5  t        j
                  || ddd	      }|j                         dk(  sJ |j                  dk(  sJ 	 d d d        y # 1 sw Y   xY w# 1 sw Y   xxY w# 1 sw Y   y xY w)
Nc                H    t        j                  | j                               S r   r  r   s    rr   r  z3test_map_overlap_deprecated_signature.<locals>.func9  s    xx  rt   r'   r   r   Tr  r   r%   F)rj   r   r   warnsFutureWarningr   rk   r   )r  rm   r   s      rr   %test_map_overlap_deprecated_signaturer9  8  s2   ! 	
A 
m	$ NN1dAy$7yy{aww$
 
m	$ NN1dAy$7yy{aww$
 
m	$ NN1dAy%8yy{aww$  
 
 s&   A E A E6A E E	EE!c                 
   t        j                  d      } t        j                  | d      }d }t        j                  ||ddidd      }t        |j                         t        |j                         j                         y )	Nr   r0   r   c                    | dd S )Nr6   ir   r   s    rr   fz/test_map_overlap_trim_false_chunking.<locals>.fS  s    Cyrt   r   r6   F)r   r   r   )rg   rh   rj   r   r   printr   rk   )acr<  rn   s       rr   $test_map_overlap_trim_false_chunkingr@  O  s_    
		#A
a#A 	q!Ar7QUCA	!''N	!))+

rt   c                    t        j                  d      j                  dd      j                  t              } t        j                  | d      }t        |dddddd      }t        |dddd	      }t        ||        y )
N   r-   r"   r   r%   r   r   r   r   )
rg   rh   ri   astyper+  rj   r   r   r   r   )r>  darrgarrtarrs       rr   test_nearest_overlaprG  [  sj    
		#r2&--e4A==6*D41|)	6RSD1|i@DdArt   r   r   r   r%   r   r(   c                   t        j                  d      j                  dd      }t        j                  |d      }t        || d      }t        || d      }t        || d      }t        || d	      }t        || d
      }t        ||       t        || d
      }t        ||       t        || d
      }t        ||       t        || d	
      }t        ||       y )Nr   r+   )r%   r   r   r   r   r   r   rO   r   )rg   rh   ri   rj   r   r   r   r   )r   rq   rD  	reflectedr   r   r	   rp   s           rr   /test_different_depths_and_boundary_combinationsrJ  d  s     yy~%%b"-H==&1DEI>Id%)<Gt5:>Ht526H9ei@Ffh7EI>Ffh8UZ@Ffh8UR8Ffhrt   c                     t        j                  d      j                  dd      } t        j                  | d      }t        |dd      }| j                  |j                  k(  sJ y )Nr4   r   r*   )r}   r   r   r   r'   r   r   r   )rg   rh   ri   rj   r   r   r   )r>  rD  ro   s      rr   test_one_chunk_along_axisrM    sR    
		%  A&A==#78DA*A77aggrt   c                     t        j                  d      j                  dd      } t        j                  | d      }t        |dddddd      }|j                  |j                  k(  sJ y )Nr*   r   )r   rL  r   r   r   )rg   rh   ri   rj   r   r   r   )r>  rD  bs      rr   test_constant_boundariesrP    sZ    
		%  A&A==#78D4Q11|4A88t{{"""rt   r   )r%   r%   r   rQ  ))r'   r'   r'   r'   )r,   r   c                0   t        j                  d      j                  dd      }t        j                  ||       }dddt        |d      }t        fd	|j                  d
   D              sJ t        fd|j                  d   D              sJ y )NrB  r-   r   r   r   r   r   r   c              3  4   K   | ]  }|d    dz  k\    yw)r   r   Nr   r  r?  r   s     rr   r  zItest_depth_greater_than_smallest_chunk_combines_chunks.<locals>.<genexpr>       ;QqE!HqL ;r$  r   c              3  4   K   | ]  }|d    dz  k\    yw)r   r   Nr   rT  s     rr   r  zItest_depth_greater_than_smallest_chunk_combines_chunks.<locals>.<genexpr>  rU  r$  )rg   rh   ri   rj   r   r   r   r   )r   r>  rD  outputr   s       @rr   6test_depth_greater_than_smallest_chunk_combines_chunksrX    s     			#r2&A==6*DaLET3F;&--*:;;;;;&--*:;;;;rt   c                    t        j                  d      j                  dd      } t        j                  | d      }ddd}t        j                  t        d	      5  t        ||d
       d d d        y # 1 sw Y   y xY w)NrB  r-   )r'   r%   r   r.   r   r   zThe overlapping depthmatchr   r   )	rg   rh   ri   rj   r   r   r   r   r   )r>  rD  r   s      rr   test_depth_greater_than_dimr\    se    
		#r2&A==6*DqME	z)@	A /EA./ / /s   A55A>c                     t        j                  t        j                  d      j	                  dd      d      } t        | dddd      }t        j                  g d	g d
g dg dg      }t        ||       y )Nr2   r   r   r   r   r   rE   r   )rE   rE   r   r   r   r'   rE   rE   )rE   rE   r   r%   r#   r(   rE   rE   )rE   rE   r   r*   r+   r,   rE   rE   )rE   rE   r-   r.   r/   r0   rE   rE   )rj   r   rg   rh   ri   r   rl   r   )rm   express      rr   test_none_boundariesr`    se    
biim++Aq1&AA
Qv"-
.C
((((*,		
C c3rt   c                     t        j                  dd      } | j                  d dd      }t        |j                        dk  sJ | j                  d	 dd      }t        |j                        d
k  sJ y )Nr   r$   r   c                    | S r   r   r   s    rr   r   z$test_overlap_small.<locals>.<lambda>  r   rt   r   r   r      c                    | S r   r   r   s    rr   r   z$test_overlap_small.<locals>.<lambda>  r   rt   r   rj   r   r   r   r   r   s     rr   test_overlap_smallrf    sf    
(A	kV<Aqvv;	kV<Aqvv;rt   c                 V   t         j                  j                  d      } | j                  dd      }d }t        |j                        D cg c]k  }|j                  d |j                  t        |j                        D ci c]  }|t        ||k(         c}d      j                  ||j                  	      m }}}t        |d   j                        t        |d
   j                        z  t        |j                        k(  sJ t        j                  |ddi y c c}w c c}}w )Nr   )r*   r*   r  r   c                (    | j                   dk(  sJ | S r  )r   r   s    rr   checkz8test_no_shared_keys_with_different_depths.<locals>.check  s    ww&   rt   c                    | dz   S r   r   )r>  s    rr   r   z;test_no_shared_keys_with_different_depths.<locals>.<lambda>  s
    a!e rt   r   )r   r   r   r   r   r!   zsingle-threaded)rj   r%  r&  ranger)  r   r   r   
map_blockssetr   rk   )rngr>  ri  r   jrs         rr   )test_no_shared_keys_with_different_depthsrq    s    
))


"C

6&
)A qvv	  	
''+0=9a1c!q&k>9	 	 	

 *U!''*
*	+	A 	 qtyy>C!		N*c!&&k999JJ/./ :		s   4D%D &D% D%c                 n   t        j                  dd      } | j                  d ddid      }t        | |       t	        d	 |j
                  D              sJ t        d
 |j
                  D              sJ | j                  d ddid      }t        | |       t        d |j
                  D              sJ t	        d |j
                  D              sJ | j                  d dddd      }t        | |       t	        d |j
                  D              sJ t	        d |j
                  D              sJ y )N)r6   r6   r   r   c                    | S r   r   r   s    rr   r   z3test_overlap_few_dimensions_small.<locals>.<lambda>  r   rt   r   r   r   r   c              3  B   K   | ]  }t        |d    t                yw)r   N
isinstancer+  r  r   s     rr   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  s     71z!A$&7s   c              3  L   K   | ]  }d |vst        |d   t                yw_overlap_trim_infor   Nrv  r   rw  s     rr   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  $     V8LTU8Uz!A$$V   	$$c                    | S r   r   r   s    rr   r   z3test_overlap_few_dimensions_small.<locals>.<lambda>  r   rt   c              3  L   K   | ]  }d |vst        |d   t                ywrz  r   Nr{  rw  s     rr   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  r|  r}  c              3  L   K   | ]  }d |vst        |d   t                ywry  ru  rw  s     rr   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  $     X1:NVW:Wz!A$&Xr}  c                    | S r   r   r   s    rr   r   z3test_overlap_few_dimensions_small.<locals>.<lambda>  r   rt   r   c              3  L   K   | ]  }d |vst        |d   t                ywr  ru  rw  s     rr   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  r  r}  c              3  L   K   | ]  }d |vst        |d   t                ywry  ru  rw  s     rr   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  r  r}  )rj   r   r   r   anyr   r   rm   r>  rO  r?  s       rr   !test_overlap_few_dimensions_smallr    s   
*A	k!Q&AAaO77777VaffVVVV	k!Q&AAaOVaffVVVVXXXXX	kQ1GAaOXXXXXXXXXXrt   c                    t        j                  dd      } | j                  d ddid      }| j                  d	 ddid      }| j                  d
 dddd      }t        |j                        t        |j                        k(  sJ t        |j                        t        |j                        k  sJ t        |j                        dt        |j                        z  k  sJ y )N)r   r   r   r   c                    | S r   r   r   s    rr   r   z-test_overlap_few_dimensions.<locals>.<lambda>  r   rt   r   r   r   r   c                    | S r   r   r   s    rr   r   z-test_overlap_few_dimensions.<locals>.<lambda>  r   rt   c                    | S r   r   r   s    rr   r   z-test_overlap_few_dimensions.<locals>.<lambda>  r   rt   r   r+   re  r  s       rr   test_overlap_few_dimensionsr    s    

8,A	k!Q&AA	k!Q&AA	kQ1GAqvv;#aff+%%%qvv;QVV$$$qvv;c!&&k))))rt   zpush neededc                 T   t        j                  d      } t        j                  t        j                  dddt        j                  t        j                  t        j                  t        j                  ddt        j                  dg      }dD ]  }| j                  |d	|
      }t        dd      D ];  }t        t        ||      d	|
      }t        j                  j                  ||       = t        t        |d      d	|
      }t        j                  j                  ||        y )N
bottleneckr   r   r'   r   r%   r#   )Nr   r   r'   r   r%   r,   r   )r   nr,   r   )r   r   r'   r   r   r   r   )
r   importorskiprg   rl   nanr   rk  r   testingassert_equal)r  rl   r  rq   r?  actuals         rr   	test_pushr    s    $$\2JHHbffaArvvrvvrvvrvvq!RVVUVWXE& 2??5qA?6q" 	6A*U15ACFJJ##FH5	6
 j/DEAQRS


12rt   )r   r   r   r   c                l   t        j                  t        j                  d      j	                  dd      d      }t         j
                  j                  |dd| d	      }t         j
                  j                  |dd| d	      }t        ||       t         j
                  j                  |dd
| i	      }t         j
                  j                  |dd
| i	      }t        ||       t         j
                  j                  |d| 	      }t         j
                  j                  |d| 	      }t        ||       y )Nr;   r   r#   )r   r'   r   r   r   r   r   r   )rj   r   rg   rh   ri   r   trim_overlapr   )r   rm   x_overlaped	x_trimmeds       rr   test_trim_boundaryr    s    
biim++Aq1&AA**$$Q	h4O$PK

''QY8!< ( I a**$$QQM$BK

''Q!X'OIa**$$QH$=K

''Q'JIart   c                     t        j                  d      } t        j                  | d      }|j	                  d dd      }t        d |j                  d   D              sJ t        ||        y )	Nr,   r%   r   c                    | S r   r   r   s    rr   r   z;test_map_overlap_rechunks_array_if_needed.<locals>.<lambda>!  r   rt   r   r   r   c              3  &   K   | ]	  }|d k\    ywr   Nr   r  r?  s     rr   r  z<test_map_overlap_rechunks_array_if_needed.<locals>.<genexpr>"  s     +!qAv+   )rg   rh   rj   r   r   r   r   r   )rq   rm   r   s      rr   )test_map_overlap_rechunks_array_if_neededr    sY    yy}H
hq)A	kQ7A+qxx{++++art   c                     t         j                  j                         j                  dd      } | j                  d dd      }t	        d |j
                  D              sJ y )	N)i\     r  )r   r  r  r   c                    | S r   r   r   s    rr   r   zOtest_map_overlap_rechunks_array_along_multiple_dims_if_needed.<locals>.<lambda>*  s    C rt   r   r   r   r   r   c              3  @   K   | ]  }t        d  |D                yw)c              3  &   K   | ]	  }|d k\    ywr  r   r  s     rr   r  zZtest_map_overlap_rechunks_array_along_multiple_dims_if_needed.<locals>.<genexpr>.<genexpr>.  s     *a16*r  N)r   )r  r   s     rr   r  zPtest_map_overlap_rechunks_array_along_multiple_dims_if_needed.<locals>.<genexpr>.  s     Ivs*6**Is   )rj   r%  r&  r   r   r   )randfiltereds     rr   =test_map_overlap_rechunks_array_along_multiple_dims_if_neededr  &  s]    99  "))*;O)TD   H
 IIIIIrt   zchunks,expectedr   r   )r+   r+   r   )r+   r,   )r6   r6   r6   r   )r6   r6   r,   r+   )r6   r6   r+   r   )r6   r6   r,   )r   r6   r   r6   )r/   r+   r6   )r   r   r   r   r(   r,   )r6   r6   r   r6   r6   r   )r6   r-   r+   r6   r-   r+   c                *    t        d|       }||k(  sJ y )Nr+   )r
   )r   rq   r  s      rr   test_ensure_minimum_chunksizer  1  s    " &b&1FXrt   c                     d} t        j                  t        d      5  t        d|        d d d        y # 1 sw Y   y xY w)N)r%   r   r   r   z#overlapping depth 10 is larger thanrZ  r+   )r   r   r   r
   r   s    rr   *test_ensure_minimum_chunksize_raises_errorr  F  s5    F	z)N	O - V,- - -s   4=z!shape, chunks, window_shape, axis))r#   r(   r   )r#   )r   r   r   r   r   )r'   r   r  ))rM   rA   r   r%   r  r   )r7   r'   )r(   r   )r*   r'   r'   r   )r  r'   r'   r   )r  r'   r'   N))r*   r   r'   r|   N)r  r'   )r'   r'   r'   )r   r   r   )r  r'   r  )r   r   r  r'   r   c                @   t        j                  t        j                  t        j                  |             j                  |       |      }t        |||      }t        j                  j                  j                  |j                         ||      }t        ||       y )Nr   )rj   r   rg   rh   prodri   r   libstride_tricksrk   r   )r   r   window_shaper   r   r  rq   s          rr   test_sliding_window_viewr  L  sq      --		"''%.199%@
PC lD9Fvv##77|TH hrt   zwindow_shape, axis))r   r   )r}   r'   )r   r   )r   r   r  r"  c                    t        j                  d      }t        j                  t              5  t        || |       d d d        y # 1 sw Y   y xY w)N)r   r'   )rj   zerosr   r   r   r   )r  r   r   s      rr   test_sliding_window_errorsr  d  s?     ((6
C	z	" 5Ct45 5 5s   AAz!output_chunks, window_shape, axis)))r<   r7   r*   r   r   r*   r   r   r  r%   r%   r   )))r<   r#   
r%   r%   r%   r%   r%   r%   r%   r%   r%   r%   r  )r6   r6   r   ))r  r'   r'   r'   r'   r'   r'   r'   r   r   r'   r'   r'   r'   r'   r'   r'   r   r   r  )rM   rM   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<   r8   r  r   r%   r   r   ))r  r  r  r  r  r  r   c                "   t         j                  j                  ddd      }t        j                  |d      }t        |||d      }|j                  | k(  sJ t         j                  j                  j                  |||      }t        ||       y )NrX   r<   r<   r<   r   Tautomatic_rechunk
rg   r%  randnrj   r   r   r   r  r  r   )output_chunksr  r   r   rD  rp   rq   s          rr   !test_sliding_window_view_chunkingr  u  su    P ))//"b"
%C==\2D |TTRF==M)))vv##77\4PHfhrt   c                 "   t         j                  j                  ddd      } t        j                  | d      }t        |ddd      }|j                  dk(  sJ t         j                  j                  j                  | dd      }t        ||       y )	NrX   r  r   rA   r   Fr  )r  r<   r<   r  )rA   r  )r   rD  rp   rq   s       rr   $test_sliding_window_view_no_chunkingr    ss    
))//"b"
%C==\2D r1FF==>>>>vv##77RCHfhrt   c                     t        j                  dd      } d }| j                  |ddi      }t        |j                        }d t        fd	|j                         D              rJ |j                          y )
N)rA   r%   )r+   r%   r   c                    | S r   r   r   s    rr   dummyz2test_overlap_not_adding_empty_tasks.<locals>.dummy  s    rt   r   r   )r   c                    t        | t              xrC t        |       dk\  xr3 t        | d   t              xr | d   t        ddd       t        d       fk(  S )Nr'   r   r   )rv  r*  r   slice)r   s    rr   ri  z2test_overlap_not_adding_empty_tasks.<locals>.check  sY    q%  9A!91Q4'9 !q!T*E$K88		
rt   c              3  .   K   | ]  } |        y wr   r   )r  r   ri  s     rr   r  z6test_overlap_not_adding_empty_tasks.<locals>.<genexpr>  s     2582s   )rj   r  r   dictr   r  valuesrk   )r   r  rp   dskri  s       @rr   #test_overlap_not_adding_empty_tasksr    si    
((77
+C __U1f+_6F
v{{
C
 2SZZ\2222
NNrt   c                 b   t        j                  dd      } | j                  dk(  sJ | j                  dk(  sJ | j	                  d ddg	      }t        j                  t        j                  d      t        j                  d      d
z   g      }|j                  dk(  sJ t        ||dd       y )Nr#   r   r   )r#   )r  c                6    t        j                  | | dz   g      S )N      ?)rg   stackr   s    rr   r   z+test_map_overlap_new_axis.<locals>.<lambda>  s    rxxAG'= rt   r   r   )r   new_axisr  )r   r  F)check_shapecheck_chunks)rj   rh   r   r   r   rg   r  r   )r   r  rq   s      rr   test_map_overlap_new_axisr    s    
))Aa
 C99::%%%__=QRSQT_UFxx1ryy|c'9:;H==---- hEFrt   zxarray doesn't work yetc                 F   t        j                  d      } | j                  t        j                  j	                  dd      g d      }|j                  ddid	
      j                  d      }t        |j                  g      j                         }t        |      dk  sJ y )Nxarray)r   r+   r%   y   )r   r   r   r  r   )rm   r   r   year)dimsr  r,   T)dimcenter
window_dimis  )r   r  	DataArrayrj   r%  rolling	constructr   datar   r   )xrr   rp   dcs       rr   !test_overlap_not_blowing_up_graphr    s    			X	&B
,,
		@$  C [[fb\$[7AA,OF	fkk]	+	:	:	<Br7d??rt   )V
__future__r   r   
dask.arrayr   	dask.baser   r  r   rg   numpy.testingr   rl   rj   _array_expr_enableddask.array._array_expr._overlapr   r	   r
   r   r   r   r   r   r   r   dask.array.lib.stride_tricksdask.array.overlapr   dask.array.utilsr   r   marknormal_and_array_expr
pytestmarkrs   rz   r~   xfailr   r   r   r   r   r   r   r   r   r   r   parametrizer   r   r   r   r  r
  r  r,  r4  r9  r@  rG  rJ  rM  rP  rX  r\  r`  rf  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   rt   rr   <module>r     sQ   "  ! )   G   3 2    A   2[[..
;:J2&JR )2))+4MN: O:	!

	82?(D?
,^$ C )2))+4DE0 F0D	<+& )2))+4OP. Q.8 &5'&5,.	 !!!!	  ,# <</0,Y&
* )2))+MB2 C2  %OP Q"J 		8	
 
*+	,'	&	% 	!9: ! 
- '9$!'"	q1a&1b'"   
5
5 '#&N O&N  *G )2))+4MN	 O	rt   