64 lines
1.9 KiB
Python
64 lines
1.9 KiB
Python
from collections.abc import Callable
|
|
from typing import Any, Literal, Optional, Type, TypedDict, Union
|
|
|
|
from mashumaro.core.const import Sentinel
|
|
from mashumaro.dialect import Dialect
|
|
from mashumaro.types import Discriminator, SerializationStrategy
|
|
|
|
__all__ = [
|
|
"BaseConfig",
|
|
"TO_DICT_ADD_BY_ALIAS_FLAG",
|
|
"TO_DICT_ADD_OMIT_NONE_FLAG",
|
|
"ADD_DIALECT_SUPPORT",
|
|
"ADD_SERIALIZATION_CONTEXT",
|
|
"SerializationStrategyValueType",
|
|
]
|
|
|
|
|
|
TO_DICT_ADD_BY_ALIAS_FLAG = "TO_DICT_ADD_BY_ALIAS_FLAG"
|
|
TO_DICT_ADD_OMIT_NONE_FLAG = "TO_DICT_ADD_OMIT_NONE_FLAG"
|
|
ADD_DIALECT_SUPPORT = "ADD_DIALECT_SUPPORT"
|
|
ADD_SERIALIZATION_CONTEXT = "ADD_SERIALIZATION_CONTEXT"
|
|
|
|
|
|
CodeGenerationOption = Literal[
|
|
"TO_DICT_ADD_BY_ALIAS_FLAG",
|
|
"TO_DICT_ADD_OMIT_NONE_FLAG",
|
|
"ADD_DIALECT_SUPPORT",
|
|
"ADD_SERIALIZATION_CONTEXT",
|
|
]
|
|
|
|
|
|
class SerializationStrategyDict(TypedDict, total=False):
|
|
serialize: Union[str, Callable]
|
|
deserialize: Union[str, Callable]
|
|
|
|
|
|
SerializationStrategyValueType = Union[
|
|
SerializationStrategy, SerializationStrategyDict
|
|
]
|
|
|
|
|
|
class BaseConfig:
|
|
debug: bool = False
|
|
code_generation_options: list[CodeGenerationOption] = []
|
|
serialization_strategy: dict[Any, SerializationStrategyValueType] = {}
|
|
aliases: dict[str, str] = {}
|
|
serialize_by_alias: Union[bool, Literal[Sentinel.MISSING]] = (
|
|
Sentinel.MISSING
|
|
)
|
|
namedtuple_as_dict: Union[bool, Literal[Sentinel.MISSING]] = (
|
|
Sentinel.MISSING
|
|
)
|
|
allow_postponed_evaluation: bool = True
|
|
dialect: Optional[Type[Dialect]] = None
|
|
omit_none: Union[bool, Literal[Sentinel.MISSING]] = Sentinel.MISSING
|
|
omit_default: Union[bool, Literal[Sentinel.MISSING]] = Sentinel.MISSING
|
|
orjson_options: Optional[int] = 0
|
|
json_schema: dict[str, Any] = {}
|
|
discriminator: Optional[Discriminator] = None
|
|
lazy_compilation: bool = False
|
|
sort_keys: bool = False
|
|
allow_deserialization_not_by_alias: bool = False
|
|
forbid_extra_keys: bool = False
|