class_docstr: Ingredients are reusable parts of experiments.
  
  Each Ingredient can have its own configuration (visible as an entry in the
  parents configuration), named configurations, captured functions and
  commands.
  
  Ingredients can themselves use ingredients.
code: def __init__(
      self,
      path: PathType,
      ingredients: Sequence["Ingredient"] = (),
      interactive: bool = False,
      _caller_globals: Optional[dict] = None,
      base_dir: Optional[PathType] = None,
      save_git_info: bool = True,
  ):
      self.path = path
      self.config_hooks = []
      self.configurations = []
      self.named_configs = dict()
      self.ingredients = list(ingredients)
      self.logger = None
      self.captured_functions = []
      self.post_run_hooks = []
      self.pre_run_hooks = []
      self._is_traversing = False
      self.commands = OrderedDict()
      # capture some context information
      _caller_globals = (
          _caller_globals or inspect.stack()[1][0].f_globals
      )
      mainfile_dir = os.path.dirname(
          _caller_globals.get("__file__", ".")
      )
      self.base_dir = os.path.abspath(base_dir or mainfile_dir)
      self.save_git_info = save_git_info
      self.doc = _caller_globals.get("__doc__", "")
      (
          self.mainfile,
          self.sources,
          self.dependencies,
      ) = gather_sources_and_dependencies(
          _caller_globals, save_git_info, self.base_dir
      )
      if self.mainfile is None and not interactive:
          raise RuntimeError(
              "Defining an experiment in interactive mode! "
              "The sourcecode cannot be stored and the "
              "experiment won't be reproducible. If you still"
              " want to run it pass interactive=True"
          )
  
imports: from typing import Generator, Tuple, Union
  import inspect
  import os.path
  from sacred.utils import PathType
  from typing import Sequence, Optional
  from collections import OrderedDict
  from sacred.config import ConfigDict, ConfigScope, create_captured_function, load_config_file
  from sacred.dependencies import PEP440_VERSION_PATTERN, PackageDependency, Source, gather_sources_and_dependencies
  from sacred.utils import CircularDependencyError, optional_kwargs_decorator, join_paths
label_desc: Use image node_id 1 to create a new Ingredient object  with example: obj = Ingredient(path, ingredients, interactive, _caller_globals, base_dir, save_git_info)