code: def _for_parametrize(
      cls, argnames, argvalues, func, config, function_definition
  ):
      argnames, force_tuple = cls._parse_parametrize_args(
          argnames, argvalues
      )
      parameters = cls._parse_parametrize_parameters(
          argvalues, force_tuple
      )
      del argvalues
  
      if parameters:
          # check all parameter sets have the correct number of values
          for param in parameters:
              if len(param.values) != len(argnames):
                  msg = (
                      '{nodeid}: in "parametrize" the number of names ({names_len}):\n'
                      "  {names}\n"
                      "must be equal to the number of values ({values_len}):\n"
                      "  {values}"
                  )
                  fail(
                      msg.format(
                          nodeid=function_definition.nodeid,
                          values=param.values,
                          names=argnames,
                          names_len=len(argnames),
                          values_len=len(param.values),
                      ),
                      pytrace=False,
                  )
      else:
          # empty parameter set (likely computed at runtime): create a single
          # parameter set with NOTSET values, with the "empty parameter set" mark applied to it
          mark = get_empty_parameterset_mark(config, argnames, func)
          parameters.append(
              ParameterSet(
                  values=(NOTSET,) * len(argnames),
                  marks=[mark],
                  id=None,
              )
          )
      return argnames, parameters
  
imports: import inspect
  import warnings
  from collections import namedtuple
  from operator import attrgetter
  import attr
  import six
  from ..compat import ascii_escaped
  from ..compat import ATTRS_EQ_FIELD
  from ..compat import getfslineno
  from ..compat import MappingMixin
  from ..compat import NOTSET
  from _pytest.deprecated import PYTEST_PARAM_UNKNOWN_KWARGS
  from _pytest.outcomes import fail
  from _pytest.warning_types import PytestUnknownMarkWarning
label_desc: Use image node_id 5 for calling the ParameterSet obj's underlying member method code with example usage: obj._for_parametrize(cls, argnames, argvalues, func, config, function_definition) and returns: argnames,  parameters