A lightweight library for type checking and type casting annotated vars.
Project description
annotyped
Annotyped is a simple library with utilities and decorators for type checking and type casting automatically on annotated functions at runtime.
pip install annotyped --user
The basics
# Simple typecheck, this uses the instance checker to check equality. # You can set your own with `@annotyped.checkers.custom(callable)` @annotyped.check def add(a: int, b: int) -> int: return a + b add(1, 2) # 3 add(2, '10') # Param 'b' requires type '<class 'int'>', found '<class 'str'>': '10' # Simple typecast, this runs the annotation like it were an expression and uses the # result `annotation(value)` @annotyped.cast def add(a: int, b: int) -> str: return a + b add('10', '20') # '30' add(1, 2) # '3' add('1.1', 2) # Param 'a' could not convert to '<class 'int'>' from '<class 'str'>': invalid literal for int() with base 10: '1.1'
Custom converters / casters
eg:
Convert from a tuple or a str into namedtuple.
import annotyped import math from collections import namedtuple Position = namedtuple('Position', 'x, y') def position(pos): if isinstance(pos, str) and ',' in pos: pos = map(int, pos.split(',')) return Position(*pos) @annotyped.cast def diff(p1: position, p2: position): return math.sqrt((p2.x - p1.x)**2 + (p2.y - p1.y)**2) p1 = (10, 20) p2 = '20,50' print( diff(p1, p2) )
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
annotyped-0.2.4.tar.gz
(3.1 kB
view hashes)
Built Distribution
Close
Hashes for annotyped-0.2.4-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0950a378918f5e2ad67512a2eeec6ecfb2bdb471fc3f98e54a114327cec4bb51 |
|
MD5 | de616f548d2fad4a9a184db02f844c0a |
|
BLAKE2-256 | de339036529575d6fa7ff800f194890fee13aafc91c71ec4e42f82012c8ce00d |