MCPcopy Create free account
hub / github.com/pytest-dev/pytest / _validate_ids

Method _validate_ids

src/_pytest/python.py:1208–1243  ·  view source on GitHub ↗
(
        self,
        ids: Iterable[Union[None, str, float, int, bool]],
        parameters: Sequence[ParameterSet],
        func_name: str,
    )

Source from the content-addressed store, hash-verified

1206 return idmaker(argnames, parameters, idfn, ids_, self.config, nodeid=nodeid)
1207
1208 def _validate_ids(
1209 self,
1210 ids: Iterable[Union[None, str, float, int, bool]],
1211 parameters: Sequence[ParameterSet],
1212 func_name: str,
1213 ) -> List[Union[None, str]]:
1214 try:
1215 num_ids = len(ids) # type: ignore[arg-type]
1216 except TypeError:
1217 try:
1218 iter(ids)
1219 except TypeError as e:
1220 raise TypeError("ids must be a callable or an iterable") from e
1221 num_ids = len(parameters)
1222
1223 # num_ids == 0 is a special case: https://github.com/pytest-dev/pytest/issues/1849
1224 if num_ids != len(parameters) and num_ids != 0:
1225 msg = "In {}: {} parameter sets specified, with different number of ids: {}"
1226 fail(msg.format(func_name, len(parameters), num_ids), pytrace=False)
1227
1228 new_ids = []
1229 for idx, id_value in enumerate(itertools.islice(ids, num_ids)):
1230 if id_value is None or isinstance(id_value, str):
1231 new_ids.append(id_value)
1232 elif isinstance(id_value, (float, int, bool)):
1233 new_ids.append(str(id_value))
1234 else:
1235 msg = ( # type: ignore[unreachable]
1236 "In {}: ids must be list of string/float/int/bool, "
1237 "found: {} (type: {!r}) at index {}"
1238 )
1239 fail(
1240 msg.format(func_name, saferepr(id_value), type(id_value), idx),
1241 pytrace=False,
1242 )
1243 return new_ids
1244
1245 def _resolve_arg_value_types(
1246 self,

Callers 1

_resolve_arg_idsMethod · 0.95

Calls 4

failFunction · 0.90
safereprFunction · 0.90
appendMethod · 0.80
formatMethod · 0.45

Tested by

no test coverage detected