Update annotations to take advantage of delayed evaluation
Python 3.7 includes postponed evaluation of type annotations: https://docs.python.org/3/whatsnew/3.7.html#pep-563-postponed-evaluation-of-annotations
This means that we will no longer need to write annotations as quoted strings when the type is defined later (example). However, we will have to add a
from __future__ import annotations to every file where the quoted strings were previously necessary.
This change won't be possible until pyflakes updates to support it, since using it currently still causes a "undefined name" error from Prospector. This is the pull req that will need to be merged first: https://github.com/PyCQA/pyflakes/pull/374