I don’t know exactly :)
Some ideas:
1) Raise a warning when the type check fails, but allow it happen. This would
have the benefit of possibly catching bugs, but it's still opt in in the
sense that you have to write the annotations for anything to happen. This
would also enable people to turn on enforced type checking by raising the
warning level to an exception.
Even if this was off by default it would make it easy to enable it during
test runs and also enable easier/better quickcheck like functionality.
2) Simply add a flag to the interpreter that turns on type checking.
3) Add a stdlib module that would run the program under type checking, like
``python -m typing myprog`` instead of ``python -m myprog``.
Really I think a lot of the benefit is likely to come in the form of linting
and during test runs. However if I have to run a seperate Python interpreter
to actually do the run then I risk getting bad results through varying things
like interpreter differences, language level differences, etc.
Although I wouldn't complain if it meant that Python had actual type checking
at the run time if a function had type annotations :)