К основному содержанию
правило

isort — правило для Cursor: что делает и как установить

Правило для Cursor по оформлению и группировке импортов Python по стандарту PEP 8 с профилем black.

Установить в Cursor · Вручную: положить файлы Все способы и платформы ↓
.cursor/rules/isort.mdc
Открыть на GitHub

Что делает isort

Правило задаёт требования к группировке и оформлению импортов в коде Python для редактора Cursor. Оно предписывает хранить параметры исключительно в pyproject.toml с профилем black и длиной строки 88 символов, запрещая разрозненные файлы конфигурации.

Ассистент ориентируется на отказ от импортов через звёздочку * и требует предпочитать абсолютные пути относительным. Для модульных проектов с директорией src задаются списки known_first_party и known_third_party.

Если в репозитории параллельно запускается линтер Ruff, импорты сломаются из-за дублирования проверок. В секции [tool.ruff] придётся принудительно отключить правило I001. Для надёжности правило рекомендует запускать проверку через хук pre-commit и флаг isort --check-only . в пайплайне CI/CD.

Какие задачи решает

  • устранить конфликты слияния в блоках импортов Python
  • настроить единый профиль black для isort в pyproject.toml
  • разделить внутренние модули и сторонние библиотеки через known_first_party
  • предотвратить использование импортов через звёздочку в модулях
  • отключить конфликтное правило I001 при совместной работе с Ruff

Примеры запросов агенту

  • Настрой секцию [tool.isort] в pyproject.toml под профиль black
  • Перепиши относительные импорты в файле app/services.py на абсолютные
  • Добавь запуск isort с параметром --check-only в шаги CI/CD пайплайна

Как установить isort

Вручную: положить файлы

.cursor/rules/isort.mdc

Во frontmatter: description, globs, alwaysApply

По шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules

Вопросы о isort

Как установить isort в Cursor?

Создайте файл .cursor/rules/isort.mdc в корне проекта и поместите туда содержимое правила. Редактор автоматически активирует инструкции для всех файлов с маской **/*.py.

Что делает правило isort?

Оно направляет ИИ-ассистента следовать стандартам PEP 8, предпочитать абсолютные пути, отказываться от звёздочек в импортах и держать настройки в файле pyproject.toml.

Как настроить совместную работу с Ruff?

В конфигурации pyproject.toml внутри секции [tool.ruff] укажите ignore = ["I001"]. Это отключит проверку сортировки импортов в Ruff и предотвратит конфликт инструментов.

Исходный текст

isort.mdc · CC0-1.0
---
description: This guide provides definitive rules for configuring and using isort to maintain consistent, readable, and merge-conflict-free Python import statements.
globs: **/*.py
---
# isort Best Practices

`isort` is the definitive tool for sorting Python imports. It ensures consistency, reduces merge conflicts, and improves readability by automatically organizing imports according to PEP 8 and project-specific rules.

## 1. Core Configuration: `pyproject.toml` is Non-Negotiable

Always configure `isort` in `pyproject.toml`. This centralizes tooling configuration and ensures consistent behavior across all development environments.

**❌ BAD: Scattered or Missing Configuration**
Relying on command-line flags or `.isort.cfg` files leads to inconsistency and makes project setup brittle.

**✅ GOOD: Centralized `pyproject.toml`**
Use the `black` profile and explicitly define your project's line length.

```toml
# pyproject.toml
[tool.isort]
profile = "black"
line_length = 88
# Add any top-level internal packages to known_first_party
# This ensures isort correctly groups your internal modules.
known_first_party = ["my_project_core", "my_project_api"]
# Add third-party packages that isort might misclassify as first-party
known_third_party = ["flask", "django", "requests"]
```

## 2. Enforce with `pre-commit` Hooks

Automate `isort` execution on every commit. This is the only way to guarantee consistent import ordering across the team.

**❌ BAD: Manual `isort` Runs**
Forgetting to run `isort` manually leads to unformatted code in the repository and wasted time in code reviews.

**✅ GOOD: `pre-commit` Integration**
Add `isort` to your `.pre-commit-config.yaml`.

```yaml
# .pre-commit-config.yaml
- repo: https://github.com/PyCQA/isort
  rev: 5.13.2 # Use the latest stable version
  hooks:
    - id: isort
      args: ["--profile", "black", "--line-length", "88"]
```

## 3. Code Organization and Import Grouping

`isort` excels at grouping imports. Leverage `known_first_party` to correctly categorize your internal modules.

**❌ BAD: Ambiguous Internal Imports**
Without `known_first_party`, `isort` might treat your internal modules (e.g., `from my_project.utils import ...`) as third-party or local, leading to incorrect grouping.

**✅ GOOD: Explicit `known_first_party` for Modular Projects**
If your project has a `src` directory or multiple top-level packages, define them.

```python
# my_project_core/logic.py
import os # Standard library
import requests # Third-party
from my_project_api.models import User # First-party (correctly grouped)

# ... rest of your code
```

