U
    SA{iAY  ã                   @   sB  d dl Zd dlmZ d dlmZmZmZmZm	Z	m
Z
 d dlmZmZmZmZmZmZ d dlZdd„ Zdd„ Zd8d
d„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Z d"d#„ Z!d$d%„ Z"d&d'„ Z#G d(d)„ d)ƒZ$d*d+„ Z%G d,d-„ d-ej&ƒZ'G d.d/„ d/e'ƒZ(d0d1„ Z)d2d3„ Z*d4d5„ Z+d6d7„ Z,dS )9é    N©Úrational)Úassert_equalÚassert_array_equalÚassert_raisesÚassert_Úassert_raises_regexÚassert_warns)Ú
as_stridedÚbroadcast_arraysÚ_broadcast_shapeÚbroadcast_toÚbroadcast_shapesÚsliding_window_viewc                 C   s@   dd„ | D ƒ}t |Ž }dd„ |D ƒ}|gt|ƒ }t||ƒ d S )Nc                 S   s   g | ]}t  |¡‘qS © ©ÚnpÚzeros©Ú.0Úsr   r   úF/tmp/pip-unpacked-wheel-m6chaliv/numpy/lib/tests/test_stride_tricks.pyÚ
<listcomp>   s     z)assert_shapes_correct.<locals>.<listcomp>c                 S   s   g | ]
}|j ‘qS r   )Úshape)r   Úar   r   r   r      s     )r   Úlenr   )Úinput_shapesÚexpected_shapeÚinarraysZ	outarraysZ	outshapesÚexpectedr   r   r   Úassert_shapes_correct   s
    r    c                 C   s"   dd„ | D ƒ}t ttf|žŽ  d S )Nc                 S   s   g | ]}t  |¡‘qS r   r   r   r   r   r   r      s     z4assert_incompatible_shapes_raise.<locals>.<listcomp>)r   Ú
ValueErrorr   )r   r   r   r   r   Ú assert_incompatible_shapes_raise   s    r"   Fc           
      C   s‚   t j| td�}tt j |¡ƒ}t  |¡ |¡}|r>|j}|j}|r^|d d d… }|d d d… }|| }t||ƒ\}}	t	||	ƒ d S )N©Údtypeéÿÿÿÿ)
r   r   ÚintÚmultiplyÚreduceÚarangeÚreshapeÚTr   r   )
Zshape0Zshape1Z
transposedZflippedZx0ÚnÚx1ÚyZb0Zb1r   r   r   Úassert_same_as_ufunc!   s    r/   c                  C   s:   t  d¡} t  d¡}t| |ƒ\}}t| |ƒ t||ƒ d S )Né
   )r   r)   r   r   )Úxr.   ÚbxÚbyr   r   r   Ú	test_same7   s
    


r4   c               	   C   s<   t  d¡} t  d¡}ttdƒ� t| |dd� W 5 Q R X d S )Nr0   zgot an unexpected keywordZfloat64r#   )r   r)   r   Ú	TypeErrorr   )r1   r.   r   r   r   Útest_broadcast_kwargs>   s    

r6   c                  C   sv   t  dddgg¡} t  dgdgdgg¡}t| |ƒ\}}t  dddgdddgdddgg¡}|j}t||ƒ t||ƒ d S )Né   é   é   )r   Úarrayr   r+   r   )r1   r.   r2   r3   Zbx0Zby0r   r   r   Útest_one_offI   s    "
r;   c               
   C   s\   ddddddddd	d
g
} | D ]:}|g}t ||ƒ ||g}t ||ƒ |||g}t ||ƒ qd S )Nr   ©r7   ©r9   ©r   r7   )r   r9   ©r7   r   )r9   r   ©r7   r9   ©r9   r7   ©r9   r9   ©r    )Údatar   r   Zinput_shapes2Zinput_shapes3r   r   r   Útest_same_input_shapesS   s$    ö


