code: def determine_array_dtype(X):
      if X is None:
          return None
  
      if isinstance(X, (CudfDataFrame, PandasDataFrame)):
          # Assume single-label target
          dtype = X[X.columns[0]].dtype
      else:
          try:
              dtype = X.dtype
          except AttributeError:
              dtype = None
  
      return dtype
  
file_path: cuml/python/cuml/internals/input_utils.py
imports: from collections import namedtuple
  from cuml.internals.array import CumlArray
  from cuml.internals.array_sparse import SparseCumlArray
  from cuml.internals.global_settings import GlobalSettings
  from cuml.internals.mem_type import MemoryType
  from cuml.internals.safe_imports import cpu_only_import, cpu_only_import_from, gpu_only_import, gpu_only_import_from, safe_import, safe_import_from, null_decorator, return_false, UnavailableError
label_desc: Use image node_id 3 for calling a global function with example usage: determine_array_dtype(X) and returns: dtype, None