code: def get_run_config(
      params_dict: DictConfig,
  ) -> Generator[DictConfig, None, None]:
      """Yields configuration for a single run.
  
      Args:
          params_dict (DictConfig): Configuration for grid search.
  
      Example:
          >>> dummy_config = DictConfig({
              "parent1":{
                  "child1": ['a', 'b', 'c'],
                  "child2": [1, 2, 3]
              },
              "parent2":['model1', 'model2'],
              "parent3": 'replacement_value'
          })
          >>> for run_config in get_run_config(dummy_config):
          >>>    print(run_config)
          {'parent1.child1': 'a', 'parent1.child2': 1, 'parent2': 'model1', 'parent3': 'replacement_value'}
          {'parent1.child1': 'a', 'parent1.child2': 1, 'parent2': 'model2', 'parent3': 'replacement_value'}
          {'parent1.child1': 'a', 'parent1.child2': 2, 'parent2': 'model1', 'parent3': 'replacement_value'}
          ...
  
      Yields:
          Generator[DictConfig]: Dictionary containing flattened keys
          and values for current run.
      """
      params = flatten_sweep_params(params_dict)
      combinations = list(
          itertools.product(*convert_to_tuple(params.values()))
      )
      keys = params.keys()
      for combination in combinations:
          run_config = DictConfig({})
          for key, val in zip(keys, combination):
              run_config[key] = val
          yield run_config
  
file_path: anomalib/src/anomalib/utils/sweep/config.py
imports: from __future__ import annotations
  import itertools
  import operator
  from collections.abc import Iterable, ValuesView
  from functools import reduce
  from typing import Any, Generator
  from omegaconf import DictConfig
label_desc: Use image node_id 3 for calling a global function with example usage: get_run_config(params_dict) without return types