
    >ie^h                    6   d dl mZ d dlZ ej        d           d dlZd dlmZmZ d dl	m
Z d dlmZ d dlmZmZmZmZmZmZmZmZmZ d dlmZm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)        *                    dg d          d             Z+d Z,d Z-d Z.d Z/d Z0d Z1ej)        *                    dd           d!             Z2d" Z3d# Z4d$ Z5ej)        *                    d%d d d&d'd d&d(d(d&d)d*d&g          d+             Z6d, Z7d- Z8ej)        *                    d.d/d0g          d1             Z9d2 Z:d3 Z;d4 Z<d5 Z=d6 Z>d7 Z?ej)        *                    dg d8          d9             Z@d: ZAd; ZBej)        *                    d<d=d=gd>d>gd?d@gdAdBgdCdDgdEdFgdGdHgdIdJgg          dK             ZCdL ZDej)        *                    dMdNdOdPdQdRdSdTdUdVdWdXdXdXgd dYgfg
          dZ             ZEej)        *                    d[g d\          d]             ZFdS )^    )annotationsNnumpy)assert_array_almost_equalassert_array_equal)sliding_window_view)	
boundariesconstantensure_minimum_chunksizenearestoverlapoverlap_internalperiodicreflecttrim_internal)	assert_eq	same_keysc                    t          j        d                              d          } t          j        | d          }t          |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          }t          ||           t          t          |ddd          |          sJ d S )N@      r      r   chunks      r   r   sync)	scheduler)   r!      r#   
r   r   r      r   r%   r   r#   r!      
r   	   
         r*   r+            
               r3   r4            
               r<   r=            
    !   "   #   $   rE   rF   %   &   '   
(   )   *   +   ,   rN   rO   -   .   /   
0   1   2   3   4   rW   rX   5   6   7   
8   9   :   ;   <   r`   ra   =   >   ?   )nparangereshapeda
from_arrayr   computer   arrayr   r   )xdgresultexpecteds        =lib/python3.11/site-packages/dask/array/tests/test_overlap.pytest_overlap_internalrr      s.   
	"f%%A
a'''AaLL))AYYY((F8'''''x***222444444444444444444444444444444	
 H" fh%aQ166:::::::    c                    t          j        d                              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 d S )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.   )	r0   r1   r2   r3   r3   r4   r5   r6   r7   )	r9   r:   r;   r<   r<   r=   r>   r?   r@   )	rB   rC   rD   rE   rE   rF   rG   rH   rI   )	rK   rL   rM   rN   rN   rO   rP   rQ   rR   )	rT   rU   rV   rW   rW   rX   rY   rZ   r[   )	r]   r^   r_   r`   r`   ra   rb   rc   rd   
re   rf   rg   rh   ri   r   r   rk   r   r   rl   rm   ro   rp   s       rq    test_overlap_internal_asymmetricry   7   s   
	"f%%A
a'''AaV!7!788F=,,,,,x'''...000000000000000000000000	
 H fh%aV)?)?@@&IIIIIIIrs   c                 Z   t          j        d                              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 d S )NrB   )r   r0   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   r1   r2   r3   r4   r3   r4   r5   r6   r7   r9   r7   r9   r:   r;   r<   r=   r<   r=   r>   r?   r@   rw   rx   s       rq   &test_overlap_internal_asymmetric_smallr}   P   s    
	"g&&A
a'''AaV!7!788F=00000xVVV  	
 H< fh%aV)?)?@@&IIIIIIIrs   c                 v    t          j        dd          } t          | dddd          }|j        d	k    sJ d S )
N)rK   ra   r)   r)   r   r   r   r   r   )axesboundary))r   r   r   r   )r!   r!   r!   r!   r!   r!   )rh   onesr   r   )rm   es     rq   test_trim_internalr   y   sJ    
***Aa!llY???A89999999rs   c                    t          j        d                              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                    d S )Nr   r   r   r   r   r   axisdepthr   r   )re   rf   rg   rh   ri   r   shaper   rl   rm   r   s      rq   test_periodicr      s    
	"f%%A
a'''A!$$$A71:a''''71:####a111gqQQQx   a111gqQQQx     rs   c                 :   t          j        d          } t          j        | d          }t	          |dd          }t          j        g d          }t          ||           t	          |dd          }t          j        g d	          }t          ||           d S )
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(   )re   rf   rh   ri   r   rk   r   rl   rm   r   rp   s       rq   test_reflectr          
	"A
a'''A###AxBBBCCHa###Ax<<<==Hars   c                 :   t          j        d          } t          j        | d          }t	          |dd          }t          j        g d          }t          ||           t	          |dd          }t          j        g d	          }t          ||           d S )
Nr)   r"   r   r   r   r   )r   r   r   r   r   r%   r   r#   r!   r&   r   r(   r(   r(   r   r   )re   rf   rh   ri   r   rk   r   r   s       rq   test_nearestr      r   rs   c                    t          j        d                              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             d S )Nr   r   r   r   r   r   r)   )r   r   valuer   r   r   dtyper   )
re   rf   rg   rh   ri   r	   r   r   r   r   r   s      rq   test_constantr      s    
	"f%%A
a'''A!2...A71:a''''71:####a111grwq00025666aAAAh111B677777rs   c                 >   t          j        d                              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          ||           d S )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)   r*   r+   r,   r-   r.   r   )
r7   r0   r1   r2   r3   r4   r5   r6   r7   r0   )
r@   r9   r:   r;   r<   r=   r>   r?   r@   r9   )
rI   rB   rC   rD   rE   rF   rG   rH   rI   rB   )
rR   rK   rL   rM   rN   rO   rP   rQ   rR   rK   )
r[   rT   rU   rV   rW   rX   rY   rZ   r[   rT   )
rd   r]   r^   r_   r`   ra   rb   rc   rd   r]   )re   rf   rg   rh   ri   r   rk   r   r   s       rq   test_boundariesr      s    
	"f%%A
