PyContracts is a Python package that allows to declare constraints on function parameters and return values. Contracts can be specified using Python3 annotations, or inside a docstring. PyContracts supports a basic type system, variables binding, arithmetic constraints, and has several specialized contracts and an extension API.
https://github.com/micheles/decorator has dropped python 2 support apparently (commit: https://github.com/micheles/decorator/commit/a615c2ae5fe17c8e1f1a19247ed003986343734a), so anything that is
>=5.0.0
will break python2 compatibility of this package. 😢