code: def parameterize(*params, **kwargs):
      """Generates test classes with given sets of additional attributes
  
      >>> @parameterize({"a": 1}, {"b": 2, "c": 3})
      ... class TestX(unittest.TestCase):
      ...     def test_y(self):
      ...         pass
  
      generates two classes `TestX_param_0_...`, `TestX_param_1_...` and
      removes the original class `TestX`.
  
      The specification is subject to change, which applies to all the non-NumPy
      `testing` features.
  
      """
  
      def f(cls):
          if issubclass(cls, unittest.TestCase):
              assert not kwargs
              deco = _bundle.make_decorator(
                  lambda base: _parameterize_test_case_generator(
                      base, params
                  )
              )
          else:
              deco = _pytest_impl.parameterize(*params, **kwargs)
          return deco(cls)
  
      return f
  
file_path: cupy/cupy/testing/_parameterized.py
imports: import itertools
  import types
  import unittest
  from cupy.testing import _bundle
  from cupy.testing import _pytest_impl
label_desc: Use image node_id 6 for calling a global function with example usage: parameterize() and returns: f, deco