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.
docstr: Collect all commands from this ingredient and its sub-ingredients.
  
  Yields
  ------
  cmd_name: str
      The full (dotted) name of the command.
  cmd: function
      The corresponding captured function.
docstr_tok: ["Collect","all","commands","from","this","ingredient","and","its","sub-ingredients",".","Yields","--","--","--","cmd_name",":","str","The","full","(","dotted",")","name","of","the","command",".","cmd",":","function","The","corresponding","captured","function","."]
code: def gather_commands(self):
      """Collect all commands from this ingredient and its sub-ingredients.
  
      Yields
      ------
      cmd_name: str
          The full (dotted) name of the command.
      cmd: function
          The corresponding captured function.
      """
      for ingredient, _ in self.traverse_ingredients():
          for command_name, command in ingredient.commands.items():
              cmd_name = join_paths(ingredient.path, command_name)
              cmd_name = self.post_process_name(cmd_name, ingredient)
              yield cmd_name, command
  
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 16 for calling the Ingredient obj's underlying member method code with example usage: obj.gather_commands() without return types