rE   c                  C   s¶   ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd	dgdgdd	gdgddgdgddgdgdd	gd	gg} | D ]&\}}t ||ƒ t |d d d
… |ƒ qŠd S )Nr<   r=   r@   rB   rA   ©r7   r7   r?   ©r   r   r>   r%   rC   ©rD   r   r   r   r   r   Ú(test_two_compatible_by_ones_input_shapesn   s"    












ó
rI   c                  C   sü   ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgdd	gd	gdd
gd	gdd	gd	gdd	gd	gddgdgdd
gd
gddgdgddgdgdd
gd
gg} | D ]&\}}t ||ƒ t |d d d… |ƒ qÐd S )Nr   r=   rB   rA   r<   rF   r@   ©r   rG   r>   r?   r%   rC   rH   r   r   r   Ú3test_two_compatible_by_prepending_ones_input_shapes‡   s0    



















ì
rK   c                  C   sF   ddgddgdddgddgg} | D ]}t |ƒ t |d d d… ƒ q"d S )Nr=   ©é   ©r8   r9   ©r8   ©r7   r9   rM   ©r8   r9   r9   r%   )r"   )rD   r   r   r   r   Ú)test_incompatible_shapes_raise_valueerror§   s    ürR   c               "   C   sâ  ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd	dgdgdd	gdgddgdgddgdgdd	gd	gd
dgdgddgdgddgdgddgdgd
dgdgddgdgddgdgddgdgd
dgdgd
dgdgd
dgdgddgdgdd	gdgddgdgd
dgdgddgdgdd	gd	gddgdgd
dgdgd
d	gd	gg!} | D ]Š\}}t |d |d d|d |d f ƒ t |d |d ƒ t |d |d dƒ d
|k�rRt |d |d ddƒ t |d |d ddƒ �qRd S )Nr<   r=   r@   rB   rA   rF   r?   rG   r>   r   rJ   r   r7   zShapes: %s %sTF)r/   rH   r   r   r   Útest_same_as_ufunc¶   sV    
































ß#ÿ
rS   c                  C   sr  t  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡d	t  d	¡gt  d¡dt  d¡gt  d¡d
t  d¡ dd¡gt  d¡dt  dddgdddgg¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gt  d¡dt  d¡gg} | D ] \}}}t||ƒ}t||ƒ �qLd S )Nr   rJ   r<   r7   r=   r9   rO   r8   )r7   r8   r9   r@   r%   rN   ©r7   r8   )r   r8   ©r8   r7   )r8   r   )r   r:   r   Úonesr)   r*   r   r   )rD   Úinput_arrayr   r   Úactualr   r   r   Útest_broadcast_to_succeedsê   s&    $î
rY   c                     sv   ddgddgddgddgddgddgddgd	dgdd
gddgddgg} | D ]&\}‰t  |¡‰ tt‡ ‡fdd„ƒ qJd S )NrJ   r   r<   r=   rO   rL   rT   rU   rF   r%   )r%   )r%   r8   c                      s
   t ˆ ˆƒS ©N)r   r   ©ÚarrÚtarget_shaper   r   Ú<lambda>  ó    z*test_broadcast_to_raises.<locals>.<lambda>)r   r   r   r!   )rD   Z
