
Thanks everyone for interesting suggestions! @Antoine @Guido: Some of the possible options for the title are: * Protocols (structural subtyping) * Protocols (static duck typing) * Structural subtyping (static duck typing) which one do you prefer? @Nick: Yes, explicit imports are not necessary for static type checkers (I will add a short comment about this). @Mark: I agree with Guido on all points here. For example, collections.abc.Iterable is already a class, and lots of code uses isinstance(obj, collections.abc.Iterable) and similar checks with other ABCs (also in a structural manner, i.e. via __subclasshook__). So that disabling this will case many breakages. The question of whether typing.Iterable[int] should be a class is independent (orthogonal) and does not belong to this PEP. -- Ivan