Предупреждать о несовместимости кода с версией Python шага Stepik (по синтаксису и функциям)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- python
- Domain
- cli, developer-experience
Research direction
Start from stepik_client.fetch_step_languages, which already returns step versions, and from where meta.json is written when a task is downloaded. The checker walks the AST and compares imports and attribute uses against the added/removed fields of the Glossary-Python cards, so read the code that loads those cards. Done means the acceptance checklist in the issue holds: versions are stored, each syntax feature has a test, and the warning appears in the CLI, the web panel and before submission without blocking the check.
Written by the indexing model from the issue text.
Description
Что предлагается
Перед проверкой решения предупреждать, если в коде есть то, чего нет в версии Python, на которой его проверит Stepik. Решение владельца в эпике #1575: интерпретатор не выбираем, грейдер живёт на 3.14, а совместимость с версией Stepik проверяется по коду.
Зачем
Решение проходит у нас на 3.14 и падает на Stepik на 3.10 из-за except*, itertools.batched или str.removeprefix на 3.8. Студент узнаёт об этом только после отправки, по невнятной ошибке платформы.
Как устроено
- Цель проверки — версии шага.
stepik_client.fetch_step_languagesуже отдаёт их (python3.10,python3.12, …). При скачивании задачи список кладётся вmeta.json; если его нет — набор по умолчанию (минимальная из известных версий Stepik) с пометкой «версии шага не известны». - Синтаксис — обход
ast: признаки с версией появления (match3.10,except*3.11, операторtypeи PEP 695 3.12,:=3.8, позиционные/3.8, f-строки с=3.8, вложенные кавычки в f-строках 3.12 и т. п.). Таблица признаков — одна, в коде, с тестом на каждый. - Имена — импорты и обращения к атрибутам модулей и встроенных типов сверяются с полями
added/removedкарточек глоссария (выгрузка Glossary-Python; у всех 2656 карточек естьadded). Своей таблицы версий не заводим — источник истины у глоссария (CLAUDE.md, инвариант 6). - Результат — список «что, в какой строке, с какой версии»: «
str.removeprefix(стр. 4) — с 3.9, шаг проверяется на 3.8». Это предупреждение, а не вердикт: проверка идёт как обычно. - Где видно: CLI перед прогоном, веб — в панели проверки рядом с результатом, отправка на Stepik — перед отправкой.
Границы (названы, а не подразумеваются)
- Статический разбор не видит динамики (
getattr,importlib) и типов объектов:x.removeprefixу неизвестногоx— только если тип выводим из литерала. Ложное «всё совместимо» возможно, ложного «несовместимо» — по возможности нет. - Версии других языков Stepik (не Python) вне задачи.
Критерии приемки
- Версии шага сохраняются в
meta.jsonпри скачивании; нет их — набор по умолчанию с пометкой. - Синтаксические признаки по версиям — таблица с тестом на каждый признак.
- Имена сверяются по
added/removedглоссария, без своей копии версий. - Предупреждение видно в CLI, в вебе и перед отправкой на Stepik; проверку не блокирует.
- Прогон поверхности: веб — браузером, CLI — командой; живой шаг Stepik — в локальном окне.
Часть #1575
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
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
area:docs documentation effort:M ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
mczielinski/ob-analytics#423 ·
Maintainers usually reply within 1 day
-
infra
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 3 days
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
vllm-project/vllm-ascend#21033 ·
Maintainers usually reply within 1 day