code: def _protocol_to_cudf_column_numeric(
      col, allow_copy: bool
  ) -> Tuple[
      cudf.core.column.ColumnBase,
      Mapping[str, Optional[Tuple[_CuDFBuffer, ProtoDtype]]],
  ]:
      """
      Convert an int, uint, float or bool protocol column
      to the corresponding cudf column
      """
      if col.offset != 0:
          raise NotImplementedError("column.offset > 0 not handled yet")
  
      buffers = col.get_buffers()
      assert (
          buffers["data"] is not None
      ), "data buffer should not be None"
      _dbuffer, _ddtype = buffers["data"]
      _dbuffer = _ensure_gpu_buffer(_dbuffer, _ddtype, allow_copy)
      cudfcol_num = build_column(
          _dbuffer._buf,
          protocol_dtype_to_cupy_dtype(_ddtype),
      )
      return _set_missing_values(col, cudfcol_num, allow_copy), buffers
  
imports: import enum
  from collections import abc
  from typing import Any, Dict, Iterable, Mapping, Optional, Sequence, Tuple, cast
  import cupy
  import numpy
  from numba.cuda import as_cuda_array
  import rmm
  import cudf
  from cudf.core.buffer import Buffer, as_buffer
  from cudf.core.column import as_column, build_categorical_column, build_column
label_desc: Use image node_id 3 for calling a global function with example usage: _protocol_to_cudf_column_numeric(col, allow_copy) and returns: _set_missing_values,  buffers