Skip to main content

A restricted configurable Python kernel for exams

Project description

Exam Kernel

PyPi License Documentation Status Ruff Code style: black

A wrapper for the IPython kernel that sanitizes the input before execution.

A more in depth explanation can be found in the docs.

This kernel blocks all magic commands including !.

The libraries a user can use can be restricted by blocking or allowing certain imports. The module importlib is blocked by default.

Installation

pip install exam_kernel
python -m exam_kernel.install --sys-prefix

Configuration

You can configure the kernel via the ipython_config.py. This file is usually located under ~/.ipython.

1. Initialization Code

This is the code that will be executed every time the kernel is initialized and set via the configuration option IPKernelApp.exec_lines.

Example config:

# sample ipython_config.py

c = get_config()

c.IPKernelApp.exec_lines = ['import math', 'import random']

In this example the libraries math and random are imported every time the kernel is initialized, making them available to the user right away.

2. Allowed Imports

If you want to allow the user to only use certain libraries, you can specify them using the allowed_imports configuration option. All other libraries will be blocked by default if this option is set.

Example config:

# sample ipython_config.py

c = get_config()

c.ExamKernel.allowed_imports = ['math', 'numpy', 'scipy']

In this example the student can only import the libraries math, numpy and scipy. If the user tries to import any other library (e.g. matplotlib), he or she will see the following message:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-5-041c468338fc> in <module>
----> 1 raise ModuleNotFoundError('No module named matplotlib or matplotlib blocked by kernel.')

ModuleNotFoundError: No module named matplotlib or matplotlib blocked by kernel.

3. Blocked Imports

If you want to block the user from importing certain libraries, but let them use all others, you can use the blocked_imports configuration option.

If the allowed_import option is used, the blocked imports will take no effect.

Example config:

# sample ipython_config.py

c = get_config()

c.ExamKernel.blocked_imports = ['math', 'numpy', 'scipy']

In this example the student can not import the libraries math, numpy and scipy. If the user tries to import a blocked library (e.g. math), he or she will see the following message:

---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-5-041c468338fc> in <module>
----> 1 raise ModuleNotFoundError('No module named math or math blocked by kernel.')

ModuleNotFoundError: No module named math or math blocked by kernel.

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

exam_kernel-0.2.0.tar.gz (9.1 kB view details)

Uploaded Source

Built Distribution

exam_kernel-0.2.0-py3-none-any.whl (6.6 kB view details)

Uploaded Python 3

File details

Details for the file exam_kernel-0.2.0.tar.gz.

File metadata

  • Download URL: exam_kernel-0.2.0.tar.gz
  • Upload date:
  • Size: 9.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for exam_kernel-0.2.0.tar.gz
Algorithm Hash digest
SHA256 22f9883a38e6caa3da0236154db804eda4f6c3e350132a57348e0728b8b5c32f
MD5 0e849958943d1cb4eff05b76e9a6587f
BLAKE2b-256 9c894bac24a3ef1417dea51b84b78eac36a7400f32e701d0b6548728d8b0dc99

See more details on using hashes here.

File details

Details for the file exam_kernel-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: exam_kernel-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 6.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for exam_kernel-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 beaba680d9c9f6fb18cf220665d7b72ed19dded13b09187096a3bdf5ba27b81d
MD5 138c8fec51a91d11738c689fa9c8a496
BLAKE2b-256 1b3b9286093f6ad42a0d090386d9bc8ac6edff0887149b534a1eb7bf45fd15d0

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