3
���h� � @ sX d Z ddlmZ dgZdd� Zdd� Zdd � Zd
d� Zdd
� Z dd� Z
G dd� d�ZdS )zEMixin classes for custom array types that don't inherit from ndarray.� )�umath�NDArrayOperatorsMixinc C s$ y
| j dkS tk
r dS X dS )z)True when __array_ufunc__ is set to None.NF)Z__array_ufunc__�AttributeError)�obj� r �1/tmp/pip-build-5_djhm0z/numpy/numpy/lib/mixins.py�_disables_array_ufunc s
r c s � fdd�}dj |�|_|S )z>Implement a forward binary method with a ufunc, e.g., __add__.c s t |�rtS � | |�S )N)r �NotImplemented)�self�other)�ufuncr r �func s z_binary_method.<locals>.funcz__{}__)�format�__name__)r �namer
r )r r �_binary_method s r c s � fdd�}dj |�|_|S )zAImplement a reflected binary method with a ufunc, e.g., __radd__.c s t |�rtS � || �S )N)r r )r
r )r r r r
s z&_reflected_binary_method.<locals>.funcz__r{}__)r r )r r r
r )r r �_reflected_binary_method s r c s � fdd�}dj |�|_|S )zAImplement an in-place binary method with a ufunc, e.g., __iadd__.c s � | || fd�S )N)�outr )r
r )r r r r
& |