100%

PythonTA: Index

From Open Source Contributions
PythonTA
Page metadata
First created Mar 22, 2026
Last edited May 26, 2026

PythonTA is the static analysis tool that runs over every Python assignment submitted by UofT introductory CS students. It catches forbidden language features, enforces style, flags semantic mistakes, and renders all of it as an HTML report that the student opens after submission. Thousands of students hit it every week. It’s built on top of Pylint, extended with thirty-plus custom checkers, an HTML reporter, a control-flow-graph visualizer, and AccumulationTable — a pedagogical tool that traces how variables change through loop iterations.

I worked on it from May through August 2025, in parallel with MarkUs. The PythonTA work was the on-ramp: it taught me AST manipulation and the discipline of writing tests for static-analysis code before I’d ever touched a real Rails codebase.

Index