PEP 483 and PEP 484 finally introduced semantics for function annotations, and adds a new typing
module to the standard library that provides important types, especially generics.
Any Python program that uses annotations now must use them as this PEP specifies, unless they use the @typing.no_type_check
decorator. In other words, PEP 3107 is overridden. Note that PEP 3107 did anticipate that something like PEP 484 would happen.
I have observed that code written using the new typing
module always follows a distinct dialect, both syntactically and stylistically. This is quite similar to the way Python2 and Python3 are dialects of Python, and sometimes require different advice in a review. Likewise, some people might prefer to avoid one dialect or another, but this new dialect is blessed by the BDFL.
Jamal removed the tag from my question since it did not exist here and does not exist on Stack Overflow either, but I think it deserves to exist. (Edit: and I do not think type-safety is a good fit).
Obviously, there is not a lot of experience with this module because it's only standardized in Python 3.5, which is still not released. However, with a third-party backport of the typing
module, it works for Python 3.2, and there is even experimental support for Python 2.7 (either using # type:
comments or using a codec to strip the annotations).
The mypy project was the motivator for the PEP and is the current focus for activity that uses the annotations for type-checking.
Synonyms I considered for the tag: python-typing mypy python-type-hints python-type-hinting pep484, but since this is still rare retagging every question should be viable for now.
Any question tagged python-typing must be tagged python and should be tagged either python3 or python-2.7.