code: def started_event(
      self,
      ex_info,
      command,
      host_info,
      start_time,
      config,
      meta_info,
      _id,
  ):
      if self.overwrite is None:
          self.run_entry = {"_id": _id}
      else:
          if self.run_entry is not None:
              raise RuntimeError("Cannot overwrite more than once!")
          # TODO sanity checks
          self.run_entry = self.overwrite
  
      self.run_entry.update(
          {
              "experiment": dict(ex_info),
              "format": self.VERSION,
              "command": command,
              "host": dict(host_info),
              "start_time": start_time,
              "config": flatten(config),
              "meta": meta_info,
              "status": "RUNNING",
              "resources": [],
              "artifacts": [],
              "captured_out": "",
              "info": {},
              "heartbeat": None,
          }
      )
  
      # save sources
      self.run_entry["experiment"]["sources"] = self.save_sources(
          ex_info
      )
      self.insert()
      return self.run_entry["_id"]
  
imports: from typing import Optional, Union
  import mimetypes
  import os.path
  import pickle
  import re
  import sys
  import time
  from tempfile import NamedTemporaryFile
  import warnings
  import sacred.optional
  from sacred.commandline_options import cli_option
  from sacred.dependencies import get_digest
  from sacred.observers.base import RunObserver
  from sacred.observers.queue import QueueObserver
  from sacred.serializer import flatten
  from sacred.utils import ObserverError, PathType
  import pkg_resources
label_desc: Use image node_id 6 for calling the MongoObserver obj's underlying member method code with example usage: obj.started_event(ex_info, command, host_info, start_time, config, meta_info, _id) and returns: self