3
Kd:B                 @   s  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 dd Zdd Zd2d
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'ej Z!G d(d) d)e!Z"d*d+ Z#d,d- Z$d.d/ Z%d0d1 Z&dS )3    N)rational)assert_equalassert_array_equalassert_raisesassert_assert_raises_regexassert_warns)
as_stridedbroadcast_arrays_broadcast_shapebroadcast_toc             C   s@   dd | D }t | }dd |D }|gt| }t|| d S )Nc             S   s   g | ]}t j|qS  )npzeros).0sr   r   V/var/www/html/virt/lib64/python3.6/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 j|qS r   )r   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j|}t j|j|}|r>|j}|j}|r^|d d d }|d d d }|| }t||\}}	t	||	 d S )N)dtype   r    )
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 jd} t jd}t| |\}}t| | t|| d S )N
   )r   r$   r
   r   )xr)   bxbyr   r   r   	test_same4   s
    


r/   c              C   s<   t jd} t jd}ttd t| |dd W d Q R X d S )Nr+   zgot an unexpected keywordZfloat64)r   )r   r$   r   	TypeErrorr
   )r,   r)   r   r   r   test_broadcast_kwargs;   s    

r1   c              C   sv   t jdddgg} t jdgdgdgg}t| |\}}t jdddgdddgdddgg}|j}t|| t|| d S )Nr         )r   arrayr
   r&   r   )r,   r)   r-   r.   Zbx0Zby0r   r   r   test_one_offF   s    "
r5   c              C   s`   f dddddd	d
ddg
} xB| D ]:}|g}t || ||g}t || |||g}t || qW d S )Nr   r3   r   )r   )r3   )r   r   )r   r3   )r   r   )r3   r   )r   r3   )r3   r   )r3   r3   )r   )datar   r   Zinput_shapes2Zinput_shapes3r   r   r   test_same_input_shapesP   s"    



r7   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} x0| D ](\}}t || t |d d d+ |  qW d S ),Nr   r3   r   )r   )r3   )r3   )r   r3   )r3   r3   )r3   r3   )r3   r   )r3   r3   )r3   r3   )r   r3   )r3   r   )r3   r3   )r   r   )r3   r3   )r3   r3   )r   r   )r   r3   )r   r3   )r   r   )r3   r   )r3   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r    )r   )r6   r   r   r   r   r   (test_two_compatible_by_ones_input_shapesk   s     












r8   c              C   s  f dgdgddgdgd	d
gdgddgdgf dgdgddgdgddgdgddgdgf dgdgf dgdgf dgdgd d!gd"gd#d$gd%gd&d'gd(gf d)gd*gd+d,gd-gd.d/gd0gd1d2gd3gf d4gd5gf d6gd7gg} x0| D ](\}}t || t |d d d8 |  qW d S )9Nr3   r   r   )r3   )r3   )r3   )r3   r3   )r3   r3   )r3   )r3   r   )r3   r3   )r   )r3   r3   )r3   r3   )r3   r3   )r3   r3   )r   r   )r3   )r   r3   )r   )r3   r   )r3   r   )r   )r   r3   )r   r3   )r   r3   )r   r3   )r3   r   )r3   r   )r   )r   )r   )r   r   )r   r   )r   )r   r   )r   r   )r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   )r   r   )r   )r   r   )r   r   )r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   r    )r   )r6   r   r   r   r   r   3test_two_compatible_by_prepending_ones_input_shapes   s.    



















r9   c              C   sJ   ddgddgd	d
dgddgg} x&| D ]}t | t |d d d  q$W d S )Nr3      r2   r   )r3   )r:   )r2   r3   )r2   )r3   )r3   )r:   )r   r3   r:   )r2   r3   r3   r    )r   )r6   r   r   r   r   )test_incompatible_shapes_raise_valueerror   s    

r;   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f d.gd/gd0d1gd2gd3d4gd5gd6d7gd8gf d9gd:gd;d<gd=gd>d?gd@gdAdBgdCgf dDgdEgf dFgdGgf dHgdIgdJdKgdLgdMdNgdOgdPdQgdRgf dSgdTgdUdVgdWgdXdYgdZgd[d\gd]gf d^gd_gf d`gdagg!} x| D ]\}}t |d |d d|d |d f  t |d |d  t |d |d d f |krTt |d |d dd t |d |d dd qTW d S )bNr   r3   r   zShapes: %s %sTF)r   )r3   )r3   )r   r3   )r3   r3   )r3   r3   )r3   r   )r3   r3   )r3   r3   )r   r3   )r3   r   )r3   r3   )r   r   )r3   r3   )r3   r3   )r   r   )r   r3   )r   r3   )r   r   )r3   r   )r3   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r3   )r3   )r3   )r3   r3   )r3   r3   )r3   )r3   r   )r3   r3   )r   )r3   r3   )r3   r3   )r3   r3   )r3   r3   )r   r   )r3   )r   r3   )r   )r3   r   )r3   r   )r   )r   r3   )r   r3   )r   r3   )r   r3   )r3   r   )r3   r   )r   )r   )r   )r   r   )r   r   )r   )r   r   )r   r   )r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   )r   r   )r   )r   r   )r   r   )r   )r   r   )r   r   )r   r   )r   r   )r   r   )r   r   )r*   )r6   r   r   r   r   r   test_same_as_ufunc   sR    
































