o
    `^h                     @   s0   d dl Z d dlZd dlmZ dd Zdd ZdS )    N)suppressc                 C   s$   t | tj ot | tjot| S )a  Test if x is NaN.

    This function is meant to overcome the issue that np.isnan does not allow
    non-numerical types as input, and that np.nan is not float('nan').

    Parameters
    ----------
    x : any type
        Any scalar value.

    Returns
    -------
    bool
        Returns true if x is NaN, and false otherwise.

    Examples
    --------
    >>> import numpy as np
    >>> from sklearn.utils._missing import is_scalar_nan
    >>> is_scalar_nan(np.nan)
    True
    >>> is_scalar_nan(float("nan"))
    True
    >>> is_scalar_nan(None)
    False
    >>> is_scalar_nan("")
    False
    >>> is_scalar_nan([np.nan])
    False
    )
isinstancenumbersIntegralRealmathisnan)x r
   T/home/air/shanriGPT/back/venv/lib/python3.10/site-packages/sklearn/utils/_missing.pyis_scalar_nan	   s
    
r   c                 C   s@   t t ddlm} | |u W  d   S 1 sw   Y  dS )a  Test if x is pandas.NA.

    We intentionally do not use this function to return `True` for `pd.NA` in
    `is_scalar_nan`, because estimators that support `pd.NA` are the exception
    rather than the rule at the moment. When `pd.NA` is more universally
    supported, we may reconsider this decision.

    Parameters
    ----------
    x : any type

    Returns
    -------
    boolean
    r   )NANF)r   ImportErrorpandasr   )r	   r   r
   r
   r   is_pandas_na/   s
   
 r   )r   r   
contextlibr   r   r   r
   r
   r
   r   <module>   s
   &