code: def test_detached_parent(tmp_dir, scm, dvc, exp_stage, mocker):
      detached_rev = scm.get_rev()
  
      tmp_dir.gen("params.yaml", "foo: 2")
      dvc.reproduce(exp_stage.addressing)
      scm.add(
          [
              "dvc.yaml",
              "dvc.lock",
              "copy.py",
              "params.yaml",
              "metrics.yaml",
          ]
      )
      scm.commit("v2")
  
      scm.checkout(detached_rev)
      assert scm.gitpython.repo.head.is_detached
      results = dvc.experiments.run(
          exp_stage.addressing, params=["foo=3"]
      )
  
      exp_rev = first(results)
      assert dvc.experiments.get_baseline(exp_rev) == detached_rev
      assert (tmp_dir / "params.yaml").read_text().strip() == "foo: 3"
  
imports: import itertools
  import logging
  import os
  import stat
  from textwrap import dedent
  import pytest
  from configobj import ConfigObj
  from funcy import first
  from dvc.dvcfile import PROJECT_FILE
  from dvc.env import DVC_EXP_BASELINE_REV, DVC_EXP_NAME, DVC_ROOT, DVC_STUDIO_OFFLINE, DVC_STUDIO_REPO_URL, DVC_STUDIO_TOKEN, DVC_STUDIO_URL
  from dvc.exceptions import DvcException, ReproductionError
  from dvc.repo.experiments.exceptions import ExperimentExistsError
  from dvc.repo.experiments.queue.base import BaseStashQueue
  from dvc.repo.experiments.refs import CELERY_STASH
  from dvc.repo.experiments.utils import exp_refs_by_rev
  from dvc.scm import SCMError, resolve_rev
  from dvc.stage.exceptions import StageFileDoesNotExistError
  from dvc.testing.scripts import COPY_SCRIPT
  from dvc.utils.serialize import PythonFileCorruptedError
label_desc: Use image node_id 7 for calling a global function with example usage: test_detached_parent(tmp_dir, scm, dvc, exp_stage, mocker) without return types