from __future__ import annotations | |
import contextlib | |
import sys | |
from typing import Any | |
PY38 = sys.version_info >= (3, 8) | |
def decode(string: Any, encodings: list[str] | None = None): | |
if not isinstance(string, bytes): | |
return string | |
encodings = encodings or ["utf-8", "latin1", "ascii"] | |
for encoding in encodings: | |
with contextlib.suppress(UnicodeEncodeError, UnicodeDecodeError): | |
return string.decode(encoding) | |
return string.decode(encodings[0], errors="ignore") |