Skip to main content

Stepik Python Grader

CI Release Version Coverage Python

Status: Stable

Локальный грейдер для курсов «Поколение Python» на Stepik. Скачивает данные задачи с сайта и позволяет не только проверить решение локально, но и сравнить несколько решений более честно: сначала по корректности, потом по benchmark-метрикам.

Первоисточник грейдера

Курсы:


Основные возможности

  • ✅ Запуск решений против наборов тест-кейсов (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
  • 🔍 Диагностика окружения и авторизация через 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
Локальный глоссарий: формат, 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

stepik_python_grader-1.6.0.tar.gz (282.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stepik_python_grader-1.6.0-py3-none-any.whl (115.0 kB view details)

Uploaded Python 3

File details

Details for the file stepik_python_grader-1.6.0.tar.gz.

File metadata

  • Download URL: stepik_python_grader-1.6.0.tar.gz
  • Upload date:
  • Size: 282.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for stepik_python_grader-1.6.0.tar.gz
Algorithm Hash digest
SHA256 2b7c533cfe330fb1dd3270b75bf0aea9fe1e6a0962755160cf236eb82083abd5
MD5 453097fc0fdef13ef7428151314e6940
BLAKE2b-256 8798d905264ea2ae1f64f568b0d577724a2989828a0d243bde81017a747fafa9

See more details on using hashes here.

Provenance

The following attestation bundles were made for stepik_python_grader-1.6.0.tar.gz:

Publisher: release.yml on ArtVsMark/Stepik-Python-Grader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stepik_python_grader-1.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for stepik_python_grader-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 77327ad1df2ac831d4d1d6f3d5d4ad3f1fc3eae988619be85e5163fff27bec61
MD5 e5728fa7158c4b76417ea11e09f6ac11
BLAKE2b-256 78a0a7d5d505c821e7240a4cf2560b72dcfe20e52c7de9498c624f42a3c40d2e

See more details on using hashes here.

Provenance

The following attestation bundles were made for stepik_python_grader-1.6.0-py3-none-any.whl:

Publisher: release.yml on ArtVsMark/Stepik-Python-Grader

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page