blob: 3ea38102069c6691d9fe8637b57d1ee620fa2f54 [file] [log] [blame]
from typing import (
Any, Callable, final, Final, Generic, Iterable, Literal, Optional,
overload, Protocol, Tuple, TypeVar, Union,
)
_T = TypeVar('_T')
class _SupportsRead(Protocol):
def read(self, size: int = ...) -> str:
...
class _SupportsWrite(Generic[_T]):
def write(self, s: _T) -> None:
...
_CallbackStr = TypeVar('_CallbackStr', bound=Callable[[str], None])
_CallbackBytes = TypeVar('_CallbackBytes', bound=Callable[[bytes], None])
_SupportsWriteBytes = TypeVar('_SupportsWriteBytes', bound=_SupportsWrite[bytes])
_SupportsWriteStr = TypeVar('_SupportsWriteStr', bound=_SupportsWrite[str])
###############################################################################
### _exports.pyx
###############################################################################
@final
class Options:
'''Customizations for the ``encoder_*(...)`` function family.'''
quotationmark: Final[str] = ...
tojson: Final[Optional[str]] = ...
mappingtypes: Final[Tuple[type, ...]] = ...
def __init__(
self, *,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> None:
...
def update(
self, *,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> Options:
'''Creates a new Options instance by modifying some members.'''
...
def decode(data: str, maxdepth: Optional[int] = ..., some: bool = ...) -> Any:
'''Decodes JSON5 serialized data from an ``str`` object.'''
...
def decode_latin1(
data: bytes, maxdepth: Optional[int] = ..., some: bool = ...,
) -> Any:
'''Decodes JSON5 serialized data from a ``bytes`` object.'''
...
def decode_utf8(
data: bytes, maxdepth: Optional[int] = ..., some: bool = ...,
) -> Any:
'''Decodes JSON5 serialized data from a ``bytes`` object.'''
...
def decode_buffer(
data: bytes,
maxdepth: Optional[int] = ...,
some: bool = ...,
wordlength: Optional[int] = ...,
) -> Any:
'''Decodes JSON5 serialized data from an object that supports the buffer protocol, e.g. bytearray.'''
...
def decode_callback(
cb: Callable[..., Union[str, bytes, bytearray, int, None]],
maxdepth: Optional[int] = ...,
some: bool = ...,
args: Optional[Iterable[Any]] = [],
) -> Any:
'''Decodes JSON5 serialized data by invoking a callback.'''
...
def decode_io(
fp: _SupportsRead, maxdepth: Optional[int] = ..., some: bool = ...,
) -> Any:
'''Decodes JSON5 serialized data from a file-like object.'''
...
def encode(
data: Any, *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> str:
'''Serializes a Python object to a JSON5 compatible unicode string.'''
...
def encode_bytes(
data: Any, *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> str:
'''Serializes a Python object to a JSON5 compatible bytes string.'''
...
@overload
def encode_callback(
data: Any, cb: _CallbackStr, supply_bytes: Literal[False] = ..., *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> _CallbackStr:
'''Serializes a Python object into a callback function.'''
...
@overload
def encode_callback(
data: Any, cb: _CallbackBytes, supply_bytes: Literal[True], *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> _CallbackBytes:
...
@overload
def encode_io(
data: Any, fp: _SupportsWriteBytes, supply_bytes: Literal[True] = ..., *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> _SupportsWriteBytes:
'''Serializes a Python object into a file-object.'''
...
@overload
def encode_io(
data: Any, fp: _SupportsWriteStr, supply_bytes: Literal[False], *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> _SupportsWriteStr:
...
def encode_noop(
data: Any, *,
options: Optional[Options] = ...,
quotationmark: Optional[str] = ...,
tojson: Optional[str],
mappingtypes: Optional[Tuple[type, ...]],
) -> bool:
'''Test if the input is serializable.'''
...
###############################################################################
### _legacy.pyx
###############################################################################
def loads(s: str, *, encoding: str = ...) -> Any:
'''Decodes JSON5 serialized data from a string.'''
...
def load(fp: _SupportsRead) -> Any:
'''Decodes JSON5 serialized data from a file-like object.'''
...
def dumps(obj: Any) -> str:
'''Serializes a Python object to a JSON5 compatible unicode string.'''
...
def dump(obj: Any, fp: _SupportsWrite[str]) -> None:
'''Serializes a Python object to a JSON5 compatible unicode string.'''
...
###############################################################################
### _exceptions.pyx
###############################################################################
class Json5Exception(Exception):
'''Base class of any exception thrown by PyJSON5.'''
def __init__(self, message: Optional[str] = ..., *args: Any) -> None:
...
@property
def message(self) -> Optional[str]:
...
###############################################################################
### _exceptions_encoder.pyx
###############################################################################
class Json5EncoderException(Json5Exception):
'''Base class of any exception thrown by the serializer.'''
...
@final
class Json5UnstringifiableType(Json5EncoderException):
'''The encoder was not able to stringify the input, or it was told not to by the supplied ``Options``.'''
def __init__(
self, message: Optional[str] = ..., unstringifiable: Any = ...,
) -> None:
...
@property
def unstringifiable(self) -> Any:
'''The value that caused the problem.'''
...
###############################################################################
### _exceptions_decoder.pyx
###############################################################################
class Json5DecoderException(Json5Exception):
'''Base class of any exception thrown by the parser.'''
def __init__(
self, message: Optional[str] = ..., result: Any = ..., *args: Any,
) -> None:
...
@property
def result(self) -> Any:
'''Deserialized data up until now.'''
...
@final
class Json5NestingTooDeep(Json5DecoderException):
'''The maximum nesting level on the input data was exceeded.'''
...
@final
class Json5EOF(Json5DecoderException):
'''The input ended prematurely.'''
...
@final
class Json5IllegalCharacter(Json5DecoderException):
'''An unexpected character was encountered.'''
def __init__(
self,
message: Optional[str] = ...,
result: Any = ...,
character: Optional[str] = ...,
*args: Any,
) -> None:
...
@property
def character(self) -> Optional[str]:
'''Illegal character.'''
...
@final
class Json5ExtraData(Json5DecoderException):
'''The input contained extranous data.'''
def __init__(
self,
message: Optional[str] = ...,
result: Any = ...,
character: Optional[str] = ...,
*args: Any,
) -> None:
...
@property
def character(self) -> Optional[str]:
'''Extranous character.'''
...
@final
class Json5IllegalType(Json5DecoderException):
'''The user supplied callback function returned illegal data.'''
def __init__(
self,
message: Optional[str] = ...,
result: Any = ...,
value: Optional[Any] = ...,
*args: Any,
) -> None:
...
@property
def value(self) -> Optional[Any]:
'''Value that caused the problem.'''
...