🖥 Pydantic 2.0 — это основная версия библиотеки Pydantic, предназначенной для валидации данных и создания моделей данных в Python.

Она используется в основном для работы с данными, получаемыми из API, конфигурационных файлов или других источников.

Pydantic обеспечивает проверку типов и валидацию данных на основе аннотаций типов, что позволяет разработчикам создавать надежные и безопасные приложения.



🥳 Основные изменения и особенности Pydantic 2.0:



Изменения в 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.



⚡️Теги: #pydantic #python #validate #password #maximudupley #quadd4rv1n7 #2024