Skip to main content

Stepik Python Grader

CI Release Version Coverage (ubuntu) Coverage (all OS combined) 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 (опционально: требует 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

stepik_python_grader-1.8.0.tar.gz (1.0 MB 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.8.0-py3-none-any.whl (695.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: stepik_python_grader-1.8.0.tar.gz
  • Upload date:
  • Size: 1.0 MB
  • 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.8.0.tar.gz
Algorithm Hash digest
SHA256 82b5a9f6bfa9843c10cbe0c4835b9660e508f3e3bb0c7cd28fdc0a599a1154df
MD5 3557303f7631e45f623617bdb915f4f6
BLAKE2b-256 db34de134d3545c4096cf3079bd4cf258b955ac29ba8e1a0c147eb6616a1b703

See more details on using hashes here.

Provenance

The following attestation bundles were made for stepik_python_grader-1.8.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.8.0-py3-none-any.whl.

File metadata

File hashes

Hashes for stepik_python_grader-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d3f9ac91299cad97d28abe0589d5f16098dcc803b5492fa2db5139cda208de21
MD5 ca91a05f6e5c2376ffe04864b82905bd
BLAKE2b-256 af280e9641419d3725cce50c283b1eb61be046e5c3a53dbe9e30fe31758bd126

See more details on using hashes here.

Provenance

The following attestation bundles were made for stepik_python_grader-1.8.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