Skip to content
View ArtVsMark's full-sized avatar

Block or report ArtVsMark

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
ArtVsMark/README.md
Artem Markitanov — Python grading, benchmarking, testing and CI automation
Open-source Python maintainer · Grading, benchmarking, CI automation · Quality held by mechanism, not memory
4000+ tests · 16 checks per PR · no branch protection bypasses



Main projectPyPICI


What I maintain

ProjectWhat it doesStack
Stepik-Python-Grader
PyPI · Quick start · History
A local offline autograder for Python. Downloads task data from Stepik, runs correctness checks without a submit limit, and compares several solutions honestly — correctness first, benchmark metrics second. CLI · web UI · GUI · pytest plugin · OS sandbox
Glossary-PythonSupporting layer: the glossary the grader links into when a run fails.content · tooling

Quick start

pipx install stepik-python-grader && stepik-grader

Beyond running tests: an offline RU/EN glossary reachable straight from the error you just hit · a step-by-step tracer with a memory graph · timeit microbenchmarks with time and memory ranking · an optional OS sandbox for Linux, macOS and Windows · opt-in AI failure explanations, bring-your-own-key.

What holds the quality

4000+

tests across a
197-module suite

16

checks per PR,
11 of them required

3 × 2

OS × Python versions,
3.14 experimental

12

releases shipped,
latest v1.11.0
  • Gates instead of memorypreflight.py before a commit, check_pr_ready.py before a merge. Things you cannot forget, because they are enforced rather than remembered.
  • The rule applies to the owner too — the branch-protection bypass list is empty. Not a policy, a mechanism.
  • Every rule cites its incident — each convention in the docs carries the issue number it grew from, so half a year later it is clear not only what the rule is, but why.
  • A changelog assembled from fragments, not written after the fact — entries land with the change that caused them.

Current focus

Architecture refinementkeeping module boundaries honest as surface area grows
CI & merge automationstronger gates, less manual shepherding
Regression coverageevery fixed bug leaves a test behind
English documentationfull parity with the Russian docs tree
Local web UXmaking --serve the primary workflow, not the fallback
Safer executiontighter boundaries for untrusted code paths

Stack

Python · pytest · Hypothesis · Ruff · mypy · GitHub Actions · PyPI · Playwright

CLI tooling · local web UI · benchmarking · OS sandboxing · docs architecture · release automation · typed boundaries · property-based testing

Contributions welcome

The grader has a "First contribution in 15 minutes" onramp, and every good first issue is written in both Russian and English — a bilingual body is enforced by a dedicated check, not by good intentions.

Good first issuesDiscussionsReport a bug

🇷🇺 По-русски

Мейнтейнер open-source на Python. Делаю инструменты для тех, кто проверяет, сравнивает, отлаживает и выпускает код. Флагман — Stepik-Python-Grader: локальный грейдер, который не просто прогоняет тесты, а сравнивает решения честно — сначала по корректности, потом по benchmark-метрикам.

Качество держится механикой, а не памятью: гейты перед коммитом и мержем, пустой список обходов защиты ветки, каждое правило подписано инцидентом, из которого выросло.

Сейчас в работе: границы модулей по мере роста площади · автоматизация очереди мержей · регрессионное покрытие (каждый исправленный баг оставляет тест) · паритет английской документации · --serve как основной сценарий вместо запасного · более тесные границы для недоверенного кода.

Стек: Python · pytest · Hypothesis · Ruff · mypy · GitHub Actions · PyPI · Playwright.

Открыт для вклада: онрамп «Первый вклад за 15 минут», задачи good first issue заводятся сразу на двух языках — двуязычие проверяет отдельный скрипт, а не добрая воля.

Подробности — в проекте: README грейдера (на русском) · история проекта · как включиться

Contribution graph consumed by a snake

Pinned Loading

  1. Stepik-Python-GraderStepik-Python-GraderPublic

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

    Python 2 5

  2. Glossary-PythonGlossary-PythonPublic

    Глоссарий для людей изучающих Python

    HTML 2