Skip to content

Instantly share code, notes, and snippets.

@MartinThoma
Created January 8, 2021 11:03
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MartinThoma/a2144816bce39cb8a91cc3b19a589edb to your computer and use it in GitHub Desktop.
Save MartinThoma/a2144816bce39cb8a91cc3b19a589edb to your computer and use it in GitHub Desktop.
from typing import Literal, List
from pydantic import BaseModel, Field
class User(BaseModel):
name: str
roles: List[Literal["Registered", "Moderator", "Admin"]] = Field(
default_factory=list
)
jon_doe = User.parse_obj({"name": "Jon Doe", "roles": []})
jon_skeet = User.parse_obj({"name": "Jon Skeet", "roles": ["Registered", "Admin"]})
print(jon_skeet.dict())
# This fails - as expected!
# unexpected value; permitted: 'Registered', 'Moderator', 'Admin'
# (type=value_error.const;
# given=foo;
# permitted=('Registered', 'Moderator', 'Admin')
# )
User.parse_obj({"name": "Jon Doe", "roles": ["foo"]})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment