code: def heartbeat_event(self, info, captured_out, beat_time, result):
      self.info = info
      self.run_entry["heartbeat"] = beat_time.isoformat()
      self.run_entry["result"] = result
      self.cout = captured_out
      self.save_cout()
      self.save_json(self.run_entry, "run.json")
      if self.info:
          self.save_json(self.info, "info.json")
  
imports: import json
  import os
  import os.path
  from pathlib import Path
  from typing import Optional
  import warnings
  from shutil import copyfile, SameFileError
  from sacred.commandline_options import cli_option
  from sacred.dependencies import get_digest
  from sacred.observers.base import RunObserver
  from sacred import optional
  from sacred.serializer import flatten
  from sacred.utils import PathType
label_desc: Use image node_id 16 for calling the FileStorageObserver obj's underlying member method code with example usage: obj.heartbeat_event(info, captured_out, beat_time, result) without return types