o
    ʩZhAY                     @   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      g | ]}t |qS  npzeros.0sr   r   Y/var/www/html/lang_env/lib/python3.10/site-packages/numpy/lib/tests/test_stride_tricks.py
<listcomp>       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g|R   d S )Nc                 S   r   r   r   r   r   r   r   r      r   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   r2   c                  C   s:   t d} t d}t| |\}}t| | t|| d S )N
   )r   r+   r   r   )xr0   bxbyr   r   r   	test_same7   s
   


r7   c                  C   sR   t d} t d}ttd t| |dd W d    d S 1 s"w   Y  d S )Nr3   zgot an unexpected keywordZfloat64r%   )r   r+   r   	TypeErrorr   )r4   r0   r   r   r   test_broadcast_kwargs>   s
   

"r9   c                  C   sn   t g dg} t dgdgdgg}t| |\}}t g dg dg dg}|j}t|| t|| d S )N         r;   r<   r=   )r   arrayr   r-   r   )r4   r0   r5   r6   Zbx0Zby0r   r   r   test_one_offI   s   
r?   c                  C   sL   g d} | D ]}|g}t || ||g}t || |||g}t || qd S )N)
r   r;   r=   r   r;   )r   r=   r;   r   )r=   r   r;   r=   r=   r;   r=   r=   r"   )datar   r   Zinput_shapes2Zinput_shapes3r   r   r   test_same_input_shapesS   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g} | D ]\}}t || t |d d d
 | qEd S )Nr@   rA   rD   rF   rE   r;   r;   rC   r   r   rB   r'   rG   rH   r   r   r   r   r   (test_two_compatible_by_ones_input_shapesn   s$   













rM   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 | qhd S )Nr   rA   rF   rE   r@   rJ   rD   r   rK   rB   rC   r'   rG   rL   r   r   r   3test_two_compatible_by_prepending_ones_input_shapes   s2   




















rO   c                  C   sD   ddgddgg dddgg} | D ]}t | t |d d d  qd S )	NrA      r<   r=   r<   rA   rA   rP   r;   r=   rQ   r<   r=   r=   r'   )r$   )rH   r   r   r   r   )test_incompatible_shapes_raise_valueerror   s   rW   c                  C   s"  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d
d	gd	g} | D ]D\}}t |d |d d|d |d f  t |d |d  t |d |d d d
|vrt |d |d dd t |d |d dd qd S )Nr@   rA   rD   rF   rE   rJ   rC   rK   rB   r   rN   r   r;   zShapes: %s %sTF)r2   rL   r   r   r   test_same_as_ufunc   s   








	























 
!#
rX   c                  C   sl  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 g dg d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|| qd S )Nr   rN   r@   r;   rA   r=   rS   r<   r:   rD   r'   rR   r   r;   r<   r;   r<   )r   r<   r<   r;   )r<   r   )r   r>   r   onesr+   r,   r   r   )rH   input_arrayr   r!   actualr   r   r   test_broadcast_to_succeeds   s(    
r_   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 q%d S )NrN   r   r@   rA   rS   rP   rZ   r[   rJ   r'   )r'   )r'   r<   c                      s
   t  S N)r   r   arrtarget_shaper   r   <lambda>  s   
 z*test_broadcast_to_raises.<locals>.<lambda>)r   r   r   r#   )rH   Z
