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 details)
Built Distribution
File details
Details for the file annotyped-0.2.4.tar.gz
.
File metadata
- Download URL: annotyped-0.2.4.tar.gz
- Upload date:
- Size: 3.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 497f883d684d9e73829e312fdbcf254880775a4fc47da8eeabab817482162590 |
|
MD5 | b2e3b5ed10a52091b2f847749ba4928e |
|
BLAKE2b-256 | 7568e2b8268b5abfde5708ca0c76d5c8920d8a369fc8ceaf0d96904530cdd28b |
File details
Details for the file annotyped-0.2.4-py3-none-any.whl
.
File metadata
- Download URL: annotyped-0.2.4-py3-none-any.whl
- Upload date:
- Size: 4.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.46.0 CPython/3.7.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0950a378918f5e2ad67512a2eeec6ecfb2bdb471fc3f98e54a114327cec4bb51 |
|
MD5 | de616f548d2fad4a9a184db02f844c0a |
|
BLAKE2b-256 | de339036529575d6fa7ff800f194890fee13aafc91c71ec4e42f82012c8ce00d |