Last active
March 1, 2021 14:09
-
-
Save chespinoza/4823ec982e9a9fb9dd89aa25e80e84af to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from validate import dataclass, field, types, ValidationError | |
@dataclass | |
class User: | |
name: str | |
surname: str | |
age: int | |
email: str = field(validate=types.Email) | |
payload = { | |
"name": "Peter", | |
"surname": "Parker", | |
"age": 12, | |
"email": "[email protected]" | |
} | |
try: | |
User().validate(payload) | |
except ValidationError as e: | |
print(e.messages) | |
try: | |
user = User().load(payload) | |
user_dict = user.to_dict() | |
user_json = user.to_json() | |
except ValidationError as e: | |
print(e.messages) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from typing import Dict, Optional, Union, Literal | |
from validate import dataclass, field, types, ValidationError | |
@dataclass | |
class BaseSchema: | |
other_data: Optional[Dict] | |
@dataclass | |
class Pagination: | |
limit: int = field(validate(range(min=1, max=1000))) | |
offset: int = field(validate(range(min=0))) | |
@dataclass | |
class DictFilter: | |
key: str | |
value: str | |
@dataclass | |
class UserFilter: | |
id: int | |
name: str | |
surname: str | |
email: types.Email | |
@dataclass | |
class TicketFilter: | |
id: int | |
client_id: int | |
status: Literal["new", "in progress"] | |
created_by: int | |
created_at: types.UtcDateTime | |
@dataclass(base=BaseSchema) | |
class Parameters: | |
pagination: Optional[Pagination] | |
filter: Optional[Union[DictFilter, UserFilter, TicketFilter]] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment