View on GitHub

Canvas Tool

Using python to make Canvas better!

canvas-sak — the canvas swiss army knife

CI PyPI License

do the repetitive parts of teaching in canvas from your terminal — 32 commands for the things the web ui makes you click thirty times. every command that changes your course shows you what it would do first, and stops.

# reschedule an entire course for the new semester
canvas-sak list-due-dates "CS 146" > dates.txt   # dump every date
$EDITOR dates.txt                                # fix the year, shift a week
canvas-sak set-due-dates "CS 146" dates.txt      # preview — nothing is written yet
canvas-sak set-due-dates "CS 146" dates.txt --no-dryrun

also: pull a whole course down as markdown and push it into next semester’s shell, run submissions through stanford moss, message every student, bulk-set letter grades, and collect the information you’ll want when someone asks for a recommendation letter two years from now.

▶️ see what every command does, without installing anything — generated from the tool itself


install

pip install canvas-sak

or, to keep it out of your main python environment:

pipx install canvas-sak      # or: uv tool install canvas-sak

needs python 3.10+. then run canvas-sak help-me-setup, which walks you through creating a canvas access token and tells you exactly where to put it.

to upgrade later: pip install --upgrade canvas-sak.

every version ships to pypi — that’s the only place to get it, and this repo publishes no downloads of its own. what changed in each version is in CHANGELOG.md.

documentation

contributing

contributions are welcome — see CONTRIBUTING.md.

Open in GitHub Codespaces

that gives you a working dev environment with nothing to install. the test suite mocks the canvas api, so you can develop without a canvas account or a token.

documentation is the biggest gap right now and is a genuinely valuable place to start — see the good first issues.

community

license

released into the public domain under the Unlicense.