Skip to main content

Decorator for run-time type checks.

Project description

Takes Documentation Status

Decorator for run-time type checks.


  • 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.


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

class Point:
    x: int
    y: int

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.


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


0.2.0 (2021-11-28)

  • First release on PyPI.

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

takes-0.2.0.tar.gz (13.4 kB view hashes)

Uploaded source

Built Distribution

takes-0.2.0-py2.py3-none-any.whl (4.2 kB view hashes)

Uploaded py2 py3

Supported by

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