code: def update_add(self, config_mod, path=""):
      added = config_mod.added
      updated = config_mod.modified
      typechanged = config_mod.typechanged
      self.added |= {join_paths(path, a) for a in added}
      self.modified |= {join_paths(path, u) for u in updated}
      self.typechanged.update(
          {join_paths(path, k): v for k, v in typechanged.items()}
      )
      self.docs.update(
          {
              join_paths(path, k): v
              for k, v in config_mod.docs.items()
              if path == "" or k != "seed"
          }
      )
      self.ensure_coherence()
  
imports: from sacred.utils import iter_prefixes, join_paths
label_desc: Use image node_id 3 for calling the ConfigSummary obj's underlying member method code with example usage: obj.update_add(config_mod, path) without return types