Skip to main content

Management tools for gitlab-based assignment workflows

Project description

Travo: Distributed GitLab ClassRoom

PyPI version conda version SWH Ruff

coverage report

Travo ([t;ʁa'vo]) is a lightweight open source Python toolkit that turns your favorite GitLab forge into a flexible management solution for computer assignments, à la GitHub classroom. It does so by automating steps in the assignment workflow through Git and GitLab's REST API. It takes its name from the practice sessions linked to a course, called in French Travaux Pratiques.

Rationale: Teaching computer science or computational courses is all about collaboration on code. It is thus unsurprising that, with a pinch of salt, software forges like GitLab can provide helpful infrastructure to support and enhance that collaboration.

Features

  • Easy to use for students: simple workflow with two automated operations: fetch and submit, available from the terminal or a widget-based dashboard in Jupyter.
  • Flexible and battlefield tested on small to large courses (300+ students at lower undergraduate level) with optional support for multiple assignments, student groups, instructors, and sessions, as well as (basic) team work.
  • Distributed and personal-data friendly: Travo can be used with any instance of GitLab, including a self-hosted one on premises by your institution. No other infrastructure is needed. Students and instructors can use any work environment (personal laptop, computer labs, JupyterHub, Docker images...) provided that Travo is installed.
  • Command Line Interface (CLI) for most common usages.
  • Graphical User Interface within Jupyter with student and instructor dashboards.
  • Automatic and manual grading of Jupyter assignments through nbgrader integration.
  • Empowering: Travo manages assignments according to standard Git and GitLab software development workflows, and opens the door for your students and instructors to discover at their pace version control, forges, collaborative development and devop practices.
  • Lightweight, modular and extensible: you use whichever part of Travo is convenient for you and ignore, extend or replace the rest. For example, instructors can setup tailored CLI Python scripts for their courses, or bespoke automatic grading using Continuous Integration.
  • Internationalized: French, English (in progress); more languages can be added.

Documentation

For more information check the Travo documentation and tutorials.

Screenshots

Fetching and submitting assignments from the terminal:

./course.py fetch Assignment1
./course.py submit Assignment1

The student dashboard for Jupyter users :

Student dashboard

Overview of student submissions on GitLab :

student submissions

Requirements and installation

Travo requires Python >= 3.10. It can be installed from pypi with:

pip install travo

or from conda forge with:

conda install -c conda-forge travo

To benefit from the Jupyter integration (dashboards), please use instead:

pip install 'travo[jupyter]'

or

conda install -c conda-forge travo-jupyter

The development version can be installed with:

pip install git+https://gitlab.com/travo-cr/travo.git

For more details check the installation instructions.

Authors

The list of the authors and contributors are available in the AUTHORS and the CONTRIBUTORS files.

Contributing

Feedback, e.g. by posting issues, and contributions are most welcome!

Brief history and status

Travo started in Spring 2020 at UQAM as a shell script. See the Legacy User Interface. The user interface was completely refactored in Summer and Fall 2020. Travo was then reimplemented in Python in Winter 2021 and continuously expanded since. Travo is used in production in a dozen large classes at Université Paris-Saclay and UQAM, and many other smaller classes.

  • Documentation: The tutorials could use some more love. On the other hand we would be very happy to help you get started as this is the most efficient approach to explore new use cases and improve the documentation. Get in touch!
  • Better messages: less verbosity by default; provide tips on what to do next.
  • Internationalization: Basic support for internationalization has been set up, and many, but not all, messages are available both in French and English. The next steps are to scan the Travo library to use internationalization in all messages, and to translate the messages. Contributions welcome!
  • Support for collaborative work: in progress, with experimental support for modeling teams of students working collaboratively on an assignment, with basic tooling for students. Tooling for instructors remains to be implemented.
  • Forge agnosticism: Currently, only GitLab is supported, but the code was designed to be modular to make it easy to support other forges (e.g. GitHub).
  • Automatic grading: Support for a wider range of use cases beyond Jupyter assignments; tighter integration with nbgrader for Jupyter assignments.

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

travo-2.0.0.tar.gz (1.2 MB view details)

Uploaded Source

Built Distribution

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

travo-2.0.0-py3-none-any.whl (107.4 kB view details)

Uploaded Python 3

File details

Details for the file travo-2.0.0.tar.gz.

File metadata

  • Download URL: travo-2.0.0.tar.gz
  • Upload date:
  • Size: 1.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: Hatch/1.16.2 cpython/3.13.11 HTTPX/0.28.1

File hashes

Hashes for travo-2.0.0.tar.gz
Algorithm Hash digest
SHA256 9e182df35b672333b39d359a880c1fd97626576036f0c67eca34f732f9aee650
MD5 b86b17a9e34a43818a26b0e92405a7ec
BLAKE2b-256 37852a5c0ce617d8665a5fc19e4524c61fb51006d284bd56fe2822947f15d138

See more details on using hashes here.

File details

Details for the file travo-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: travo-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 107.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: Hatch/1.16.2 cpython/3.13.11 HTTPX/0.28.1

File hashes

Hashes for travo-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fe6a78bdc4003cf7705c981ca66bf59bac460d256de80187e97d4b4d308ad7f4
MD5 a5ee091c1348e25efee65719758455ad
BLAKE2b-256 4b3ac941f5969c02193298afcb38a47fc3c21b6dd3a88f12676762c74859b583

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