Is your feature request related to a problem? Please describe.
given a schema like
components:
schemas:
HereBeDragons:
type: string
pattern: here
PassMe:
type: object
properties:
mangled_string:
anyOf:
- $ref: '#/components/schemas/PettyNumber'
- $ref: '#/components/schemas/HereBeDragons'
PettyNumber:
type: string
pattern: '[0-9]{2,8}'
multiple root types are created and in turn create object indirection
from pydantic import BaseModel, Field, RootModel, constr
class HereBeDragons(RootModel[constr(pattern=r"here")]):
root: constr(pattern=r"here")
class MoreValues(BaseModel):
name: str
age: int | None = None
class PettyNumber(RootModel[constr(pattern=r"[0-9]{2,8}")]):
root: constr(pattern=r"[0-9]{2,8}")
class PassMe(BaseModel):
mangled_string: PettyNumber | HereBeDragons | None = None
Describe the solution you'd like
decare the types more directly like
# using python 3.12+ syntax
from pydantic import BaseModel, Field, StringConstraints
type HereBeDragons = Annotated[str, StringConstraints(pattern=r"here")]
type PrettyNumber = Annotated[str, StringConstraints(pattern=r"[0-9]{2,8}")]
class PassMe(BaseModel):
mangled_string: PettyNumber | HereBeDragons | None = None
Additional context
Add any other context or screenshots about the feature request here.
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too