
Pydantic
, предназначенной для валидации данных и создания моделей данных в Python.Она используется в основном для работы с данными, получаемыми из API, конфигурационных файлов или других источников.
Pydantic обеспечивает проверку типов и валидацию данных на основе аннотаций типов, что позволяет разработчикам создавать надежные и безопасные приложения.
Изменения в API: В
Pydantic 2.0
произошли значительные изменения в API, включая упрощение и улучшение читаемости кода. Некоторые старые функции были удалены или изменены, чтобы сделать библиотеку более интуитивной.Поддержка данных в формате JSON: Pydantic 2.0 предлагает улучшенную работу с данными в формате JSON, что позволяет проще обрабатывать входные и выходные данные в виде JSON-объектов.
Улучшенная производительность: Новая версия оптимизирована для повышения производительности, что позволяет быстрее обрабатывать и валидировать данные.
Расширяемость: В Pydantic 2.0 улучшена система расширяемости, что позволяет разработчикам легко создавать собственные типы данных и валидации.
Поддержка dataclasses: Улучшенная интеграция с встроенными dataclasses, что упрощает их использование вместе с Pydantic.
Статическая типизация: Библиотека поддерживает статическую типизацию и интеграцию с такими инструментами, как mypy, что помогает выявлять ошибки на этапе разработки.
Использование BaseModel: В Pydantic 2.0 продолжается использование BaseModel для создания моделей данных, но с новыми возможностями и улучшенной логикой.
Установка `Pydantic`:
pip install pydantic
Пример кода:
from pydantic import BaseModel, EmailStr, conint, Field, validator, constr
from typing import Optional
import re
class User(BaseModel):
username: constr(min_length=3, max_length=30) # Имя пользователя: от 3 до 30 символов
email: EmailStr # Электронная почта с проверкой формата
age: conint(ge=0) # Возраст: неотрицательное целое число
bio: Optional[str] = Field(default=None, max_length=150) # Опциональная биография, максимум 150 символов
is_active: bool = True # Активный статус пользователя
password: constr(min_length=8) # Пароль: минимум 8 символов
@validator('username')
def validate_username(cls, v):
if not v.isalnum():
raise ValueError('Имя пользователя должно содержать только буквы и цифры')
return v
@validator('bio')
def validate_bio(cls, v):
if v and 'плохое_слово' in v: # Пример фильтрации нецензурных слов
raise ValueError('Биография не должна содержать нецензурных слов')
return v
@validator('password')
def validate_password(cls, v):
if not (re.search(r'[A-Za-z]', v) and re.search(r'[0-9]', v) and re.search(r'[!@#$%^&*(),.?":{}|<>]', v)):
raise ValueError('Пароль должен содержать хотя бы одну букву, одну цифру и один специальный символ')
return v
def __str__(self):
return f"User(username={self.username}, email={self.email}, age={self.age}, bio={self.bio}, is_active={self.is_active})"
Pydantic 2.0
является мощным инструментом для разработки приложений, требующих надежной валидации данных и строгой типизации, особенно в сочетании с такими фреймворками, как FastAPI.