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 _create_config_dict(cfg_or_file, kw_conf):
      if cfg_or_file is not None and kw_conf:
          raise ValueError(
              "cannot combine keyword config with "
              "positional argument"
          )
      if cfg_or_file is None:
          if not kw_conf:
              raise ValueError("attempted to add empty config")
          return ConfigDict(kw_conf)
      elif isinstance(cfg_or_file, dict):
          return ConfigDict(cfg_or_file)
      elif isinstance(cfg_or_file, str):
          if not os.path.exists(cfg_or_file):
              raise OSError("File not found {}".format(cfg_or_file))
          abspath = os.path.abspath(cfg_or_file)
          return ConfigDict(load_config_file(abspath))
      else:
          raise TypeError(
              "Invalid argument type {}".format(type(cfg_or_file))
          )
  
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 11 for calling the Ingredient obj's underlying member method code with example usage: obj._create_config_dict(cfg_or_file, kw_conf) and returns: ConfigDict, ConfigDict, ConfigDict