code: def notna(obj: object) -> bool | npt.NDArray[np.bool_] | NDFrame:
      """
      Detect non-missing values for an array-like object.
  
      This function takes a scalar or array-like object and indicates
      whether values are valid (not missing, which is ``NaN`` in numeric
      arrays, ``None`` or ``NaN`` in object arrays, ``NaT`` in datetimelike).
  
      Parameters
      ----------
      obj : array-like or object value
          Object to check for *not* null or *non*-missing values.
  
      Returns
      -------
      bool or array-like of bool
          For scalar input, returns a scalar boolean.
          For array input, returns an array of boolean indicating whether each
          corresponding element is valid.
  
      See Also
      --------
      isna : Boolean inverse of pandas.notna.
      Series.notna : Detect valid values in a Series.
      DataFrame.notna : Detect valid values in a DataFrame.
      Index.notna : Detect valid values in an Index.
  
      Examples
      --------
      Scalar arguments (including strings) result in a scalar boolean.
  
      >>> pd.notna('dog')
      True
  
      >>> pd.notna(pd.NA)
      False
  
      >>> pd.notna(np.nan)
      False
  
      ndarrays result in an ndarray of booleans.
  
      >>> array = np.array([[1, np.nan, 3], [4, 5, np.nan]])
      >>> array
      array([[ 1., nan,  3.],
             [ 4.,  5., nan]])
      >>> pd.notna(array)
      array([[ True, False,  True],
             [ True,  True, False]])
  
      For indexes, an ndarray of booleans is returned.
  
      >>> index = pd.DatetimeIndex(["2017-07-05", "2017-07-06", None,
      ...                          "2017-07-08"])
      >>> index
      DatetimeIndex(['2017-07-05', '2017-07-06', 'NaT', '2017-07-08'],
                    dtype='datetime64[ns]', freq=None)
      >>> pd.notna(index)
      array([ True,  True, False,  True])
  
      For Series and DataFrame, the same type is returned, containing booleans.
  
      >>> df = pd.DataFrame([['ant', 'bee', 'cat'], ['dog', None, 'fly']])
      >>> df
           0     1    2
      0  ant   bee  cat
      1  dog  None  fly
      >>> pd.notna(df)
            0      1     2
      0  True   True  True
      1  True  False  True
  
      >>> pd.notna(df[1])
      0     True
      1    False
      Name: 1, dtype: bool
      """
      res = isna(obj)
      if isinstance(res, bool):
          return not res
      return ~res
  
imports: from __future__ import annotations
  from decimal import Decimal
  from functools import partial
  from typing import TYPE_CHECKING, overload
  import numpy
  from pandas._config import get_option
  from pandas._libs import lib
  import pandas._libs.missing
  from pandas._libs.tslibs import NaT, iNaT
  from pandas.core.dtypes.common import DT64NS_DTYPE, TD64NS_DTYPE, ensure_object, is_bool_dtype, is_categorical_dtype, is_complex_dtype, is_dtype_equal, is_extension_array_dtype, is_float_dtype, is_integer_dtype, is_object_dtype, is_scalar, is_string_or_object_np_dtype, needs_i8_conversion
  from pandas.core.dtypes.dtypes import CategoricalDtype, DatetimeTZDtype, ExtensionDtype, IntervalDtype, PeriodDtype
  from pandas.core.dtypes.generic import ABCDataFrame, ABCExtensionArray, ABCIndex, ABCMultiIndex, ABCSeries
  from pandas.core.dtypes.inference import is_list_like
label_desc: Use image node_id 16 for calling a global function with example usage: notna(obj) and returns: unknown, unknown