potluck

Package for defining and evaluating Python programming tasks.

potluck/__init__.py

For a high-level interface, import potluck.compare. To define a task specification, import potluck.specifications. To define tests for a specification, import potluck.meta.

Compatibility

Overall potluck requires Python 3.6 or later, but the following modules are compatible with Python 2.7:

Dependencies:

Core (these should be installed automatically when installing via pip)

  • jinja2 for report rendering via HTML templates.
  • pygments for code highlighting in reports.
  • importlib_resources for resource loading.
  • markdown and beautifulsoup4 for creating instructions. If pymdown-extensions is available, its 'extra' collection will be used instead of standard markdown 'extra', which allows for things like code fences inside itemized lists.
  • python_dateutil for time zone management.

Optional (installing via [option] should fetch these when using pip)

  • [test] installs pytest for running the tests.
  • [expectations] installs optimism for capturing student tests using that module.
  • [turtle_capture] installs Pillow (>=6.0.0) for capturing turtle drawings, but you will need to manually install Ghostscript (which is not available directly from PyPI).
  • [server] installs flask and flask_cas for supporting the potluck_server module.
  • [security] installs flask_talisman and flask_seasurf for baseline server security.
  • [https_debug] installs pyopenssl for using HTTPS with a self-signed certificate when doing local debugging.

Getting Started

Unless you want to get into the guts of things, potluck.specifications is the place to get started, while potluck.rubrics and potluck.contexts deal with more advanced concepts without getting too far into the weeds. potluck.meta and potluck.snippets are also useful high-level interfaces for building tasks.

Flask App

For automatically collecting and evaluating submissions using potluck, a Flask WSGI app is available in the separate potluck_server module.

 1"""
 2Package for defining and evaluating Python programming tasks.
 3
 4potluck/__init__.py
 5
 6For a high-level interface, import `potluck.compare`. To define a task
 7specification, import `potluck.specifications`. To define tests for a
 8specification, import `potluck.meta`.
 9
10
11## Compatibility
12
13Overall `potluck` requires Python 3.6 or later, but the following modules
14are compatible with Python 2.7:
15
16- `potluck.render`
17- `potluck.html_tools`
18- `potluck.phrasing`
19- `potluck.file_utils`
20- `potluck.time_utils`
21- `potluck.logging`
22
23
24## Dependencies:
25
26Core (these should be installed automatically when installing via `pip`)
27
28- `jinja2` for report rendering via HTML templates.
29- `pygments` for code highlighting in reports.
30- `importlib_resources` for resource loading.
31- `markdown` and `beautifulsoup4` for creating instructions. If
32    `pymdown-extensions` is available, its 'extra' collection will be
33    used instead of standard markdown 'extra', which allows for things
34    like code fences inside itemized lists.
35- `python_dateutil` for time zone management.
36
37Optional (installing via [option] should fetch these when using `pip`)
38
39- `[test]` installs `pytest` for running the tests.
40- `[expectations]` installs `optimism` for capturing student tests using
41    that module.
42- `[turtle_capture]` installs `Pillow` (>=6.0.0) for capturing turtle
43    drawings, but you will need to manually install Ghostscript (which is
44    not available directly from PyPI).
45- `[server]` installs `flask` and `flask_cas` for supporting the
46    `potluck_server` module.
47- `[security]` installs `flask_talisman` and `flask_seasurf` for
48    baseline server security.
49- `[https_debug]` installs `pyopenssl` for using HTTPS with a
50    self-signed certificate when doing local debugging.
51
52
53## Getting Started
54
55Unless you want to get into the guts of things, `potluck.specifications`
56is the place to get started, while `potluck.rubrics` and
57`potluck.contexts` deal with more advanced concepts without getting too
58far into the weeds. `potluck.meta` and `potluck.snippets` are also useful
59high-level interfaces for building tasks.
60
61
62## Flask App
63
64For automatically collecting and evaluating submissions using `potluck`,
65a Flask WSGI app is available in the separate `potluck_server` module.
66"""
67
68# Import version variable
69from ._version import __version__ # noqa F401