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

source-academy / py-slang / 40197335806
88%

Build:
DEFAULT BRANCH: main
Ran 25 Oct 2026 01:40PM UTC
Jobs 1
Files 182
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

25 Oct 2026 01:22PM UTC coverage: 87.976% (-0.02%) from 87.993%
40197335806

push

github

web-flow
parse: every x = e is an assignment, no block, empty program is an empty sequence; parse/tokenize for CPython (#626)

* parse: every x = e is an assignment, no block; empty program is an empty sequence

The parse tree now matches js-slang's representation more closely and
no longer depends on scope analysis in the parser:

- Assignments to a name are always 'assignment'. The old 'declaration'
  tag was decided with one program-wide set of names, so an assignment to
  a local variable that shares its name with a global was misreported.
- 'block' is no longer produced; function bodies are plain sequences
  (a single statement is still returned without a sequence).
- An empty program or body parses to an empty sequence instead of None
  (wasm engine: no longer a sequence holding None).

The estepper mce.py fixture and the tests are updated accordingly.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* sicp.mce: parse and tokenize for CPython, checked against the same tables

parse() builds the same trees as py-slang's parse (assignment only, no
block, a lone statement stands for its sequence, the empty program is an
empty sequence, lambda bodies are wrapped in return_statement), from
CPython's ast module. tokenize() matches py-slang's token stream, built on
the tokenize module.

The parser tests are now run through CPython as well, so the two
implementations stay in step; trees are compared without their layout,
since py-slang pretty-prints long lists over several lines.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* Spec: parse trees have no block or declaration; format mce.py with Black

The parse-tree description in python_interpreter.tex now matches parse():
every name = expression is an assignment, and the body of a def, if,
while or for is a sequence (a single statement stands for itself).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* parse: comparisons are binary_operator_combination, lists are list_expre... (continued)

7209 of 8641 branches covered (83.43%)

Branch coverage included in aggregate %.

58 of 63 new or added lines in 4 files covered. (92.06%)

14698 of 16260 relevant lines covered (90.39%)

315643.94 hits per line

Uncovered Changes

Lines Coverage ∆ File
5
90.5
-3.71% src/stdlib/parser.ts
Jobs
ID Job ID Ran Files Coverage
1 40197335806.1 25 Oct 2026 01:40PM UTC 182
87.98
GitHub Action Run
Source Files on build 40197335806
  • Tree
  • List 182
  • Changed 6
  • Source Changed 5
  • Coverage Changed 5
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #40197335806
  • 1a0250b5 on github
  • Prev Build on main (#40172809934)
  • Next Build on main (#40198633300)
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