a'''A1!llj$9$9::Ax*********111444444444444444444******	
 H  ars   c                    t          j        d                              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          }d t          |          D             }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          }d! t          |          D             }t          ||ddd
          }t          ||           |j        d k    sJ d S )"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-   r.   r.   )r0   r0   r1   r2   r3   r4   r3   r4   r5   r6   r7   r7   )r9   r9   r:   r;   r<   r=   r<   r=   r>   r?   r@   r@   )rB   rB   rC   rD   rE   rF   rE   rF   rG   rH   rI   rI   )rK   rK   rL   rM   rN   rO   rN   rO   rP   rQ   rR   rR   )rT   rT   rU   rV   rW   rX   rW   rX   rY   rZ   r[   r[   )r]   r]   r^   r_   r`   ra   r`   ra   rb   rc   rd   rd   c                    i | ]\  }}||	S  r   .0kvs      rq   
<dictcomp>z test_overlap.<locals>.<dictcomp>       3331q!333rs   none)
r   r   r   r   r   r   r   r   r   r   r$   r'   r/   r8   rA   rJ   rS   r\   )r   r"   c                    i | ]\  }}||	S r   r   r   s      rq   r   z test_overlap.<locals>.<dictcomp>  r   rs   )re   rf   rg   rh   ri   r   r   rk   r   r   uint16	enumerate)rl   rm   rn   rp   u_depths        rq   test_overlapr      sU   
	"f%%A
a'''AQ1CI0F0FGGGA8'''''xHHHHHH000999<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<HHHHHH!	
 H( aQQ1CI@V@VWWWXXXXXiAG33	' 2 2333Gsy+A+ABBBA8'''''aQQ1CI@V@VWWWXXXXXQ1CF0C0CDDDAx>>>>>>***222444444444444444444444444444444>>>>>>!	
 H( a8'''''iAG33	' 2 2333Gsv+>+>???Aa8'''''''rs   c                 \   t          j        dd          } t           j                            | ddd           |                     d ddd           t	          j        t                    5  t           j                            | ddd	           d d d            n# 1 swxY w Y   t	          j        t                    5  |                     d
 ddd	           d d d            n# 1 swxY w Y   t          j        dd          } t           j                            | ddd	           d S )Nr!   r#   r   r   r   T)allow_rechunkc                    | S Nr   rl   s    rq   <lambda>z2test_overlap_allow_rechunk_kwarg.<locals>.<lambda>  s    a rs   Fc                    | S r   r   r   s    rq   r   z2test_overlap_allow_rechunk_kwarg.<locals>.<lambda>  s    ! rs   r   )rh   rf   r   map_overlappytestraises
ValueErrorarrs    rq    test_overlap_allow_rechunk_kwargr     s   
)Aa
 
 
 CJsAy===OOKKITOBBB	z	"	" C C

39EBBBC C C C C C C C C C C C C C C	z	"	" H HQ	GGGH H H H H H H H H H H H H H H )Aa
 
 
 CJsAy>>>>>s$   -$BB!$B!C((C,/C,c                     t          j        dd          } t          j        t                    5  |                     d ddid| j                   d d d            d S # 1 swxY w Y   d S )	Nr)   r#   r   c                &    | t          |           z   S r   lenr   s    rq   r   z<test_asymmetric_overlap_boundary_exception.<locals>.<lambda>  s    a#a&&j rs   r   )r   r   r   r   r   r   )rh   rf   r   r   NotImplementedErrorr   r   r   s    rq   *test_asymmetric_overlap_boundary_exceptionr     s    
	"QA	*	+	+ 
 
	  Fiqw 	 	
 	
 	

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
s   "AA#&A#c                 R   t          j        dd          } |                     d d| j        d          }t	          |t          j        d          dz   dz   dz              t          j        dd          } |                     d t          j        d          | j        d          }t          d	 |j        D                       sJ t	          |t          j        d          dz   dz   dz              t          j	        d
d          } |                     d ddid          }|j
        d         | j
        d         k    sJ t          j        d                              d          } t          j        | d          }|                    d d|j        d          }|                    d dddddd|j                  }|                    d ddiddi|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                     d S )Nr)   r#   r   c                &    | t          |           z   S r   r   r   s    rq   r   z"test_map_overlap.<locals>.<lambda>%  s    CFF
 rs   r   r   )r   r   r   c                &    | t          |           z   S r   r   r   s    rq   r   z"test_map_overlap.<locals>.<lambda>*  s    !c!ff* rs   c                :    g | ]}t          |          t          u S r   )typeint)r   ss     rq   
<listcomp>z$test_map_overlap.<locals>.<listcomp>,  s"    222QaC222rs   r   )r%   r   c                    | S r   r   r   s    rq   r   z"test_map_overlap.<locals>.<lambda>0       rs   r   r   r   r0   r   r   r   c                    | | j         z   S r   sizer   s    rq   r   z"test_map_overlap.<locals>.<lambda>6      !af* rs   c                    | | j         z   S r   r   r   s    rq   r   z"test_map_overlap.<locals>.<lambda>9  r   rs   r   r   r   c                    | | j         z   S r   r   r   s    rq   r   z"test_map_overlap.<locals>.<lambda>?  r   rs   c                    | | j         z   S r   r   r   s    rq   r   z"test_map_overlap.<locals>.<lambda>B  r   rs   rv   r+   r   r   r!   )rh   rf   r   r   r   re   int64allr   r   r   rg   ri   block)rl   yzrm   exp1exp2exp3exp4s           rq   test_map_overlapr   #  s   
	"QA	**!17YWWAa2"Q&*+++
	"QA	BHQKKqw 	 	 	A 22!'22233333a2"Q&*+++
(((A	kk!Q)DDA8A;!(1+%%%%
	"f%%A
a'''A==AQWy   D ==ll6**g	   D ==QFa^17   D ==&k''g	   D dAFdAFdAE
!QqSkAoq1ac{Q/!AaC1H+/1QqS!A#X;QR?1ST	
 	
    rs   c                     t          j        dd          } |                     d dd          }t          |j                  d| j        d         z  k    sJ t          |t          j        d          d	z              d S )
