A Gradescope autograder with a focus on simplicity, extensibility, and correctness.
This package is currently under active development! It's probably broken. I'm working as fast as I can to un-break it and add features. Once I've verified that I can run an autograder, I will publish it on PyPI.
BSAG is based on sequential execution of "steps". A step defines and accepts a configuration, performs some computation, and possibly modifies stored data. BSAG uses Pydantic for config parsing and typing, and parses YAML for ease of writing.
A more detailed description can be found in ARCHITECTURE.md.
BSAG is primarily meant to be used as a Gradescope autograder, on any system using at least Python 3.10.
BSAG provides a small suite of default steps, and can be run with simply:
python -m bsag --config <path_to_config>
To provide your own custom step definitions, you can define your own entry point and provide your modules at runtime:
import bsag
bsag.main([MyCustomStep])