Skip to main content

TentaMaker

This Python package provides a system for building exams (tentor) at Chalmers.

Based on a pool of questions and solutions, the system generates exams both in the form of PDF files for printing and PNG files for inclusion in online exam systems such as Inspera or Canvas.

Documentation

First, install the package by the following command:

$ pip install tentamaker

Then, create a directory where you want to create and store the generated exams and enter the directory, for example:

$ mkdir exams
$ cd exams

Then, run the following command to create the initial structure for your exams:

$ init-exam

This will populate the current directory with a number of directories where the output will be stored. This will also create a directory named config containing the configuration of the exam.

To create an exam, you first need to build a pool of questions. Edit the file config/pool.tex to build the pool of questions. Each question should be entered in LaTeX in the following format

% X.y.z
Formulation of question.
% Answer
Solution to question.
%

See the file config/pool.tex for examples of how to write questions and solutions.

Each question has a label in the format X.y.z where X is a capital letter (A, B, C, ...) denoting which part of the exam that the question belongs to. The number y denotes the number of the question within the part X and the number z denotes a variant of the question. Each question can have many variants.

When generating exams, the last variant of each question is selected, unless the randomization option is set (see below).

The next step is to edit the configuration file conf/conf.toml to set the title of the course, the course code, name of examiner etc.

Once this is done, you may proceed to generate the exam by running the following command:

$ make-exam yyyy-mm-yy

Here, yyyy-mm-yy is the date of the exam. This will generate PDF files in the directory pdf and snapshots of the questions in the directory png.

The command make-exam supports a number of optional command-line arguments described below.

Add --randomize to randomize the selection of questions. The randomization uses the seed specified in conf/conf.toml. If the seed is missing, the seed will use a "non-deterministic" seed from the operating system.

Add --verbose to see more detailed output. This is useful for example if the process hangs at "Building PDF file..." to see what might have gone wrong when running LaTeX (pdflatex).

Add --no-snapshots to skip generation of PNG snapshots. This is useful during the creation of an exam (not creating PNG files until the exam is final).

Authors (in order of appearance)

License

This project is licensed under the MIT license.

Copyright is held by the individual authors as listed at the top of each source file.

Metadata

Release files for tentamaker 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for tentamaker 0.1.1
File Interpreter ABI Platform
tentamaker-0.1.1-py3-none-any.whl Python 3 none any Details

Release files / tentamaker-0.1.1-py3-none-any.whl

Download URL tentamaker-0.1.1-py3-none-any.whl
Size 12.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3aed0b37108cb3a84be551224b3c0eced90f69318f04cd1edb2acc3d08a70dea
BLAKE2b-256 checksum
How to use checksums
655d953613ff6c95d35eafab5499bb8bf436825e24cdc557bcd6753995636c89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.11.4

Security for tentamaker 0.1.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page