Nr)   r#   r   c                    | dz   S Nr   r   r   s    rq   r   zKtest_map_overlap_escapes_to_map_blocks_when_depth_is_zero.<locals>.<lambda>T  s
    A rs   r   r   r   r   r   )rh   rf   r   r   dask	numblocksr   re   rl   r   s     rq   9test_map_overlap_escapes_to_map_blocks_when_depth_is_zeror   R  sv    
	"QA	ooQ@@Aqv;;!ak!n,,,,,a2"#####rs   r   )Nr   r   r   r   r   c                    t          j        dd          }|                    d d| |j                  }t	          ||           d S )Nr)   r#   r   c                    | S r   r   )is    rq   r   z+test_map_overlap_no_depth.<locals>.<lambda>^  r   rs   r   r   )rh   rf   r   r   r   )r   rl   r   s      rq   test_map_overlap_no_depthr   Y  sF     		"QA	kkXQWMMAaOOOOOrs   c                 0   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                              dd                              d          }t          j        d | |dd          }|j        dk    sJ |j        dk    sJ t          |dt	          j        d          t          j	                 z             d S )Nr)   r#   r   c                    | |z   S r   r   r   s     rq   r   z-test_map_overlap_multiarray.<locals>.<lambda>f  
    AE rs   r   r   r   r   )r   r%   r#   )r#   r%   r   c                    | |z   S r   r   r   s     rq   r   z-test_map_overlap_multiarray.<locals>.<lambda>l  r   rs   ))r   r%   r%   r   r)   r   r   r   c                    | |z   S r   r   r   s     rq   r   z-test_map_overlap_multiarray.<locals>.<lambda>s  r   rs   )r   )r   r   c                    | |z   S r   r   r   s     rq   r   z-test_map_overlap_multiarray.<locals>.<lambda>z  r   rs   )r   r   r   r)   )
