Tests and Documentation Done by Example.
Project description
Read Latest Documentation - Browse GitHub Code Repository
eXamples (AKA: xamples for SEO) is a Python3 library enabling interactable, self-documenting, and self-verifying examples. These examples are attached directly to Python functions using decorators or via separate MODULE_examples.py
source files.
Key Features:
- Simple and Obvious API: Add
@examples.example(*args, **kwargs)
decorators for each example you want to add to a function. - Auto Documenting: Examples, by default, get added to your functions docstring viewable both in interactive interpreters and when using portray or pdocs.
- Signature Validating: All examples can easily be checked to ensure they match the function signature (and type annotations!) with a single call (
examples.verify_all_signatures()
). - Act as Tests: Examples act as additional test cases, that can easily be verified using a single test case in your favorite test runner: (
examples.test_all_examples()
). - Async Compatibility: Examples can be attached and tested as easily against async functions as non-async ones.
What's Missing:
- Class Support: Currently examples can only be attached to individual functions. Class and method support is planned for a future release.
Quick Start
The following guides should get you up and running with a documentation website in no time.
-
Install:
pip3 install examples
-
Add Examples:
from examples import example @example(1, 1, _example_returns=2) def add(number_1: int, number_2: int) -> int: return number_1 + number_2
-
Verify and test examples
import examples examples.verify_and_test_all_examples()
-
Introspect examples
import examples examples.get_examples(add)[0].use() == 2
Why Create Examples?
I've always wanted a way to attach examples to functions in a way that would be re-useable for documentation, testing, and API proposes. Just like moving Python parameter types from comments into type annotations has made them more broadly useful, I hope examples can do the same for example calls.
I hope you too find eXamples
useful!
~Timothy Crosley
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.