a
    Xgv                     @   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 || _d S N)npZasarrayvalue)selfr    r
   i/var/www/html/cobodadashboardai.evdpl.com/venv/lib/python3.9/site-packages/numpy/lib/tests/test_mixins.py__init__   s    zArrayLike.__init__c                    s   | dd}|| D ]}t| jtf st  S qtdd |D }|r`tdd |D |d< t|||i |}t|tu rt fdd|D S |dkrd S t |S d S )Noutr
   c                 s   s"   | ]}t |tr|jn|V  qd S r   
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 r   r   r   r
   r
   r   r   !   s   c                 3   s   | ]}t  |V  qd S r   )typer   r	   r
   r   r   (       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u rtdd | D S t| S d S )Nc                 s   s   | ]}t |V  qd S r   )r   )r   rr
   r
   r   r   6   r   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rXt t| t||d t| |D ]\}}t||| q@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,   Zresult_itemZexpected_itemr
   r
   r   r0   ;   s    
r0   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d  |tdt d  |t tdd  |dt td  |t tdtd  |tdt td  d S )Nc                 S   s   t | td d S Nr   )r0   r   r)   r
   r
   r   checkb   s    z<TestNDArrayOperatorsMixin.test_array_like_add.<locals>.checkr   )r   r   array)r	   r4   r
   r
   r   test_array_like_add`   s    z-TestNDArrayOperatorsMixin.test_array_like_addc                 C   s`   t tdg}|d7 }t|t tdg tdg}|t d7 }t|t tdg d S )Nr      )r   r   r5   r0   )r	   
array_liker5   r
   r
   r   test_inplaceq   s    z&TestNDArrayOperatorsMixin.test_inplacec                 C   s   G dd d}t d}| }t|| |u  t|| |u  tt ||7 }W d    n1 sb0    Y  tt ||  W d    n1 s0    Y  tt ||  W d    n1 s0    Y  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 r   r
   r	   otherr
   r
   r   __add__   s    z>TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOut.__add__c                 S   s   | S r   r
   r:   r
   r
   r   __radd__   s    z?TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOut.__radd__)r"   r$   r%   __doc__r!   r<   r=   r
   r
   r
   r   OptOut|   s   r?   r7   )r   r   r   	TypeError)r	   r?   r8   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%   r>   r
   r
   r
   r   SubArrayLike   s   rB   r   r7   )r   r0   )r	   rB   r   yr
   r
   r   test_subclass   s
    z'TestNDArrayOperatorsMixin.test_subclassc                 C   s   t d}t }tt ||  W d    n1 s40    Y  tt ||  W d    n1 sd0    Y  tt ||7 }W d    n1 s0    Y  d S r3   )r   objectr   r@   )r	   r   objr
   r
   r   test_object   s    
&
&
z%TestNDArrayOperatorsMixin.test_objectc                 C   sH   t g d}t|}tjtjttjfD ]}t||t|| q(d S )Nr   r7      )	r   r5   r   operatornegposabsinvertr0   )r	   r5   r8   opr
   r
   r   test_unary_methods   s    z,TestNDArrayOperatorsMixin.test_unary_methodsc                 C   sT   t g d}t|}tD ]4}t||d}||d}d|}t|||d qd S )NrH   r7   failed for operator {}r+   )r   r5   r   _ALL_BINARY_OPERATORSr*   formatr0   )r	   r5   r8   rP   r1   actualr,   r
   r
   r   test_forward_binary_methods   s    

z5TestNDArrayOperatorsMixin.test_forward_binary_methodsc                 C   sB   t D ]8}t|dd}|dtd}d|}t|||d qd S )NrJ   r7   rR   r+   )rS   r*   r   rT   r0   )r	   rP   r1   rU   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 d}t|t || t|t|| t|t|| d S )Nr7   rJ   )r-      )r   r5   Zfloat64r   r0   matmulrK   )r	   r5   r8   r1   r
   r
   r   test_matmul   s    z%TestNDArrayOperatorsMixin.test_matmulc                 C   sH   t tg d}ttj|tddgd u  t|t g d d S )N)r7   rJ         r   r7   )rI   r[   r\   )r   r   r5   r   negativer   r0   )r	   r5   r
   r
   r   test_ufunc_at   s     z'TestNDArrayOperatorsMixin.test_ufunc_atc                 C   sP   t d\}}t|t|f}tt td| tt tt d| d S )Ng      ?)r   frexpr   r0   r5   )r	   Zmantissaexponentr1   r
   r
   r   test_ufunc_two_outputs   s    z0TestNDArrayOperatorsMixin.test_ufunc_two_outputsN)r"   r$   r%   r6   r9   rA   rD   rG   rQ   rV   rW   rZ   r_   rb   r
   r
   r
   r   r2   ^   s   	

		
r2   )N)#r&   rK   numpyr   Znumpy.testingr   r   r   libZmixinsZNDArrayOperatorsMixinr   r*   r0   ltleeqnegtgeaddsubmultruedivfloordivmoddivmodpowlshiftrshiftand_xoror_rS   r2   r
   r
   r
   r   <module>   s6   )