## 4. Avoid Wildcard Imports

Wildcard imports (`from module import *`) obscure dependencies and make code harder to read and refactor. `isort` will sort them, but they are a fundamental anti-pattern.

**❌ BAD: Wildcard Imports**
```python
from my_module import * # What exactly is imported?
```

**✅ GOOD: Explicit Imports**
```python
from my_module import specific_function, AnotherClass
```

## 5. Relative vs. Absolute Imports

Use absolute imports for clarity and maintainability. Relative imports are acceptable *within* a subpackage but should be used sparingly.

**❌ BAD: Over-reliance on Relative Imports**
```python
# In my_package/sub_package/module_a.py
from ..another_sub_package.module_b import func # Hard to trace origin
```

**✅ GOOD: Absolute Imports for Top-Level Modules**
```python
# In my_package/sub_package/module_a.py
from my_project.another_sub_package.module_b import func # Clear path
```

## 6. Performance and CI/CD Integration

`isort` is fast. Integrate it into your CI/CD pipeline as a check-only step to prevent unformatted code from being merged.

**❌ BAD: No CI/CD Check**
Allowing unformatted code to pass CI means `pre-commit` is the only gate, which can be bypassed.

**✅ GOOD: CI/CD `isort --check-only`**
Run `isort --check-only .` in your CI pipeline. This fails the build if imports are not sorted, forcing developers to fix them locally.

## 7. Ruff and `isort` Coexistence

While Ruff can replace `isort`, many teams still use `isort` for its dedicated import handling. If you're using both, ensure Ruff's import sorting is disabled to avoid conflicts.

**✅ GOOD: Disable Ruff's Import Sorting if Using `isort`**
```toml
# pyproject.toml (for Ruff)
[tool.ruff]
# Disable isort-related rules (e.g., I001 for unsorted imports)
ignore = ["I001"]
```

© sanjeed5 · CC0-1.0 · sanjeed5/awesome-cursor-rules-mdc

Похожие правила IDE

Все правила IDE по теме «Код-ревью и рефакторинг» →
comment-code-generate-a-tutorial официальный github Приводит Python-скрипт в порядок, поясняет его комментариями и создаёт учебный README.md. Подходит, когда код нужно подготовить для новичков. 8 900установок python-patterns affaan-m Подсказывает агенту, как писать и ревьюить Python: идиомы, аннотации типов, обработка исключений, контекстные менеджеры. CX Codex +1 5 500установок python-code-review existential-birds Скилл проверяет файлы Python на ошибки в типах, блокирующие вызовы в async-функциях и нарушение PEP8. Пригодится при подготовке пуллреквестов и чистке кодовой базы. CX Codex +1 920установок Python Code Performance & Quality Enhancer sivasaiyadav8143 Промпт для ревью Python-кода: добавляет докстринги, чинит PEP8, ищет узкие места по скорости и отдаёт переписанный файл целиком. GP ChatGPT ★ 174 831звёзд репо python Mindrally Скилл задаёт агенту стиль Python-кода: PEP 8, type hints, ранние возвраты и async для I/O. Пригодится, когда агент пишет или правит код в проекте. CX Codex +1 983установок codexer официальный github Инструкция превращает GitHub Copilot в строгого Python-исследователя: требует изоляции окружений, аннотаций типов, тестов на pytest и ищет документацию через Context 7 MCP. ★ 40 478звёзд репо

Из того же набора240

Весь набор →
jest Правило задаёт команде единый стиль тестов на Jest: конфиг, изоляция, моки и асинхронные проверки. Пригодится, если тесты в проекте пишут несколько человек. ★ 3 580звёзд репо jenkins Набор инструкций для Cursor по оформлению пайплайнов Jenkins. Помогает писать декларативные Jenkinsfile и выносить задачи сборки на отдельные агенты. ★ 3 580звёзд репо jax Правило для Cursor задаёт принципы написания кода на JAX: чистые функции, контроль типов массивов, стабильная компиляция и проверка градиентов. ★ 3 580звёзд репо java Правило задаёт агенту стиль кода Java: Google Java Style, именование, иммутабельность, Stream API и работа с ресурсами. ★ 3 580звёзд репо ionic Правило задаёт практики для Ionic-приложений на TypeScript: структуру компонентов, типизацию, асинхронные вызовы и работу с UI. ★ 3 580звёзд репо insomnia Правило для Cursor задаёт порядок работы с Insomnia: коллекции в Git, переменные окружения вместо секретов в запросах, прогон тестов через inso в пайплайне. ★ 3 580звёзд репо hypothesis Задаёт стандарты property-based тестирования на Python с библиотекой Hypothesis и pytest. Помогает модели писать чистые стратегии данных без лишних фильтров. ★ 3 580звёзд репо huggingface Правило задаёт стандарты Python-кода для Hugging Face Transformers и Hub: от загрузки моделей до обучения с учётом ограничений оборудования. ★ 3 580звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой