# pydantic

Направляет Cursor при создании моделей на Pydantic v2. Правило защищает от мутабельных значений по умолчанию и заставляет выносить настройки в pydantic_settings.

- правило · `type=rule` · Cursor · ★ 3580
- Автор: sanjeed5
- Лицензия: CC0-1.0 · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/pydantic.mdc
- Обновлён: 2026-05-19
- HTML: https://affpapa.org/nevibecode/rules/pydantic

## Что делает

Правило следит за кодом во всех файлах `**/*.py`. Ассистент группирует сущности в пакете `models/`, использует существительные в единственном числе и запрещает прямой тип `Any` там, где требуются `StrictInt` или `StrictFloat`. Модели по умолчанию делаются неизменяемыми через `ConfigDict(frozen=True)` либо валидируются при обновлении с `validate_assignment=True`.

Инструкция блокирует списки или словари в прямых значениях по умолчанию. Вместо них Cursor подставляет `Field(default_factory=...)`. Для проверок подключаются современные декораторы `@field_validator` и `@model_validator`, а устаревший метод `__post_init__` отсекается. Конфигурацию проекта агент собирает через `BaseSettings` и скрывает пароли в `SecretStr`.

Правило рассчитано только на синтаксис Pydantic v2. На первой версии библиотеки генерация приведёт к ошибкам импорта `ConfigDict` и новых декораторов.

## Установка

### Cursor (родная платформа)

**Вручную: положить файлы**
- Файл: `.cursor/rules/pydantic.mdc` — Во frontmatter: description, globs, alwaysApply

### Claude Code

**Вручную: положить файлы**
- Файл: `.claude/rules/pydantic.md` — Поле paths во frontmatter ограничивает файлы: globs из источника → paths

### Codex

**AGENTS.md**
- Codex читает AGENTS.md: вставьте текст правила туда

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/instructions/pydantic.instructions.md` — Поле applyTo задаёт, к каким файлам применять: globs из источника → applyTo

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/rules/pydantic.md`

### Cline

**Вручную: положить файлы**
- Файл: `.clinerules/pydantic.md`

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/sanjeed5/awesome-cursor-rules-mdc/tree/HEAD/rules-mdc/pydantic.mdc

## Когда брать
- организовать структуру файлов в каталоге `models/`
- заблокировать общие мутабельные дефолты через `Field(default_factory=...)`
- настроить валидацию связанных полей через `@model_validator`
- вынести чтение переменных окружения в класс `BaseSettings`

## Примеры запросов агенту
- Сделай неизменяемую модель заказа с проверкой даты доставки
- Создай конфиг приложения на `BaseSettings` для чтения переменных из `.env`
- Добавь валидатор, который сверяет время начала и окончания встречи

## Похожие
- [pydantic-models-py](https://affpapa.org/nevibecode/skills/pydantic-models-py.md) — скилл · 5 установок
- [pydantic-ai-harness](https://affpapa.org/nevibecode/skills/pydantic-ai-harness.md) — скилл · 2600 установок
- [python-type-safety](https://affpapa.org/nevibecode/skills/python-type-safety.md) — скилл · 12643 установки
- [code-craft](https://affpapa.org/nevibecode/skills/code-craft.md) — скилл · 1700 установок
- [python-best-practices](https://affpapa.org/nevibecode/skills/python-best-practices.md) — скилл · 855 установок
- [python-error-handling](https://affpapa.org/nevibecode/skills/python-error-handling.md) — скилл · 14116 установок

Из того же набора: [sanjeed5/awesome-cursor-rules-mdc](https://affpapa.org/nevibecode/by/sanjeed5/awesome-cursor-rules-mdc.md) — 240 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
