code: def build(
      name: str,
      version: int | None = None,
      branching: dict | None = None,
      storage: BaseStorageProtocol | dict | None = None,
      **config,
  ):
      """Build an experiment.
  
      .. seealso::
  
          :func:`orion.core.io.experiment_builder.Experiment.build` for more information
  
      """
      if storage is None:
          storage = setup_storage()
  
      return ExperimentBuilder(storage).build(
          name, version, branching, **config
      )
  
imports: from __future__ import annotations
  import copy
  import datetime
  import getpass
  import logging
  import pprint
  import sys
  import typing
  from typing import Any, TypeVar
  import orion.core
  from orion.algo.base import BaseAlgorithm, algo_factory
  from orion.algo.space import Space
  from orion.core.evc.adapters import BaseAdapter
  from orion.core.evc.conflicts import ExperimentNameConflict, detect_conflicts
  from orion.core.io import resolve_config
  from orion.core.io.config import ConfigurationError
  from orion.core.io.database import DuplicateKeyError
  from orion.core.io.experiment_branch_builder import ExperimentBranchBuilder
  from orion.core.io.interactive_commands.branching_prompt import BranchingPrompt
  from orion.core.io.space_builder import SpaceBuilder
  from orion.core.utils import backward
  from orion.core.utils.exceptions import BranchingEvent, NoConfigurationError, NoNameError, RaceCondition
  from orion.core.worker.experiment import Experiment, Mode
  from orion.core.worker.experiment_config import ExperimentConfig
  from orion.core.worker.primary_algo import create_algo
  from orion.core.worker.warm_start import KnowledgeBase
  from orion.storage.base import setup_storage
label_desc: Use image node_id 13 for calling a global function with example usage: build(name, version, branching, storage) and returns: ExperimentBuilder