> Type hinting (3.5+)

> Static vs dynamic typing is a spicy topic in software engineering and almost everyone has an opinion on it. I will let the reader decide when they should write types, but I think you should at least know that Python 3 supports type hints.

I think this gives readers the impression that type hints have anything to do with dynamic vs. static type systems, which isn't true. These are merely annotations that are attached to values. In fact, it's legal to use full strings as type annotations — they have no inherent semantic value.

You can gain semantic value by using a tool like MyPy or an IDE like PyCharm, but the type annotations do not in themselves do anything. I think it could be worth clarifying this for readers who are unaware.

Are there any tools that can use the annotations and watch a running script and warn you if they’re violated? Maybe during your test suite.

Or linters could do some basic analysis.

off the top of my head there's pytypes¹ and typeguard² – both look at type annotations and enforce them at runtime.

¹ https://github.com/Stewori/pytypes/

² https://github.com/agronholm/typeguard