Skip to content

dataclass.py

Dataclass dataclass

Bases: Input['DataclassInstance']

IO that parses data as Python dataclass on load.

Example:

>>> from ordeq_common import Dataclass
>>> from ordeq_files import JSON
>>> from pathlib import Path
>>> ValidJSON = JSON(path=Path("to/valid.json"))
>>> ValidJSON.load()  # doctest: +SKIP
{"name": "banana", "colour": "yellow"}

>>> @dataclass
... class Fruit:
...     name: str
...     colour: str
>>> Dataclass(ValidJSON, Fruit).load()  # doctest: +SKIP
Fruit(name="banana", colour="yellow")

>>> InvalidJSON = JSON(path=Path("to/invalid.json"))
>>> InvalidJSON.load()  # doctest: +SKIP
{"name": "banana", "weight_gr": "100"}
>>> Dataclass(InvalidJSON, Fruit).load()  # doctest: +SKIP
TypeError: Fruit.__init__() got an unexpected keyword argument 'weight_gr'

For nested models, or other more sophisticated parsing requirements consider using ordeq-pydantic instead.