# 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()