|  |  | 
|  |  | 
|  | """ | 
|  | The module for testing variable annotations. | 
|  | Empty lines above are for good reason (testing for correct line numbers) | 
|  | """ | 
|  |  | 
|  | from typing import Optional | 
|  | from functools import wraps | 
|  |  | 
|  | __annotations__[1] = 2 | 
|  |  | 
|  | class C: | 
|  |  | 
|  | x = 5; y: Optional['C'] = None | 
|  |  | 
|  | from typing import Tuple | 
|  | x: int = 5; y: str = x; f: Tuple[int, int] | 
|  |  | 
|  | class M(type): | 
|  |  | 
|  | __annotations__['123'] = 123 | 
|  | o: type = object | 
|  |  | 
|  | (pars): bool = True | 
|  |  | 
|  | class D(C): | 
|  | j: str = 'hi'; k: str= 'bye' | 
|  |  | 
|  | from types import new_class | 
|  | h_class = new_class('H', (C,)) | 
|  | j_class = new_class('J') | 
|  |  | 
|  | class F(): | 
|  | z: int = 5 | 
|  | def __init__(self, x): | 
|  | pass | 
|  |  | 
|  | class Y(F): | 
|  | def __init__(self): | 
|  | super(F, self).__init__(123) | 
|  |  | 
|  | class Meta(type): | 
|  | def __new__(meta, name, bases, namespace): | 
|  | return super().__new__(meta, name, bases, namespace) | 
|  |  | 
|  | class S(metaclass = Meta): | 
|  | x: str = 'something' | 
|  | y: str = 'something else' | 
|  |  | 
|  | def foo(x: int = 10): | 
|  | def bar(y: List[str]): | 
|  | x: str = 'yes' | 
|  | bar() | 
|  |  | 
|  | def dec(func): | 
|  | @wraps(func) | 
|  | def wrapper(*args, **kwargs): | 
|  | return func(*args, **kwargs) | 
|  | return wrapper | 
|  |  | 
|  | u: int | float |