You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

104 lines
2.5 KiB

from typing import (
Any,
Callable,
Generic,
Literal,
Optional,
Type,
TypeVar,
Union,
overload,
)
T = TypeVar("T")
enc_hook_sig = Optional[Callable[[Any], Any]]
ext_hook_sig = Optional[Callable[[int, memoryview], Any]]
dec_hook_sig = Optional[Callable[[type, Any], Any]]
class Ext:
code: int
data: Union[bytes, bytearray, memoryview]
def __init__(
self, code: int, data: Union[bytes, bytearray, memoryview]
) -> None: ...
class Decoder(Generic[T]):
type: Type[T]
strict: bool
dec_hook: dec_hook_sig
ext_hook: ext_hook_sig
@overload
def __init__(
self: Decoder[Any],
*,
strict: bool = True,
dec_hook: dec_hook_sig = None,
ext_hook: ext_hook_sig = None,
) -> None: ...
@overload
def __init__(
self: Decoder[T],
type: Type[T] = ...,
*,
strict: bool = True,
dec_hook: dec_hook_sig = None,
ext_hook: ext_hook_sig = None,
) -> None: ...
@overload
def __init__(
self: Decoder[Any],
type: Any = ...,
*,
strict: bool = True,
dec_hook: dec_hook_sig = None,
ext_hook: ext_hook_sig = None,
) -> None: ...
def decode(self, data: bytes) -> T: ...
class Encoder:
enc_hook: enc_hook_sig
decimal_format: Literal["string", "number"]
uuid_format: Literal["canonical", "hex", "bytes"]
order: Literal[None, "deterministic", "sorted"]
def __init__(
self,
*,
enc_hook: enc_hook_sig = None,
decimal_format: Literal["string", "number"] = "string",
uuid_format: Literal["canonical", "hex", "bytes"] = "canonical",
order: Literal[None, "deterministic", "sorted"] = None,
): ...
def encode(self, obj: Any) -> bytes: ...
def encode_into(
self, obj: Any, buffer: bytearray, offset: Optional[int] = 0
) -> None: ...
@overload
def decode(
buf: bytes,
*,
strict: bool = True,
dec_hook: dec_hook_sig = None,
ext_hook: ext_hook_sig = None,
) -> Any: ...
@overload
def decode(
buf: bytes,
*,
type: Type[T] = ...,
strict: bool = True,
dec_hook: dec_hook_sig = None,
ext_hook: ext_hook_sig = None,
) -> T: ...
@overload
def decode(
buf: bytes,
*,
type: Any = ...,
strict: bool = True,
dec_hook: dec_hook_sig = None,
ext_hook: ext_hook_sig = None,
) -> Any: ...
def encode(obj: Any, *, enc_hook: enc_hook_sig = None, order: Literal[None, "deterministic", "sorted"] = None) -> bytes: ...