a
    ³ÐOcAY  ã                   @   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   úY/var/www/html/gsl.tools/lib/python3.9/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      r   )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   s   g | ]}t  |¡‘qS 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    r1   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
    


r6   c                  C   sP   t  d¡} t  d¡}ttdƒ� t| |dd� W d   ƒ n1 sB0    Y  d S )Nr2   zgot an unexpected keywordÚfloat64r$   )r   r*   r   Ú	TypeErrorr   )r3   r/   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   )r3   r/   r4   r5   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
… |ƒ qŠd 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… |ƒ qÐd 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‡   s0    



















ì
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â  ddgdgddgdgddgdgddgdgddgdgddgdgddgdgddgdgd	dgdgdd	gdgddgdgddgdgdd	gd	gd
dgdgddgdgddgdgddgdgd
dgdgddgdgddgdgddgdgd
dgdgd
dgdgd
dgdgddgdgdd	gdgddgdgd
dgdgd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
|v�rRt |d |d ddƒ t |d |d ddƒ �qRd S )Nr@   rA   rD   rF   rE   rJ   rC   rK   rB   r   rN   r   r;   zShapes: %s %sTF)r1   rL   r   r   r   Útest_same_as_ufunc¶   sV    
































ß#ÿ
rX   c                  C   sn  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||ƒ �qHd 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„ƒ qJd 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>  r   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                      s   t ˆ Ž S r`   )r   r   ©Úbad_argsr   r   rd   %  r   z&test_broadcast_shape.<locals>.<lambda>)r   r   r   r\   r   r"   r   r   ri   r   Útest_broadcast_shape  s      rk   c                  C   sd  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|Ž |ƒ �q
t tdgd Ž dƒ t tdgd Ž dƒ t tdgd Ž dƒ d S )Nr   ©é   rZ   rS   rJ   rf   ))é   rm   ©é   rn   r;   rl   )rp   r;   rm   )rp   rn   rm   ro   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    





















årr   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   rq   )r2   rp   r<   c                      s   t ˆ Ž S r`   ©r   r   )r   r   r   rd   \  r   z.test_broadcast_shapes_raises.<locals>.<lambda>rg   c                      s   t ˆ Ž S r`   rs   r   ri   r   r   rd   _  r   )r   r"   )rH   r   )rj   r   r   Útest_broadcast_shapes_raisesQ  s    úrt   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$   rp   rx   rQ   rz   ZV4Ú )ÚnamesÚformatsc                 S   s   g | ]}t |ƒ‘qS r   r   )r   Úir   r   r   r   ‰  r   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 )Nrp   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   r2   )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   r2   r   )r   r2   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   r2   rR   rJ   rY   r:   ©r2   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   r2   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 sT0    Y  tjtdd�� t|dƒ W d   ƒ n1 sŒ0    Y  tjtdd�� t|d	d
d� W d   ƒ n1 sÈ0    Y  tjtdd�� t|dƒ W d   ƒ n1 �s0    Y  d S )NrQ   r2   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)rp   rp   )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 sR0    Y  t|dd	d�}t|jjƒ d|d
< t	|t  
g d¢¡ƒ d S )Nrp   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¯   rp   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 )Nr2   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ˆ   rz   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 )Nru   rS   r<   rv   T)r   rw   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 ]ž\}}|D ]�}|râttƒ� t|jjdƒ W d   ƒ n1 s”0    Y  ttƒ� d|d d …< W d   ƒ n1 sÈ0    Y  t|jjdƒ q`t|jjdƒ q`qTt
| ƒt
d| ƒfD ]4}|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 )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   rw   Ztricky_arrayÚotherÚfirstÚsecondr   r   r   r«   <  s>    

ÿ
,
*ÿ
r«   c                  C   sb   t  g d¢¡} dt| ƒfdtd| ƒffD ]4\}}|D ]&}|rLt|ƒjsZJ ‚q4t|ƒjr4J ‚q4q(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#   r1   r6   r9   r?   rI   rM   rO   rW   rX   r_   re   rk   rr   rt   r†   r‡   rµ   r²   r¶   r»   rÂ   r«   rÑ   rÓ   r   r   r   r   Ú<module>   s:     

 4).f
%/