Skip to content

ValidationError: ValidationError: [{'loc': ['Categories'], 'err': 'expected type null, found array'}] #642

@naviot

Description

@naviot

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'}]})

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions