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

source-academy / py-slang / 31165450514
86%

Build:
DEFAULT BRANCH: main
Ran 07 Aug 2026 09:39AM 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

07 Aug 2026 09:20AM UTC coverage: 86.402% (+0.2%) from 86.219%
31165450514

push

github

web-flow
Stepper: stop sending a fabricated REPL result after a run (#422)

py-slang#421: running a program through the Stepper tab left a stale
string (e.g. "3" for `1 + 2`) in the host's REPL even after switching
to a different evaluator without re-running anything. Python programs
run in exec mode -- a script never produces a value the way a REPL
expression does, and every other evaluator here (Py2JsEvaluator,
PyodideEvaluator) already reports sendResult(undefined) for exactly
that reason.

PyStepperEvaluator was the one exception: runChunk separately
re-derived and sent the text of the program's *last expression
statement* via a second evaluatePython pass, mirroring js-slang's
SourceStepperEvaluator -- appropriate there, since Source is
expression-oriented and a program's last expression genuinely is "the
result", but wrong for Python's exec model. The Stepper tab's own step
sequence already shows the program's final state; there was nothing
this second pass needed to report to the REPL in the first place.

runChunk now sends undefined, matching every other evaluator, and
never re-runs the program a second time. This also removes the
InputRecorder machinery entirely: it existed solely to keep an
input()'s answer consistent between sendSteps and the now-deleted
second evaluatePython pass, so with only one pass left, requestInput
wires directly to the real host round-trip.

Also adds PyStepperEvaluator.test.ts, which didn't exist before --
confirmed each new test genuinely reproduces the reported leak with
the fix reverted.


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

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

4810 of 6007 branches covered (80.07%)

Branch coverage included in aggregate %.

1 of 2 new or added lines in 1 file covered. (50.0%)

10738 of 11988 relevant lines covered (89.57%)

164649.16 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
78.57
36.32% src/conductor/PyStepperEvaluator.ts
Jobs
ID Job ID Ran Files Coverage
1 31165450514.1 07 Aug 2026 09:39AM UTC 138
86.4
GitHub Action Run
Source Files on build 31165450514
  • 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 #31165450514
  • d1ada01e on github
  • Prev Build on main (#31163103731)
  • Next 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