
    G/PhM                     L    d Z ddlmZ ddlmZ ddlmc m	Z
 d Zd Zd Zd ZdS )	zNTools for testing implementations of __array_function__ and ufunc overrides


    )ARRAY_FUNCTIONS)ufuncNc                  V    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                 <    h | ]}t          |t                    |S  )
isinstance_ufunc).0objs     W/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numpy/testing/overrides.py	<setcomp>z/get_overridable_numpy_ufuncs.<locals>.<setcomp>   s6     * * *cC((*c * * *    )_umath__dict__values)ufuncss    r   get_overridable_numpy_ufuncsr   
   s2    * *V_3355 * * *FMr   c                 6    t          | t          j                  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   npr   funcs    r   allows_array_ufunc_overrider      s    ( dBH%%%r   c                  4    ddl m}  t          j                    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   s    r   %get_overridable_numpy_array_functionsr   2   s%      '&&&&& """r   c                     | 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   s    r   allows_array_function_overrider!   E   s     ###r   )__doc__numpy._core.overridesr   r   numpyr   r	   numpy._core.umath_coreumathr   r   r   r   r!   r   r   r   <module>r(      s    
 F E E E E E ! ! ! ! ! ! " " " " " " " " "  "& & &.# # #&$ $ $ $ $r   