class_docstr: Base class for executing experiments in parallel.
  
  Parameters:
      root_dir: Path to SCM root.
      dvc_dir: Path to .dvc dir relative to SCM root.
      baseline_rev: Experiment baseline revision.
      wdir: Path to exec working directory relative to SCM root.
      name: Executor (experiment) name.
      result: Completed executor result.
class_docstr_tok: ["Base","class","for","executing","experiments","in","parallel",".","Parameters",":","root_dir",":","Path","to","SCM","root",".","dvc_dir",":","Path","to",".dvc","dir","relative","to","SCM","root",".","baseline_rev",":","Experiment","baseline","revision",".","wdir",":","Path","to","exec","working","directory","relative","to","SCM","root",".","name",":","Executor","(","experiment",")","name",".","result",":","Completed","executor","result","."]
code: def from_info(cls: Type[_T], info: "ExecutorInfo") -> _T:
      if info.result_hash:
          result: Optional["ExecutorResult"] = ExecutorResult(
              info.result_hash,
              (
                  ExpRefInfo.from_ref(info.result_ref)
                  if info.result_ref
                  else None
              ),
              info.result_force,
          )
      else:
          result = None
      return cls(
          root_dir=info.root_dir,
          dvc_dir=info.dvc_dir,
          baseline_rev=info.baseline_rev,
          status=info.status,
          name=info.name,
          wdir=info.wdir,
          result=result,
      )
  
imports: import logging
  import os
  import pickle
  import shutil
  from abc import ABC, abstractmethod
  from contextlib import contextmanager
  from dataclasses import asdict, dataclass
  from enum import IntEnum
  from itertools import chain
  from typing import TYPE_CHECKING, Any, Callable, Dict, Iterable, Iterator, List, NamedTuple, Optional, Tuple, Type, TypeVar, Union
  from scmrepo.exceptions import SCMError
  from dvc.env import DVC_EXP_AUTO_PUSH, DVC_EXP_GIT_REMOTE
  from dvc.exceptions import DvcException
  from dvc.log import logger
  from dvc.repo.experiments.exceptions import ExperimentExistsError
  from dvc.repo.experiments.refs import EXEC_BASELINE, EXEC_BRANCH, ExpRefInfo
  from dvc.repo.experiments.utils import to_studio_params
  from dvc.repo.metrics.show import _collect_top_level_metrics
  from dvc.repo.params.show import _collect_top_level_params
  from dvc.stage.serialize import to_lockfile
  from dvc.utils import dict_sha256, env2bool, relpath
  from dvc.utils.fs import remove
  from dvc.utils.studio import env_to_config
label_desc: Use image node_id 7 for calling the BaseExecutor obj's underlying member method code with example usage: obj.from_info(cls, info) and returns: cls