Rudaux helps you programmatically administer a course by integrating:
- Canvas - a learning management system
- JupyterHub - a multi-user Jupyter notebook Server
- nbgrader - a Jupyter notebook auto-grader
- nbgitpuller - a JupyterHub extension to pull Jupyter notebooks from git repositories
Rudaux was designed to simplify course management generally, but there are a few operations in particular that would be nearly impossible without rudaux.
- Syncing students and assignments between Canvas and nbgrader.
- Creating assignments in Canvas with JupyterHub/nbgitpuller links.
- Scheduled automated grading of Jupyter notebooks with nbgrader.
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.
"Jupiter Seen from Io" by Lucien RudauxFor a full usage guide, please see the rudaux documentation, or my blog posts on designing rudaux and 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: rudaux currently requires a fork of nbgrader to work properly (more information):
pip install git+git://github.com/samhinshaw/nbgrader.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.
- Log in to the server you will be executing rudaux commands on.
- Clone your instructors repository containing your config file and master (source) assignments.
- Initialize rudaux.
rudaux {init, grade, submit}
See API.
from rudaux import Course, Assignment
You can test out rudaux on your own computer without the need to set up any servers! To get started, you will need a few things.
- Access to a Canvas test environment.
- A test instructors' repository with your source assignments and your config file.
- A test students' repository.
- Docker,
rudaux
andnbgrader
installed. - Your Docker grading image installed from DockerHub.
- A token from your Canvas test environment.
Make sure you change the options in your config file to match your test environment. Some important options include:
c.Canvas.canvas_url
= url of your Canvas test environmentc.JupyterHub.storage_path
= location on your computer where student submissions would be collected fromc.GitHub.ins_repo_url
= test instructors repoc.GitHub.stu_repo_url
= test students repoc.Canvas.token_name
= name of the environment variable storing your Canvas token
Then, go for it! One important thing to note is that if you run .schedule_grading()
, which is part of rudaux init
, rudaux will schedule jobs to your crontab. You should be aware of this, and may want to delete them manually upon conclusion of your testing.
To develop rudaux, clone this repository. Then, you can install it locally and begin testing it!
-
Update the version number in setup.py.
-
Then, run the following commands.
python setup.py sdist upload python setup.py bdist_wheel upload
-
When prompted for password, enter your PyPI password.