-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.cursorrules
More file actions
56 lines (56 loc) · 4.24 KB
/
.cursorrules
File metadata and controls
56 lines (56 loc) · 4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
{
"version": "1.0",
"description": "Правила для проекта OD03 — Алгоритмы сортировки (Python)",
"rules": [
"# Общее",
"- Операционная система: Windows 11.",
"- Язык кода: Python 3.10+.",
"- Весь пользовательский текст (docstring, комментарии, print, README) — на русском языке.",
"- Имена переменных и функций — на английском в snake_case.",
"- Не используй внешние зависимости. Только стандартная библиотека Python.",
"",
"# Структура проекта",
"- Корень проекта содержит: main.py, README.md, sorting/, tests/.",
"- Каждый алгоритм — в отдельном файле внутри sorting/.",
"- Тесты — в tests/test_sorting.py.",
"- НЕ создавай файлы requirements.txt, setup.py, pyproject.toml — они не нужны.",
"",
"# Стиль кода",
"- Каждая функция сортировки принимает list и возвращает НОВЫЙ отсортированный list.",
"- Входной список НЕ мутируется. Делай .copy() в начале если сортировка in-place.",
"- Каждая функция имеет docstring на русском с названием алгоритма.",
"- Используй type hints: def bubble_sort(arr: list) -> list.",
"- Максимальная длина строки: 100 символов.",
"- Отступы: 4 пробела (не табы).",
"",
"# Алгоритмы — точные требования",
"- bubble_sort: два вложенных for, оптимизация -run во внутреннем цикле.",
"- quick_sort: рекурсия, опорный элемент s[0], filter+lambda для left/right, list comprehension для center.",
"- selection_sort: два вложенных for, поиск min_index, обмен через tuple unpacking.",
"- insertion_sort: for начиная с 1, while для сдвига, переменная key.",
"- merge_sort: рекурсивное деление пополам, вспомогательная функция _merge.",
"",
"# Тесты",
"- Используй unittest.TestCase.",
"- Запуск: python -m pytest tests/ -v ИЛИ python -m unittest discover -s tests -v.",
"- Обязательные кейсы: пустой список, один элемент, уже отсортирован, обратный порядок, дубликаты, отрицательные числа, массив из урока [5,7,4,3,8,2].",
"- Проверяй immutability: исходный список не должен меняться после вызова функции.",
"",
"# Markdown (.md файлы)",
"- Соблюдай MD009: нет пробелов в конце строк (trailing spaces).",
"- Соблюдай MD022: пустая строка ДО и ПОСЛЕ каждого заголовка (#, ##, ###).",
"- Соблюдай MD029: все пункты нумерованных списков начинаются с '1.' (не 1. 2. 3.).",
"- Соблюдай MD032: пустая строка ДО и ПОСЛЕ каждого списка.",
"- Отступы в списках: 4 пробела для вложенных пунктов.",
"- Если линтер выдает ошибки по MD009/MD022/MD029/MD032 — исправь немедленно, не игнорируй.",
"",
"# MCP-серверы",
"- Доступен MCP-сервер context7.",
"- Используй context7 для проверки правильности реализации алгоритмов, если доступен.",
"- Проверяй через context7 корректность сигнатур и поведения функций.",
"",
"# Git",
"- Не коммить __pycache__, .pyc, .idea/, .vscode/, .env.",
"- Создай .gitignore с исключениями для Python-проекта."
]
}