code: def _push_cache(
      repo: "Repo",
      refs: Union[ExpRefInfo, Iterable["ExpRefInfo"]],
      dvc_remote: Optional[str] = None,
      jobs: Optional[int] = None,
      run_cache: bool = False,
  ) -> int:
      if isinstance(refs, ExpRefInfo):
          refs = [refs]
      assert isinstance(repo.scm, Git)
      revs = list(exp_commits(repo.scm, refs))
      logger.debug("dvc push experiment '%s'", refs)
      return repo.push(
          jobs=jobs,
          remote=dvc_remote,
          run_cache=run_cache,
          revs=revs,
          workspace=False,
      )
  
imports: from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Mapping, Optional, Set, Union
  from funcy import compact, group_by
  from scmrepo.git.backend.base import SyncStatus
  from dvc.env import DVC_STUDIO_TOKEN, DVC_STUDIO_URL
  from dvc.exceptions import DvcException
  from dvc.log import logger
  from dvc.repo import locked
  from dvc.repo.scm_context import scm_context
  from dvc.scm import Git, TqdmGit, iter_revs
  from dvc.utils import env2bool
  from dvc.utils.collections import ensure_list
  from .exceptions import UnresolvedExpNamesError
  from .refs import ExpRefInfo
  from .utils import exp_commits, exp_refs, exp_refs_by_baseline, resolve_name
label_desc: Use image node_id 6 for calling a global function with example usage: _push_cache(repo, refs, dvc_remote, jobs, run_cache) and returns: repo