U
    /eU                     @   s   d dl Zd dlZd dlmZ d dlmZmZm	Z	 d dl
mZ ejdddddd	d
ddddddddddgdd Zdd Zdd Zdd Zejdddd d!d"d#d$gd%d& Zejd'd(gd)d* Zejdd+d,d-d.d/d0gd1d2 ZdS )3    N)contract_tupleexpand_tuplereshape_rechunk)	assert_eqz-inshape,outshape,prechunks,inchunks,outchunks)   r      r
   r   r   )r   r	   r   r      r   r
   )r   r   r   r   r   r	   r   )r   r   r   r   r   r   r	   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   r	   r   r	   r   r	   r	   )r   r   r   r   r   )r	   r   r   r   r   )r   )r	   r   r   r   r   )r	   r   )r   r   r   r   )@   r   r   r   ))   r   r   r   r   r   r   r   )   r   r   r   )r   r   r   r   r   r   )r   r   )    r!   r    )r	   r   r   )r   r   )r   0   r"   )r      r   r   )r   r   ))   ,   r"   r$   ))r   r   )r   r   r   r   r	   r(   )r
   r
   r
   r
   )r   r	   c                 C   sX   t | ||\}}||kst||ks(ttttt|tttt|ksTtd S )N)r   AssertionErrornpprodlistmaplen)inshapeoutshapeZ	prechunksinchunks	outchunksZ	result_inZ
result_out r4   A/tmp/pip-unpacked-wheel-dbjnr7gq/dask/array/tests/test_reshape.pytest_reshape_rechunk	   s    (r6   c                   C   sL   t dddkstt dddks$tt dddks6tt ddd	ksHtd S )
N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*   r4   r4   r4   r5   test_expand_tuple7   s    r9   c                   C   sL   t dddkstt dddks$tt dddks6tt dddksHtd S )	N)r   r   r
   r%   r   r
   r)   )r   r   r
      r   )r
   r
   r   r
   r7   r%   )   )r   r*   r4   r4   r4   r5   test_contract_tuple>   s    r<   c               	   C   s   t jd} tj| dd}| d}|d}|jdks<tt|| t	t
 | d W 5 Q R X t	t
 |d W 5 Q R X d S )N)
   r;   r;   )r:   r
   r%   chunks)<   )r@   r;   )r@   rA   rA   )r+   randomda
from_arrayreshapeshaper*   r   pytestZraises
ValueError)aAZa2A2r4   r4   r5   test_reshape_unknown_sizesE   s    


rL   z&inshape, inchunks, outshape, outchunks)r
   r%   r   r   r   r
   r	   r;   r   )r   r
   r   r
   r	   )r   r
   r%   r   )r   r   rO   r	   rP   rQ   )r
   r
   r%   r   r   r   rO   r	      r   )r   r
   r   r
   r   r
   r   r
   r	   )rS   rT   r   r%   r   )r   rO   r	   )rS   )r   r   rO   r   rX   r	   rO   r   )rM   )r   r   r   r   r	      ))r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   r
   )rM   )r   rZ   r   )r
   rV   )r   r   c           	      C   sz   t t | | }tj||d}t|j||\}}||ksBt||ksNt||}|j	|ksftt
||| d S Nr>   r+   aranger,   rE   rC   rD   r   rF   r*   r?   r   )	r0   r2   r1   r3   baserI   	inchunks2
outchunks2resultr4   r4   r5   !test_reshape_all_chunked_no_mergeU   s    "
rd   z9inshape, inchunks, expected_inchunks, outshape, outchunks)rM   rN   )r   )r%   r   r[   ))rV   rV   c           
      C   sz   t t | | }tj||d}t|j||\}}||ksBt||ksNt||}	|	j	|ksftt
|	|| d S r]   r^   )
r0   r2   Zexpected_inchunksr1   r3   r`   rI   ra   rb   rc   r4   r4   r5   "test_reshape_all_not_chunked_merge   s    

re   )rM   )r   rO   r	   rP   rQ   )rR   )r   r   rO   r	   rP   rQ   )rS   )r   r   rO   r	   rU   rW   )rS   )r   r   rO   r	   rU   rW   )rS   )r   r   rO   r	   rU   rW   )rS   )r   r   rO   r   rX   rY   c                 C   sj   t t | | }tj||d}|j|dd}|j|ks@tt||| |j||jksftd S )Nr>   F)Zmerge_chunks)	r+   r_   r,   rE   rC   rD   r?   r*   r   )r0   r2   r1   r3   r`   rI   rc   r4   r4   r5   test_reshape_merge_chunks   s    *rf   )Znumpyr+   rG   Z
dask.arrayarrayrC   Zdask.array.reshaper   r   r   Zdask.array.utilsr   markZparametrizer6   r9   r<   rL   rd   re   rf   r4   r4   r4   r5   <module>   sr   '


&