code: def flag_combinations(*combinations):
      """A facade around @testing.combinations() oriented towards boolean
      keyword-based arguments.
  
      Basically generates a nice looking identifier based on the keywords
      and also sets up the argument names.
  
      E.g.::
  
          @testing.flag_combinations(
              dict(lazy=False, passive=False),
              dict(lazy=True, passive=False),
              dict(lazy=False, passive=True),
              dict(lazy=False, passive=True, raiseload=True),
          )
  
  
      would result in::
  
          @testing.combinations(
              ('', False, False, False),
              ('lazy', True, False, False),
              ('lazy_passive', True, True, False),
              ('lazy_passive', True, True, True),
              id_='iaaa',
              argnames='lazy,passive,raiseload'
          )
  
      """
      from sqlalchemy.testing import config
  
      keys = set()
  
      for d in combinations:
          keys.update(d)
  
      keys = sorted(keys)
  
      return config.combinations(
          *[
              ("_".join(k for k in keys if d.get(k, False)),)
              + tuple(d.get(k, False) for k in keys)
              for d in combinations
          ],
          id_="i" + ("a" * len(keys)),
          argnames=",".join(keys),
      )
  
file_path: alembic/alembic/testing/util.py
imports: from __future__ import annotations
  import types
  from typing import Union
  from sqlalchemy.util import inspect_getfullargspec
  from ..util import sqla_2
label_desc: Use image node_id 1 for calling a global function with example usage: flag_combinations() and returns: config