"""Stage 2a: Byte sequence validity filtering. Note: ``from __future__ import annotations`` is intentionally omitted because this module is compiled with mypyc, which does not support PEP 563 string annotations. """ from chardet.registry import EncodingInfo def filter_by_validity( data: bytes, candidates: tuple[EncodingInfo, ...] ) -> tuple[EncodingInfo, ...]: """Filter candidates to only those where *data* decodes without errors. :param data: The raw byte data to test. :param candidates: Encoding candidates to validate. :returns: The subset of *candidates* that can decode *data*. """ if not data: return candidates valid = [] for enc in candidates: try: data.decode(enc.name, errors="strict") valid.append(enc) except (UnicodeDecodeError, LookupError): continue return tuple(valid)