Automated Gradescope submission tool for QUT students with a pretty CLI interface
Project description
QUT Gradescope Auto Submitter
One command to submit assignments to Gradescope. No more repetitive clicking.
gradescope submit # That's it.
Why This Exists
As a QUT student, I was tired of:
- Clicking through Gradescope 50+ times per assignment during rapid iteration
- Waiting for pages to load when testing different approaches
- Losing focus switching between code editor and browser
- Manual file uploads and form submissions
This tool automates the entire submission process so you can focus on coding, not clicking.
Quick Start
# Install
pip install qut-gradescope-autosubmitter && playwright install chromium
# One-time setup
gradescope init # Create config file
gradescope credentials # Save QUT login
# Daily usage
gradescope submit # Submit current assignment
That's it. No more manual submissions.
How It Works
- Authenticates with QUT SSO - Handles university login automatically
- Navigates to Gradescope - Finds your course and assignment using smart matching
- Bundles your files - Creates submission zip (respects .gitignore)
- Submits automatically - Handles uploads and form submission
- Shows your grade - Displays results when available
Everything runs locally using browser automation. No data leaves your machine except for the normal submission to Gradescope.
Key Features
Beautiful Terminal Interface
Modern CLI built with Rich - panels, progress bars, and custom themes that make terminal work enjoyable.
Flexible Authentication
- Session persistence - Stay logged in between submissions (faster)
- Multiple credential options - Environment variables, .env files, or interactive prompts
- Manual login mode - Browser-based authentication for maximum security
Smart Automation
- Fuzzy matching - Finds courses/assignments even with partial names
- Automatic file detection - Bundles relevant files intelligently
- Git integration - Optional hooks for submit-on-commit workflows
- CI/CD ready - GitHub Actions support for automated submissions
Developer Experience
- Cross-platform - Windows, macOS, Linux support
- Rich help system - Beautiful documentation and error messages
- System diagnostics - Built-in troubleshooting tools
- Customizable UI - Adjust colors and behavior to your preference
Installation
# Standard installation (PyPI)
pip install qut-gradescope-autosubmitter && playwright install chromium
Basic Configuration
Create gradescope.yml in your project:
course: cab201 # Your course code
assignment: assignment1 # Assignment name (fuzzy matched)
zip_name: submission.zip
bundle: ['*'] # Files to include (* = all, respects .gitignore)
# Optional settings
headless: true # Run browser in background
notify_when_graded: true
Commands
| Command | Purpose |
|---|---|
gradescope submit |
Submit current assignment |
gradescope init |
Create config file with guided setup |
gradescope credentials |
Manage QUT login credentials |
gradescope doctor |
Check system requirements and troubleshoot |
gradescope --help |
Show all available commands |
Automation Options
Git Hooks (submit on every commit):
gradescope hooks # Interactive setup
GitHub Actions (cloud automation): See GitHub Actions Setup Guide for complete configuration.
Documentation
- Command Reference - Complete command guide with examples
- Credential Management - Security options and setup
- Automation Setup - Git hooks and CI/CD integration
Important Notes
Current Status:
- PyPI Release - Available on PyPI
- Stable Features - Core submission functionality is reliable and tested
Usage Responsibility:
- This tool is provided "as-is" for legitimate academic use
- Users are responsible for complying with QUT academic integrity policies
- Avoid excessive submissions that may trigger rate limiting on QUT SSO
- Use session persistence (default) to minimize login requests
Limitations:
- Requires QUT SSO access and Gradescope course enrollment
- May break if QUT or Gradescope significantly change their interfaces
- Some specialized assignment types may not be supported
Requirements
- Python 3.8+
- QUT student account with Gradescope access
- Internet connection for initial setup and submissions
Troubleshooting
Common issues:
- Installation errors: Try the separate dependency installation method above
- Login failures: Use
gradescope credentialsto reconfigure - Assignment not found: Check course code and assignment name in config
- Browser issues: Run
gradescope doctorfor system diagnostics
For detailed troubleshooting, see the Command Reference or run gradescope --help.
Made for QUT students who prefer automation over repetition.
This tool was built using modern development practices to solve a real student workflow problem.
Project details
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 qut_gradescope_autosubmitter-1.0.1.tar.gz.
File metadata
- Download URL: qut_gradescope_autosubmitter-1.0.1.tar.gz
- Upload date:
- Size: 31.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 |
e3edc7ed7857a2ef1688b805301c80301d9598f5f388e905b92e46a4e256c183
|
|
| MD5 |
23ab4e5bb9f4c7d5f7d5f3c98b862c31
|
|
| BLAKE2b-256 |
3b5f788bac45e0a59853a7568a8fd9c69ad0298627c4144a7d6f731c6359eb49
|
Provenance
The following attestation bundles were made for qut_gradescope_autosubmitter-1.0.1.tar.gz:
Publisher:
python-publish.yml on danieltsam/qut-gradescope-autosubmitter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qut_gradescope_autosubmitter-1.0.1.tar.gz -
Subject digest:
e3edc7ed7857a2ef1688b805301c80301d9598f5f388e905b92e46a4e256c183 - Sigstore transparency entry: 484309471
- Sigstore integration time:
-
Permalink:
danieltsam/qut-gradescope-autosubmitter@3f5b5a9b11a6621d311497c878235a2640152b3f -
Branch / Tag:
refs/tags/prod - Owner: https://github.com/danieltsam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@3f5b5a9b11a6621d311497c878235a2640152b3f -
Trigger Event:
release
-
Statement type:
File details
Details for the file qut_gradescope_autosubmitter-1.0.1-py3-none-any.whl.
File metadata
- Download URL: qut_gradescope_autosubmitter-1.0.1-py3-none-any.whl
- Upload date:
- Size: 32.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 |
3ff389bbedfddb2aee00187055a9027cd9fd004e287fb3386208a04d7e78eaf3
|
|
| MD5 |
a64f216763bcb77a09a88eb42bd14ee3
|
|
| BLAKE2b-256 |
ccb9ffefb048f914fec82f8105504819c1efb48c74a4cb16ce0d8e34b71c868e
|
Provenance
The following attestation bundles were made for qut_gradescope_autosubmitter-1.0.1-py3-none-any.whl:
Publisher:
python-publish.yml on danieltsam/qut-gradescope-autosubmitter
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
qut_gradescope_autosubmitter-1.0.1-py3-none-any.whl -
Subject digest:
3ff389bbedfddb2aee00187055a9027cd9fd004e287fb3386208a04d7e78eaf3 - Sigstore transparency entry: 484309486
- Sigstore integration time:
-
Permalink:
danieltsam/qut-gradescope-autosubmitter@3f5b5a9b11a6621d311497c878235a2640152b3f -
Branch / Tag:
refs/tags/prod - Owner: https://github.com/danieltsam
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@3f5b5a9b11a6621d311497c878235a2640152b3f -
Trigger Event:
release
-
Statement type: