Basically, I want to create a function or decorator that checks that the type of every argument passed in a function is the same as the type hints specify, and displays appropriate errors if not.
This should be able to compare standard types, such as 'int', etc. as well as typing types, such as 'typing.Iterable'
It might look like this:
@checktypes
def some_function(arg1: str, arg2: int, arg3: Iterable) -> None:
pass
some_function("string", 1, True)
# This should display an error like:
# TypeError: 'arg3' to 'some_function()' must be of type 'typing.Iterable', not type 'bool'