1
2
3"""
4The module for testing variable annotations.
5Empty lines above are for good reason (testing for correct line numbers)
6"""
7
8from typing import Optional
9from functools import wraps
10
11__annotations__[1] = 2
12
13class C:
14
15    x = 5; y: Optional['C'] = None
16
17from typing import Tuple
18x: int = 5; y: str = x; f: Tuple[int, int]
19
20class M(type):
21
22    __annotations__['123'] = 123
23    o: type = object
24
25(pars): bool = True
26
27class D(C):
28    j: str = 'hi'; k: str= 'bye'
29
30from types import new_class
31h_class = new_class('H', (C,))
32j_class = new_class('J')
33
34class F():
35    z: int = 5
36    def __init__(self, x):
37        pass
38
39class Y(F):
40    def __init__(self):
41        super(F, self).__init__(123)
42
43class Meta(type):
44    def __new__(meta, name, bases, namespace):
45        return super().__new__(meta, name, bases, namespace)
46
47class S(metaclass = Meta):
48    x: str = 'something'
49    y: str = 'something else'
50
51def foo(x: int = 10):
52    def bar(y: List[str]):
53        x: str = 'yes'
54    bar()
55
56def dec(func):
57    @wraps(func)
58    def wrapper(*args, **kwargs):
59        return func(*args, **kwargs)
60    return wrapper
61
62u: int | float
63