There's one new feature I'd like to add to PEP 484 and the typing.py module that will go out with Python 3.5.2.
There's a long discssion in
https://github.com/python/typing/issues/107, but I think I can explain the proposal very quickly.
There's currently no good way to talk about class objects. If you have a function argument that's a class (as opposed to an instance) the only annotation you can give it is `type`. But I've encountered this pattern quite frequently, and what people invariably want to say is "it's a subclass of this here class C." Example:
class User: ...
class TeamUser(User): ...
class ProUser(User): ...
def new_user(user_class: Type[User]) -> User: ...
The proposal is to let you spell that explicitly by setting the type or such an argument to `Type[C]`. The type checker will then understand that if you call it, the result is an instance of C. It will also know about all the class methods defined on C.
There are some subtleties, e.g. in the above example we would actually like to know that the return type varies with the argument type: