class TodoSchema(Schema): id = fields.Integer() title = fields.Str() description = fields.Str(attribute="desc") @post_load def post(self, data, **kwargs): return Todo(**data) todo_schema = TodoSchema(many=True) # my factory = Factory( schemas={Todo: DSchema(name_mapping={"desc": "description"})}) parser = factory.parser(List[Todo]) # my debug factory_debug = Factory( schemas={Todo: DSchema(name_mapping={"desc": "description"})}, debug_path=True) parser_debug = factory_debug.parser(List[Todo]) # pydantic class PydTodo(BaseModel): id: int title: str description: str
class TodoSchema(Schema): id = fields.Integer() title = fields.Str() description = fields.Str(attribute="desc") @post_load def post(self, data): return Todo(**data) todo_schema = TodoSchema(many=True) # my factory = Factory( schemas={Todo: DSchema(name_mapping={"desc": "description"})}) parser = factory.parser(List[Todo]) # test todos = [{ "id": i, "title": "title %s" % i, "description": "5some long description %s %s %s" % (i, i * 10, i) } for i in range(10)] def do1(): return parser(todos) def do2(): return todo_schema.load(todos)[0]
@dataclass class ComplexTodo: id: int title: str description: Qwerty # my factory = Factory(schemas={ SimpleTodo: Schema(name_mapping={ "desc": ("description", "qwerty", 0), }) }, debug_path=True) simple_parser = factory.parser(List[SimpleTodo]) complex_parser = factory.parser(List[ComplexTodo]) # test todos = [{ "description": { "qwerty": ["5some long description %s %s %s" % (i, i * 10, i)], }, "id": i, "title": "title %s" % i, } for i in range(10)] def do_simple(): return simple_parser(todos)