U
    ?hAY                     @   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   T/var/www/html/venv/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
 | qd 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 | qd 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}|rt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 < qqd| 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
%/