code: def make_dependency_grouping(schema, dep_classes):
      """
      Build a grouping of dependency objects with type matching the dep_classes argument.
      If dep_classes is a list with more than one element, then the returned grouping
      will cycle through these classes (e.g. to mix Input and State).
      """
      if not isinstance(dep_classes, list):
          dep_classes = [dep_classes]
  
      flat_names = list(string.ascii_letters[: grouping_len(schema)])
      flat_dependencies = [
          dep_classes[i % len(dep_classes)]("component", name)
          for i, name in enumerate(flat_names)
      ]
      return make_grouping_by_index(schema, flat_dependencies)
  
imports: import dash
  from dash._grouping import make_grouping_by_index, grouping_len, flatten_grouping
  from dash._utils import create_callback_id
  from dash.dependencies import Input, State, Output, ClientsideFunction
  import mock
  import json
  import string
  import pytest
  from fixtures import scalar_grouping_size, list_grouping_size, dict_grouping_size, mixed_grouping_size
label_desc: Use image node_id 1 for calling a global function with example usage: make_dependency_grouping(schema, dep_classes) and returns: make_grouping_by_index