Stepik Python Grader
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) - 🧪 Playwright e2e-смоук фронтенда + регрессия на XSS (опционально: extra
[e2e]— см. CONTRIBUTING.md § E2E-тесты) - 🔍 Диагностика окружения и авторизация через 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-current.md |
| Справочник HTTP API (эндпоинты, параметры, лимиты, коды ответов, curl) | docs/api.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 версия
Python 3.12+ (3.14 — экспериментальная).
Лицензия
MIT © Artem Markitanov (ArtVsMark).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file stepik_python_grader-1.7.0.tar.gz.
File metadata
- Download URL: stepik_python_grader-1.7.0.tar.gz
- Upload date:
- Size: 764.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f9f452e053f835163fc9c7ff94670af0cca3252d5d150eb84624aa2824128f6
|
|
| MD5 |
935ef84614a94810564b2d35f1c27666
|
|
| BLAKE2b-256 |
20ec2c7a656fd959bc973cdc088149eba2e73c6d559712a3cbae9eb04d9245f6
|
Provenance
The following attestation bundles were made for stepik_python_grader-1.7.0.tar.gz:
Publisher:
release.yml on ArtVsMark/Stepik-Python-Grader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stepik_python_grader-1.7.0.tar.gz -
Subject digest:
5f9f452e053f835163fc9c7ff94670af0cca3252d5d150eb84624aa2824128f6 - Sigstore transparency entry: 2150802315
- Sigstore integration time:
-
Permalink:
ArtVsMark/Stepik-Python-Grader@73fe085a4fb444d22c84e12b8d1627a3e53a0439 -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/ArtVsMark
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@73fe085a4fb444d22c84e12b8d1627a3e53a0439 -
Trigger Event:
push
-
Statement type:
File details
Details for the file stepik_python_grader-1.7.0-py3-none-any.whl.
File metadata
- Download URL: stepik_python_grader-1.7.0-py3-none-any.whl
- Upload date:
- Size: 497.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fa2f071882e1f839e2316bf51440ee18839875d1034e542eeff1d1e54e46ef3e
|
|
| MD5 |
66e3dffed5d8a9e7fd769dc562e2b802
|
|
| BLAKE2b-256 |
78ba8db68ec742272dbd9e0d826a7bc81387f4b26103d1fd4e27630f27911781
|
Provenance
The following attestation bundles were made for stepik_python_grader-1.7.0-py3-none-any.whl:
Publisher:
release.yml on ArtVsMark/Stepik-Python-Grader
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
stepik_python_grader-1.7.0-py3-none-any.whl -
Subject digest:
fa2f071882e1f839e2316bf51440ee18839875d1034e542eeff1d1e54e46ef3e - Sigstore transparency entry: 2150802630
- Sigstore integration time:
-
Permalink:
ArtVsMark/Stepik-Python-Grader@73fe085a4fb444d22c84e12b8d1627a3e53a0439 -
Branch / Tag:
refs/tags/v1.7.0 - Owner: https://github.com/ArtVsMark
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@73fe085a4fb444d22c84e12b8d1627a3e53a0439 -
Trigger Event:
push
-
Statement type: