Skip to main content

Generic Grader

A collection of generic tests for grading programming assignments.

This project is still in very early development. Expect breaking changes.

Installation

pip install generic-grader

Usage

  1. Name the reference solution reference.py, and place it in a tests subdirectory of the directory containing the student's code.

  2. Add a configuration file for the assignment in the tests subdirectory (e.g. tests/config.py). It might look something like this:

    from parameterized import param
    from generic_grader.style import comments # Import the tests you want to use
    from generic_grader.utils.options import Options
    
    # Create tests by calling each test type's build method.
    # They should all start with the word `test_` to be discovered by unittest.
    # Adding a number after `test_` can be used to control the run order.
    # The argument is a list of `param` objects, each with an `Options` object.
    # See the Options class for more information on the available options.
    test_01_TestCommentLength = comments.build(
       [
          param(
              Options(
                  sub_module="hello_user",
                  hint="Check the volume of comments in your code.",
                  entries=("Tim the Enchanter",),
              ),
          ),
          param(
              Options(
                  sub_module="hello_user",
                  hint="Check the volume of comments in your code.",
                  entries=("King Arthur",),
              ),
          ),
       ]
    )
    
  3. Run the tests.

    python -m unittest tests/config.py
    

Contributing

  1. Clone the repo onto your machine.

    • HTTPS

      git clone https://github.com/Purdue-EBEC/generic-grader.git
      
    • SSH

      git clone git@github.com:Purdue-EBEC/generic-grader.git
      
  2. Set up a new virtual environment in the cloned repo.

    cd generic-grader
    python3.12 -m venv .env3.12
    
  3. Activate the virtual environment. If you are using VS Code, there may be a pop-up to do this automatically when working from this directory.

    • Linux/macOS

      source .env3.12/bin/activate
      
    • Windows

      .env3.12\Scripts\activate
      
  4. Install tesseract-ocr

  5. Install ghostscript

  6. Install the package. Note that this installs the package as editable, so edits will be automatically reflected in the installed package.

    pip install -e .[dev]
    

    or

    uv sync --extra dev
    
  7. Install the pre-commit hooks.

    pre-commit install
    
  8. Run the tests.

    pytest
    
  9. Make changes ...

  10. Deactivate the virtual environment.

deactivate

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

generic_grader-0.2.9.tar.gz (152.9 kB view details)

Uploaded Source

Built Distribution

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

generic_grader-0.2.9-py3-none-any.whl (78.0 kB view details)

Uploaded Python 3

File details

Details for the file generic_grader-0.2.9.tar.gz.

File metadata

  • Download URL: generic_grader-0.2.9.tar.gz
  • Upload date:
  • Size: 152.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for generic_grader-0.2.9.tar.gz
Algorithm Hash digest
SHA256 c42c7924ec9a967572a2b4854725635fc6b41eee4dd64b44b6c55be9a18bb1be
MD5 ccb4e3f5884a58cc798e0ac91d8cf60e
BLAKE2b-256 a22a00e0b8070b3aa24c4d391dc39937bbcb99a21eee5824349cef42c8bfe7de

See more details on using hashes here.

File details

Details for the file generic_grader-0.2.9-py3-none-any.whl.

File metadata

  • Download URL: generic_grader-0.2.9-py3-none-any.whl
  • Upload date:
  • Size: 78.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.24 {"installer":{"name":"uv","version":"0.11.24","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for generic_grader-0.2.9-py3-none-any.whl
Algorithm Hash digest
SHA256 30efd3825860c581d0acdf1c6cd84c0f16d4ce1fda1c4bcdefef9b5b6b1a03a4
MD5 351c8afba9734349e18b005bf71ad2db
BLAKE2b-256 f4ea4065aada7a756fd42e864cdbaf34b3f5b1656e7c63d97c167150b124dc7e

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.2.9 This release

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.1.24

2 files

0.1.23

2 files

0.1.22

2 files

0.1.21

2 files

0.1.20

2 files

0.1.19

2 files

0.1.18

2 files

0.1.17

2 files

0.1.16

2 files

0.1.15

2 files

0.1.14

2 files

0.1.13

2 files

0.1.12

2 files

0.1.11

2 files

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

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