o
    gU                     @   sR   d Z ddlmZ ddlmZ ddlm  m	Z
 dd Zdd Zd	d
 Zdd ZdS )zNTools for testing implementations of __array_function__ and ufunc overrides


    )ARRAY_FUNCTIONS)ufuncNc                  C   s   dd t j D } | S )zList all numpy ufuncs overridable via `__array_ufunc__`

    Parameters
    ----------
    None

    Returns
    -------
    set
        A set containing all overridable ufuncs in the public numpy API.
    c                 S   s   h | ]	}t |tr|qS  
isinstance_ufunc).0objr   r   N/var/www/visachat/venv/lib/python3.10/site-packages/numpy/testing/overrides.py	<setcomp>   s    
z/get_overridable_numpy_ufuncs.<locals>.<setcomp>)_umath__dict__values)ufuncsr   r   r
   get_overridable_numpy_ufuncs
   s   r   c                 C   s
   t | tS )a  Determine if a function can be overridden via `__array_ufunc__`

    Parameters
    ----------
    func : callable
        Function that may be overridable via `__array_ufunc__`

    Returns
    -------
    bool
        `True` if `func` is overridable via `__array_ufunc__` and
        `False` otherwise.

    Notes
    -----
    This function is equivalent to ``isinstance(func, np.ufunc)`` and
    will work correctly for ufuncs defined outside of Numpy.

    r   funcr   r   r
   allows_array_ufunc_override   s   
r   c                  C   s   ddl m}  t S )a  List all numpy functions overridable via `__array_function__`

    Parameters
    ----------
    None

    Returns
    -------
    set
        A set containing all functions in the public numpy API that are
        overridable via `__array_function__`.

    r   recfunctions)	numpy.libr   _array_functionscopyr   r   r   r
   %get_overridable_numpy_array_functions2   s   r   c                 C   s   | t v S )ah  Determine if a Numpy function can be overridden via `__array_function__`

    Parameters
    ----------
    func : callable
        Function that may be overridable via `__array_function__`

    Returns
    -------
    bool
        `True` if `func` is a function in the Numpy API that is
        overridable via `__array_function__` and `False` otherwise.
    )r   r   r   r   r
   allows_array_function_overrideE   s   r   )__doc__numpy._core.overridesr   r   numpyr   r   numpy._core.umath_coreumathr   r   r   r   r   r   r   r   r
   <module>   s    