from __future__ import annotations a:int=3 b:str="foo" class MyClass: a:int=4 b:str="bar" def __init__(self, a, b): self.a = a self.b = b def __eq__(self, other): return isinstance(other, MyClass) and self.a == other.a and self.b == other.b def function(a:int, b:str) -> MyClass: return MyClass(a, b) def function2(a:int, b:"str", c:MyClass) -> MyClass: pass def function3(a:"int", b:"str", c:"MyClass"): pass class UnannotatedClass: pass def unannotated_function(a, b, c): pass class MyClassWithLocalAnnotations: mytype = int x: mytype