3
Kdv                 @   s   d dl Z d dlZd dlZd dlmZmZmZ G dd dejj	j
Zdd ZdddZejejejejejejejejejejejejeeejejejejej gZ!G d	d
 d
Z"dS )    N)assert_assert_equalassert_raisesc               @   s0   e Zd Zdd ZejejfZdd Z	dd Z
dS )	ArrayLikec             C   s   t j|| _d S )N)npZasarrayvalue)selfr    r	   O/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test_mixins.py__init__   s    zArrayLike.__init__c                s   |j df }x&|| D ]}t| jtf stS qW tdd |D }|r`tdd |D |d< t||||}t|tkrt fdd|D S |dkrd S t |S d S )Noutc             s   s"   | ]}t |tr|jn|V  qd S )N)
isinstancer   r   ).0xr	   r	   r
   	<genexpr>   s   z,ArrayLike.__array_ufunc__.<locals>.<genexpr>c             s   s"   | ]}t |tr|jn|V  qd S )N)r   r   r   )r   r   r	   r	   r
   r   "   s   c             3   s   | ]}t  |V  qd S )N)type)r   r   )r   r	   r
   r   (   s    at)getr   _HANDLED_TYPESr   NotImplementedtuplegetattrr   )r   Zufuncmethodinputskwargsr   r   resultr	   )r   r
   __array_ufunc__   s     
zArrayLike.__array_ufunc__c             C   s   dt | j| jf S )Nz%s(%r))r   __name__r   )r   r	   r	   r
   __repr__0   s    zArrayLike.__repr__N)r   
__module____qualname__r   r   ZndarraynumbersNumberr   r   r   r	   r	   r	   r
   r      s   r   c             C   s*   t | tkrtdd | D S t| S d S )Nc             s   s   | ]}t |V  qd S )N)r   )r   rr	   r	   r
   r   6   s    z"wrap_array_like.<locals>.<genexpr>)r   r   r   )r   r	   r	   r
   wrap_array_like4   s    r$   c             C   s   t t| t||d t| tr\t t| t||d xXt| |D ]\}}t||| qBW n4t | j|j|d t t| jdd t|jdd |d d S )N)err_msgdtype)	r   r   r   r   lenzip_assert_equal_type_and_valuer   r   )r   expectedr%   result_itemZexpected_itemr	   r	   r
   r)   ;   s    
r)   c               @   sd   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d Zdd Zdd ZdS )TestNDArrayOperatorsMixinc             C   s   dd }|t dd  |dt d  |t dtjd  |tjdt d  |t tjdd  |dt tjd  |t tjdtjd  |tjdt tjd  d S )Nc             S   s   t | td d S )Nr   )r)   r   )r   r	   r	   r
   checkb   s    z<TestNDArrayOperatorsMixin.test_array_like_add.<locals>.checkr   )r   r   array)r   r-   r	   r	   r
   test_array_like_add`   s    z-TestNDArrayOperatorsMixin.test_array_like_addc             C   s`   t tjdg}|d7 }t|t tjdg tjdg}|t d7 }t|t tjdg d S )Nr      )r   r   r.   r)   )r   
array_liker.   r	   r	   r
   test_inplaceq   s    z&TestNDArrayOperatorsMixin.test_inplacec             C   s   G dd d}t d}| }t|| |k t|| |k tt ||7 }W d Q R X tt ||  W d Q R X tt ||  W d Q R X d S )Nc               @   s$   e Zd ZdZdZdd Zdd ZdS )z6TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOutz(Object that opts out of __array_ufunc__.Nc             S   s   | S )Nr	   )r   otherr	   r	   r
   __add__   s    z>TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOut.__add__c             S   s   | S )Nr	   )r   r3   r	   r	   r
   __radd__   s    z?TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOut.__radd__)r   r   r    __doc__r   r4   r5   r	   r	   r	   r
   OptOut|   s   r7   r0   )r   r   r   	TypeError)r   r7   r1   Zopt_outr	   r	   r
   test_opt_outz   s    



z&TestNDArrayOperatorsMixin.test_opt_outc             C   s@   G dd dt }t d}|d}t|| | t|| | d S )Nc               @   s   e Zd ZdZdS )z=TestNDArrayOperatorsMixin.test_subclass.<locals>.SubArrayLikez&Should take precedence over ArrayLike.N)r   r   r    r6   r	   r	   r	   r
   SubArrayLike   s   r:   r   r0   )r   r)   )r   r:   r   yr	   r	   r
   test_subclass   s
    z'TestNDArrayOperatorsMixin.test_subclassc             C   sf   t d}t }tt ||  W d Q R X tt ||  W d Q R X tt ||7 }W d Q R X d S )Nr   )r   objectr   r8   )r   r   objr	   r	   r
   test_object   s    


z%TestNDArrayOperatorsMixin.test_objectc             C   sP   t jddddg}t|}x0tjtjttjgD ]}t||t|| q.W d S )Nr0   r      )	r   r.   r   operatornegposabsinvertr)   )r   r.   r1   opr	   r	   r
   test_unary_methods   s    z,TestNDArrayOperatorsMixin.test_unary_methodsc             C   s\   t jddddg}t|}x<tD ]4}t||d}||d}dj|}t|||d q W d S )Nr0   r   r@   zfailed for operator {})r%   rA   )r   r.   r   _ALL_BINARY_OPERATORSr$   formatr)   )r   r.   r1   rG   r*   actualr%   r	   r	   r
   test_forward_binary_methods   s    


z5TestNDArrayOperatorsMixin.test_forward_binary_methodsc             C   sF   x@t D ]8}t|dd}|dtd}dj|}t|||d qW d S )Nr@   r0   zfailed for operator {})r%   )rI   r$   r   rJ   r)   )r   rG   r*   rK   r%   r	   r	   r
   test_reflected_binary_methods   s
    

z7TestNDArrayOperatorsMixin.test_reflected_binary_methodsc             C   sd   t jddgt jd}t|}tt jd}t|t j|| t|tj|| t|tj|| d S )Nr0   r@   )r&      )r   r.   Zfloat64r   r)   matmulrB   )r   r.   r1   r*   r	   r	   r
   test_matmul   s    z%TestNDArrayOperatorsMixin.test_matmulc             C   sP   t tjddddg}ttjj|tjddgd k t|t ddddg d S )Nr0   r@         r   rA   )r   r   r.   r   negativer   r)   )r   r.   r	   r	   r
   test_ufunc_at   s     z'TestNDArrayOperatorsMixin.test_ufunc_atc             C   sP   t jd\}}t|t|f}tt jtd| tt jtt jd| d S )	Nr@   rQ   g      ?rV   g      ?rV   g      ?)r   frexpr   r)   r.   )r   Zmantissaexponentr*   r	   r	   r
   test_ufunc_two_outputs   s    z0TestNDArrayOperatorsMixin.test_ufunc_two_outputsN)r   r   r    r/   r2   r9   r<   r?   rH   rL   rM   rP   rU   rY   r	   r	   r	   r
   r,   ^   s   	

		
r,   )N)#r!   rB   Znumpyr   Znumpy.testingr   r   r   libZmixinsZNDArrayOperatorsMixinr   r$   r)   ltleeqnegtgeaddsubmultruedivfloordivmoddivmodpowlshiftrshiftand_xoror_rI   r,   r	   r	   r	   r
   <module>   s4   )
