§
    ÇÁ³gU  ã                   ó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 )zÎList 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     úU/var/www/html/mpstechhub/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                 ó,   — 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   ©Úfuncs    r   Úallows_array_ufunc_overrider      s   € õ( �d�FÑ#Ô#Ð#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   