class_docstr: An exposure tracked buffer.
  
  Parameters
  ----------
  owner
      The owning exposure tracked buffer this refers to.
  offset
      The offset relative to the start memory of owner (in bytes).
  size
      The size of the slice (in bytes)
class_docstr_tok: ["An","exposure","tracked","buffer",".","Parameters","--","--","--","--","--","owner","The","owning","exposure","tracked","buffer","this","refers","to",".","offset","The","offset","relative","to","the","start","memory","of","owner","(","in","bytes",")",".","size","The","size","of","the","slice","(","in","bytes",")"]
docstr: Make sure this slice is the only one pointing to the owner.
  
  This is used by copy-on-write to trigger a deep copy when write
  access is detected.
  
  Parameters
  ----------
  data : device-buffer-like
      An object implementing the CUDA Array Interface.
  
  Returns
  -------
  Buffer
      Buffer representing the same device memory as `data`
docstr_tok: ["Make","sure","this","slice","is","the","only","one","pointing","to","the","owner",".","This","is","used","by","copy-on-write","to","trigger","a","deep","copy","when","write","access","is","detected",".","Parameters","--","--","--","--","--","data",":","device-buffer-like","An","object","implementing","the","CUDA","Array","Interface",".","Returns","--","--","--","-","Buffer","Buffer","representing","the","same","device","memory","as","`","data","`"]
code: def make_single_owner_inplace(self) -> None:
      """Make sure this slice is the only one pointing to the owner.
  
      This is used by copy-on-write to trigger a deep copy when write
      access is detected.
  
      Parameters
      ----------
      data : device-buffer-like
          An object implementing the CUDA Array Interface.
  
      Returns
      -------
      Buffer
          Buffer representing the same device memory as `data`
      """
  
      if len(self._owner._slices) > 1:
          # If this is not the only slice pointing to `self._owner`, we
          # point to a new deep copy of the owner.
          t = self.copy(deep=True)
          self._owner = t._owner
          self._offset = t._offset
          self._size = t._size
          self._owner._slices.add(self)
  
file_path: cudf/python/cudf/cudf/core/buffer/exposure_tracked_buffer.py
imports: from __future__ import annotations
  from typing import Literal, Mapping, Optional
  from typing_extensions import Self
  import cudf
  from cudf.core.buffer.buffer import Buffer, BufferOwner
label_desc: Use image node_id 6 for calling the ExposureTrackedBuffer obj's underlying member method code with example usage: obj.make_single_owner_inplace() without return types