Code: Select all
import pydantic
from typing import Annotated
from collections import defaultdict
from uuid import UUID
class Repro(pydantic.BaseModel):
value: Annotated[
defaultdict[UUID, defaultdict[UUID, dict]],
pydantic.Field(
default_factory=lambda: defaultdict[UUID, defaultdict[UUID, dict]](lambda: defaultdict(dict))
),
]
# to validate that the typechecker thinks the above are valid:
instance = Repro(value=defaultdict[UUID, defaultdict[UUID, dict]](lambda: defaultdict(dict)))
< /code>
Das obige Übergabetyp -Überprüfung mit Pyright, aber zur Laufzeit schlägt die Klassendefinition fehlpydantic.errors.PydanticSchemaGenerationError: Unable to infer a default factory for keys of type . Only str, int, bool, list, dict, frozenset, tuple, float, set are supported, other types require an explicit default factory set using `DefaultDict[..., Annotated[..., Field(default_factory=...)]]
Denke, es könnte die Introspektion des inneren Standarddict Auslösen der Fehlermeldung versuchte.class Repro(pydantic.BaseModel):
value: Annotated[
defaultdict[
UUID, Annotated[defaultdict[UUID, dict], pydantic.Field(default_factory=dict)]
],
pydantic.Field(default_factory=lambda: defaultdict[UUID, defaultdict[UUID, dict]](lambda: defaultdict(dict))),
]
< /code>
...But mit identischer Wirkung.>