rh   rf   r   r   re   r   rg   rechunkr   newaxisrl   r   r   s      rq   test_map_overlap_multiarrayr   b  s   
	"QA
	"QA
))1aq6JJJAaRYr]]"### 		"Y'''A
	"Y'''A
))1aq6JJJA8&&&&aRYr]]"### 		"U###A
	"Y'''A
))1aq6JJJA8|####aRYr]]"### 		"U###A
	"a$$,,^<<A
))1aq6JJJA8(((((7gaRYr]]2:../////rs   c                     t          j        dd          } t          j        dd          }t          j        d | |d          }t          |j        d           t          |                                d	           d S )
Nr   r)   r   r   r#   c                    | |z   S r   r   r   s     rq   r   z6test_map_overlap_multiarray_defaults.<locals>.<lambda>  r   rs   r   r   g      4@rh   r   r   r   r   sumr   s      rq   $test_map_overlap_multiarray_defaultsr     sx     	b!!!A
"""A
))1a&AAAAagwaeeggtrs   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            d S # 1 swxY w Y   d S )Nr#   r   r   c           	     `    t          j        d | ddd                                          S )Nc                T    |                                  |                                 z   S r   )r   r   s     rq   r   zKtest_map_overlap_multiarray_different_depths.<locals>.run.<locals>.<lambda>  s    15577* rs   r   Fr   )r   r   trimr   )rh   r   rj   )r   rl   r   s    rq   runz9test_map_overlap_multiarray_different_depths.<locals>.run  s?    ~**
 
 
 '))	rs   r   r)   r   r+   r-   r   r0   r4   r?   r!   )rh   r   r   r   r   )r  rl   r   s    @@rq   ,test_map_overlap_multiarray_different_depthsr    s   
A
A	 	 	 	 	 	 31v;;"31v;;"31v;;"31v;;"31v;;"31v;;" 
z	"	"  QF                 s    CC"Cc                    t          j        dd          } t          j        dd          }t          j        t                    5  t          j        d | |dd                                           d d d            d S # 1 swxY w Y   d S )	Nr)   r   r   r"   c                    | |z   S r   r   r   s     rq   r   zHtest_map_overlap_multiarray_uneven_numblocks_exception.<locals>.<lambda>  s
    Q rs   Fr   )align_arraysr   )rh   rf   r   r   r   r   rj   r   s     rq   6test_map_overlap_multiarray_uneven_numblocks_exceptionr    s    
	"U###A
	"V$$$A	z	"	"  
156	
 	
 	

')))	                 s   -B  BBc            	        d } t          j        dd          }t          j        dd          }t          j        | ||ddd	d
          }t          ||           |j        dk    sJ t          |                                d           d S )Nc                N    | j         |j         z   }t          j        d          |z  S Nr%   r%   )r   re   r   r   s      rq   funcz9test_map_overlap_multiarray_block_broadcast.<locals>.func  s"    FQVOwv""rs   r+   r+   r   )r0   r+   )r   r!   r  r   Tr   )r   r   r  r   r   g      v@r   )r  rl   r   r   s       rq   +test_map_overlap_multiarray_block_broadcastr    s    # # # 	b!!!A
(((A
a6		 	 	A aOOO7faeegg)*****rs   c            	     ^   t          j        dd          t          j        dd          t          j        dd          g} d }t          j        |g| R d	d
dd
dgdd}t          d | D                       }|j        dk    sJ t          |                                |k              sJ d S )N)r+   r   r   )r  r   r   r   )r+   r   r   ))r   r   r   r   )r+   r   r   ))r   r   r   r   c                 Z    t          j        t          d | D                       g          S )Nc              3  $   K   | ]}|j         V  d S r   r   r   rl   s     rq   	<genexpr>zEtest_map_overlap_multiarray_variadic.<locals>.func.<locals>.<genexpr>  s$      22QV222222rs   re   rk   r   )argss    rq   r  z2test_map_overlap_multiarray_variadic.<locals>.func  s,    x22T222223444rs   r   r   Fr   r   )r   r   r  	drop_axisr   c              3  ^   K   | ](}t          j        |d d         dd          j        V  )d S )Nr   r   r	   )mode)re   padr   r  s     rq   r  z7test_map_overlap_multiarray_variadic.<locals>.<genexpr>  s>      LLA"1"qz:::?LLLLLLrs   r%   )rh   r   r   r   r   r   rj   )xsr  rl   size_per_slices       rq   $test_map_overlap_multiarray_variadicr    s     	
=111

>222

>222	
B5 5 5 				 	 a&	 	 	A LLLLLLLN7d????qyy{{n,-------rs   r  )r   r   r|   r   r   r   ru   r   ))r   )r   )r  r   )r   r   )r   r  r   c                    t           j                                                            dd           fd} |          }d}d}t	          j                   r fn fdD             t          fdt          |          D                       }t          j        ||| t          	          
                                }t          ||           d S )
N)r#   r)   r   )r   r#   r   r   c                0    |                                S )N)r   )mean)rl   r  s    rq   _meanzItest_map_overlap_trim_using_drop_axis_and_different_depths.<locals>._mean  s    vv9v%%%rs   )r   r   r   )r   r%   r   c                $    g | ]}|j         z  S r   )ndim)r   rm   rl   s     rq   r   zNtest_map_overlap_trim_using_drop_axis_and_different_depths.<locals>.<listcomp>  s    111!af*111rs   c              3  .   K   | ]\  }}|v rd n|V  dS r   Nr   )r   r   rm   
_drop_axiss      rq   r  zMtest_map_overlap_trim_using_drop_axis_and_different_depths.<locals>.<genexpr>  s3      KK$!QqJ!!AKKKKKKrs   )r   r   r  r   )rh   randomdefault_rngstandard_normalre   isscalartupler   r   floatrj   r   )r  r#  rp   r   r   r   r(  rl   s   `     @@rq   :test_map_overlap_trim_using_drop_axis_and_different_depthsr/    s   ( 		//
9/MMA& & & & & uQxxH )HE!#Y!7!7F)YJ1111j111JKKKK)E:J:JKKKKKE
qIU	 	 	gii  h*****rs   c                     t          j        dd          } |                     d          }d }t          j        || ddd	          }|j        dk    sJ t          j        ||ddd	          }|j        dk    sJ d S )
Nr   r"   r   r)   c                    | dd         S )Nr   r   r   r   s    rq   oversumzTtest_map_overlap_assumes_shape_matches_first_array_if_trim_is_false.<locals>.oversum  s    2wrs   r   Fr   )r   r  r   )rh   r   r   r   r   )x1x2r2  z1z2s        rq   Ctest_map_overlap_assumes_shape_matches_first_array_if_trim_is_falser7    s    	v	&	&	&B	BB   
156	J	J	JB8u	156	J	J	JB8urs   c                    d } t          j        d          }t          j        t                    5  t          j        || ddd          }|                                dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j        || ddd          }|                                dk    sJ |j        dk    sJ 	 d d d            n# 1 swxY w Y   t          j        t                    5  t          j        || ddd	          }|                                dk    sJ |j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )
Nc                N    t          j        |                                           S r   r  r   s    rq   r  z3test_map_overlap_deprecated_signature.<locals>.func   s    x   rs   r%   r   r   Tr  r   r#   F)rh   r   r   warnsFutureWarningr   rj   r   )r  rl   r   s      rq   %test_map_overlap_deprecated_signaturer<    s'   ! ! ! 	

A 
m	$	$  N1dAy$77yy{{aw$              
 
m	$	$  N1dAy$77yy{{aw$              
 
m	$	$  N1dAy%88yy{{aw$                 s8   A A>>BB"A C//C36C3A E!!E%(E%c                 ,   t          j        d                              dd                              t                    } t          j        | d          }t          |dddddd          }t          |dddd	          }t          ||            d S )
N   r+   r    r   r#   r   r   r   r   )
re   rf   rg   astyper.  rh   ri   r   r   r   )adarrgarrtarrs       rq   test_nearest_overlaprD  6  s    
	#r2&&--e44A=6***D41||)	6R6RSSSD1||i@@@DdA&&&&&rs   r   r   r   r#   r   r&   c                "   t          j        d                              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          ||           d S )Nr   r)   )r#   r   r   r   r   r   r   rM   r   )re   rf   rg   rh   ri   r   r   r   )r   rp   rA  	reflectedr   r   r	   ro   s           rq   /test_different_depths_and_boundary_combinationsrG  ?  s    y~~%%b"--H=&111DEI>>>Id%)<<<Gt5:>>>Ht52666H9ei@@@Fvx(((7EI>>>Fvx(((8UZ@@@Fvx(((8UR888Fvx(((((rs   c                     t          j        d                              dd          } t          j        | d          }t          |dd          }| j        |j        k    sJ d S )Nr2   r   r(   )r|   r   r   r   r%   r   r   r   )re   rf   rg   rh   ri   r   r   )r@  rA  rn   s      rq   test_one_chunk_along_axisrJ  ^  se    
	%  A&&A=#7888DA***A7agrs   c                     t          j        d                              dd          } t          j        | d          }t          |dddddd          }|j        |j        k    sJ d S )Nr(   r   )r   rI  r   r   r   )re   rf   rg   rh   ri   r   r   )r@  rA  bs      rq   test_constant_boundariesrM  e  sn    
	%  A&&A=#7888D4Q11||44A8t{""""""rs   r   )r#   r#   r   rN  ))r%   r%   r%   r%   )r*   r   c                R   t          j        d                              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 d S )Nr>  r+   r   r   r   r   r   r   c              3  6   K   | ]}|d          dz  k    V  dS )r   r   Nr   r   cr   s     rq   r  zItest_depth_greater_than_smallest_chunk_combines_chunks.<locals>.<genexpr>z  0      ;;QqE!HqL ;;;;;;rs   r   c              3  6   K   | ]}|d          dz  k    V  dS )r   r   Nr   rQ  s     rq   r  zItest_depth_greater_than_smallest_chunk_combines_chunks.<locals>.<genexpr>{  rS  rs   )re   rf   rg   rh   ri   r   r   r   )r   r@  rA  outputr   s       @rq   6test_depth_greater_than_smallest_chunk_combines_chunksrV  l  s     		#r2&&A=6***DaLLET333F;;;;&-*:;;;;;;;;;;;;&-*:;;;;;;;;;;rs   c                    t          j        d                              dd          } t          j        | d          }ddd}t          j        t          d	          5  t          ||d
           d d d            d S # 1 swxY w Y   d S )Nr>  r+   )r%   r#   r   r,   r   r   zThe overlapping depthmatchr   r   )	re   rf   rg   rh   ri   r   r   r   r   )r@  rA  r   s      rq   test_depth_greater_than_dimrZ  ~  s    
	#r2&&A=6***DqMME	z)@	A	A	A / /EA..../ / / / / / / / / / / / / / / / / /s   A??BBc                    t          j        t          j        d                              dd          d          } t          | dddd          }t          j        g d	g d
g dg dg          }t          ||           d S )Nr0   r   r   r   r   r   rC   r   )rC   rC   r   r   r   r%   rC   rC   )rC   rC   r   r#   r!   r&   rC   rC   )rC   rC   r   r(   r)   r*   rC   rC   )rC   rC   r+   r,   r-   r.   rC   rC   )rh   ri   re   rf   rg   r   rk   r   )rl   express      rq   test_none_boundariesr^    s    
bimm++Aq11&AAAA
Qv"--
.
.C
(((((((***,,,		
 C c3rs   c                     t          j        dd          } |                     d dd          }t          |j                  dk     sJ |                     d	 dd          }t          |j                  d
k     sJ d S )Nr   r"   r   c                    | S r   r   r   s    rq   r   z$test_overlap_small.<locals>.<lambda>  r   rs   r   r   r      c                    | S r   r   r   s    rq   r   z$test_overlap_small.<locals>.<lambda>  r   rs   r   rh   r   r   r   r   r   s     rq   test_overlap_smallrd    s    
(((A	kkV<<Aqv;;	kkV<<Aqv;;rs   c                 z   t           j                            d          } |                     dd          d fdt          j                  D             }t          |d         j                  t          |d         j                  z  t          j                  k    sJ t          j        |dd	i d S )
Nr   )r(   r(   r  r   c                     | j         dk    sJ | S r
  )r   r   s    rq   checkz8test_no_shared_keys_with_different_depths.<locals>.check  s    w&    rs   c           
         g | ]Y                     d  j        fdt          j                  D             d                              j                  ZS )c                    | dz   S r   r   )r@  s    rq   r   zFtest_no_shared_keys_with_different_depths.<locals>.<listcomp>.<lambda>  s
    a!e rs   c                8    i | ]}|t          |k              S r   )r   )r   jr   s     rq   r   zHtest_no_shared_keys_with_different_depths.<locals>.<listcomp>.<dictcomp>  s%    999a1c!q&kk999rs   r   )r   r   r   r   )r   r   ranger%  
map_blocks)r   r   r@  rg  s    @rq   r   z=test_no_shared_keys_with_different_depths.<locals>.<listcomp>  s     	 	 	  	
O'99995==999	 	 	
 	

 *U!'*
*
*	 	 	rs   r   r   zsingle-threaded)rh   r)  r*  rl  r%  setr   rj   )rngrr@  rg  s     @@rq   )test_no_shared_keys_with_different_depthsrq    s    
)


"
"C

6&
))A  	 	 	 	 	 qv	 	 	A qty>>C!	NN*c!&kk9999J/./////rs   c                    t          j        dd          } |                     d ddid          }t          | |           t	          d	 |j        D                       sJ t          d
 |j        D                       sJ |                     d ddid          }t          | |           t          d |j        D                       sJ t	          d |j        D                       sJ |                     d dddd          }t          | |           t	          d |j        D                       sJ t	          d |j        D                       sJ d S )N)r4   r4   r   r   c                    | S r   r   r   s    rq   r   z3test_overlap_few_dimensions_small.<locals>.<lambda>  r   rs   r   r   r   r   c              3  L   K   | ]}t          |d          t                    V   dS r   N
isinstancer.  r   r   s     rq   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  0      771z!A$&&777777rs   c              3  L   K   | ]}t          |d          t                    V   dS r   Nrw  r   rx  s     rq   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  0      55z!A$$$555555rs   c                    | S r   r   r   s    rq   r   z3test_overlap_few_dimensions_small.<locals>.<lambda>  r   rs   c              3  L   K   | ]}t          |d          t                    V   dS ru  r|  rx  s     rq   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  r}  rs   c              3  L   K   | ]}t          |d          t                    V   dS r{  rv  rx  s     rq   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  ry  rs   c                    | S r   r   r   s    rq   r   z3test_overlap_few_dimensions_small.<locals>.<lambda>  r   rs   r   c              3  L   K   | ]}t          |d          t                    V   dS ru  rv  rx  s     rq   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  ry  rs   c              3  L   K   | ]}t          |d          t                    V   dS r{  rv  rx  s     rq   r  z4test_overlap_few_dimensions_small.<locals>.<genexpr>  ry  rs   )rh   r   r   r   anyr   r   rl   r@  rL  rR  s       rq   !test_overlap_few_dimensions_smallr    sz   
***A	kk!Q&AAAaOOO777777777755af55555555	kk!Q&AAAaOOO55af555555557777777777	kkQ1GGAaOOO7777777777777777777777rs   c                    t          j        dd          } |                     d ddid          }|                     d	 ddid          }|                     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 d S )N)r   r   r   r   c                    | S r   r   r   s    rq   r   z-test_overlap_few_dimensions.<locals>.<lambda>  r   rs   r   r   r   r   c                    | S r   r   r   s    rq   r   z-test_overlap_few_dimensions.<locals>.<lambda>  r   rs   c                    | S r   r   r   s    rq   r   z-test_overlap_few_dimensions.<locals>.<lambda>  r   rs   r   r)   rc  r  s       rq   test_overlap_few_dimensionsr    s    

8,,,A	kk!Q&AAA	kk!Q&AAA	kkQ1GGAqv;;#af++%%%%qv;;QV$$$$qv;;c!&kk)))))))rs   )r   r   r   r   c                   t          j        t          j        d                              dd          d          }t           j                            |dd| d	          }t           j                            |dd| d	          }t          j        ||k              sJ t           j                            |dd
| i	          }t           j                            |dd
| i	          }t          j        ||k              sJ t           j                            |d| 	          }t           j                            |d| 	          }t          j        ||k              sJ d S )Nr9   r   r!   )r   r%   r   r   r   r   r   r   )rh   ri   re   rf   rg   r   trim_overlapr   )r   rl   x_overlaped	x_trimmeds       rq   test_trim_boundaryr    sK   
bimm++Aq11&AAAA*$$Q	h4O4O$PPK
''QY8!<!< (  I 6!y.!!!!!*$$QQM$BBK
''Q!X'OOI6!y.!!!!!*$$QH$==K
''Q'JJI6!y.!!!!!!!rs   c                     t          j        d          } t          j        | d          }|                    d dd          }t          d |j        d         D                       sJ t          ||            d S )	Nr*   r#   r   c                    | S r   r   r   s    rq   r   z;test_map_overlap_rechunks_array_if_needed.<locals>.<lambda>  r   rs   r   r   r   c              3  "   K   | ]
}|d k    V  dS r{  r   r   rR  s     rq   r  z<test_map_overlap_rechunks_array_if_needed.<locals>.<genexpr>  s&      ++!qAv++++++rs   )re   rf   rh   ri   r   r   r   r   )rp   rl   r   s      rq   )test_map_overlap_rechunks_array_if_neededr    s{    y}}H
hq)))A	kkQ77A++qx{++++++++ars   c                     t           j                                                            dd          } |                     d dd          }t	          d |j        D                       sJ d S )	N)i\     r  )r   r  r  r   c                    | S r   r   r   s    rq   r   zOtest_map_overlap_rechunks_array_along_multiple_dims_if_needed.<locals>.<lambda>  s    C rs   )r   r   r   r   r   c              3  H   K   | ]}t          d  |D                       V  dS )c              3  "   K   | ]
}|d k    V  dS r{  r   r  s     rq   r  zZtest_map_overlap_rechunks_array_along_multiple_dims_if_needed.<locals>.<genexpr>.<genexpr>  s&      **a16******rs   N)r   )r   r   s     rq   r  zPtest_map_overlap_rechunks_array_along_multiple_dims_if_needed.<locals>.<genexpr>  s9      IIvs**6*****IIIIIIrs   )rh   r)  r*  r   r   r   )randfiltereds     rq   =test_map_overlap_rechunks_array_along_multiple_dims_if_neededr    s{    9  ""))*;O)TTD    H
 IIIIIIIIIIIIrs   zchunks,expectedr   r   )r)   r)   r   )r)   r*   )r4   r4   r4   r   )r4   r4   r*   r)   )r4   r4   r)   r   )r4   r4   r*   )r   r4   r   r4   )r-   r)   r4   )r   r   r   r   r&   )r*   )r4   r4   r   r4   r4   r   )r4   r+   r)   r4   r+   r)   c                6    t          d|           }||k    sJ d S )Nr)   )r
   )r   rp   actuals      rq   test_ensure_minimum_chunksizer    s*    " &b&11FXrs   c                     d} t          j        t          d          5  t          d|            d d d            d S # 1 swxY w Y   d S )N)r#   r   r   r   z#overlapping depth 10 is larger thanrX  r)   )r   r   r   r
   r   s    rq   *test_ensure_minimum_chunksize_raises_errorr    s    F	z)N	O	O	O - - V,,,- - - - - - - - - - - - - - - - - -s   <A A z!shape, chunks, window_shape, axis))r!   r&   r   )r!   )r   r   r   r   r   )r%   r   r  ))rK   r?   r   r#   r  r   ))r5   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                R   t          j        t          j        t          j        |                                         |           |          }t          |||          }t          j        j                            |	                                ||          }t          ||           d S )Nr   )rh   ri   re   rf   prodrg   r   libstride_tricksrj   r   )r   r   window_shaper   r   r  rp   s          rq   test_sliding_window_viewr    s      -	"'%..1199%@@
P
P
PC lD99Fv#77|T H hrs   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            d S # 1 swxY w Y   d S )N)r   r%   )rh   zerosr   r   r   r   )r  r   r   s      rq   test_sliding_window_errorsr  .  s     (6

C	z	"	" 5 5Ct4445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   AAA)G
__future__r   r   importorskipr   re   numpy.testingr   r   
dask.arrayrk   rh   dask.array.lib.stride_tricksr   dask.array.overlapr   r	   r
   r   r   r   r   r   r   dask.array.utilsr   r   rr   ry   r}   r   r   r   r   r   r   r   r   r   r   r   markparametrizer   r   r   r  r  r  r  r/  r7  r<  rD  rG  rJ  rM  rV  rZ  r^  rd  rq  r  r  r  r  r  r  r  r  r  r   rs   rq   <module>r     s   " " " " " "   G        G G G G G G G G       < < < < < <
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 2 1 1 1 1 1 1 1; ; ;:J J J2&J &J &JR: : :	! 	! 	!
 
 

 
 
	8 	8 	8  2?( ?( ?(D? ? ?
 
 
, , ,^$ $ $ CCC   0 0 0D	 	 	  <  + + +&. . .8  &+ +' &+,    .' ' ' !!!!	 ) ) ),  # # #  < < </ / /    0 0 0,8 8 8&
* 
* 
* %O%O%OPP" " QP""  J J J 		8	
 
*+	,'	&	% 	!9:   !  
- - - '9$!'"	q1a&1b'"         
 
5 5
 
5 5 5rs   