You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: flatten validation-only oneOf schemas to single subclassable classes
Follow-up to adcontextprotocol#156. The previous fix unwrapped RootModel unions to Union
type aliases, but Union aliases are also non-subclassable — consumers
that do `class MyType(LibraryType)` still break.
Root cause: JSON Schema uses anyOf/oneOf with required-only branches to
express "at least one of these fields must be set." datamodel-code-generator
misinterprets this as a type union, generating separate variant classes
(e.g., FrequencyCap1/2/3) plus a RootModel wrapper. Neither RootModels
nor Union type aliases can be subclassed by consumers.
Fix: Added flatten_validation_oneof() to generate_types.py that detects
required-only anyOf/oneOf patterns in schemas and removes them before
code generation. This produces a single BaseModel class per type —
restoring the v3.6 API surface where all types were subclassable.
10 types flattened:
- FrequencyCap, UserMatch, AudienceMember, Catchment (value types)
- GetSignalsRequest, UpdateMediaBuyRequest, GetCreativeDeliveryRequest,
ProvidePerformanceFeedbackRequest, SiSendMessageRequest,
PackageUpdate (request types)
Also adds a consumer subclassability contract test that guards 27
consumer-facing types against becoming non-subclassable in future
schema updates.
0 commit comments