123456789101112131415161718192021222324252627282930313233343536373839404142 |
- from __future__ import annotations
-
- import typing
- from types import TracebackType
-
-
- def to_bytes(
- x: str | bytes, encoding: str | None = None, errors: str | None = None
- ) -> bytes:
- if isinstance(x, bytes):
- return x
- elif not isinstance(x, str):
- raise TypeError(f"not expecting type {type(x).__name__}")
- if encoding or errors:
- return x.encode(encoding or "utf-8", errors=errors or "strict")
- return x.encode()
-
-
- def to_str(
- x: str | bytes, encoding: str | None = None, errors: str | None = None
- ) -> str:
- if isinstance(x, str):
- return x
- elif not isinstance(x, bytes):
- raise TypeError(f"not expecting type {type(x).__name__}")
- if encoding or errors:
- return x.decode(encoding or "utf-8", errors=errors or "strict")
- return x.decode()
-
-
- def reraise(
- tp: type[BaseException] | None,
- value: BaseException,
- tb: TracebackType | None = None,
- ) -> typing.NoReturn:
- try:
- if value.__traceback__ is not tb:
- raise value.with_traceback(tb)
- raise value
- finally:
- value = None # type: ignore[assignment]
- tb = None
|