Skip to main content

Takes

https://img.shields.io/pypi/v/takes.svg https://img.shields.io/travis/pymetrics/takes.svg Documentation Status

Decorator for run-time type checks.

Features

  • Convert undefined dictionaries accepted by functions to strong data types, without changing calling code.

  • Decorated functions can be called with dictionaries as before, or with instances of the desired type.

Example

This function takes an undocumented dictionary. Maintainers must read the function body to determine the expected shape of the data.

def my_function(data):
    x, y = data["x"], data["y"]
    return f"x={x}, y={y}"

>>> my_function({"x": 1, "y": 1})
"x=1, y=1"

Takes lets you redefine this function to accept a well-defined data type, without needing to immediately change all of the calling code:

from takes import takes

@dataclass
class Point:
    x: int
    y: int

@takes(Point)
def my_function(point):
    x, y = point.x, point.y
    return f"x={x}, y={y}"

# Can still call my_function with a dictionary,
# Takes will convert it to a point by instantiating
# a Point using the given data as kwargs:
>>> my_function({"x": 1, "y": 1})
"x=1, y=1"

# Of course, you can also call the function with the proper
# type:
>>> my_function(Point(x=1, y=1))
"x=1, y=1"

Further, takes performs type checks at run-time.

Credits

This package was created with Cookiecutter and the pymetrics/cookiecutter-python-library project template.

History

0.2.0 (2021-11-28)

  • First release on PyPI.

Metadata

Release files for takes 0.2.0

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

Source distribution (sdist)

Source distribution for takes 0.2.0
File Size Uploaded
takes-0.2.0.tar.gz 13.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for takes 0.2.0
File Interpreter ABI Platform
takes-0.2.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 17.5 kB

Release files / takes-0.2.0.tar.gz

Download URL takes-0.2.0.tar.gz
Size 13.4 kB
Tags Source
SHA-256 checksum
How to use checksums
2d4b7b49699ee6ad125c418c5032ef05487ada49582926ba58fa60b5a49914e5
BLAKE2b-256 checksum
How to use checksums
3d153898af4e1a3d54f17f249c9f16695a3e47488ab0813b7586cce06a6c123c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.9

Release files / takes-0.2.0-py2.py3-none-any.whl

Download URL takes-0.2.0-py2.py3-none-any.whl
Size 4.2 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
c028447c0c27e93580c71bc28fa34afd5722d0195b707877e9e9ee45304ede4b
BLAKE2b-256 checksum
How to use checksums
d2c84eb3ce30d72d7f28b2b4a061d7b036f74b4034073ea33759ead76ed48ddf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/3.4.2 importlib_metadata/4.8.2 pkginfo/1.8.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.9

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

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