class_docstr: Class that manages experiments in a DVC repo.
  
  Args:
      repo (dvc.repo.Repo): repo instance that these experiments belong to.
class_docstr_tok: ["Class","that","manages","experiments","in","a","DVC","repo",".","Args",":","repo","(","dvc.repo.Repo",")",":","repo","instance","that","these","experiments","belong","to","."]
code: def reproduce_celery(
      self, entries: Optional[Iterable["QueueEntry"]] = None, **kwargs
  ) -> Dict[str, str]:
      results: Dict[str, str] = {}
      if entries is None:
          entries = list(
              chain(
                  self.celery_queue.iter_active(),
                  self.celery_queue.iter_queued(),
              )
          )
  
      logger.debug(
          "reproduce all these entries '%s'",
          entries,
      )
  
      if not entries:
          return results
  
      self.celery_queue.start_workers(count=kwargs.get("jobs", 1))
      failed = []
      try:
          ui.write(
              "Following logs for all queued experiments. Use Ctrl+C to "
              "stop following logs (experiment execution will continue).\n"
          )
          for entry in entries:
              # wait for task execution to start
              self.celery_queue.wait_for_start(entry, sleep_interval=1)
              self.celery_queue.follow(entry)
              # wait for task collection to complete
              try:
                  result = self.celery_queue.get_result(entry)
              except FileNotFoundError:
                  result = None
              if result is None or result.exp_hash is None:
                  name = entry.name or entry.stash_rev[:7]
                  failed.append(name)
              elif result.ref_info:
                  exp_rev = self.scm.get_ref(str(result.ref_info))
                  results[exp_rev] = result.exp_hash
      except KeyboardInterrupt:
          ui.write(
              "Experiment(s) are still executing in the background. To "
              "abort execution use 'dvc queue kill' or 'dvc queue stop'."
          )
      if failed:
          names = ", ".join(name for name in failed)
          ui.error(f"Failed to reproduce experiment(s) '{names}'")
      if results:
          self._log_reproduced((rev for rev in results), True)
      return results
  
imports: import os
  import re
  from typing import TYPE_CHECKING, Dict, Iterable, List, Optional
  from funcy import chain, first
  from dvc.log import logger
  from dvc.ui import ui
  from dvc.utils import relpath
  from dvc.utils.objects import cached_property
  from .cache import ExpCache
  from .exceptions import BaselineMismatchError, ExperimentExistsError, InvalidExpRefError, MultipleBranchError
  from .refs import APPLY_STASH, CELERY_FAILED_STASH, CELERY_STASH, EXEC_APPLY, EXEC_NAMESPACE, EXPS_NAMESPACE, WORKSPACE_STASH, ExpRefInfo
  from .stash import ApplyStash
  from .utils import check_ref_format, exp_refs_by_rev, unlocked_repo
label_desc: Use image node_id 13 for calling the Experiments obj's underlying member method code with example usage: obj.reproduce_celery(entries) and returns: results, results