---
type: JS Module
title: main.mjs
resource: npm/rules/python/main.mjs
docgen:
  crc: 8ceba96a
  model: omlx/gemma-4-e4b-it-OptiQ-4bit
  score: 90
---

## Огляд

Виконує логіку `lint-python` за правилом `python.mdc` для забезпечення якості коду Python. Якщо файл `pyproject.toml` відсутній у корені, виконання завершується з кодом 0. Якщо файл присутній, але `uv` не знайдено у системному шляху, це вважається помилкою, оскільки `uv` є єдиним дозволеним пакет-менеджером (без Poetry). Для роботи необхідно виконати `uv lock --check` для підтвердження актуальності файлу блокування та `uv sync --frozen` для створення середовища, що відповідає `uv.lock` (детальніше про `uv` на https://docs.astral.sh/uv/). Опціональні лінтери запускаються лише за умови їх доступності через `uv run`. Запускаються `ruff` у режимі автоматичного виправлення (`--fix`) та форматування, а також `mypy` для статичного аналізу коду, використовуючи канонічний патерн серіалізації через `runStandardLint`.

## Поведінка

run виконує стандартну перевірку на основі контексту.
runLintPythonSteps виконує послідовність кроків лінтування Python, включаючи перевірку `pyproject.toml`, виконання `uv lock --check` та `uv sync --frozen`, а також запуск опціональних лінтерів (`ruff`, `mypy`) через `uv run`.
runLintPython запускає послідовність кроків лінтування Python, використовуючи механізм стандартного лінтування.
lint оркеструє запуск `runLintPython` для аналізу всього проєкту.

## Публічний API

run — Основна точка входу для виконання правил, що включає перевірку логіки застосування (JS-concerns → policy → mdc-refs) та виконання лінтингу.
runLintPythonSteps — Виконує внутрішні етапи лінтингу для Python без збереження логів.
runLintPython — Публічний інтерфейс для запуску лінтингу Python, що забезпечує унікальність виконання через блокування та аналіз стану репозиторію.
lint — Координатор, який ініціює запуск лінтингу Python, делегуючи це `runLintPython`.

## Гарантії поведінки

- Read-only: не виконує операцій запису (ФС/БД).
