🧭 [Эпик] Python в грейдере: код на 3.14, код студента — на движке 3.12
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 15/100
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
Статус: на подумать. Решений здесь нет — только то, что выяснено, и вопросы, без ответа на которые начинать нельзя. Работа не стартует, пока владелец не ответит на «Открытые вопросы».
Откуда взялось
Разговор о фильтрах глоссария по версии 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).
Две разные задачи, которые легко смешать
- Python для самого грейдера. Без него ничего не стартует. Кандидат — установщик
uv: один исполняемый файл без зависимости от Python, ставит проверенную сборку CPython (python-build-standalone, с контрольными суммами), окружение и пакет. Цена — сеть при первом запуске (~30–40 МБ). - 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
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from ArtVsMark/Stepik-Python-Grader
-
Difficulty 2/5 1-3 hours Newbie friendliness 48/100
ArtVsMark/Stepik-Python-Grader#1636 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 Half a day Newbie friendliness 35/100
ArtVsMark/Stepik-Python-Grader#1635 ·
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 18/100
ArtVsMark/Stepik-Python-Grader#1634 ·
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 32/100
ArtVsMark/Stepik-Python-Grader#1633 ·
Maintainers usually reply within 1 day
-
Каталог v1.12.0: Python 3.14 / 3.15 / 3.16 — 3.15 в основной CI, 3.16 в python-next, подъём действийOpen
Difficulty 3/5 1-2 days Newbie friendliness 30/100
ArtVsMark/Stepik-Python-Grader#1632 ·
Maintainers usually reply within 1 day
All issues in ArtVsMark/Stepik-Python-Grader
Similar issues
-
Import errors are swallowed: PerthImplicitWatermarker silently becomes NonePossibly taken @JonRC claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
resemble-ai/Perth#23 ·
-
correction metadata
Difficulty 2/5 Under an hour Newbie friendliness 65/100
acl-org/acl-anthology#10753 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
earthtojake/text-to-cad#758 ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 1-3 hours Newbie friendliness 70/100
DataTalksClub/faq#545 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day