Skip to main content

SketchResponse

Note: This is a forked copy of sketchresponse/SketchResponse adapted for PrairieLearn. This library is used as the backing for the pl-sketch element.

This project (will be) published to PyPI as sketchresponse, and on NPM as @prairielearn/sketchresponse.

Warning: The API is not fully compatible with the original SketchResponse project. Additionally, the codebase has been significantly refactored, and Python 3.10 is now the minimum supported version. The information in this README is not guaranteed to be up to date.

SketchResponse is a Javascript/Python(2.7-3.x) tool for drawing and evaluating mathematical functions. It was designed for use with the edX online courseware platform. However, it is a self-contained application that can be integrated into other web platforms.

Features

  • Sketch Tool - configurable Javascript front-end with plugin components to provide different function drawing and annotation capabilities. See Sketch-Tool Usage for a description of the non-configurable interface elements of the sketch tool. See Sketch-Tool Plugin Configuration for a description of the available plugins.
  • Grader Library - python back-end that provides an API of function grading methods that can be composed to construct custom grading scripts. See Create a Simple Grading Script for a tutorial on building a simple grading script.

Installation

  • Clone this repository to the directory of your choice:
    • By using HTTPS:

      $ git clone https://github.com/SketchResponse/sketchresponse.git
      
    • By using SSH:

      $ git clone git@github.com:SketchResponse/sketchresponse.git
      

Sketch Tool Front-End

Prerequisites

You'll need to have Node.js and npm (which is now packaged with Node) to be installed on your system. Note: This currently only works with Node version 7.10.1

Installation

  • Change to the sketch_tool directory:

    $ cd sketch_tool
    
  • Install dependencies listed in package.json:

    $ npm ci
    
  • Build a local distribution of the sketch_tool:

    $ npm run build
    

Grader Back-End

The SketchResponse grader backend has only two third party package requirements:

Install them by running the following command in the root directory:

$ pip install -r requirements.txt

Flask is only required if you want to run a local server for convenience when implementing and testing new grading scripts. See the Tutorial Test a Grading Script on a Local Server for details.

Usage Guides

Examples and Tutorials

Reference Information

Contribute

Contributions to this project are very welcome! If you'd like to contribute, please open a GitHub issue and we'll get in touch.

Running tests for the Grader Library Back-end

The grader library has a collection of tests to validate the API functions. Those tests can be run from the root directory of the sketchresponse repository with the command below. If you haven't already done so, install the additional packages needed only for the unittest modules.

$ pip install -r test_requirements.txt
$ python -m unittest discover -t . test_grader_lib/

Rebuilding the documentation

As this project evolves, the current documentation will no longer match the existing codebase. Follow the instructions in HowTo Build the Docs to rebuild as needed.

Support

If you are having issues or encounter a bug, please create a GitHub issue and we'll try to help!

License

Please refer to the LICENSE file in the root of the SketchResponse repository.

Metadata

Release files for sketchresponse 0.1.5

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

Source distribution (sdist)

Source distribution for sketchresponse 0.1.5
File Size Uploaded Provenance
sketchresponse-0.1.5.tar.gz 72.3 kB With provenance Details

Built distribution (wheel)

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

Total release size: 155.7 kB

Release files / sketchresponse-0.1.5.tar.gz

Download URL sketchresponse-0.1.5.tar.gz
Size 72.3 kB
Tags Source
SHA-256 checksum
How to use checksums
e638465560a987cb6829266c9c9e118ff2ce86b87f92078fb4ef46d02b2bf47b
BLAKE2b-256 checksum
How to use checksums
453ed5e9309d9a3f442b00e1cc3745a194e7011712088beadd35f307f371358a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Release files / sketchresponse-0.1.5-py3-none-any.whl

Download URL sketchresponse-0.1.5-py3-none-any.whl
Size 83.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb6f45c54eb231c4dd757345f44af96fd0caeeb6c9faf2fb5b67338736157616
BLAKE2b-256 checksum
How to use checksums
b6fa25ad686a2ee473c2c462c7c5a9e02b9e314504ac0927b87dd58efc088855
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

Security for sketchresponse 0.1.5

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for sketchresponse-0.1.5.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 9, 2026.

Transparency log

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.

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