Metadata-Version: 2.4
Name: nbgrader_jupyterquiz
Version: 0.5.0
Summary: Interactive graded quizzes for Jupyter notebooks (nbgrader-jupyterquiz).
Keywords: nbgrader,jupyterquiz,education
Author-email: Philipp Emmo Tobias Risius <philipp.e.risius@theo.physik.uni-giessen.de>
Maintainer-email: Philipp Emmo Tobias Risius <philipp.e.risius@theo.physik.uni-giessen.de>
Requires-Python: >=3.10.0
Description-Content-Type: text/x-rst
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Framework :: Jupyter
Classifier: Intended Audience :: Education
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Education :: Testing
License-File: LICENSE
Requires-Dist: ipython
Requires-Dist: jsonschema
Requires-Dist: nbconvert
Requires-Dist: nbformat
Requires-Dist: nbgrader >=0.9
Requires-Dist: traitlets
Requires-Dist: nbgrader_jupyterquiz[dev] ; extra == "all"
Requires-Dist: nbgrader_jupyterquiz[docs] ; extra == "all"
Requires-Dist: bump-my-version >=1.2.3 ; extra == "dev"
Requires-Dist: coverage >=7.5.0 ; extra == "dev"
Requires-Dist: deptry >=0.23.1 ; extra == "dev"
Requires-Dist: flit >=3.12.0,<4.0 ; extra == "dev"
Requires-Dist: mypy >=1.18.2 ; extra == "dev"
Requires-Dist: numpydoc >=1.9.0 ; extra == "dev"
Requires-Dist: pre-commit >=3.5.0 ; extra == "dev"
Requires-Dist: pytest >=8.3.2 ; extra == "dev"
Requires-Dist: pytest-cov >=5.0.0 ; extra == "dev"
Requires-Dist: ruff >=0.13.3 ; extra == "dev"
Requires-Dist: tox >=4.30.3 ; extra == "dev"
Requires-Dist: vulture >=2.16 ; extra == "dev"
Requires-Dist: ipykernel ; extra == "docs"
Requires-Dist: ipython ; extra == "docs"
Requires-Dist: jupyter_client ; extra == "docs"
Requires-Dist: nbsphinx >=0.9.8 ; extra == "docs"
Requires-Dist: sphinx >=8.1.3 ; extra == "docs"
Requires-Dist: sphinx-autobuild ; extra == "docs"
Requires-Dist: sphinx-codeautolink >=0.17.5 ; extra == "docs"
Requires-Dist: sphinx-copybutton ; extra == "docs"
Requires-Dist: sphinx-rtd-theme >=1.0 ; extra == "docs"
Project-URL: Changelog, https://nbgrader-jupyterquiz.readthedocs.io/en/latest/changelog.html
Project-URL: Documentation, https://nbgrader-jupyterquiz.readthedocs.io/en/latest/
Project-URL: Homepage, https://nbgrader-jupyterquiz.readthedocs.io/
Project-URL: Issue tracker, https://github.com/PhilippRisius/nbgrader-jupyterquiz/issues
Project-URL: Source, https://github.com/PhilippRisius/nbgrader-jupyterquiz
Provides-Extra: all
Provides-Extra: dev
Provides-Extra: docs

======================
nbgrader-jupyterquiz
======================

+----------------------------+-----------------------------------------------------+
| Versions                   | |pypi|                                              |
+----------------------------+-----------------------------------------------------+
| Documentation and Support  | |docs| |versions|                                   |
+----------------------------+-----------------------------------------------------+
| Open Source                | |license| |ossf-score|                              |
+----------------------------+-----------------------------------------------------+
| Coding Standards           | |ruff| |pre-commit|                                 |
+----------------------------+-----------------------------------------------------+
| Development Status         | |status| |build| |coveralls|                        |
+----------------------------+-----------------------------------------------------+

**nbgrader-jupyterquiz** lets instructors embed interactive, gradeable quizzes
directly inside Jupyter notebooks using a simple Markdown syntax.  During
``nbgrader generate_assignment`` the quiz source is transformed into interactive
quiz cells (powered by a fork of `jupyterquiz`_), and the answer key is
stripped from the released notebook.

Quizzes placed in an nbgrader **Manually Graded Task** cell are
automatically graded: student responses are persisted to a
``responses.json`` sidecar as they answer, and ``nbgrader autograde``
evaluates them with partial-credit support.  Per-question points
(including fractions like ``{0.5}``) are supported, and the Markdown
syntax handles MathJax, code blocks, and multi-line content.  See the
`graded-quizzes docs`_ for the full workflow.

* Free software: MIT license
* Documentation: https://nbgrader-jupyterquiz.readthedocs.io

Installation
------------

.. code-block:: console

    pip install nbgrader-jupyterquiz

Quick start
-----------

Register the preprocessor at the front of your ``nbgrader_config.py``:

.. code-block:: python

    c.GenerateAssignment.preprocessors.insert(0, "nbgrader_jupyterquiz.CreateQuiz")

Write quizzes in **Manually Graded Task** cells using ``#### Quiz`` /
``#### End Quiz`` delimiters:

.. code-block:: markdown

    #### Quiz
    * (SC) "What is the capital of France?"
      + "Paris"
      - "London"
      - "Berlin"
    #### End Quiz

Run ``nbgrader generate_assignment`` — quiz regions are replaced with
interactive widgets and the answer key is stripped from the released
notebook.  Student responses are auto-graded by ``nbgrader autograde``.

See the `documentation <https://nbgrader-jupyterquiz.readthedocs.io>`_ for the
full `quiz syntax <https://nbgrader-jupyterquiz.readthedocs.io/en/latest/quiz-syntax.html>`_,
`nbgrader pipeline <https://nbgrader-jupyterquiz.readthedocs.io/en/latest/nbgrader-pipeline.html>`_,
`graded quizzes`_,
and `display options <https://nbgrader-jupyterquiz.readthedocs.io/en/latest/display-options.html>`_.

.. _graded-quizzes docs: https://nbgrader-jupyterquiz.readthedocs.io/en/latest/graded-quizzes.html
.. _graded quizzes: https://nbgrader-jupyterquiz.readthedocs.io/en/latest/graded-quizzes.html

Credits
-------

This package incorporates a fork of `jupyterquiz`_ (v2.9.6.4) by
John M. Shea, copyright 2021–2025, used under the MIT License.
See ``LICENSES/jupyterquiz-MIT.txt``.

This package was scaffolded with Cookiecutter_ and the
`Ouranosinc/cookiecutter-pypackage`_ project template.

.. _jupyterquiz: https://github.com/jmshea/jupyterquiz
.. _Cookiecutter: https://github.com/cookiecutter/cookiecutter
.. _`Ouranosinc/cookiecutter-pypackage`: https://github.com/Ouranosinc/cookiecutter-pypackage

.. |pypi| image:: https://img.shields.io/pypi/v/nbgrader-jupyterquiz.svg
        :target: https://pypi.org/project/nbgrader-jupyterquiz/
        :alt: PyPI

.. |docs| image:: https://readthedocs.org/projects/nbgrader-jupyterquiz/badge/?version=latest
        :target: https://nbgrader-jupyterquiz.readthedocs.io/en/latest/?version=latest
        :alt: Documentation Status

.. |versions| image:: https://img.shields.io/pypi/pyversions/nbgrader-jupyterquiz.svg
        :target: https://pypi.org/project/nbgrader-jupyterquiz/
        :alt: Supported Python Versions

.. |coveralls| image:: https://coveralls.io/repos/github/PhilippRisius/nbgrader-jupyterquiz/badge.svg
        :target: https://coveralls.io/github/PhilippRisius/nbgrader-jupyterquiz
        :alt: Coveralls

.. |build| image:: https://github.com/PhilippRisius/nbgrader-jupyterquiz/actions/workflows/main.yml/badge.svg
        :target: https://github.com/PhilippRisius/nbgrader-jupyterquiz/actions
        :alt: Build Status

.. |license| image:: https://img.shields.io/github/license/PhilippRisius/nbgrader-jupyterquiz.svg
        :target: https://github.com/PhilippRisius/nbgrader-jupyterquiz/blob/main/LICENSE
        :alt: License

..
    .. |ossf-bp| image:: https://bestpractices.coreinfrastructure.org/projects/9945/badge
            :target: https://bestpractices.coreinfrastructure.org/projects/9945
            :alt: Open Source Security Foundation Best Practices

.. |ossf-score| image:: https://api.securityscorecards.dev/projects/github.com/PhilippRisius/nbgrader-jupyterquiz/badge
        :target: https://securityscorecards.dev/viewer/?uri=github.com/PhilippRisius/nbgrader-jupyterquiz
        :alt: OpenSSF Scorecard

.. |pre-commit| image:: https://results.pre-commit.ci/badge/github/PhilippRisius/nbgrader-jupyterquiz/main.svg
        :target: https://results.pre-commit.ci/latest/github/PhilippRisius/nbgrader-jupyterquiz/main
        :alt: pre-commit.ci status

.. |ruff| image:: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
        :target: https://github.com/astral-sh/ruff
        :alt: Ruff

.. |status| image:: https://www.repostatus.org/badges/latest/active.svg
        :target: https://www.repostatus.org/#active
        :alt: Project Status: Active – The project has reached a stable, usable state and is being actively developed.

