class_docstr: Tracks saved skip tensors.
  
  It will update the given micro-batch in place. This is because when it
  manipulates the underlying skip tensors, the current micro-batch also has
  to be connected with the skip tensors.
  
  One thread has one skip tracker. Call :func:`current_skip_tracker` to get
  the skip tracker on the current thread.
class_docstr_tok: ["Tracks","saved","skip","tensors",".","It","will","update","the","given","micro-batch","in","place",".","This","is","because","when","it","manipulates","the","underlying","skip","tensors",",","the","current","micro-batch","also","has","to","be","connected","with","the","skip","tensors",".","One","thread","has","one","skip","tracker",".","Call",":","func",":","`","current_skip_tracker","`","to","get","the","skip","tracker","on","the","current","thread","."]
code: def copy(
      self,
      batch: Batch,
      prev_stream: AbstractStream,
      next_stream: AbstractStream,
      ns: Namespace,
      name: str,
  ) -> None:
      raise TypeError(
          "copy is not supported for non-portal skip tensors"
      )
  
imports: from contextlib import contextmanager
  import threading
  from typing import Dict, Generator, List, Optional, Tuple
  from torch import Tensor
  from ..checkpoint import is_checkpointing
  from ..dependency import fork, join
  from ..microbatch import Batch
  from ..stream import AbstractStream
  from .layout import SkipLayout
  from .namespace import Namespace
  from .portal import Portal
label_desc: Use image node_id 4 for calling the SkipTracker obj's underlying member method code with example usage: obj.copy(batch, prev_stream, next_stream, ns, name) without return types