o
    hv                     @   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)npasarrayvalue)selfr	    r   o/var/www/html/construction_image-detection-poc/venv/lib/python3.10/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 }|r0tdd |D |d< t|||i |}t|tu rKt fdd|D S |dkrQd S t |S )Noutr   c                 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   r   r   r   r   r   r   r   r   !   s
    
c                 3   s    | ]	}t  |V  qd S r   )typer   r
   r   r   r   (   s    at)getr   _HANDLED_TYPESr   NotImplementedtuplegetattrr   )r
   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   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 )Nc                 s   s    | ]}t |V  qd S r   )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 t| |D ]
\}}t||| q d S t | 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_itemexpected_itemr   r   r   r3   ;   s   

r3   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   )r3   r   r,   r   r   r   checkb   s   z<TestNDArrayOperatorsMixin.test_array_like_add.<locals>.checkr   )r   r   array)r
   r9   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   r:   r3   )r
   
array_liker:   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 s1w   Y  tt ||  W d    n1 sIw   Y  tt ||  W d    d S 1 sbw   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 r   r   r
   otherr   r   r   __add__      z>TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOut.__add__c                 S   r?   r   r   r@   r   r   r   __radd__   rC   z?TestNDArrayOperatorsMixin.test_opt_out.<locals>.OptOut.__radd__)r$   r&   r'   __doc__r#   rB   rD   r   r   r   r   OptOut|   s
    rF   r<   )r   r   r   	TypeError)r
   rF   r=   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'   rE   r   r   r   r   SubArrayLike   s    rJ   r   r<   )r   r3   )r
   rJ   r   yr   r   r   test_subclass   s
   z'TestNDArrayOperatorsMixin.test_subclassc                 C   s   t d}t }tt ||  W d    n1 sw   Y  tt ||  W d    n1 s2w   Y  tt ||7 }W d    d S 1 sKw   Y  d S r8   )r   objectr   rG   )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   r<      )	r   r:   r   operatornegposabsinvertr3   )r
   r:   r=   opr   r   r   test_unary_methods   s   z,TestNDArrayOperatorsMixin.test_unary_methodsc                 C   sT   t g d}t|}tD ]}t||d}||d}d|}t|||d qd S )NrP   r<   failed for operator {}r.   )r   r:   r   _ALL_BINARY_OPERATORSr-   formatr3   )r
   r:   r=   rX   r4   actualr/   r   r   r   test_forward_binary_methods   s   

z5TestNDArrayOperatorsMixin.test_forward_binary_methodsc                 C   sB   t D ]}t|dd}|dtd}d|}t|||d qd S )NrR   r<   rZ   r.   )r[   r-   r   r\   r3   )r
   rX   r4   r]   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 )Nr<   rR   )r0      )r   r:   float64r   r3   matmulrS   )r
   r:   r=   r4   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)r<   rR         r   r<   )rQ   rd   re   )r   r   r:   r   negativer   r3   )r
   r:   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   r3   r:   )r
   mantissaexponentr4   r   r   r   test_ufunc_two_outputs   s   z0TestNDArrayOperatorsMixin.test_ufunc_two_outputsN)r$   r&   r'   r;   r>   rI   rL   rO   rY   r^   r_   rc   rh   rl   r   r   r   r   r7   ^   s    	

		
r7   r   )#r)   rS   numpyr   numpy.testingr   r   r   libmixinsNDArrayOperatorsMixinr   r-   r3   ltleeqnegtgeaddsubmultruedivfloordivmoddivmodpowlshiftrshiftand_xoror_r[   r7   r   r   r   r   <module>   s8    )
