In einem pydantischen Basemodel kann kein verschachtelter Standard erstellt werdenPython

Python-Programme
Anonymous
 In einem pydantischen Basemodel kann kein verschachtelter Standard erstellt werden

Post by Anonymous »

Betrachten Sie: < /p>

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.>

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post