U
    ¸mœdAY  ã                   @   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   ú[/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/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b0Úb1r   r   r   Úassert_same_as_ufunc!   s    r0   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
    


r5   c               	   C   s<   t  d¡} t  d¡}ttdƒ� t| |dd� W 5 Q R X d S )Nr1   zgot an unexpected keywordZfloat64r#   )r   r)   r   Ú	TypeErrorr   )r2   r.   r   r   r   Útest_broadcast_kwargs>   s    

r7   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   )r2   r.   r3   r4   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   ©r8   ©r:   ©r   r8   )r   r:   ©r8   r   )r:   r   ©r8   r:   ©r:   r8   ©r:   r:   ©r    )Údatar   r   Zinput_shapes2Zinput_shapes3r   r   r   Útest_same_input_shapesS   s$    ö


rF   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>   rA   rC   rB   ©r8   r8   r@   ©r   r   r?   r%   rD   ©rE   r   r   r   r   r   Ú(test_two_compatible_by_ones_input_shapesn   s"    












ó
rJ   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>   rC   rB   r=   rG   rA   ©r   rH   r?   r@   r%   rD   rI   r   r   r   Ú3test_two_compatible_by_prepending_ones_input_shapes‡   s0    



















ì
rL   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>   ©é   ©r9   r:   ©r9   ©r8   r:   rN   ©r9   r:   r:   r%   )r"   )rE   r   r   r   r   Ú)test_incompatible_shapes_raise_valueerror§   s    ürS   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>   rA   rC   rB   rG   r@   rH   r?   r   rK   r   r8   zShapes: %s %sTF)r0   rI   r   r   r   Útest_same_as_ufunc¶   sV    
































ß#ÿ
rT   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   rK   r=   r8   r>   r:   rP   r9   )r8   r9   r:   rA   r%   rO   ©r8   r9   )r   r9   ©r9   r8   )r9   r   )r   r;   r   Úonesr)   r*   r   r   )rE   Úinput_arrayr   r   Úactualr   r   r   Útest_broadcast_to_succeedsê   s&    $î
rZ   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 )NrK   r   r=   r>   rP   rM   rU   rV   rG   r%   )r%   )r%   r9   c                      s
   t ˆ ˆƒS ©N)r   r   ©ÚarrÚtarget_shaper   r   Ú<lambda>  ó    z*test_broadcast_to_raises.<locals>.<lambda>)r   r   r   r!   )rE   Z
orig_shaper   r\   r   Útest_broadcast_to_raises  s    õ
ra   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   r8   r9   rP   rG   ©r:   rN   rU   é    éd   r:   c                      s   t ˆ Ž S r[   )r   r   ©Úbad_argsr   r   r_   %  r`   z&test_broadcast_shape.<locals>.<lambda>)r   r   r   rW   r   r!   r   r   re   r   Útest_broadcast_shape  s      rg   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   )é   rU   rP   rG   rb   )é   rh   )é   ri   r8   )rj   r8   rh   )rj   ri   rh   rA   rB   rC   r@   rH   r?   rK   r=   r>   r9   ©r:   r9   rc   rd   )r   r   )rE   r   r^   r   r   r   Útest_broadcast_shapes_succeeds(  sB    




















årl   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>   rM   rO   rP   rQ   rR   rU   rB   rk   )r1   rj   r9   c                      s   t ˆ Ž S r[   ©r   r   )r   r   r   r_   \  r`   z.test_broadcast_shapes_raises.<locals>.<lambda>rc   c                      s   t ˆ Ž S r[   rm   r   re   r   r   r_   _  r`   )r   r!   )rE   r   )rf   r   r   Útest_broadcast_shapes_raisesQ  s    
úrn   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 )Nr8   r9   r:   rN   rP   ©r   Ústridesrb   r   )ÚnumÚi4)ÚobjÚOrM   r#   rj   rq   rs   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 )Nrj   r9   r   r8   r:   rN   )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 )Nr:   rN   r1   )r9   r9   r   r8   é   r9   é   é   é   é   é   é   ©r   Úogridr   r;   r   ©r�   rx   Ú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 )Nr:   rN   r1   r   r‡   r8   r„   rˆ   r9   r…   r‰   r†   rŠ   r‹   ©r�   rx   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 )Nr:   rN   r1   rO   rG   r   r8   r9   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 )NrN   r1   rO   r   r8   r9   r„   r…   r:   r†   r‡   rˆ   r‰   rŠ   é   é   rc   é!   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 )NrN   r1   zcannot contain negative values©Úmatch)r%   r:   z3must provide window_shape for all dimensions of `x`r=   z2Must provide matching length window_shape and axisrQ   r?   )Zaxisz.window shape cannot be larger than input array)rj   rj   )r   rŒ   ÚpytestÚraisesr!   r   )r�   rx   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 )Nrj   r9   F©Ú	writeablez#assignment destination is read-onlyr—   r:   rH   Tr?   r   rN   )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¤   rj   r9   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 )Nr1   Frœ   Tr:   .)r   rW   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²   ru   z
 finalized)Úgetattrr²   )r�   rs   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 )Nr8   r9   r:   rN   rP   ro   T)r   rp   r¦   zsimple finalizedr%   r¥   )r9   rN   )r«   r   Útyper
   ry   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 )
Nr8   r9   r:   rO   Fr   TrP   r=   )r   r;   r   r   rž   r�   r   r!   Ú__setitem__Úslicer   r	   ÚFutureWarningÚDeprecationWarningr
   r   r   r   )ÚoriginalÚresultÚis_broadcastÚresultsÚ_r   rp   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 )Nr8   r9   r:   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#   r:   r>   )r   r;   Úobjectr   r   r   rW   )rX   r   rY   rÀ   r   r   r   Útest_reference_types~  s    

rÉ   )FF)-Ú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"   r0   r5   r7   r<   rF   rJ   rL   rS   rT   rZ   ra   rg   rl   rn   r   r€   rª   r§   r«   r°   r·   r    rÇ   rÉ   r   r   r   r   Ú<module>   s:     

 4).f
%/