Steps to reproduce:
from dataclasses import dataclass
from typing import Optional
from apischema import deserialize
@dataclass
class Categories:
Name: str
Url: str
@dataclass
class Item:
Name: str
Domain: str
Categories: Optional[list[Categories]] = None
item = deserialize(Item, {'Name': 'name', 'Domain': 'domain', 'Categories': [{'Name': 'name', 'Url': 'url'}]})
this is a kind of edge case but Python allows us to declare in this way and it's a bit tricky to debug
Workaround:
from dataclasses import dataclass
from typing import Optional
from apischema import deserialize
@dataclass
class Category:
Name: str
Url: str
@dataclass
class Item:
Name: str
Domain: str
Categories: Optional[list[Category]] = None
item = deserialize(Item, {'Name': 'name', 'Domain': 'domain', 'Categories': [{'Name': 'name', 'Url': 'url'}]})