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="Got an exception:"

Printed right before the exception, if any.

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.stderr == ""
assert run.stdout == "42"

print_prefix="Your code printed:"

Message to display before the student output 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.

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-2021.11.3.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

correction_helper-2021.11.3-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file correction-helper-2021.11.3.tar.gz.

File metadata

  • Download URL: correction-helper-2021.11.3.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for correction-helper-2021.11.3.tar.gz
Algorithm Hash digest
SHA256 05521083988c082aba51f2423c67c0b55f208e1bc56ffe78bde3e9ef62c62dcc
MD5 c96233bdbd7bb0b6a616524cc6528d0d
BLAKE2b-256 3681a01598a037d4663f1eedcd68aa34a0f2253d5a1baf73054fc1d49fb9dbc2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: correction_helper-2021.11.3-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.6.4 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for correction_helper-2021.11.3-py3-none-any.whl
Algorithm Hash digest
SHA256 67cd85332c7123e95d983320691f233b007e900b2dd9e8f5d3b833f386587ec6
MD5 06de2dd323dd7197fe1979e951d87d52
BLAKE2b-256 0f80054e1d277ef17298897d67fe54fe657d402947cb639188a10dcb2b884e5a

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