Semi-automated grading for Marimo notebooks
Project description
mograder
Semi-automated grading for Marimo notebooks.
How it works: Instructors author source notebooks with solution blocks and automated checks. mograder generate strips solutions to create release versions. Students complete the notebooks and get instant formative feedback from check() calls. mograder autograde executes submissions in sandboxed subprocesses, parses results, and stores grades in an SQLite gradebook. Markers review and add manual marks via the formgrader dashboard. mograder feedback exports annotated HTML for students.
Quick start
pip install mograder # or: uv add mograder
mograder generate hw1 # strip solutions → release/
mograder autograde hw1 # grade submissions → autograded/
mograder feedback hw1 # export HTML → feedback/
Live demo
Try the student dashboard — a WASM app running entirely in your browser. See also the formgrader with pre-populated demo data and a demo workshop with encrypted solutions.
Documentation
| Full Documentation | Overview, installation, and all guides |
| Instructor Guide | Step-by-step setup and grading walkthrough |
| Student Guide | Setup instructions to share with students |
| Usage Reference | All commands: generate, autograde, feedback, moodle, ... |
| API Reference | check(), Grader, CLI, and module docs |
| Configuration | Full mograder.toml reference |
| Security | Threat model and sandboxing options |
For students
Easiest: download the desktop app — no terminal needed.
Or via the command line:
curl -LsSf https://astral.sh/uv/install.sh | sh
uvx mograder student https://mograder-demo.jrkermode.uk/mograder.toml
For real courses, your instructor will provide the config URL. Or open in GitHub Codespaces — one click, no install needed.
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mograder-0.2.3.tar.gz.
File metadata
- Download URL: mograder-0.2.3.tar.gz
- Upload date:
- Size: 520.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
719f6fc6d39ed3f598aedfcc4f61c1682693751a7e3c33264575dc51c59fc460
|
|
| MD5 |
1f85d4ca7848b40337bae921f1410956
|
|
| BLAKE2b-256 |
38302675ba53cd8939dbdf78848d30c2c91de60eeb5fc3323ebbbe10981a5fa2
|
Provenance
The following attestation bundles were made for mograder-0.2.3.tar.gz:
Publisher:
release.yml on jameskermode/mograder
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mograder-0.2.3.tar.gz -
Subject digest:
719f6fc6d39ed3f598aedfcc4f61c1682693751a7e3c33264575dc51c59fc460 - Sigstore transparency entry: 1172222374
- Sigstore integration time:
-
Permalink:
jameskermode/mograder@49c67eb4b712115c701a7929d9025aa6537a5907 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/jameskermode
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49c67eb4b712115c701a7929d9025aa6537a5907 -
Trigger Event:
push
-
Statement type:
File details
Details for the file mograder-0.2.3-py3-none-any.whl.
File metadata
- Download URL: mograder-0.2.3-py3-none-any.whl
- Upload date:
- Size: 173.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
35a1e2aa47101ec831eaa4fdc6708119b26d4437af5f0849d8ef63d0c7c3bc4a
|
|
| MD5 |
dbd23b20c3ea6cee04e6bdd6d336cb4d
|
|
| BLAKE2b-256 |
bb4d660e0c286b565c05acb31ea93fc45e5fa5ed1f37c0ce42839a0d1165ab1c
|
Provenance
The following attestation bundles were made for mograder-0.2.3-py3-none-any.whl:
Publisher:
release.yml on jameskermode/mograder
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mograder-0.2.3-py3-none-any.whl -
Subject digest:
35a1e2aa47101ec831eaa4fdc6708119b26d4437af5f0849d8ef63d0c7c3bc4a - Sigstore transparency entry: 1172222384
- Sigstore integration time:
-
Permalink:
jameskermode/mograder@49c67eb4b712115c701a7929d9025aa6537a5907 -
Branch / Tag:
refs/tags/v0.2.3 - Owner: https://github.com/jameskermode
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@49c67eb4b712115c701a7929d9025aa6537a5907 -
Trigger Event:
push
-
Statement type: