55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
# example from root.cz
|
|
# https://www.root.cz/clanky/validace-dat-v-pythonu-s-vyuzitim-knihovny-pydantic/
|
|
from models.address import Address
|
|
from models.character import CharacterModel, CharacterModelOptionalAddress
|
|
from models.user import User, UserNone, UserUnion, UserPositiveInt, UserFieldValidator, UserMaxLength
|
|
|
|
|
|
def main():
|
|
|
|
# Basic validation
|
|
print("Hello from pydantic-demo!")
|
|
print(f"{User(name='John', surname='Doe', age=42, registered=True)=}")
|
|
print(f"{User(name='Adam', surname='Kameník', age=52, registered=True)=}")
|
|
print(f"{UserNone(name='Tomáš', surname='Macek', age=None)=}") # preferred variant
|
|
print(f"{UserUnion(name='Adam', surname='Bernau', age=None)=}")
|
|
print(f"{UserUnion(name='Adam', surname='Bernau')=}")
|
|
print(f"{UserPositiveInt(name='Adam', surname='Bernau')=}")
|
|
#print(f"{UserPositiveInt(name="Adam', surname='Bernau', age=-50)=}")
|
|
print(f"{UserFieldValidator(name='Adam', surname='Bernau', age=18)=}")
|
|
print(f"{UserMaxLength(name='Adam', surname='Bernau', age=18)=}")
|
|
#print(f"{UserMaxLength(name='Adam', surname='Bernaukjghsmtlmgchs', age=18)=}")
|
|
|
|
# JSON
|
|
data = """
|
|
{"name": "Marek",
|
|
"surname": "Kdolský",
|
|
"age": 50
|
|
}
|
|
"""
|
|
user1 = UserMaxLength.model_validate_json(data)
|
|
print(f"{user1=}")
|
|
print(f"{user1.model_dump_json()=}")
|
|
print(user1.model_dump_json(indent=4))
|
|
|
|
# Nested structure and JSON
|
|
character = CharacterModel(
|
|
role='Director',
|
|
user=User(name='John', surname='Doe', age=42, registered=True),
|
|
address=Address(street='Dlouhá', house_number=77, city='Prague'),
|
|
)
|
|
print(f"{character=}")
|
|
print(character.model_dump_json(indent=4))
|
|
|
|
|
|
character1 = CharacterModelOptionalAddress(
|
|
role='Director',
|
|
user=UserFieldValidator(name='John', surname='Doe', age=19, registered=True),
|
|
# address=Address(street='Dlouhá', house_number=77, city='Prague'),
|
|
)
|
|
print(f"Optional address {character1=}")
|
|
print(character1.model_dump_json(indent=4))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|