Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/urllib3/util/util.py: 23%
26 statements
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:05 +0000
« prev ^ index » next coverage.py v7.3.2, created at 2023-12-08 06:05 +0000
1from __future__ import annotations
3import typing
4from types import TracebackType
7def to_bytes(
8 x: str | bytes, encoding: str | None = None, errors: str | None = None
9) -> bytes:
10 if isinstance(x, bytes):
11 return x
12 elif not isinstance(x, str):
13 raise TypeError(f"not expecting type {type(x).__name__}")
14 if encoding or errors:
15 return x.encode(encoding or "utf-8", errors=errors or "strict")
16 return x.encode()
19def to_str(
20 x: str | bytes, encoding: str | None = None, errors: str | None = None
21) -> str:
22 if isinstance(x, str):
23 return x
24 elif not isinstance(x, bytes):
25 raise TypeError(f"not expecting type {type(x).__name__}")
26 if encoding or errors:
27 return x.decode(encoding or "utf-8", errors=errors or "strict")
28 return x.decode()
31def reraise(
32 tp: type[BaseException] | None,
33 value: BaseException,
34 tb: TracebackType | None = None,
35) -> typing.NoReturn:
36 try:
37 if value.__traceback__ is not tb:
38 raise value.with_traceback(tb)
39 raise value
40 finally:
41 value = None # type: ignore[assignment]
42 tb = None