Welcome to the documentation for rudaux!

Rudaux helps you programmatically administer a course by integrating:

Rudaux was designed to simplify course management generally, but there are a few operations in particular that would be nearly impossible without rudaux.

Rudaux is named after the French artist and astronomer Lucien Rudaux, a pioneer in space artistry and one of the first artists to paint Jupiter.

For information on the motivation behind and development of rudaux, please read Designing Rudaux.
For information on how to use Rudaux to integrate Canvas and JupyterHub, please read Using Rudaux.


pip install rudaux


Before setting up rudaux, it is important to have the proper infrastructure in place. Please see the DSCI 100 infrastructure repository for our reproducible infrastructure provisioning workflow.

Note: The infrastructure repository is still under development, and may undergo significant changes before the course's release in January 2019.

Note: rudaux currently requires a fork of nbgrader to work properly (more information):

pip install git+git://

Once your servers are set up and your dependencies installed, rudaux needs a configuration file to operate. Please read the configuration documentation for more information and a sample config file.

  1. Log in to the server you will be executing rudaux commands on.
  2. Clone your instructors repository containing your config file and master (source) assignments.
  3. Initialize rudaux.


Command-Line Interface

See command-line interface.

rudaux {init, grade, submit}

Python API

See API.

from rudaux import Course, Assignment


  1. Clone this repository.
  2. Install MkDocs.
  3. In this repo's directory, start the MkDocs development server: mkdocs serve.
  4. Edit source docs in docs/, and see the dev server hot reload your changes!
  5. Build and deploy to GitHub Pages with mkdocs gh-deploy.