Skip to content

ArtVsMark/Stepik-Python-Grader

Repository files navigation

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 (опционально: требует 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 версия

Python 3.12+ (3.14 — экспериментальная).


Лицензия

MIT © Artem Markitanov (ArtVsMark).

About

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

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages