class_docstr: A buffer that represents a slice or view of a `BufferOwner`.
  
  Use the factory function `as_buffer` to create a Buffer instance.
  
  Note
  ----
  This buffer is untyped, so all indexing and sizes are in bytes.
  
  Parameters
  ----------
  owner
      The owning exposure buffer this refers to.
  offset
      The offset relative to the start memory of owner (in bytes).
  size
      The size of the buffer (in bytes). If None, use the size of owner.
class_docstr_tok: ["A","buffer","that","represents","a","slice","or","view","of","a","`","BufferOwner","`",".","Use","the","factory","function","`","as_buffer","`","to","create","a","Buffer","instance",".","Note","--","--","This","buffer","is","untyped",",","so","all","indexing","and","sizes","are","in","bytes",".","Parameters","--","--","--","--","--","owner","The","owning","exposure","buffer","this","refers","to",".","offset","The","offset","relative","to","the","start","memory","of","owner","(","in","bytes",")",".","size","The","size","of","the","buffer","(","in","bytes",")",".","If","None",",","use","the","size","of","owner","."]
docstr: Size of the buffer in bytes.
code: def nbytes(self) -> int:
      """Size of the buffer in bytes."""
      return self._size
  
imports: from __future__ import annotations
  import math
  import pickle
  import weakref
  from types import SimpleNamespace
  from typing import Any, Dict, Literal, Mapping, Optional, Sequence, Tuple
  import numpy
  from typing_extensions import Self
  import rmm
  import cudf
  from cudf.core.abc import Serializable
  from cudf.utils.string import format_bytes
label_desc: Use image node_id 3 for calling the Buffer obj's underlying member method code with example usage: obj.nbytes() and returns: self