Skip to content

ian-flores/rudaux

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rudaux

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 Rudaux

"Jupiter Seen from Io" by Lucien Rudaux

Documentation

For a full usage guide, please see the rudaux documentation, or my blog posts on designing rudaux and using rudaux.

Installation

pip install rudaux

Setup

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:https://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.

  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.

Usage

Command-Line Interface

See command-line interface.

rudaux {init, grade, submit}

Python API

See API.

from rudaux import Course, Assignment

Testing with Rudaux

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.

  1. Access to a Canvas test environment.
  2. A test instructors' repository with your source assignments and your config file.
  3. A test students' repository.
  4. Docker, rudaux and nbgrader installed.
  5. Your Docker grading image installed from DockerHub.
  6. 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 environment
  • c.JupyterHub.storage_path = location on your computer where student submissions would be collected from
  • c.GitHub.ins_repo_url = test instructors repo
  • c.GitHub.stu_repo_url = test students repo
  • c.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.

Contributing

To develop rudaux, clone this repository. Then, you can install it locally and begin testing it!

Deployment to PyPI

  • 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.

About

Canvas Course Management with JupyterHub & nbgrader

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages