class_docstr: An owning buffer that represents device memory.
  
  This class isn't meant to be used throughout cuDF. Instead, it
  standardizes data owning by wrapping any data object that
  represents device memory. Multiple `Buffer` instances, which are
  the ones used throughout cuDF, can then refer to the same
  `BufferOwner` instance.
  
  In order to implement copy-on-write and spillable buffers, we need the
  ability to detect external access to the underlying memory. We say that
  the buffer has been exposed if the device pointer (integer or void*) has
  been accessed outside of BufferOwner. In this case, we have no control
  over knowing if the data is being modified by a third party.
  
  Use `_from_device_memory` and `_from_host_memory` to create
  a new instance from either device or host memory respectively.
class_docstr_tok: ["An","owning","buffer","that","represents","device","memory",".","This","class","is","n't","meant","to","be","used","throughout","cuDF",".","Instead",",","it","standardizes","data","owning","by","wrapping","any","data","object","that","represents","device","memory",".","Multiple","`","Buffer","`","instances",",","which","are","the","ones","used","throughout","cuDF",",","can","then","refer","to","the","same","`","BufferOwner","`","instance",".","In","order","to","implement","copy-on-write","and","spillable","buffers",",","we","need","the","ability","to","detect","external","access","to","the","underlying","memory",".","We","say","that","the","buffer","has","been","exposed","if","the","device","pointer","(","integer","or","void","*",")","has","been","accessed","outside","of","BufferOwner",".","In","this","case",",","we","have","no","control","over","knowing","if","the","data","is","being","modified","by","a","third","party",".","Use","`","_from_device_memory","`","and","`","_from_host_memory","`","to","create","a","new","instance","from","either","device","or","host","memory","respectively","."]
docstr: The current exposure status of the buffer
  
  This is used by ExposureTrackedBuffer to determine when a deep copy
  is required and by SpillableBuffer to mark the buffer unspillable.
code: def exposed(self) -> bool:
      """The current exposure status of the buffer
  
      This is used by ExposureTrackedBuffer to determine when a deep copy
      is required and by SpillableBuffer to mark the buffer unspillable.
      """
      return self._exposed
  
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 7 for calling the BufferOwner obj's underlying member method code with example usage: obj.exposed() and returns: self