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.7.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.7.0.tar.gz | 80.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| canvas_sak-1.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 152.0 kB
Release files / canvas_sak-1.7.0.tar.gz
| Download URL | canvas_sak-1.7.0.tar.gz |
|---|---|
| Size | 80.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1dcdc4e8d2535376ad1df5afea0e90d6b53d0bdb8ba152e9b0662b831d5fad19
|
|
BLAKE2b-256 checksum How to use checksums |
4266f36ee8c9b6296a474d4fb8a5549429b3a76470ac2cb44d3fcd2eee07060a
|
| 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.7.0-py3-none-any.whl
| Download URL | canvas_sak-1.7.0-py3-none-any.whl |
|---|---|
| Size | 71.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bd378dafd48de629a1c40c2ddc3b93d70e686b04fe5a1b4b548646dea6d401f6
|
|
BLAKE2b-256 checksum How to use checksums |
7b7a86ee450106ebe3f817c0be321e873a2d520131a79505915d60310f6bdf3f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|