Metadata-Version: 2.4
Name: pytest_nbgrader
Version: 0.3.0
Summary: Pytest plugin for using with nbgrader and generating test cases.
Keywords: pytest-nbgrader,nbgrader,pytest-plugin
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 :: 3 - Alpha
Classifier: Intended Audience :: Developers
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
License-File: LICENSE
Requires-Dist: numpy
Requires-Dist: pytest >=8
Requires-Dist: pyyaml
Requires-Dist: pytest_nbgrader[dev] ; extra == "all"
Requires-Dist: pytest_nbgrader[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.14 ; extra == "dev"
Requires-Dist: ipykernel ; extra == "docs"
Requires-Dist: ipython ; extra == "docs"
Requires-Dist: jupyter_client ; extra == "docs"
Requires-Dist: nbsphinx >=0.9.5 ; extra == "docs"
Requires-Dist: sphinx >=7.1.0,<8.2 ; extra == "docs"
Requires-Dist: sphinx-codeautolink >=0.16.2 ; extra == "docs"
Requires-Dist: sphinx-autobuild ; extra == "docs"
Requires-Dist: sphinx-copybutton ; extra == "docs"
Requires-Dist: sphinx-rtd-theme >=1.0 ; extra == "docs"
Project-URL: Changelog, https://pytest-nbgrader.readthedocs.io/en/stable/changelog.html
Project-URL: Homepage, https://pytest-nbgrader.readthedocs.io/
Project-URL: Issue tracker, https://github.com/PhilippRisius/pytest_nbgrader/issues
Project-URL: Source, https://github.com/PhilippRisius/pytest_nbgrader
Provides-Extra: all
Provides-Extra: dev
Provides-Extra: docs

===============
pytest-nbgrader
===============

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

Pytest plugin for using with nbgrader and generating test cases.

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

Features
--------

* Load student submissions from Jupyter notebooks via ``Submission`` class
* Define test cases with expected inputs/outputs using ``TestCase`` and ``TestSubtask`` dataclasses
* Execute student code against test cases with automatic result comparison
* Serialize and deserialize test cases via YAML
* Prerequisite checks: function signature validation, write-access verification
* Assertion helpers for numeric comparisons (numpy-based tolerances)
* Automatic pytest test class generation via ``TestClass`` harness
* Run pytest from within notebooks using the ``runner`` module
* Plugs into pytest as a standard plugin — no configuration needed beyond install

Credits
-------

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

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

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

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

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

.. |license| image:: https://img.shields.io/github/license/PhilippRisius/pytest_nbgrader.svg
        :target: https://github.com/PhilippRisius/pytest_nbgrader/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/pytest_nbgrader/badge
        :target: https://securityscorecards.dev/viewer/?uri=github.com/PhilippRisius/pytest_nbgrader
        :alt: OpenSSF Scorecard

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

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

.. |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.

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

