Files
pydantic/benchmarks/test_pydantic.py
T
2020-06-27 13:42:59 +01:00

53 lines
1.5 KiB
Python

from datetime import datetime
from typing import List
from pydantic import VERSION, BaseModel, Extra, PositiveInt, ValidationError, constr
class TestPydantic:
package = 'pydantic'
version = str(VERSION)
def __init__(self, allow_extra):
class Model(BaseModel):
id: int
client_name: constr(max_length=255)
sort_index: float
# client_email: EmailStr = None
client_phone: constr(max_length=255) = None
class Location(BaseModel):
latitude: float = None
longitude: float = None
location: Location = None
contractor: PositiveInt = None
upstream_http_referrer: constr(max_length=1023) = None
grecaptcha_response: constr(min_length=20, max_length=1000)
last_updated: datetime = None
class Skill(BaseModel):
subject: str
subject_id: int
category: str
qual_level: str
qual_level_id: int
qual_level_ranking: float = 0
skills: List[Skill] = []
class Config:
extra = Extra.allow if allow_extra else Extra.forbid
self.model = Model
def validate(self, data):
try:
return True, self.model(**data)
except ValidationError as e:
return False, e.errors()
def to_json(self, model):
return model.json()