code: def _pull(
      repo,
      git_remote: str,
      refs: Iterable["ExpRefInfo"],
      force: bool,
  ) -> Mapping[SyncStatus, List["ExpRefInfo"]]:
      refspec_list = [f"{exp_ref}:{exp_ref}" for exp_ref in refs]
      logger.debug(
          "git pull experiment '%s' -> '%s'", git_remote, refspec_list
      )
  
      with TqdmGit(desc="Fetching git refs") as pbar:
          results: Mapping[str, SyncStatus] = repo.scm.fetch_refspecs(
              git_remote,
              refspec_list,
              force=force,
              progress=pbar.update_git,
          )
  
      def group_result(refspec):
          return results[str(refspec)]
  
      pull_result: Mapping[SyncStatus, List["ExpRefInfo"]] = group_by(
          group_result, refs
      )
  
      return pull_result
  
file_path: dvc/dvc/repo/experiments/pull.py
imports: from typing import Iterable, List, Mapping, Optional, Set, Union
  from funcy import group_by
  from scmrepo.git.backend.base import SyncStatus
  from dvc.log import logger
  from dvc.repo import locked
  from dvc.repo.scm_context import scm_context
  from dvc.scm import TqdmGit, iter_revs
  from dvc.ui import ui
  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 2 for calling a global function with example usage: _pull(repo, git_remote, refs, force) and returns: pull_result, results