orig_shaper   ra   r   test_broadcast_to_raises  s    
re   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   r;   r<   rS   rJ   r=   rQ   rZ       d   r=   c                         t   S r`   )r   r   bad_argsr   r   rd   %      z&test_broadcast_shape.<locals>.<lambda>)r   r   r   r\   r   r#   r   r   rj   r   test_broadcast_shape  s     rm   c                  C   sb  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g d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| | qt tdgd  d t tdgd  d t tdgd  d d S )Nr      rZ   rS   rJ   rf   ))   ro      rp   r;   rn   )rr   r;   ro   )rr   rp   ro   rq   rD   rE   rF   rC   rK   rB   rN   r@   rA   r<   r=   r<   rg   rh   )r   r   )rH   r   rc   r   r   r   test_broadcast_shapes_succeeds(  sB   





















rt   c                     sn   ddgddgg dddgg dd	dgg} | D ]t tfd
d qdgd dgd   t t fdd d S )NrA   rP   rR   rS   rT   rU   rV   )rZ   rE   rs   )r3   rr   r<   c                      ri   r`   r   r   )r   r   r   rd   \  rl   z.test_broadcast_shapes_raises.<locals>.<lambda>rg   c                      ri   r`   ru   r   rj   r   r   rd   _  rl   )r   r#   )rH   r   )rk   r   r   test_broadcast_shapes_raisesQ  s   rv   c                  C   s
  t d g} t| }t d g}t|t d g t g d} t| dd| j fd}t ddg}t|| t g d} t| ddd| j fd}t g dg dg dg}t|| t d	d
g}t jd|d} t dd| d< t| dd| jfd}g d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 )Nr;   r<   r=   rQ   rS   r<   r   stridesr;   r=   rf   r   )numi4)objOrP   r%   rr   rz   rQ   r|   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 )Nrr   r<   r   r;   r=   rQ   )r   r+   r   r>   r   )selfrb   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=   rQ   r3   )r<   r<   r   r;      r<                     r   ogridr   r>   r   r   r   jrb   r   r   r!   r   r   r   test_2d  s   
zTestSlidingWindowView.test_2dc                 C   sd   t jd dd df \}}d| | }t|dd}t g dg dg dg dgg}t|| d S )	Nr=   rQ   r3   r   )r   r3   r   )r;   r   r   )r<   r   r   )r=   r   r   r   r   r   r   rb   r   r!   r   r   r   test_2d_with_axis  s   
z'TestSlidingWindowView.test_2d_with_axisc                 C   sz   t jd dd df \}}d| | }t|dd}t g dg dggg dg d	ggg d
g dggg}t|| d S )Nr=   rQ   r3   rR   rJ   rY   r:   r3   r   r   r   r   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 g dg dgg dg dggg dg dgg dg d	ggg dg d
gg d	g dggg}t|| d S )NrQ   r3   rR   rY   r   r:   r   r   r   )      rg   )r   rg   !   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 d    n1 s*w   Y  tjtdd t|d W d    n1 sFw   Y  tjtdd t|d	d
d W d    n1 sdw   Y  tjtdd t|d W d    d S 1 sw   Y  d S )NrQ   r3   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 axisrU   rB   )Zaxisz.window shape cannot be larger than input array)rr   rr   )r   r   pytestraisesr#   r   )r   r   r   rb   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 d    n1 s)w   Y  t|dd	d}t|jj d|d
< t	|t 
g d d S )Nrr   r<   F	writeablez#assignment destination is read-onlyr   r=   rK   TrB   )r   r=   r<   r=   rQ   )r   r+   r   r   flagsr   r   r   r#   r   r>   )r   rb   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   rr   r<   FsubokT)r   ndarrayr+   r   r   
isinstancer   )r   r   rb   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 )Nr3   Fr   Tr=   .)r   r\   r
   r   r   r   r   Z	full_like)rb   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   r~   z
 finalized)getattrr   )r   r|   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 g d} tt| t u  t| dd| j fd}tt|tju  t| dd| j fdd}tt|t u  tg d} t| dd| j fdd}tt|tu  t|jdk t	t
| dd	}t| |\}}tt|tju  tt|tju  t|j|jk t| |dd
\}}tt|tu  t|jdk tt|tju  t|j|jk d}t| |}tt|tju  t|j|k t| |dd
}tt|tu  t|jdk t|j|k d S )Nrw   rS   r<   rx   T)r   ry   r   zsimple finalizedr'   r;   r   )r<   rQ   )r   r   typer
   r   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 g d} t| d}t|jjd tt|jt	d d dt
| fdt
d| ffD ]O\}}|D ]H}|rqtt t|jjd W d    n1 sJw   Y  tt d|d d < W d    n1 sdw   Y  t|jjd q0t|jjd q0q*t
| t
d| fD ]}|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 )Nr:   rR   Fr   TrS   r@   )r   r>   r   r   r   r   r   r#   __setitem__slicer   r	   FutureWarningDeprecationWarningr
   r   r   r   )originalresultis_broadcastresults_r   ry   Ztricky_arrayotherfirstsecondr   r   r   r   <  sF   




r   c                  C   sb   t g d} dt| fdtd| ffD ]\}}|D ]}|r&t|js%J qt|jr-J qqd S )Nr:   FTr   )r   r>   r   
memoryviewreadonly)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=   rA   )r   r>   objectr   r   r   r\   )r]   r!   r^   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$   r2   r7   r9   r?   rI   rM   rO   rW   rX   r_   re   rm   rt   rv   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   s<      

 4).f
%/