python
data_error
ai_generated
true
pydantic_core._pydantic_core.ValidationError: 1 validation error for Event Unable to extract tag using discriminator 'kind' [type=union_tag_not_found, input_value={'type': 'click'}, input_type=dict]
ID: python/pydantic-union-tag-required
80%Fix Rate
87%Confidence
0Evidence
2024-05-19First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| 2.x | active | — | — | — |
Root Cause
A discriminated union expects a discriminator key ('kind') but the input provides a different key ('type').
generic中文
鉴别联合期望鉴别器键('kind'),但输入提供了不同的键('type')。
Workarounds
-
95% success
from typing import Literal, Union, Annotated from pydantic import BaseModel, Field class Click(BaseModel): type: Literal['click'] x: int class View(BaseModel): type: Literal['view'] url: str Event = Annotated[Union[Click, View], Field(discriminator='type')] -
80% success
class Click(BaseModel): kind: Literal['click'] = Field(validation_alias=AliasChoices('kind','type'))
Dead Ends
Common approaches that don't work:
-
55% fail
Literal values on subclasses still declare kind='click' etc.; tag mismatch persists.
-
60% fail
Loses discriminated parsing; downstream isinstance checks become unreliable.
-
40% fail
Works but silently mutates payloads; breaks strict round-trip serialization.