r<   c              C   sv  t jddt jdgt jddt jdgt jddt jdgt jddt jdgt jdd	t jdgt jdd
t jdgt jddt jdgt jddt jdjddgt jddt jdddgdddgggt jddt jdgt jddt jdgt jddt jdgt jddt jdgt jddt jdgt jddt jdgg} x(| D ] \}}}t||}t|| qNW d S )Nr   r   r3   r2   )r   )r   )r3   )r   )r2   )r   r2   r3   )r   r2   r3   )r3   )r   r3   r    )r2   r3   )r   )r   r2   )r   r2   )r   r2   )r2   r   )r2   r   )r2   r   )r   r4   r   onesr$   r%   r   r   )r6   input_arrayr   r   actualr   r   r   test_broadcast_to_succeeds   s$    $
r@   c                 sz   df gd	f gd
f 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} x.| D ]&\}t j| tt fdd qLW d S )Nr   r   r3   r2   r:   c                  s
   t  S )N)r   r   )arrtarget_shaper   r   <lambda>  s    z*test_broadcast_to_raises.<locals>.<lambda>)r   )r   )r3   )r3   )r   )r3   )r2   )r3   )r:   )r   r2   )r2   r   )r   r   )r   )r   r    )r   r    )r    )r   r2   r    )r    r2   )r   r   r   r   )r6   Z
orig_shaper   )rA   rB   r   test_broadcast_to_raises  s    

rD   c                  s   t t f  t tddgd	 t ttjd
d t ttjdtjdd t ttjdgd  d t ttjdgd  d t ttjdgd dg  d tjdgd tjdgd   tt fdd d S )Nr   r2   r3   r:       d   c                  s   t   S )N)r   r   )bad_argsr   r   rC      s    z&test_broadcast_shape.<locals>.<lambda>)r2   )r   r   )r   r   )r   r   )r3   r:   )r3   r:   )r   r2   )r   r2   )r   r2   )r   r2   )r2   )r   r   r   r=   r   r   r   r   )rG   r   test_broadcast_shape  s      rH   c              C   s"  t jd g} t| }t jd g}t|t jd g t jddddg} t| dd| j fd}t jddg}t|| t jddddg} t| ddd| j fd}t jddddgddddgddddgg}t|| t jddg}t jd|d} t j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 j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 )Nr   r2   r3   r:   )r   stridesr   numi4objO)r      ZV4 )namesformatsc             S   s   g | ]}t |qS r   )r   )r   ir   r   r   r   J  s    z#test_as_strided.<locals>.<listcomp>)r2   )r3   r:   )rJ   rK   )rL   rM   )r:   )r3   r:   )r:   )r3   r:   )r:   )r3   r:   )r3   r:   )r   r4   r	   r   itemsizer   emptyr$   r   ranger   )r   a_viewr   dtZexpected_numZexpected_objrr   r   r   test_as_strided#  sB    
(
rY   c              C   s   t jd} t| dd}t|jj  t| dd}t|jj d|d< t| t j| d d| j_t| dd}t| dd}t|jj  d S )Nr+   F)	writeableTr3   .)r   r=   r	   r   flagsrZ   r   Z	full_like)rA   viewr   r   r   as_strided_writeableP  s    
r]   c               @   s   e Zd Zdd ZdS )VerySimpleSubClassc             O   s   t j|ddi|j| S )NsubokT)r   r4   r\   )clsargskwargsr   r   r   __new__c  s    zVerySimpleSubClass.__new__N)__name__
__module____qualname__rc   r   r   r   r   r^   b  s   r^   c               @   s   e Zd Zdd Zdd ZdS )SimpleSubClassc             O   s$   t j|ddi|j| }d|_|S )Nr_   Tsimple)r   r4   r\   info)r`   ra   rb   selfr   r   r   rc   h  s    zSimpleSubClass.__new__c             C   s   t |ddd | _d S )Nri   rO   z
 finalized)getattrri   )rj   rL   r   r   r   __array_finalize__m  s    z!SimpleSubClass.__array_finalize__N)rd   re   rf   rc   rl   r   r   r   r   rg   g  s   rg   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j	t
| j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 )Nr   r2   r3   r:   )r   rI   T)r   rI   r_   zsimple finalized)r_   )r2   )r2   )r2   r    )r2   r:   )r^   r   typer	   rS   r   ndarrayrg   ri   r$   r   r%   r
   r   r   )r   rV   bZb_viewr   r   r   r   test_subclassesq  s8    
rp   c              C   s  t jdddg} t| d}t|jjd tt|jt	d d xdt
| fdt
d| fgD ]z\}}xp|D ]h}|rtt t|jjd W d Q R X tt d|d d < W d Q R X t|jjd qft|jjd qfW qXW xJt
| t
d| gD ]4}x.|D ]&}d|j_t|jjd d|d d < qW qW d| j_t
d| \}}t|jjd d}dg}tt jd||}t jd	}t
||\}	}
t|	j|
jk d S )
Nr   r2   r3   Fr   T)r2   r3   )r2   )r   )r   r4   r   r   r[   rZ   r   r   __setitem__slicer
   r   FutureWarningDeprecationWarningr	   r   r   r   )originalresultis_broadcastresults_r   rI   Ztricky_arrayotherfirstsecondr   r   r   test_writeable  s:    





r}   c              C   sn   t jdddg} xXdt| fdtd| fgD ]:\}}x0|D ](}|rRt|jsbtq:t|j s:tq:W q,W d S )Nr   r2   r3   FTr   )r   r4   r
   
memoryviewreadonlyAssertionError)ru   rw   rx   rv   r   r   r   test_writeable_memoryview  s    
r   c              C   sX   t jdtd} t jdgd td}t| d}t|| t| t jd\}}t|| d S )Nr   )r   r3   )r3   )r   r4   objectr   r   r
   r=   )r>   r   r?   ry   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/   r1   r5   r7   r8   r9   r;   r<   r@   rD   rH   rY   r]   rn   r^   rg   rp   r}   r   r   r   r   r   r   <module>   s2    

 4-
%/