Skip to main content

Students' solution checker

Project description

Manytask Checker

Test-workflow Publish-workflow codecov github-version pypi

Checker is a Python cli script to test students' solutions with built-in manytask integration.

  • production-like - setup for students with gitlab-ci, language-specific testing etc
  • customizable - testing pipeline configuration via yaml files
  • extensible - build-in plugins and ability to write custom plugins
    • manytask integration with plugin
    • gitlab merge-requests checks with plugin
    • etc
  • secure - sandbox execution of students' code
  • fast - lightweight script with testing parallelization

Requires Python 3.9+


How it works

The checker lib is a part of the manytask ecosystem and extends its functionality.
Please refer to the manytask documentation first to understand the drill.

tl;dr: Manytask is a web application to manage students', repos, grades and deadlines.
It stores grades in google sheet and deadlines on a web page.
It also automatically creates gitlab repositories for students as forks from Public Repo with tasks and solution templates.

So you have Public Repo and Students' Repositories and Web App to collect grades and deadlines.


For the checker this setup extends with Private Repo with tasks, tests and solutions and gitlab-ci to run tests in.

The checker in a nutshell is a CLI script providing the following functionality:

  • grade - to run in a student's repository to test solution against private and public tests and push scores.
  • validate - to run in a private (tutors') repository to validate tasks and deadlines integrity (will run in check automatically).
  • check - to run in a private (tutors') repository to test gold solutions against private and public tests.
  • export - to run in a private (tutors') repository to export tasks, templates and tests to the public repository.
flowchart LR
    private(Private Repo) -->|checker check| private
    private -->|checker export| public
    student([Student's Repo]) -->|checker grade| manytask
    subgraph gitlab
        public(Public Repo) -.->|fork| student
        public -->|updates| student
    end

The flow for tutors looks like:

  1. Have a manytask ready with empty public repo
  2. Create private repo with tasks, tests and solutions
  3. Configure checker with yaml files
  4. Make docker with your environment and checker installed
  5. Write ci file from students to run checker grade on each push/mr
  6. Setup private repo ci to run checker check on each push/mr
  7. Setup private repo ci to run checker export on each push/mr oor release or regularly or manually
  8. Profit!

The flow for students looks like:

  1. Register in manytask and get access to the public repo fork
  2. Clone this repo and start working on tasks
  3. Update from public repo regularly to get new tasks and tests
  4. Push your solution to gitlab where checker grade will run and push scores
  5. Profit!

It is a short description, please refer to the checker docs for more details.

Installation

The checker is available on pypi, so you can install it with pip

pip install manytask-checker

Or use pre-built docker image (you can base your image on it)

FROM manytask/checker:0.0.1-python3.12

Please check docker hub for available tags.

Contributing

Really appreciate any contributions!
For guidance on setting up a development environment see the development guide. For styleguide see organization contribution guide.

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

custom_manytask_checker-0.0.0.tar.gz (70.4 kB view details)

Uploaded Source

Built Distribution

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

custom_manytask_checker-0.0.0-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file custom_manytask_checker-0.0.0.tar.gz.

File metadata

  • Download URL: custom_manytask_checker-0.0.0.tar.gz
  • Upload date:
  • Size: 70.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.3

File hashes

Hashes for custom_manytask_checker-0.0.0.tar.gz
Algorithm Hash digest
SHA256 426ccd32bec14f5ef73d917c39724a73c88a24c1ec184975081de18e71604aba
MD5 f45370b609a132b1850e2da8c1f620bf
BLAKE2b-256 49cee863b8341c9dba39949078f3ed6a86744c0258cb584d6f6cc82967ea7bea

See more details on using hashes here.

File details

Details for the file custom_manytask_checker-0.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for custom_manytask_checker-0.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 70240b41b5e3d654df51bb51c79f79c20e2b04d4b0f3684df7503b9798d9ec32
MD5 23d239a1aa44aed52ecdee5f35ef5163
BLAKE2b-256 a767735b8433a6ea914bd935ac782d754fb35f7900127122e08eff66c76f59f6

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