orig_shaper   r[   r   Útest_broadcast_to_raises  s    õ
r`   c                      sØ   t tƒ dƒ t tddgƒdƒ t tt d¡ƒdƒ t tt d¡t d¡ƒdƒ t tt d¡gd Ž dƒ t tt d¡gd	 Ž dƒ t tt d¡gd dg Ž dƒ t d¡gd t d
¡gd  ‰ tt‡ fdd„ƒ d S )Nr   r7   r8   rO   rF   ©r9   rM   rT   é    éd   r9   c                      s   t ˆ Ž S rZ   )r   r   ©Úbad_argsr   r   r^   %  r_   z&test_broadcast_shape.<locals>.<lambda>)r   r   r   rV   r   r!   r   r   rd   r   Útest_broadcast_shape  s      rf   c                  C   sh  g dgdgdgdgdgddgdgdgdgddgdgdddd	gd
gdgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgg} | D ]\}}t t|Ž |ƒ �qt tdgd Ž dƒ t tdgd Ž dƒ t tdgd Ž dƒ d S )Nr   )é   rT   rO   rF   ra   )é   rg   )é   rh   r7   )ri   r7   rg   )ri   rh   rg   r@   rA   rB   r?   rG   r>   rJ   r<   r=   r8   ©r9   r8   rb   rc   )r   r   )rD   r   r]   r   r   r   Útest_broadcast_shapes_succeeds(  sB    




















årk   c                     st   ddgddgdddgddgddd	d
gddgg} | D ]‰t t‡fdd„ƒ q2dgd dgd  ‰ t t‡ fdd„ƒ d S )Nr=   rL   rN   rO   rP   rQ   rT   rA   rj   )r0   ri   r8   c                      s   t ˆ Ž S rZ   ©r   r   )r   r   r   r^   \  r_   z.test_broadcast_shapes_raises.<locals>.<lambda>rb   c                      s   t ˆ Ž S rZ   rl   r   rd   r   r   r^   _  r_   )r   r!   )rD   r   )re   r   r   Útest_broadcast_shapes_raisesQ  s    
úrm   c                  C   s"  t  d g¡} t| ƒ}t  d g¡}t|t  d g¡ƒ t  ddddg¡} t| dd| j fd�}t  ddg¡}t||ƒ t  ddddg¡} t| ddd| j fd�}t  ddddgddddgddddgg¡}t||ƒ t  d	d
g¡}t jd|d�} t  dd¡| d< t| dd| jfd�}ddddggd }d gd gd }t|j|ƒ t||d ƒ t||d ƒ t jddd�} t| dd| jfd�}t| j|jƒ t  dgdgdœ¡}t jd|d�} t| dd| jfd�}t| j|jƒ dd„ t	dƒD ƒ}t j|t
d�} t| dd| jfd�}t| j|jƒ t|gd |ƒ d S )Nr7   r8   r9   rM   rO   ©r   Ústridesra   r   )ÚnumÚi4)ÚobjÚOrL   r#   ri   rp   rr   ZV4Ú )ÚnamesÚformatsc                 S   s   g | ]}t |ƒ‘qS r   r   )r   Úir   r   r   r   ‰  s     z#test_as_strided.<locals>.<listcomp>)r   r:   r
   r   Úitemsizer$   Úemptyr)   r   Úranger   )r   Úa_viewr   ÚdtZexpected_numZexpected_objÚrr   r   r   Útest_as_stridedb  sB    
(
r~   c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚTestSlidingWindowViewc                 C   sD   t  d¡}t|dƒ}t  ddgddgddgddgg¡}t||ƒ d S )Nri   r8   r   r7   r9   rM   )r   r)   r   r:   r   )Úselfr\   Úarr_viewr   r   r   r   Útest_1d‘  s    


ýzTestSlidingWindowView.test_1dc                 C   s¤   t jd d…d d…f \}}d| | }d}t||ƒ}t  ddgddggddgdd	ggddgd	d
gggddgddggdd	gddggd	d
gddgggg¡}t||ƒ d S )Nr9   rM   r0   )r8   r8   r   r7   é   r8   é   é   é   é   é   é   ©r   Úogridr   r:   r   ©r€   rw   Újr\   r   r�   r   r   r   r   Útest_2dš  s    
þþýzTestSlidingWindowView.test_2dc                 C   sl   t jd d…d d…f \}}d| | }t|ddƒ}t  dddgdddgd	d
dgdddggg¡}t||ƒ d S )Nr9   rM   r0   r   r†   r7   rƒ   r‡   r8   r„   rˆ   r…   r‰   rŠ   ©r€   rw   r�   r\   r�   r   r   r   r   Útest_2d_with_axis§  s    ýz'TestSlidingWindowView.test_2d_with_axisc                 C   s†   t jd d…d d…f \}}d| | }t|ddƒ}t  dddgdddgggdd	d
gd	d
dgggdddgdddgggg¡}t||ƒ d S )Nr9   rM   r0   rN   rF   r   r7   r8   rƒ   r„   r…   r†   r‡   rˆ   r‰   rŠ   r�   r   r   r   Útest_2d_repeated_axis±  s    ÿÿÿüz+TestSlidingWindowView.test_2d_repeated_axisc              	   C   s¾   t jd d…d d…f \}}d| | }d}t||ƒ}t  dddgdddggddd	gddd
gggdddgdddggddd
gdddgggdddgdddggdddgdddgggg¡}t||ƒ d S )NrM   r0   rN   r   r7   r8   rƒ   r„   r9   r…   r†   r‡   rˆ   r‰   é   é   rb   é!   rŠ   rŒ   r   r   r   Útest_2d_without_axis½  s    
ÿÿÿüz*TestSlidingWindowView.test_2d_without_axisc              	   C   s¾   t jd d…d d…f \}}d| | }tjtdd�� t|dƒ W 5 Q R X tjtdd�� t|dƒ W 5 Q R X tjtdd�� t|d	d
d� W 5 Q R X tjtdd�� t|dƒ W 5 Q R X d S )NrM   r0   zcannot contain negative values©Úmatch)r%   r9   z3must provide window_shape for all dimensions of `x`r<   z2Must provide matching length window_shape and axisrP   r>   )Zaxisz.window shape cannot be larger than input array)ri   ri   )r   r‹   ÚpytestÚraisesr!   r   )r€   rw   r�   r\   r   r   r   Útest_errorsÊ  s&    þþþz!TestSlidingWindowView.test_errorsc              	   C   sˆ   t  d¡}t|ddd�}t|jj ƒ tjtdd�� d|d< W 5 Q R X t|dd	d�}t|jjƒ d|d
< t	|t  
dddddg¡ƒ d S )Nri   r8   F©Ú	writeablez#assignment destination is read-onlyr–   r9   rG   Tr>   r   rM   )r   r)   r   r   Úflagsrœ   r˜   r™   r!   r   r:   )r€   r\   Úviewr   r   r   Útest_writeableÜ  s    
þz$TestSlidingWindowView.test_writeablec                 C   sn   G dd„ dt jƒ}t  d¡ |¡}ttt|ddd�|ƒ ƒ ttt|ddd�|ƒƒ ttt|dƒ|ƒ ƒ d S )Nc                   @   s   e Zd ZdS )z1TestSlidingWindowView.test_subok.<locals>.MyArrayN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   ÚMyArrayê  s   r£   ri   r8   F©ÚsubokT)r   Úndarrayr)   rž   r   Ú
isinstancer   )r€   r£   r\   r   r   r   Ú
test_suboké  s    
ÿþz TestSlidingWindowView.test_subokN)r    r¡   r¢   r‚   rŽ   r�   r‘   r•   rš   rŸ   r¨   r   r   r   r   r   �  s   	
r   c                  C   sˆ   t  d¡} t| dd�}t|jj ƒ t| dd�}t|jjƒ d|d< t| t  | d¡ƒ d| j_t| dd�}t| dd�}t|jj ƒ d S )Nr0   Fr›   Tr9   .)r   rV   r
   r   r�   rœ   r   Z	full_like)r\   rž   r   r   r   Úas_strided_writeableö  s    
r©   c                   @   s   e Zd Zdd„ ZdS )ÚVerySimpleSubClassc                 O   s   t j|ddi|—Ž | ¡S )Nr¥   T)r   r:   rž   )ÚclsÚargsÚkwargsr   r   r   Ú__new__	  s    zVerySimpleSubClass.__new__N)r    r¡   r¢   r®   r   r   r   r   rª     s   rª   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚSimpleSubClassc                 O   s$   t j|ddi|—Ž | ¡}d|_|S )Nr¥   TÚsimple)r   r:   rž   Úinfo)r«   r¬   r­   r€   r   r   r   r®     s    zSimpleSubClass.__new__c                 C   s   t |ddƒd | _d S )Nr±   rt   z
 finalized)Úgetattrr±   )r€   rr   r   r   r   Ú__array_finalize__  s    z!SimpleSubClass.__array_finalize__N)r    r¡   r¢   r®   r³   r   r   r   r   r¯     s   r¯   c                  C   sÌ  t ddddgƒ} tt| ƒt kƒ t| dd| j fd�}tt|ƒtjkƒ t| dd| j fdd�}tt|ƒt kƒ tddddgƒ} t| dd| j fdd�}tt|ƒtkƒ t|jd	kƒ t 	t
| ƒ¡ d
d¡}t| |ƒ\}}tt|ƒtjkƒ tt|ƒtjkƒ t|j|jkƒ t| |dd�\}}tt|ƒtkƒ t|jd	kƒ tt|ƒtjkƒ t|j|jkƒ d}t| |ƒ}tt|ƒtjkƒ t|j|kƒ t| |dd�}tt|ƒtkƒ t|jd	kƒ t|j|kƒ d S )Nr7   r8   r9   rM   rO   rn   T)r   ro   r¥   zsimple finalizedr%   r¤   )r8   rM   )rª   r   Útyper
   rx   r   r¦   r¯   r±   r)   r   r*   r   r   r   )r   r{   ÚbZb_viewr   r   r   r   Útest_subclasses  s8    
r¶   c                  C   s~  t  dddg¡} t| dƒ}t|jjdƒ tt|jt	d ƒdƒ dt
| ƒfdt
d| ƒffD ]v\}}|D ]h}|r¼ttƒ� t|jjdƒ W 5 Q R X ttƒ� d|d d …< W 5 Q R X t|jjdƒ qbt|jjdƒ qbqVt
| ƒt
d| ƒfD ]0}|D ]&}d|j_t|jjdƒ d|d d …< qèqàd| j_t
d| ƒ\}}t|jjdƒ d}dg}tt  d¡||ƒ}t  d	¡}t
||ƒ\}	}
t|	j|
jkƒ d S )
Nr7   r8   r9   rN   Fr   TrO   r<   )r   r:   r   r   r�   rœ   r   r!   Ú__setitem__Úslicer   r	   ÚFutureWarningÚDeprecationWarningr
   r   r   r   )ÚoriginalÚresultÚis_broadcastÚresultsÚ_r   ro   Ztricky_arrayÚotherÚfirstÚsecondr   r   r   rŸ   <  s>    

ÿ

ÿ
rŸ   c                  C   sd   t  dddg¡} dt| ƒfdtd| ƒffD ]4\}}|D ]&}|rNt|ƒjs\t‚q6t|ƒjr6t‚q6q*d S )Nr7   r8   r9   FTr   )r   r:   r   Ú
memoryviewÚreadonlyÚAssertionError)r»   r½   r¾   r¼   r   r   r   Útest_writeable_memoryviewk  s    
ÿrÆ   c                  C   sX   t jdtd�} t jdgd td�}t| dƒ}t||ƒ t| t  d¡ƒ\}}t||ƒ d S )Nr   r#   r9   r=   )r   r:   Úobjectr   r   r   rV   )rW   r   rX   r¿   r   r   r   Útest_reference_types~  s    

rÈ   )FF)-Znumpyr   Znumpy.core._rational_testsr   Znumpy.testingr   r   r   r   r   r	   Znumpy.lib.stride_tricksr
   r   r   r   r   r   r˜   r    r"   r/   r4   r6   r;   rE   rI   rK   rR   rS   rY   r`   rf   rk   rm   r~   r   r©   r¦   rª   r¯   r¶   rŸ   rÆ   rÈ   r   r   r   r   Ú<module>   s:     

 4).f
%/