Dataclasses Features#

The code generator uses the default dataclasses options but you can toggle all of them through the cli flags or a generator config

<Config xmlns="http://pypi.org/project/xsdata" version="22.1">
  <Output maxLineLength="79">
    <Package>tests.fixtures.stripe.models.balance</Package>
    <Format repr="true" eq="true" order="true" unsafeHash="false" frozen="true" slots="false" kwOnly="false">dataclasses</Format>
    <Structure>single-package</Structure>

The code generator will use tuples instead of lists as well.

    )
    source_types: Optional[SourceTypes] = field(
        default=None,
        metadata={
            "type": "Element",
            "required": True,
        }
    )


@dataclass(order=True, frozen=True)
class Balance:
    class Meta:
        name = "balance"

    object_value: Optional[str] = field(
        default=None,
        metadata={
            "name": "object",
            "type": "Element",
            "required": True,
        }
    )
    available: Tuple[Available, ...] = field(
        default_factory=tuple,
        metadata={
            "type": "Element",
            "min_occurs": 1,
        }
    )
    connect_reserved: Tuple[ConnectReserved, ...] = field(
        default_factory=tuple,
        metadata={
            "type": "Element",
            "min_occurs": 1,
import pprint
from tests import fixtures_dir
from tests.fixtures.stripe.models import Balance
from xsdata.formats.dataclass.parsers import JsonParser

xml_path = fixtures_dir.joinpath("stripe/samples/balance.json")
parser = JsonParser()
root = parser.from_path(xml_path, Balance)
print(root.pending[0])
print(root.pending[1])
Pending(amount=835408472, currency='usd', source_types=SourceTypes(bank_account=0, card=835408472))
Pending(amount=-22251, currency='eur', source_types=SourceTypes(bank_account=0, card=-22251))