class_docstr: Temp directory experiment executor.
class_docstr_tok: ["Temp","directory","experiment","executor","."]
code: def _update_config(self, update):
      local_config = os.path.join(
          self.root_dir,
          self.dvc_dir,
          "config.local",
      )
      logger.debug(
          "Writing experiments local config '%s'", local_config
      )
      if os.path.exists(local_config):
          conf_obj = ConfigObj(local_config)
          conf_obj.merge(update)
      else:
          conf_obj = ConfigObj(update)
      if conf_obj:
          with open(local_config, "wb") as fobj:
              conf_obj.write(fobj)
  
imports: import os
  from contextlib import ExitStack
  from tempfile import mkdtemp
  from typing import TYPE_CHECKING, Optional, Union
  from configobj import ConfigObj
  from funcy import retry
  from shortuuid import uuid
  from dvc.lock import LockError
  from dvc.log import logger
  from dvc.repo.experiments.refs import EXEC_BASELINE, EXEC_BRANCH, EXEC_HEAD, EXEC_MERGE, EXEC_NAMESPACE, TEMP_NAMESPACE
  from dvc.repo.experiments.utils import EXEC_TMP_DIR, get_exp_rwlock
  from dvc.scm import SCM, Git
  from dvc.utils.fs import remove
  from dvc.utils.objects import cached_property
  from .base import BaseExecutor, TaskStatus
label_desc: Use image node_id 2 for calling the TempDirExecutor obj's underlying member method code with example usage: obj._update_config(update) without return types