class_docstr: Wrap an object and expose a run method which checkpoints periodically.
  
  This internally creates a Checkpointer around `wrapped` object and exposes
  all of the methods of `wrapped`. Additionally, any `**kwargs` passed to the
  runner are forwarded to the internal Checkpointer.
class_docstr_tok: ["Wrap","an","object","and","expose","a","run","method","which","checkpoints","periodically",".","This","internally","creates","a","Checkpointer","around","`","wrapped","`","object","and","exposes","all","of","the","methods","of","`","wrapped","`",".","Additionally",",","any","`","*","*","kwargs","`","passed","to","the","runner","are","forwarded","to","the","internal","Checkpointer","."]
code: def __init__(
      self,
      wrapped: Union[Checkpointable, core.Saveable, TFSaveable],
      key: str = "wrapped",
      *,
      time_delta_minutes: int = 30,
      **kwargs,
  ):
      if isinstance(wrapped, TFSaveable):
          # If the object to be wrapped exposes its TF State, checkpoint that.
          objects_to_save = wrapped.state
      else:
          # Otherwise checkpoint the wrapped object itself.
          objects_to_save = wrapped
  
      self._wrapped = wrapped
      self._time_delta_minutes = time_delta_minutes
      self._checkpointer = Checkpointer(
          objects_to_save={key: objects_to_save},
          time_delta_minutes=time_delta_minutes,
          **kwargs,
      )
  
imports: import abc
  import datetime
  import os
  import pickle
  import time
  from typing import Mapping, Optional, Union
  from absl import logging
  from acme import core
  from acme.utils import signals
  from acme.utils import paths
  import sonnet
  import tensorflow
  import tree
  from tensorflow.python.saved_model import revived_types
label_desc: Use image node_id 1 to create a new CheckpointingRunner object from inherited base classes: core with example: obj = CheckpointingRunner(wrapped, key)