🧭 [Эпик] Python в грейдере: код на 3.14, код студента — на движке 3.12

Open
#1,575 8 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
15/100
Issue type
Feature
Clarity
Needs clarification
Activity status
Active
Tech stack
python
Domain
backend, cli, testing

Research direction

This is an exploratory epic, not ready to implement: the body says work must wait for the owner to answer the open questions and clarify Stepik's Python-version API. Start by reading the listed entry points—core/runner.py, core/sandbox/, core/lint.py, and core/tracer.py—and investigating the local Stepik API window. Done means the owner has resolved the design questions and the scope is agreed; no implementation is specified yet.

Written by the indexing model from the issue text.

Description

area/core difficulty/hard enhancement epic

Статус: на подумать. Решений здесь нет — только то, что выяснено, и вопросы, без ответа на которые начинать нельзя. Работа не стартует, пока владелец не ответит на «Открытые вопросы».

Откуда взялось

Разговор о фильтрах глоссария по версии Python (#1573, форма карточки 6.0: added/deprecated/removed, platforms) упёрся в вопрос: а какой у студента Python? Ответ сейчас — тот, в который установлен сам грейдер, и выбора нет.

Как сейчас (замер 07.10)

  • Код студента запускается через sys.executable — core/runner.py:765, так же песочница (core/sandbox/_linux.py, _macos.py, _windows.py, _posix_common.py), линтер (core/lint.py) и лаунчер. Это интерпретатор самого грейдера.
  • Настройки «каким Python проверять» нет нигде: ни в CLI, ни в вебе, ни в user_settings.
  • launcher.sh/launcher.cmd ищут готовый .venv; нет его — просят создать руками. На машине без Python грейдер не запустить вовсе.
  • Нижняя граница — requires-python пакета (3.12).

Две разные задачи, которые легко смешать

  1. Python для самого грейдера. Без него ничего не стартует. Кандидат — установщик uv: один исполняемый файл без зависимости от Python, ставит проверенную сборку CPython (python-build-standalone, с контрольными суммами), окружение и пакет. Цена — сеть при первом запуске (~30–40 МБ).
  2. Python для кода студента. Не обязан совпадать с первым. Реестр интерпретаторов (найденные: системный, py -0, python3.X в PATH; поставленные через uv по кнопке), выбор перед запуском, хранение в настройках пользователя.

Где будет трудно

  • Изолированная песочница (--sandbox). Интерпретатор вне системных путей (~/.local/share/uv/…) нужно пробросить в изоляцию только на чтение (Linux), выдать права в AppContainer (Windows). Проверяется только матрицей CI.
  • Пошаговый трейс (core/tracer.py) исполняет свой загрузчик внутри интерпретатора студента — нужна нижняя граница версий и честный отказ ниже неё.
  • Сопоставимость вердиктов. Если проверка идёт на выбранной версии, история обязана записывать версию — иначе «вчера проходило, сегодня нет» не объяснить.
  • Офлайн. Установка версии без сети должна отказывать словами, а не падать.

Открытые вопросы (решает владелец)

  • uv — способ ставить и Python, и сам грейдер? Или иной путь (замороженное приложение, только найденные интерпретаторы)?
  • Выбранная версия действует на проверку решений тоже — или только на «Песочницу»?
  • Какая версия по умолчанию: интерпретатор грейдера или версия Stepik (если её удастся узнать — см. ниже)?
  • Нижняя граница версий для кода студента.
  • Связь с глоссарием: фильтр по версии берёт выбранный интерпретатор по умолчанию?

Что выяснить до решения

  • Версия Python на Stepik — отдаёт ли её API задачи, одна ли она на все курсы. Только локальное окно: из облака сети до Stepik нет.

Чем это не является

Не часть #1573: фильтры глоссария по версии и ОС делаются независимо, по умолчанию — от интерпретатора грейдера, без выбора.


Generated by Claude Code

Dominant language
Python
Stars
3
Forks
6
Avg merge
4h 7m
Merged PRs (30d)
49

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from ArtVsMark/Stepik-Python-Grader

All issues in ArtVsMark/Stepik-Python-Grader

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.