Skip to main content

Generates variants of exam questions using texsurgery, keeps a question database, exports to pdf and moodle

Project description

pyexams

Generates variants of exam questions using texsurgery, keeps a question database, exports to pdf and moodle.

Much like R exams, but with the following (main) differences:

  1. R-exams requires use of R for both creating exam variants and managing R-exams itself, while pyexams allows any language for exam creation and is called from a command which can be incorporated into your favorite LaTeX editor.
  2. R-exams keeps each question in a separate file, then use a simple R script to compose the whole exam, while pyexams use a single LaTeX file for the whole exam.
  3. Both R-exams and pyexams keep a record of past exam questions, but pyexams also keeps a database that can be queried in order to find, for instance, all questions with the tag derivative that appeared in exams at least two years ago. The question code is also saved in plain text and managed in a git repository, which simplifies the management of a shared question bank, whether group-private or totally open.
  4. Last but not least, R-exams is a mature and feature rich project, while pyexams is a very young project that still has to deliver.

Other important design decisions involved in pyexams:

  • The syntax for the questions is exactly that of auto-multiple-choice
  • We will use amc2moodle (or a custom version of it) to generate the moodle question bank.
  • pyexams strives to feel as close to LaTeX as possible to its users, which paradoxically is better done through texsurgery than through a LaTeX package.

Warning: Proof of concept

This is still a very early version, published to share some points with our colleagues, but that still does not deliver the expected results. Please do not use yet it for your real exams.

The pyexams -moodle version seems to be working fine, the pdf version is definitely not usable yet

Installation

python3 -m pip install pyexams

Usage

cd examples
# generates a pdf for the first student in the list (useful for testing)
pyexams amc2moodle.tex
# generates one pdf for each first student in the list (runs in parallel)
pyexams amc2moodle.tex -all
# generates a moodle question bank
pyexams amc2moodle.tex -moodle  
# generates a moodle question bank with exactly 5 variants of each question
pyexams amc2moodle.tex -moodle -n 5

Talk at ENSEMAT II

The motivation behind this project and its design decision was presented (in spanish) at a talk at ENSEMAT II

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

pyexams-0.1.0.tar.gz (7.6 kB view details)

Uploaded Source

Built Distribution

pyexams-0.1.0-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file pyexams-0.1.0.tar.gz.

File metadata

  • Download URL: pyexams-0.1.0.tar.gz
  • Upload date:
  • Size: 7.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

File hashes

Hashes for pyexams-0.1.0.tar.gz
Algorithm Hash digest
SHA256 684b3ad83fbededb318217261dbf6681c497010b38b39068f31336ed1e25b4a8
MD5 539e4dd5c7fb628bd050d2bd1dcc1edd
BLAKE2b-256 4731683e6a24061e72f358d39079a8682487f7adb4f9655152179ec0e0ad9abf

See more details on using hashes here.

File details

Details for the file pyexams-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: pyexams-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.22.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.53.0 CPython/3.8.5

File hashes

Hashes for pyexams-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e5d0a4c6853858871f8b831a9ae6c37116a0a7243dc8f0edd2fc598fcf6d1403
MD5 d2654ff3df2d08e0c62a6ce6d5133dc9
BLAKE2b-256 4b1332024386c7afbca34187d738d9c90ffe6b207cf028b1d122da019268db04

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page