o
    Ô­jv  ã                   @   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   úX/var/www/html/CropPilot/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    )
í