
    bi              	         d dl mZ d dlZd dlZd dlZd dlmZ d dlm	Z	m
Z
 d dlmZ d dlmZ  ej                         d        Z ej                         d        Zej$                  j'                  dg d	g d
gddfg d	d dgg dgddfdgg ddggddfg dg dgddfg      d        Zej$                  j'                  dd      d        Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zy)$    )annotationsN)	assert_eqshuffle)_rechunk_other_dimensions)flattenc                 ~    t        j                  dd      j                  dd      j                  j	                         S )Nr            )nparangereshapeTcopy     X/home/cdr/jupyterlab/.venv/lib/python3.12/site-packages/dask/array/tests/test_shuffle.pyarrr      s/    99Q##Aq)++0022r   c                0    t        j                  | d      S )N)         r   chunks)da
from_array)r   s    r   darrr      s    ==%566r   zindexer, chunks, other_chunks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!   c                    |j                  |d      }| d d t        t        |            f   }t        ||       |j                  d   |k(  sJ |j                  d   |k(  sJ y )Nr   axisr   )r   listr   r   r   )r   r   indexerr   other_chunksresultexpecteds          r   test_shuffler.      sg     \\'\*F1d77+,,-Hfh==|+++==v%%%r   ztol, chunks))r   )r   r   r   )gffffff?r%   c                D   g dddgg dg}t         j                  j                  d|i      5  |j                  |d      }d d d        | d d g df   }t	        |       |j
                  d   |j
                  d   k(  sJ |j
                  d   |k(  sJ y # 1 sw Y   VxY w)	Nr    r   r   r$   zarray.chunk-size-tolerancer   r'   r   r!   r"   r   r   r   r   r#   )daskconfigsetr   r   r   )r   r   tolr   r*   r,   r-   s          r   test_shuffle_config_tolerancer5   (   s    1a&),G	6<	= /gA./1../Hfh==t{{1~---==v%%%/ /s   BBc                 n   t         j                  j                  dd      } t        j                  dd      }t        j                  j	                  |       |dd |dd |dd |dd  g}t        t        t
        |            }t        t        |            }t        t	        | |d	
      | d|d d f          y )N)   r7   r7   )r!   r!   r!   r   r   r7   r"   r
   	   r   r'   .)	r   randomr   r   r   r)   mapr   r   )r   r*   take_indexers      r   test_shuffle_larger_arrayr<   3   s    
))

<	

:Cii2GIIgq|WQq\71Q<EG3tW%&G()Lgc7+SlA1E-FGr   c                   t        j                  t        d      5  | j                  dd       d d d        t        j                  t        d      5  | j                  dgd       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nzindexer must be a list of listsmatchsr   r'   pytestraises
ValueErrorr   r   s    r   test_incompatible_indexerrF   =   ss    	z)J	K "Sq!" 
z)J	K "aSq!" "" "" "s   A1A=1A:=Bc                    t         j                  dfdf| _        t        j                  t
        d      5  | j                  dggd       d d d        y # 1 sw Y   y xY w)Nr   r   z-Shuffling only allowed with known chunk sizesr>   r'   )r   nan_chunksrB   rC   rD   r   rE   s    r   test_unknown_chunk_sizesrJ   E   sS    VVQK(DL	I
 $ 	qcU#$ $ $s   AAc                    t        j                  t        d      5  | j                  dggd       d d d        y # 1 sw Y   y xY w)Nzis out of boundsr>   r   r!   r'   rA   rE   s    r   test_oob_axisrL   M   s:    	z);	< $qcU#$ $ $	   ;Ac                    t        j                  t        d      5  | j                  dggd       d d d        y # 1 sw Y   y xY w)Nz$Indexer contains out of bounds indexr>      r   r'   )rB   rC   
IndexErrorr   rE   s    r   test_oob_indexerrQ   R   s:    	z)O	P %rdV!$% % %rM   c            	     J   t        j                  dd      } t        t        dd            t        t        dd            t        t        dd            t        t        dd            g}| j	                  |d	      }|j
                  | j
                  k(  sJ t        | |       y )
N)   d   ))2   rT   !   C   rT   r   r   rU         rS   r'   )r   onesr)   ranger   r1   r   )r   r*   r,   s      r   'test_shuffle_no_op_with_correct_indexerr\   W   s    
''*%=
>CU1b\U2s^U3_U3_	G [[q[)F;;#(("""c6r   c                    t         j                  j                  dd      } t        | ddd      }|j                  dk(  sJ t	        | |       t         j                  j                  dd	      } t        | ddd      }|j                  d
k(  sJ t	        | |       t        | ddd      }|j                  dk(  sJ t	        | |       t         j                  j                  dd      } t        | ddd      }|j                  dk(  sJ t	        | |       t         j                  j                  dd      } t        | ddd      }|j                  dk(  sJ t	        | |       t         j                  j                  dd      } t        | ddd      }|j                  dk(  sJ t	        | |       t         j                  j                  dd      } t        | ddd      }|j                  dk(  sJ t	        | |       t         j                  j                  dd      } t        | ddd      }|j                  dk(  sJ t	        | |       y )N)rS   rU   )-   rT   &   rW   
   r      r   auto)r_   rU   rU   r`   "   rV   ra   ra   ra   ra   ra   )rS   rU   rb   )r^   ra   ra   ))r_   rU   rU   r`   rW   rf   r!   r!   r!   r!   (   )rd   rf   rg   )rS   rU   r!   )r^   ra   r   ))         rk   rk   rk      rl   ri   rj   rj   rf   r   r   r   r   r   )r!   rU   r!   )r!   ra   )r   r   rT   ))r   r   r   r   rf   rm   i  )rm   rf   rm   rS   )r   r   r   r   )r   r   )r   rn   )r   r9   r   r   r   )r   r,   s     r   test_resize_other_dimensionsro   d   s&   
))

9-D

EC&sB6:F==AAAAc6
))

=1L

MC&sB6:F==GGGGc6&sB6:F==KKKKc6
))

<0J

KC&sB6:F==    
 c6
))

:o

>C&sCF;F==????c6
))

:o

>C&sD!V<F==;;;;c6
))

:o

>C&sCF;F==;;;;c6
))

9Y

7C&sAq&9F==2222c6r   c                    g dddgg dg}|j                  |d      }| d d g df   }t        ||       t        d t        |j                        j                         D              sJ y )	Nr    r   r   r$   r   r'   r0   c              3     K   | ]8  \  }}d |v r/|j                   d   d   j                  t        j                  k(   : yw)zshuffle-takerr   N)valuedtyper   uint8).0kvs      r   	<genexpr>z#test_dtype_taker.<locals>.<genexpr>   s?      Aqa 	

1rxx's   >A )r   r   alldictr1   items)r   r   r*   r,   r-   s        r   test_dtype_takerr|      so    1a&),G\\'\*F1../Hfh %++-   r   )
__future__r   numpyr   rB   r1   
dask.arrayarrayr   r   r   dask.array._shuffler   	dask.corer   fixturer   r   markparametrizer.   r5   r<   rF   rJ   rL   rQ   r\   ro   r|   r   r   r   <module>r      s   "     ) 9  3 3 7 7 #
_	%vv6
aVY	'8#!A3	'I>
o	.	B	&& (GH& I&H"$$
%

*Z	r   