(
self,
ids: Iterable[object | None],
parametersets: Sequence[ParameterSet],
)
| 1466 | return id_maker.make_unique_parameterset_ids() |
| 1467 | |
| 1468 | def _validate_ids( |
| 1469 | self, |
| 1470 | ids: Iterable[object | None], |
| 1471 | parametersets: Sequence[ParameterSet], |
| 1472 | ) -> list[object | None]: |
| 1473 | try: |
| 1474 | num_ids = len(ids) # type: ignore[arg-type] |
| 1475 | except TypeError: |
| 1476 | try: |
| 1477 | iter(ids) |
| 1478 | except TypeError as e: |
| 1479 | raise TypeError("ids must be a callable or an iterable") from e |
| 1480 | num_ids = len(parametersets) |
| 1481 | |
| 1482 | # num_ids == 0 is a special case: https://github.com/pytest-dev/pytest/issues/1849 |
| 1483 | if num_ids != len(parametersets) and num_ids != 0: |
| 1484 | nodeid = self.definition.nodeid |
| 1485 | fail( |
| 1486 | f"In {nodeid}: {len(parametersets)} parameter sets specified, with different number of ids: {num_ids}", |
| 1487 | pytrace=False, |
| 1488 | ) |
| 1489 | |
| 1490 | return list(itertools.islice(ids, num_ids)) |
| 1491 | |
| 1492 | def _validate_if_using_arg_names( |
| 1493 | self, |
no outgoing calls
no test coverage detected