code: def destructure_dataframe_iloc_indexer(
      key: Any, frame: cudf.DataFrame
  ) -> Tuple[Any, Tuple[bool, ColumnLabels]]:
      """Destructure an index key for DataFrame iloc getitem.
  
      Parameters
      ----------
      key
          Key to destructure
      frame
          DataFrame to provide context context
  
      Returns
      -------
      tuple
          2-tuple of a key for the rows and tuple of
          (column_index_is_scalar, column_names) for the columns
  
      Raises
      ------
      TypeError
          If the column indexer is invalid
      IndexError
          If the provided key does not destructure correctly
      NotImplementedError
          If the requested column indexer repeats columns
      """
      rows, cols = destructure_iloc_key(key, frame)
      if cols is Ellipsis:
          cols = slice(None)
      scalar = is_integer(cols)
      try:
          column_names: ColumnLabels = list(
              frame._data.get_labels_by_index(cols)
          )
          if len(set(column_names)) != len(column_names):
              raise NotImplementedError(
                  "cudf DataFrames do not support repeated column names"
              )
      except TypeError:
          raise TypeError(
              "Column indices must be integers, slices, "
              "or list-like of integers"
          )
      if scalar:
          assert (
              len(column_names) == 1
          ), "Scalar column indexer should not produce more than one column"
  
      return rows, (scalar, column_names)
  
file_path: cudf/python/cudf/cudf/core/indexing_utils.py
imports: from __future__ import annotations
  from dataclasses import dataclass
  from typing import Any, List, Tuple, Union
  from typing_extensions import TypeAlias
  import cudf
  from cudf.api.types import _is_scalar_or_zero_d_array, is_bool_dtype, is_integer, is_integer_dtype
  from cudf.core.copy_types import BooleanMask, GatherMap
label_desc: Use image node_id 2 for calling a global function with example usage: destructure_dataframe_iloc_indexer(key, frame) and returns: rows,  scalar,  column_names