Skip to main content

TinkerTest

Inline testing/validation in python 3, based on this wonderful blog post: https://tinkering.xyz/abusing-type-annotations/

What is this?

TinkerTest aims to simplify data validation checking in both unit tests and production environments. In order to do this conveniently, TinkerTest abuses makes use of the fact that python type annotations can be any arbitrary python expression. Using this fact allows us to inject validation logic into your scripts which simply evaluate your type annotations.

Helpful Hint

Starting from python 3.7, the annotations future import exists. This may be helpful for you, as its lazy evaluation should prevent some common mistakes in using this library.

Trivial Example

# my_script.py
from tinkertest import inject_into_type

class MyClass:
    my_field: 'my_field < 0'  # This field only accepts values < 0
    my_str_field: str  # This field only accepts strings
    
    def __init__(self, my_field, my_str_field):
        self.my_field = my_field
        self.my_str_field = my_str_field
        
    # This function only accepts a non-None argument and should always return 1
    def some_func(self, input_val: 'input_val is not None') -> 'returned == 1':  # 'returned' is a magic variable for use in return annotations
        ...
        
inject_into_type(MyClass)  # Wires all the injections, now any calls will be validated!

Metadata

Release files for TinkerTest 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for TinkerTest 0.1.1
File Size Uploaded
TinkerTest-0.1.1.tar.gz 8.5 kB Details

Release files / TinkerTest-0.1.1.tar.gz

Download URL TinkerTest-0.1.1.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
723d269ff81dff28b0b10f2d4dadde8c6687fcc78ea4dcd1f435ee9eab22aa46
BLAKE2b-256 checksum
How to use checksums
1bea3c4658f60592f1a1735cfbdffd977a54ad50a10540670972922da5772bfc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.1.0 requests-toolbelt/0.8.0 tqdm/4.24.0 CPython/3.7.0

Release history Release notifications | RSS feed

This release

0.1.1 This release

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page