In Python, are "type annotations" and "type hints" the same thing? If not, what's the difference between them?
Yes, they can both refer to the same sets of things, namely the language feature of Python 3.5+:
class Animal:
# *
name: str
# * * type annotations
def foo(self, bar: baz) -> quux:
...
and sometimes the Python-2-compatible comment syntax supported by tools like Mypy:
x = {6, 7} # type: Set[int]