Status: Stable
Локальный грейдер для курсов «Поколение Python» на Stepik. Скачивает данные задачи с сайта и позволяет не только проверить решение локально, но и сравнить несколько решений более честно: сначала по корректности, потом по benchmark-метрикам.
Курсы:
- Поколение Python: Курс для начинающих
- Поколение Python: Курс для продвинутых
- Поколение Python: Курс для профессионалов
- Поколение Python: ООП
- Поколение Python: Курс для самураев
- ✅ Запуск решений против наборов тест-кейсов (
tests/N+tests/N.clue) - 📋 Автоматическое извлечение тест-кейсов из HTML-таблицы в тексте задачи Stepik
- 📦 Автоскачивание тестов из ZIP-архива по ссылке в тексте задачи
- 🔗 Обнаружение ссылок на GitHub-тесты с подсказкой скачать вручную
- 📊 Сравнение нескольких решений одной задачи в таблице
- 🚀 Subprocess-бенчмарк с замером времени и памяти (режим 3)
- ⚡ Timeit-микробенчмарк через subprocess (режим 4)
- 🎨 Цветной вывод через
rich— зелёный OK/AC, красный WA/TLE/RE, жёлтый SLOWER - 🔍 Diff при WA — сравнение ожидаемого и фактического вывода при провале теста
- ⚖️ Вердикты AC / WA / TLE / RE по каждому тест-кейсу
- 🌐 Локальный веб-интерфейс (
--serve) и интеграция с VS Code / PyCharm - 🧩 pytest-плагин (
pytest --grader-mode), кэш результатов и--watch(опционально: требует extra[watch]—pip install -e ".[watch]", зависит отwatchfiles) - 🔍 Диагностика окружения и авторизация через Stepik API
Разбор по модулям и слоям — в docs/architecture.md.
Установить (проще всего через pipx):
pipx install stepik-python-graderЗапустить интерактивное меню:
python -m stepik_grader # надёжный способ (работает всегда)
stepik-grader # если команда в PATHИли проверить одно решение без интерактива:
stepik-grader --mode 1 --file task.pyПолная установка (из исходников, venv, Windows-заметки, настройка OAuth) — в docs/installation.md. Пошаговый первый пример, режимы 1–4, CLI-флаги, скачивание задач и форматы тестов — в docs/grader-workflow.md.
Полная база знаний — в docs/:
| Тема | Документ |
|---|---|
| Установка, OAuth, secrets.json, диагностика | docs/installation.md |
| Режимы работы, CLI-флаги, web/IDE, скачивание задачи | docs/grader-workflow.md |
| Дизайн WEB MVP (проверка решений + Downloader + Глоссарий-модуль, микро-бенчмарк, error/action cards) | docs/web-mvp.md |
| Справочник: конфигурация, форматы тест-кейсов, ограничения и безопасность | docs/configuration.md |
| Архитектура: модули, слои, граф зависимостей | docs/architecture.md |
| Контракт результата проверки (CLI/Web/API), дизайн server mode, ADR | docs/result-contract.md, docs/server-mode.md, docs/adr/README.md |
| Локальный глоссарий: формат, API, источник истины контента | docs/glossary.md |
| Структура проекта (дерево файлов) | docs/project-structure.md |
| Версии и сравнение с оригиналом | docs/versions.md |
| Полный список изменений | CHANGELOG.md |
| Как внести вклад, код-стайл, версионирование | CONTRIBUTING.md |
| Инварианты ядра и правила для агентов | CLAUDE.md |
Правило против дублей: каждая тема канонически живёт в одном файле, остальные ссылаются — см. docs/README.md § Канонические источники.
Решения запускаются БЕЗ полноценного sandbox на уровне ОС. Есть таймаут выполнения (всегда) и best-effort лимит памяти на POSIX; изоляции ФС/сети нет. Запускай только доверенные решения (свои или скачанные из Stepik as-is). Подробная threat model — в docs/configuration.md § Ограничения и безопасность. Как сообщить об уязвимости — SECURITY.md.
Python 3.12+ (3.14 — экспериментальная).
MIT © Artem Markitanov (ArtVsMark).