1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
"""Module docstring."""
from __future__ import absolute_import, division
from typing import no_type_check, no_type_check_decorator
from typeguard import typeguard_ignore
@no_type_check_decorator
def dummy_decorator(func):
return func
def type_checked_func(x: int, y: int) -> int:
return x * y
@no_type_check
def non_type_checked_func(x: int, y: str) -> 6:
return 'foo'
@dummy_decorator
def non_type_checked_decorated_func(x: int, y: str) -> 6:
return 'foo'
@typeguard_ignore
def non_typeguard_checked_func(x: int, y: str) -> 6:
return 'foo'
def dynamic_type_checking_func(arg, argtype, return_annotation):
def inner(x: argtype) -> return_annotation:
return str(x)
return inner(arg)
class Metaclass(type):
pass
class DummyClass(metaclass=Metaclass):
def type_checked_method(self, x: int, y: int) -> int:
return x * y
@classmethod
def type_checked_classmethod(cls, x: int, y: int) -> int:
return x * y
@staticmethod
def type_checked_staticmethod(x: int, y: int) -> int:
return x * y
@classmethod
def undocumented_classmethod(cls, x, y):
pass
@staticmethod
def undocumented_staticmethod(x, y):
pass
@property
def unannotated_property(self):
return None
def outer():
class Inner:
pass
def create_inner() -> 'Inner':
return Inner()
return create_inner
class Outer:
class Inner:
pass
def create_inner(self) -> 'Inner':
return Outer.Inner()
@classmethod
def create_inner_classmethod(cls) -> 'Inner':
return Outer.Inner()
@staticmethod
def create_inner_staticmethod() -> 'Inner':
return Outer.Inner()
|