Skip to main content
WARNING: PyPI Phishing attack ongoing. Please check that you are on the correct domain - PyPI dot org - before continuing  PyPI

Tests and Documentation Done by Example.

Project description

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.

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.

  1. Install: pip3 install examples

  2. 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
    
  3. Verify and test examples

     import examples
    
     examples.verify_and_test_all_examples()
    
  4. 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

Supported by

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