code: def run(
      self: "Repo",
      no_exec: bool = False,
      no_commit: bool = False,
      run_cache: bool = True,
      force: bool = True,
      **kwargs,
  ) -> Union["Stage", "PipelineStage"]:
      assert not kwargs.get("single_stage")
      assert not kwargs.get("fname")
      kwargs.update(
          {
              "force": force,
              "params": parse_params(kwargs.get("params", [])),
          }
      )
      stage = self.stage.create(**kwargs)
  
      if no_exec:
          stage.ignore_outs()
      else:
          stage.run(no_commit=no_commit, run_cache=run_cache)
  
      stage.dump(update_lock=not no_exec)
      return stage
  
imports: from typing import TYPE_CHECKING, Union
  from dvc.utils.cli_parse import parse_params
  from .None import locked
  from .scm_context import scm_context
label_desc: Use image node_id 1 for calling a global function with example usage: run(no_exec, no_commit, run_cache, force) and returns: stage