code: def run_stage(
      stage,
      dry=False,
      force=False,
      run_env=None,
      allow_missing: bool = False,
      **kwargs,
  ):
      if not force:
          if allow_missing and kwargs.get("pull") and not dry:
              _pull_missing_deps(stage)
  
          from .cache import RunCacheNotFoundError
  
          try:
              stage.repo.stage_cache.restore(stage, dry=dry, **kwargs)
              if not dry:
                  return
          except RunCacheNotFoundError:
              if not dry:
                  stage.save_deps()
  
      run = cmd_run if dry else unlocked_repo(cmd_run)
      run(stage, dry=dry, run_env=run_env)
  
file_path: dvc/dvc/stage/run.py
imports: import os
  import signal
  import subprocess
  import threading
  from dvc.log import logger
  from dvc.utils import fix_env
  from .decorators import unlocked_repo
  from .exceptions import StageCmdFailedError
label_desc: Use image node_id 10 for calling a global function with example usage: run_stage(stage, dry, force, run_env, allow_missing) without return types