• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

source-academy / py-slang / 31236306643
86%

Build:
DEFAULT BRANCH: main
Ran 08 Aug 2026 03:21AM UTC
Jobs 1
Files 138
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

08 Aug 2026 03:01AM UTC coverage: 86.467% (-0.005%) from 86.472%
31236306643

push

github

web-flow
Stepper: stop a callback-heavy module call from exhausting the visible step budget (#426)

py-slang#427: play(make_sound(lambda x: math_sin(x * 1000), 1)) failed with
"Maximum number of steps exceeded". PR #424 made applyPythonCallable (a
module calling back into a Python function, py-slang#423) draw from the same
contractionBudget that caps how many steps are shown to the student (a few
hundred by default). sound's play samples its wave function at 44.1kHz, so
even a one-second sound needs tens of thousands of invisible callback
contractions - far more than any reasonable visible-step count would ever
allow, so the call failed almost immediately, long before doing any real
work.

applyPythonCallable's own reduceExpr loop is no longer bounded by any
step-count budget. Its budget existed only to stop a genuinely
non-terminating callback from hanging the run forever - but the evaluator
already runs inside its own Worker, and the frontend's existing "Stop"
control kills that Worker outright regardless of what it's doing internally,
the same way it already handles a non-terminating top-level program. A
second, separate budget sized for legitimate heavy numeric callback use was
considered and dropped once this was confirmed: it duplicated protection the
host already provides, while still leaving that Worker pegged with no live
progress for however long a large budget actually took to exhaust.

contractionBudget itself is unchanged - it still caps only the outer,
*visible* step sequence.


Claude-Session: https://claude.ai/code/session_011wRNgyJic6f3Ng4FPNeFsw

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

4821 of 6013 branches covered (80.18%)

Branch coverage included in aggregate %.

10769 of 12017 relevant lines covered (89.61%)

164306.82 hits per line

Jobs
ID Job ID Ran Files Coverage
1 31236306643.1 08 Aug 2026 03:21AM UTC 138
86.47
GitHub Action Run
Source Files on build 31236306643
  • Tree
  • List 138
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #31236306643
  • 665a849f on github
  • Prev Build on main (#31229644468)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc