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