Skip to main content

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.

TestPyPI Python 3.8+ License: MIT


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 -i https://test.pypi.org/simple/ 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

  1. Authenticates with QUT SSO - Handles university login automatically
  2. Navigates to Gradescope - Finds your course and assignment using smart matching
  3. Bundles your files - Creates submission zip (respects .gitignore)
  4. Submits automatically - Handles uploads and form submission
  5. 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
pip install -i https://test.pypi.org/simple/ qut-gradescope-autosubmitter
playwright install chromium

Having issues? Try installing dependencies separately:

pip install playwright pyyaml python-dotenv click rich
pip install -i https://test.pypi.org/simple/ 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.md for complete setup guide.

Documentation

Important Notes

Current Status:

  • ⚠️ TestPyPI Release - Currently in testing phase. Full PyPI release coming soon.
  • 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 credentials to reconfigure
  • Assignment not found: Check course code and assignment name in config
  • Browser issues: Run gradescope doctor for system diagnostics

For detailed troubleshooting, see the documentation links above or run gradescope --help.


Made with ❤️ for QUT students who prefer automation over repetition.

This tool was built using Cursor 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

qut_gradescope_autosubmitter-1.0.0.tar.gz (32.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qut_gradescope_autosubmitter-1.0.0-py3-none-any.whl (32.5 kB view details)

Uploaded Python 3

File details

Details for the file qut_gradescope_autosubmitter-1.0.0.tar.gz.

File metadata

File hashes

Hashes for qut_gradescope_autosubmitter-1.0.0.tar.gz
Algorithm Hash digest
SHA256 d9676d08e50ac75edad142e164a5fbd17d7c32f8da5c50455d69018596e49f68
MD5 7cbc30ee1fe27c7bac2629c0c382c99d
BLAKE2b-256 9a75eb71ca40ad5cdf52fdf2a529b134632f69c6943f512528ebb02cc40b89d2

See more details on using hashes here.

File details

Details for the file qut_gradescope_autosubmitter-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for qut_gradescope_autosubmitter-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fa834f6a91a2d00aa00679be043eb9d2eb553c28cbd790f5e69800a6ba5f47f5
MD5 70ec4cb64c53ba4a6c7e9437ef0cf673
BLAKE2b-256 87c6a6434677583c430f66d807cf0e3f14791f88e8b6e3901686be0cddf45166

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page