Skip to main content

eXamples - Python Tests and Documentation Done by Example.


PyPI version Build Status codecov Join the chat at https://gitter.im/timothycrosley/examples License Downloads


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.

Example Usage Gif

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 using eXamples in no time.

  1. Installation - TL;DR: Run pip3 install examples within your projects virtual environment.

  2. Adding Examples - TL;DR: Add example decorators that represent each of your examples:

     # my_module_with_examples.py
     from examples import example
    
     @example(1, number_2=1, _example_returns=2)
     def add(number_1: int, number_2: int) -> int:
         return number_1 + number_2
    
  3. Verify and Test Examples - TL;DR: run examples.verify_and_test_examples within your projects test cases.

     # test_my_module_with_examples.py
     from examples import verify_and_test_examples
    
     import my_module_with_examples
    
    
     def test_examples_verifying_signature():
         verify_and_test_examples(my_module_with_examples)
    
  4. Introspect Examples -

     import examples
    
     from my_module_with_examples import add
    
    
     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

Download files

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

Source Distribution

examples-1.0.2.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

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

examples-1.0.2-py3-none-any.whl (8.2 kB view details)

Uploaded Python 3

File details

Details for the file examples-1.0.2.tar.gz.

File metadata

  • Download URL: examples-1.0.2.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0 CPython/2.7.16 Linux/5.3.0-7625-generic

File hashes

Hashes for examples-1.0.2.tar.gz
Algorithm Hash digest
SHA256 f29ba443f158bb47913ac21f098306a9749ed459a2290540ff1f86baac074597
MD5 ab2b9fdeb3ce3403a1e2cbff5f2a166d
BLAKE2b-256 081a1a68ca1db40e06efdd016fcc59863f755f1bceb12b9a7551f52f90fd3253

See more details on using hashes here.

File details

Details for the file examples-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: examples-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 8.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.0.0 CPython/2.7.16 Linux/5.3.0-7625-generic

File hashes

Hashes for examples-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 372fefd15d5a17bda3b003cf26edbc2d29632bc63f29c816b55ed33dcccb3e65
MD5 00d16ee7c341f366ea36e0afe52492b5
BLAKE2b-256 505b1ba3532c18528e49a963664b70896933b2e59049482831953e9d1b387bb7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 files

1.0.1

2 files

1.0.0

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page