(
self,
keys: Sequence[str],
extra: Optional[Sequence[Any]] = None,
_processors: Optional[_ProcessorsType] = None,
_tuplefilter: Optional[_TupleGetterType] = None,
_translated_indexes: Optional[Sequence[int]] = None,
_create_unique_filters: Optional[
Callable[
[Any],
Sequence[Optional[Callable[[Any], Any]]],
]
] = None,
_ambiguous_keys: Optional[frozenset[str]] = None,
)
| 260 | _keys: Sequence[str] |
| 261 | |
| 262 | def __init__( |
| 263 | self, |
| 264 | keys: Sequence[str], |
| 265 | extra: Optional[Sequence[Any]] = None, |
| 266 | _processors: Optional[_ProcessorsType] = None, |
| 267 | _tuplefilter: Optional[_TupleGetterType] = None, |
| 268 | _translated_indexes: Optional[Sequence[int]] = None, |
| 269 | _create_unique_filters: Optional[ |
| 270 | Callable[ |
| 271 | [Any], |
| 272 | Sequence[Optional[Callable[[Any], Any]]], |
| 273 | ] |
| 274 | ] = None, |
| 275 | _ambiguous_keys: Optional[frozenset[str]] = None, |
| 276 | ): |
| 277 | self._keys = list(keys) |
| 278 | self._tuplefilter = _tuplefilter |
| 279 | self._translated_indexes = _translated_indexes |
| 280 | self._create_unique_filters = _create_unique_filters |
| 281 | if extra: |
| 282 | assert len(self._keys) == len(extra) |
| 283 | recs_names = [ |
| 284 | ( |
| 285 | (name,) + (extras if extras else ()), |
| 286 | (index, name, extras), |
| 287 | ) |
| 288 | for index, (name, extras) in enumerate(zip(self._keys, extra)) |
| 289 | ] |
| 290 | else: |
| 291 | recs_names = [ |
| 292 | ((name,), (index, name, ())) |
| 293 | for index, name in enumerate(self._keys) |
| 294 | ] |
| 295 | |
| 296 | self._keymap = {key: rec for keys, rec in recs_names for key in keys} |
| 297 | |
| 298 | if _ambiguous_keys: |
| 299 | for name in _ambiguous_keys.intersection(self._keymap): |
| 300 | rec = self._keymap[name] |
| 301 | self._keymap[name] = (None,) + rec[1:] |
| 302 | |
| 303 | self._processors = _processors |
| 304 | |
| 305 | self._ambiguous_keys = _ambiguous_keys |
| 306 | |
| 307 | self._key_to_index = self._make_key_to_index(self._keymap, 0) |
| 308 | |
| 309 | def _has_key(self, key: object) -> bool: |
| 310 | return key in self._keymap |
no test coverage detected