Skip to main content

Some helpers to help writing correction bots, use by hackinscience.org.

Project description

Correction Helper

Project

This is just a set of tools to help writing correction bots in Python for Python.

It is used for hackinscience, but could be used elsewhere.

Security considerations

Running student code is probably really unsafe, unless you trust your students not to drop you a backdoor.

This projet does not help with security in any ways, maybe take a look at firejail if you have trust issues (Yes you can use correction-helper inside firejail).

Usage

To install it, run: pip install correction-helper.

In your checking code, you can use it like this:

The student_code decorator

This decorator is aimed to catch most problems that could happen in student code, use it simply as:

with student_code():
    their_function()

Find a more complete example in the examples/ directory.

Allowed parameters for student_code, and their default values

exception_prefix="I got an exception:"

Printed right before the exception, if any.

It's allowed to give a list of strings, in which case they'll be separated by "\n\n", useful to render markdown paragraphs.

print_prefix="Your code printed:"

Message to display before the student prints (in case print_allowed is False or None).

It's allowed to give a list of strings, in which case they'll be separated by "\n\n", useful to render markdown paragraphs.

too_slow_message="Your program looks too slow, looks like an infinite loop."

Message to display in case the code runs slower than the given timeout (defaults to 1s).

It's allowed to give a list of strings, in which case they'll be separated by "\n\n", useful to render markdown paragraphs.

prefix=()

A prefix for print_prefix, exception_prefix, and too_slow_message=, usefull to deduplicate strings, like:

with student_code(
    prefix="While calling blahblah('bar')",
    print_prefix="it printed:",
    exception_prefix="it raised:",
    too_slow_message="it took more than 1s, had to kill it.",
):
    blahblah('bar')

friendly=False

To use, or not friendly-traceback instead of bare Python exceptions.

print_allowed=True

To allow or deny the student to print to stdout and stderr.

  • True: Prints are allowed (and displayed).
  • None: Prints are allowed (but not displayed).
  • False: Prints are disallowed (and displayed).

In all cases you can read what they printed using the value of the context manager:

with student_code(print_allowed=None) as run:
    their_function()
assert run.err == ""
assert run.out == "42"

Good practices

Write the student checking code a you would write unit test for your own code.

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

correction_helper-2026.1.3.tar.gz (12.3 kB view details)

Uploaded Source

Built Distribution

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

correction_helper-2026.1.3-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file correction_helper-2026.1.3.tar.gz.

File metadata

  • Download URL: correction_helper-2026.1.3.tar.gz
  • Upload date:
  • Size: 12.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.11

File hashes

Hashes for correction_helper-2026.1.3.tar.gz
Algorithm Hash digest
SHA256 6e8371d920823c2995150204b6c27647782f2978130a8b861e3979cb08e95916
MD5 5ec4798782e1673d80d8be6c1c47475e
BLAKE2b-256 1819ac917b3cbe22df8bc56aeef3f1092383b0886232dbeb448ae322e1c55957

See more details on using hashes here.

File details

Details for the file correction_helper-2026.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for correction_helper-2026.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 06d813e8f62637c76069a0fc9e8cf2115ea7cd32c29cdd78918473e4634cffa4
MD5 92fe327eed5116093ae0c4223b8ebc5f
BLAKE2b-256 d291f2eecac68bbe02571155642d87bf36ccb594b8c18b01b37e39beee81f130

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