canvas-sak — the canvas swiss army knife
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
- getting started — install to first real command, about ten minutes
- how-to guides — due dates, assignment groups, reusing a course, quiz settings, ignore patterns
- explanation — why almost everything is a dry run, and how courses are found (read this one when a course you're definitely teaching "doesn't exist")
- command reference — all 32 commands and their options
contributing
contributions are welcome — see CONTRIBUTING.md.
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
- discussions — questions, ideas, and show-and-tell
- using this to run a real course? please tell us. the issue tracker only ever hears from people something broke for, so without this we have no idea whether anyone is out there.
- report a bug — please redact student names and ids
license
released into the public domain under the Unlicense.
Metadata
Release files for canvas-sak 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| canvas_sak-1.4.0.tar.gz | 75.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| canvas_sak-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 145.4 kB
Release files / canvas_sak-1.4.0.tar.gz
| Download URL | canvas_sak-1.4.0.tar.gz |
|---|---|
| Size | 75.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
410b0305cc932f2d554970486bffa745f78cfa84ee20543fa310796bbe938196
|
|
BLAKE2b-256 checksum How to use checksums |
6ad58473889e3ad3b51d874d399d9e638673325b77b43a86f1401e0ded370886
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / canvas_sak-1.4.0-py3-none-any.whl
| Download URL | canvas_sak-1.4.0-py3-none-any.whl |
|---|---|
| Size | 69.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7aa5c1dbd1658b4c75040d5cebfdcc3a6c47218687901c6ce6773d8fb26b4921
|
|
BLAKE2b-256 checksum How to use checksums |
075af2fd91f4b7318d1e9fb383635a88b0aa04b701ed09b04d2f33c773a9f257
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|