Mon, 24 Feb 2025 15:43:49 +0100
Adjusted the code to the modified issue codes.
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | |
11090
f5f5f5803935
Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10760
diff
changeset
|
3 | # Copyright (c) 2019 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
4 | # |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | Module implementing a checker for function type annotations. |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
10 | import ast |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
11 | import contextlib |
8198
1c765dc90c21
Code Style Checker: changed code such, that the AST tree is built only once and passed to each checker module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8166
diff
changeset
|
12 | import copy |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
13 | import sys |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9328
diff
changeset
|
14 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
15 | from functools import lru_cache |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
7622
384e2aa5c073
Code Style Checker: continued to implement checker for security related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7610
diff
changeset
|
17 | import AstUtilities |
384e2aa5c073
Code Style Checker: continued to implement checker for security related issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7610
diff
changeset
|
18 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9328
diff
changeset
|
19 | from .AnnotationsCheckerDefaults import AnnotationsCheckerDefaultArgs |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
20 | from .AnnotationsEnums import AnnotationType, ClassDecoratorType, FunctionType |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
21 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | |
8207
d359172d11be
Applied some more code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8204
diff
changeset
|
23 | class AnnotationsChecker: |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | Class implementing a checker for function type annotations. |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
26 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
27 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
28 | Codes = [ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
29 | ## Function Annotations |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
30 | "A-001", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
31 | "A-002", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
32 | "A-003", |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | ## Method Annotations |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
34 | "A-101", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
35 | "A-102", |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | ## Return Annotations |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
37 | "A-201", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
38 | "A-202", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
39 | "A-203", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
40 | "A-204", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
41 | "A-205", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
42 | "A-206", |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
43 | ## Dynamically typed annotations |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
44 | "A-401", |
10058
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
45 | ## Type comments |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
46 | "A-402", |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
47 | ## Annotations Future |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
48 | "A-871", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
49 | "A-872", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
50 | "A-873", |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
51 | ## Annotation Coverage |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
52 | "A-881", |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
53 | ## Annotation Complexity |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
54 | "A-891", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
55 | "A-892", |
10087
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
56 | ## use of typing.Union (PEP 604) |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
57 | "A-901", |
10087
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
58 | ## deprecated 'typing' symbols (PEP 585) |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
59 | "A-911", |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | ] |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
62 | def __init__(self, source, filename, tree, select, ignore, expected, repeat, args): |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
63 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
64 | Constructor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
65 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | @param source source code to be checked |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | @type list of str |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | @param filename name of the source file |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
69 | @type str |
8198
1c765dc90c21
Code Style Checker: changed code such, that the AST tree is built only once and passed to each checker module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8166
diff
changeset
|
70 | @param tree AST tree of the source code |
1c765dc90c21
Code Style Checker: changed code such, that the AST tree is built only once and passed to each checker module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8166
diff
changeset
|
71 | @type ast.Module |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
72 | @param select list of selected codes |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | @type list of str |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | @param ignore list of codes to be ignored |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | @type list of str |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | @param expected list of expected codes |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | @type list of str |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | @param repeat flag indicating to report each occurrence of a code |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | @type bool |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
80 | @param args dictionary of arguments for the annotation checks |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
81 | @type dict |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | self.__select = tuple(select) |
11142
2f0fb22c1d63
Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
84 | self.__ignore = tuple(ignore) |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | self.__expected = expected[:] |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
86 | self.__repeat = repeat |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | self.__filename = filename |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | self.__source = source[:] |
8198
1c765dc90c21
Code Style Checker: changed code such, that the AST tree is built only once and passed to each checker module.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8166
diff
changeset
|
89 | self.__tree = copy.deepcopy(tree) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
90 | self.__args = args |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | # statistics counters |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
93 | self.counters = {} |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
94 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
95 | # collection of detected errors |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
96 | self.errors = [] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
97 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
98 | checkersWithCodes = [ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
99 | ( |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
100 | self.__checkFunctionAnnotations, |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
101 | ( |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
102 | "A-001", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
103 | "A-002", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
104 | "A-003", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
105 | "A-101", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
106 | "A-102", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
107 | "A-201", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
108 | "A-202", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
109 | "A-203", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
110 | "A-204", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
111 | "A-205", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
112 | "A-206", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
113 | "A-401", |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
114 | "A-402", |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
115 | ), |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
116 | ), |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
117 | (self.__checkAnnotationsFuture, ("A-871", "A-872", "A-873")), |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
118 | (self.__checkAnnotationsCoverage, ("A-881",)), |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
119 | (self.__checkAnnotationComplexity, ("A-891", "A-892")), |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
120 | (self.__checkAnnotationPep604, ("A-901",)), |
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
121 | (self.__checkDeprecatedTypingSymbols, ("A-911",)), |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
122 | ] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
123 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
124 | self.__checkers = [] |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
125 | for checker, codes in checkersWithCodes: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
126 | if any(not (code and self.__ignoreCode(code)) for code in codes): |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
127 | self.__checkers.append(checker) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
128 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | def __ignoreCode(self, code): |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
130 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
131 | Private method to check if the message code should be ignored. |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
132 | |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | @param code message code to check for |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | @type str |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | @return flag indicating to ignore the given code |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | @rtype bool |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
137 | """ |
11145
d328a7b74fd8
Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11142
diff
changeset
|
138 | return code in self.__ignore or ( |
d328a7b74fd8
Corrected some code formatting issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11142
diff
changeset
|
139 | code.startswith(self.__ignore) and not code.startswith(self.__select) |
11142
2f0fb22c1d63
Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11090
diff
changeset
|
140 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
141 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
142 | def __error(self, lineNumber, offset, code, *args): |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
143 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
144 | Private method to record an issue. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
145 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
146 | @param lineNumber line number of the issue |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
147 | @type int |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
148 | @param offset position within line of the issue |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
149 | @type int |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
150 | @param code message code |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | @type str |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
152 | @param args arguments for the message |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | @type list |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | if self.__ignoreCode(code): |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
157 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
158 | if code in self.counters: |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | self.counters[code] += 1 |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | else: |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
161 | self.counters[code] = 1 |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
162 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
163 | # Don't care about expected codes |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
164 | if code in self.__expected: |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
165 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
166 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | if code and (self.counters[code] == 1 or self.__repeat): |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | # record the issue with one based line number |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | self.errors.append( |
7610
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
170 | { |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
171 | "file": self.__filename, |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
172 | "line": lineNumber + 1, |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
173 | "offset": offset, |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
174 | "code": code, |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
175 | "args": args, |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
176 | } |
df7025fe26a3
Code Style Checker: reworked the API between frontend and backend to get some more flexibility for the future.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7360
diff
changeset
|
177 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
178 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
179 | def run(self): |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
180 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
181 | Public method to check the given source against annotation issues. |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
182 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
183 | if not self.__filename: |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
184 | # don't do anything, if essential data is missing |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
185 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
186 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
187 | if not self.__checkers: |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
188 | # don't do anything, if no codes were selected |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
189 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
190 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
191 | for check in self.__checkers: |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
192 | check() |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
193 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
194 | ####################################################################### |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
195 | ## Annotations |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
196 | ## |
10754
6faecb62f3a4
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10753
diff
changeset
|
197 | ## adapted from: flake8-annotations v3.1.1 |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
198 | ####################################################################### |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
199 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
200 | def __checkFunctionAnnotations(self): |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
201 | """ |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
202 | Private method to check for function annotation issues. |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
203 | """ |
9482
a2bc06a54d9d
Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
204 | from .AnnotationsFunctionVisitor import FunctionVisitor |
a2bc06a54d9d
Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
205 | |
10753
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
206 | # Type ignores are provided by ast at the module level & we'll need them later |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
207 | # when deciding whether or not to emit errors for a given function |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
208 | typeIgnoreLineno = {ti.lineno for ti in self.__tree.type_ignores} |
10760 | 209 | hasMypyIgnoreErrors = any( |
210 | "# mypy: ignore-errors" in line for line in self.__source[:5] | |
10753
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
211 | ) |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
212 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
213 | suppressNoneReturning = self.__args.get( |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
214 | "SuppressNoneReturning", |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
215 | AnnotationsCheckerDefaultArgs["SuppressNoneReturning"], |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
216 | ) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
217 | suppressDummyArgs = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
218 | "SuppressDummyArgs", AnnotationsCheckerDefaultArgs["SuppressDummyArgs"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
219 | ) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
220 | allowUntypedDefs = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
221 | "AllowUntypedDefs", AnnotationsCheckerDefaultArgs["AllowUntypedDefs"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
222 | ) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
223 | allowUntypedNested = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
224 | "AllowUntypedNested", AnnotationsCheckerDefaultArgs["AllowUntypedNested"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
225 | ) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
226 | mypyInitReturn = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
227 | "MypyInitReturn", AnnotationsCheckerDefaultArgs["MypyInitReturn"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
228 | ) |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
229 | allowStarArgAny = self.__args.get( |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
230 | "AllowStarArgAny", AnnotationsCheckerDefaultArgs["AllowStarArgAny"] |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
231 | ) |
10753
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
232 | respectTypeIgnore = self.__args.get( |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
233 | "RespectTypeIgnore", AnnotationsCheckerDefaultArgs["RespectTypeIgnore"] |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
234 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
235 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
236 | # Store decorator lists as sets for easier lookup |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
237 | dispatchDecorators = set( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
238 | self.__args.get( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
239 | "DispatchDecorators", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
240 | AnnotationsCheckerDefaultArgs["DispatchDecorators"], |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
241 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
242 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
243 | overloadDecorators = set( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
244 | self.__args.get( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
245 | "OverloadDecorators", |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
246 | AnnotationsCheckerDefaultArgs["OverloadDecorators"], |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
247 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
248 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
249 | |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
250 | visitor = FunctionVisitor(self.__source) |
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
251 | visitor.visit(self.__tree) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
252 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
253 | # Keep track of the last encountered function decorated by |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
254 | # `typing.overload`, if any. Per the `typing` module documentation, |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
255 | # a series of overload-decorated definitions must be followed by |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
256 | # exactly one non-overload-decorated definition of the same function. |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
257 | lastOverloadDecoratedFunctionName = None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
258 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
259 | # Iterate over the arguments with missing type hints, by function. |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
260 | for function in visitor.functionDefinitions: |
10058
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
261 | if function.hasTypeComment: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
262 | self.__error(function.lineno - 1, function.col_offset, "A-402") |
10058
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
263 | |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
264 | if function.isDynamicallyTyped() and ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
265 | allowUntypedDefs or (function.isNested and allowUntypedNested) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
266 | ): |
8246
e4b95b0ebd31
Code Style Checker: added configuration options for the reworked the type annotations checker to the code style checker dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8244
diff
changeset
|
267 | # Skip recording errors from dynamically typed functions |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
268 | # or nested functions |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
269 | continue |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
270 | |
8246
e4b95b0ebd31
Code Style Checker: added configuration options for the reworked the type annotations checker to the code style checker dialog.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8244
diff
changeset
|
271 | # Skip recording errors for configured dispatch functions, such as |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
272 | # (by default) `functools.singledispatch` and |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
273 | # `functools.singledispatchmethod` |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
274 | if function.hasDecorator(dispatchDecorators): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
275 | continue |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
276 | |
10058
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
277 | # Iterate over the annotated args to look for opinionated warnings |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
278 | annotatedArgs = function.getAnnotatedArguments() |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
279 | for arg in annotatedArgs: |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
280 | if arg.isDynamicallyTyped: |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
281 | if allowStarArgAny and arg.annotationType in { |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
282 | AnnotationType.VARARG, |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
283 | AnnotationType.KWARG, |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
284 | }: |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
285 | continue |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
286 | |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
287 | self.__error(function.lineno - 1, function.col_offset, "A-401") |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
288 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
289 | # Before we iterate over the function's missing annotations, check |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
290 | # to see if it's the closing function def in a series of |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
291 | # `typing.overload` decorated functions. |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
292 | if lastOverloadDecoratedFunctionName == function.name: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
293 | continue |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
294 | |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
295 | # If it's not, and it is overload decorated, store it for the next |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
296 | # iteration |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
297 | if function.hasDecorator(overloadDecorators): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
298 | lastOverloadDecoratedFunctionName = function.name |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
299 | |
10753
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
300 | # Optionally respect a 'type: ignore' comment |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
301 | # These are considered at the function level & tags are not considered |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
302 | if respectTypeIgnore: |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
303 | if function.lineno in typeIgnoreLineno: |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
304 | # function-level ignore |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
305 | continue |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
306 | elif ( |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
307 | any(lineno in typeIgnoreLineno for lineno in range(1, 6)) |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
308 | or hasMypyIgnoreErrors |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
309 | ): |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
310 | # module-level ignore |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
311 | # lineno from ast is 1-indexed |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
312 | # check first five lines |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
313 | continue |
031cfa81992a
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
314 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
315 | # Record explicit errors for arguments that are missing annotations |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
316 | for arg in function.getMissedAnnotations(): |
10058
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
317 | # Check for type comments here since we're not considering them as |
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
318 | # typed args |
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
319 | if arg.hasTypeComment: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
320 | self.__error(arg.lineno - 1, arg.col_offset, "A-402") |
10058
5d965939ab85
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10050
diff
changeset
|
321 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
322 | if arg.argname == "return": |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
323 | # return annotations have multiple possible short-circuit |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
324 | # paths |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
325 | if ( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
326 | suppressNoneReturning |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
327 | and not arg.hasTypeAnnotation |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
328 | and function.hasOnlyNoneReturns |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
329 | ): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
330 | # Skip recording return errors if the function has only |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
331 | # `None` returns. This includes the case of no returns. |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
332 | continue |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
333 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
334 | if ( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
335 | mypyInitReturn |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
336 | and function.isClassMethod |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
337 | and function.name == "__init__" |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
338 | and annotatedArgs |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
339 | ): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
340 | # Skip recording return errors for `__init__` if at |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
341 | # least one argument is annotated |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
342 | continue |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
343 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
344 | # If the `suppressDummyArgs` flag is `True`, skip recording |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
345 | # errors for any arguments named `_` |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
346 | if arg.argname == "_" and suppressDummyArgs: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
347 | continue |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
348 | |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
349 | self.__classifyError(function, arg) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
350 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
351 | def __classifyError(self, function, arg): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
352 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
353 | Private method to classify the missing type annotation based on the |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
354 | Function & Argument metadata. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
355 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
356 | For the currently defined rules & program flow, the assumption can be |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
357 | made that an argument passed to this method will match a linting error, |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
358 | and will only match a single linting error |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
359 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
360 | This function provides an initial classificaton, then passes relevant |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
361 | attributes to cached helper function(s). |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
362 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
363 | @param function reference to the Function object |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
364 | @type Function |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
365 | @param arg reference to the Argument object |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
366 | @type Argument |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
367 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
368 | # Check for return type |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
369 | # All return "arguments" have an explicitly defined name "return" |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
370 | if arg.argname == "return": |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
371 | errorCode = self.__returnErrorClassifier( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
372 | function.isClassMethod, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
373 | function.classDecoratorType, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
374 | function.functionType, |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
375 | ) |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
376 | else: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
377 | # Otherwise, classify function argument error |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
378 | isFirstArg = arg == function.args[0] |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
379 | errorCode = self.__argumentErrorClassifier( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
380 | function.isClassMethod, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
381 | isFirstArg, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
382 | function.classDecoratorType, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
383 | arg.annotationType, |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
384 | ) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
385 | |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
386 | if errorCode in ("A-001", "A-002", "A-003"): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
387 | self.__error(arg.lineno - 1, arg.col_offset, errorCode, arg.argname) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
388 | else: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
389 | self.__error(arg.lineno - 1, arg.col_offset, errorCode) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
390 | |
11148
15e30f0c76a8
Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11147
diff
changeset
|
391 | @lru_cache() # __IGNORE_WARNING_M-519__ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
392 | def __returnErrorClassifier(self, isClassMethod, classDecoratorType, functionType): |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
393 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
394 | Private method to classify a return type annotation issue. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
395 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
396 | @param isClassMethod flag indicating a classmethod type function |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
397 | @type bool |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
398 | @param classDecoratorType type of class decorator |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
399 | @type ClassDecoratorType |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
400 | @param functionType type of function |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
401 | @type FunctionType |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
402 | @return error code |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
403 | @rtype str |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
404 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
405 | # Decorated class methods (@classmethod, @staticmethod) have a higher |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
406 | # priority than the rest |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
407 | if isClassMethod: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
408 | if classDecoratorType == ClassDecoratorType.CLASSMETHOD: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
409 | return "A-206" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
410 | elif classDecoratorType == ClassDecoratorType.STATICMETHOD: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
411 | return "A-205" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
412 | |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
413 | if functionType == FunctionType.SPECIAL: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
414 | return "A-204" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
415 | elif functionType == FunctionType.PRIVATE: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
416 | return "A-203" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
417 | elif functionType == FunctionType.PROTECTED: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
418 | return "A-202" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
419 | else: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
420 | return "A-201" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
421 | |
11148
15e30f0c76a8
Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11147
diff
changeset
|
422 | @lru_cache() # __IGNORE_WARNING_M-519__ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
423 | def __argumentErrorClassifier( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
424 | self, isClassMethod, isFirstArg, classDecoratorType, annotationType |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
425 | ): |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
426 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
427 | Private method to classify an argument type annotation issue. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
428 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
429 | @param isClassMethod flag indicating a classmethod type function |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
430 | @type bool |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
431 | @param isFirstArg flag indicating the first argument |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
432 | @type bool |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
433 | @param classDecoratorType type of class decorator |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
434 | @type enums.ClassDecoratorType |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
435 | @param annotationType type of annotation |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
436 | @type AnnotationType |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
437 | @return error code |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
438 | @rtype str |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
439 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
440 | # Check for regular class methods and @classmethod, @staticmethod is |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
441 | # deferred to final check |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
442 | if isClassMethod and isFirstArg: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
443 | # The first function argument here would be an instance of self or |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
444 | # class |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
445 | if classDecoratorType == ClassDecoratorType.CLASSMETHOD: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
446 | return "A-102" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
447 | elif classDecoratorType != ClassDecoratorType.STATICMETHOD: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
448 | # Regular class method |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
449 | return "A-101" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
450 | |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
451 | # Check for remaining codes |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
452 | if annotationType == AnnotationType.KWARG: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
453 | return "A-003" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
454 | elif annotationType == AnnotationType.VARARG: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
455 | return "A-002" |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
456 | else: |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
457 | # Combine PosOnlyArgs, Args, and KwOnlyArgs |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
458 | return "A-001" |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
459 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
460 | ####################################################################### |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
461 | ## Annotations Coverage |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
462 | ## |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
463 | ## adapted from: flake8-annotations-coverage v0.0.6 |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
464 | ####################################################################### |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
465 | |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
466 | def __checkAnnotationsCoverage(self): |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
467 | """ |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
468 | Private method to check for function annotation coverage. |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
469 | """ |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
470 | minAnnotationsCoverage = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
471 | "MinimumCoverage", AnnotationsCheckerDefaultArgs["MinimumCoverage"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
472 | ) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
473 | if minAnnotationsCoverage == 0: |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
474 | # 0 means it is switched off |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
475 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
476 | |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
477 | functionDefs = [ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
478 | f |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
479 | for f in ast.walk(self.__tree) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
480 | if isinstance(f, (ast.AsyncFunctionDef, ast.FunctionDef)) |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
481 | ] |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
482 | if not functionDefs: |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
483 | # no functions/methods at all |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
484 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
485 | |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
486 | functionDefAnnotationsInfo = [ |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
487 | self.__hasTypeAnnotations(f) for f in functionDefs |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
488 | ] |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
489 | if not bool(functionDefAnnotationsInfo): |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
490 | return |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
491 | |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
492 | annotationsCoverage = int( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
493 | len(list(filter(None, functionDefAnnotationsInfo))) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
494 | / len(functionDefAnnotationsInfo) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
495 | * 100 |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
496 | ) |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
497 | if annotationsCoverage < minAnnotationsCoverage: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
498 | self.__error(0, 0, "A-881", annotationsCoverage) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
499 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
500 | def __hasTypeAnnotations(self, funcNode): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
501 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
502 | Private method to check for type annotations. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
503 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
504 | @param funcNode reference to the function definition node to be checked |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
505 | @type ast.AsyncFunctionDef or ast.FunctionDef |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
506 | @return flag indicating the presence of type annotations |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
507 | @rtype bool |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
508 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
509 | hasReturnAnnotation = funcNode.returns is not None |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
510 | hasArgsAnnotations = any( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
511 | a for a in funcNode.args.args if a.annotation is not None |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
512 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
513 | hasKwargsAnnotations = ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
514 | funcNode.args |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
515 | and funcNode.args.kwarg |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
516 | and funcNode.args.kwarg.annotation is not None |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
517 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
518 | hasKwonlyargsAnnotations = any( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
519 | a for a in funcNode.args.kwonlyargs if a.annotation is not None |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
520 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
521 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
522 | return any( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
523 | ( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
524 | hasReturnAnnotation, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
525 | hasArgsAnnotations, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
526 | hasKwargsAnnotations, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
527 | hasKwonlyargsAnnotations, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
528 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
529 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
530 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
531 | ####################################################################### |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
532 | ## Annotations Complexity |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
533 | ## |
10184
af82cb6e0298
Updated some codestyle checkers for imports and too complex annotations.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10169
diff
changeset
|
534 | ## adapted from: flake8-annotations-complexity v0.0.8 |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
535 | ####################################################################### |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
536 | |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
537 | def __checkAnnotationComplexity(self): |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
538 | """ |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
539 | Private method to check the type annotation complexity. |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
540 | """ |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
541 | maxAnnotationComplexity = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
542 | "MaximumComplexity", AnnotationsCheckerDefaultArgs["MaximumComplexity"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
543 | ) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
544 | maxAnnotationLength = self.__args.get( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
545 | "MaximumLength", AnnotationsCheckerDefaultArgs["MaximumLength"] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
546 | ) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
547 | typeAnnotations = [] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
548 | |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
549 | functionDefs = [ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
550 | f |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
551 | for f in ast.walk(self.__tree) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
552 | if isinstance(f, (ast.AsyncFunctionDef, ast.FunctionDef)) |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
553 | ] |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
554 | for functionDef in functionDefs: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
555 | typeAnnotations += list( |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
556 | filter(None, (a.annotation for a in functionDef.args.args)) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
557 | ) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
558 | if functionDef.returns: |
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
559 | typeAnnotations.append(functionDef.returns) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
560 | typeAnnotations += [ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
561 | a.annotation |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
562 | for a in ast.walk(self.__tree) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
563 | if isinstance(a, ast.AnnAssign) and a.annotation |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
564 | ] |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
565 | for annotation in typeAnnotations: |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
566 | complexity = self.__getAnnotationComplexity(annotation) |
7247
bf9379f964f3
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7246
diff
changeset
|
567 | if complexity > maxAnnotationComplexity: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
568 | self.__error( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
569 | annotation.lineno - 1, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
570 | annotation.col_offset, |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
571 | "A-891", |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
572 | complexity, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
573 | maxAnnotationComplexity, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
574 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
575 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
576 | annotationLength = self.__getAnnotationLength(annotation) |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
577 | if annotationLength > maxAnnotationLength: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
578 | self.__error( |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
579 | annotation.lineno - 1, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
580 | annotation.col_offset, |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
581 | "A-892", |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
582 | annotationLength, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
583 | maxAnnotationLength, |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
584 | ) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
585 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
586 | def __getAnnotationComplexity(self, annotationNode, defaultComplexity=1): |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
587 | """ |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
588 | Private method to determine the annotation complexity. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
589 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
590 | @param annotationNode reference to the node to determine the annotation |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
591 | complexity for |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
592 | @type ast.AST |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
593 | @param defaultComplexity default complexity value |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
594 | @type int |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
595 | @return annotation complexity |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
596 | @rtype = int |
7246
c32a350d2414
Code Style Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
597 | """ |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
598 | if AstUtilities.isString(annotationNode): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
599 | try: |
10169
0f70a4ef4592
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10119
diff
changeset
|
600 | annotationNode = ast.parse(annotationNode.value).body[0].value |
10050
3750abc45d5e
Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10046
diff
changeset
|
601 | except (IndexError, SyntaxError): |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
602 | return defaultComplexity |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
603 | |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
604 | complexity = defaultComplexity |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
605 | if isinstance(annotationNode, ast.Subscript): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
606 | if sys.version_info >= (3, 9): |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
607 | complexity = defaultComplexity + self.__getAnnotationComplexity( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
608 | annotationNode.slice |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
609 | ) |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
610 | else: |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
611 | complexity = defaultComplexity + self.__getAnnotationComplexity( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
612 | annotationNode.slice.value |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
613 | ) |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
614 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
615 | if isinstance(annotationNode, ast.Tuple): |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
616 | complexity = max( |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
617 | (self.__getAnnotationComplexity(n) for n in annotationNode.elts), |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
618 | default=defaultComplexity, |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
619 | ) |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
620 | |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
621 | return complexity |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
622 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
623 | def __getAnnotationLength(self, annotationNode): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
624 | """ |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
625 | Private method to determine the annotation length. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
626 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
627 | @param annotationNode reference to the node to determine the annotation |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
628 | length for |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
629 | @type ast.AST |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
630 | @return annotation length |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
631 | @rtype = int |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
632 | """ |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
633 | annotationLength = 0 |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
634 | if AstUtilities.isString(annotationNode): |
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
635 | try: |
10169
0f70a4ef4592
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10119
diff
changeset
|
636 | annotationNode = ast.parse(annotationNode.value).body[0].value |
10050
3750abc45d5e
Corrected some code style issues detected by the extended checkers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10046
diff
changeset
|
637 | except (IndexError, SyntaxError): |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
638 | return annotationLength |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
639 | |
8244
ed8cb108b27b
Code Style Checker: reworked the type annotations checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8236
diff
changeset
|
640 | if isinstance(annotationNode, ast.Subscript): |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
641 | with contextlib.suppress(AttributeError): |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
642 | annotationLength = ( |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
643 | len(annotationNode.slice.elts) |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
644 | if sys.version_info >= (3, 9) |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
645 | else len(annotationNode.slice.value.elts) |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
646 | ) |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
647 | |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
648 | return annotationLength |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
649 | |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
650 | ####################################################################### |
10086
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
651 | ## 'from __future__ import annotations' check |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
652 | ## |
10043
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
653 | ## adapted from: flake8-future-annotations v1.1.0 |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
654 | ####################################################################### |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
655 | |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
656 | def __checkAnnotationsFuture(self): |
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
657 | """ |
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
658 | Private method to check the use of __future__ and typing imports. |
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
659 | """ |
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
660 | from .AnnotationsFutureVisitor import AnnotationsFutureVisitor |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
661 | |
10087
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
662 | if sys.version_info >= (3, 9): |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
663 | # the __future__ typing import is only needed before Python 3.9 |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
664 | return |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
665 | |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
666 | forceFutureAnnotations = self.__args.get( |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
667 | "ForceFutureAnnotations", |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
668 | AnnotationsCheckerDefaultArgs["ForceFutureAnnotations"], |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
669 | ) |
10043
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
670 | checkFutureAnnotations = self.__args.get( |
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
671 | "CheckFutureAnnotations", |
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
672 | AnnotationsCheckerDefaultArgs["CheckFutureAnnotations"], |
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
673 | ) |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
674 | |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
675 | visitor = AnnotationsFutureVisitor() |
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
676 | visitor.visit(self.__tree) |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
677 | |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
678 | if visitor.importsFutureAnnotations(): |
8773
3dd81b827455
Extended the annotations checker to check for missing 'from __future__ import annotations'.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
679 | return |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
680 | |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
681 | if visitor.hasTypingImports(): |
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
682 | imports = ", ".join(visitor.getTypingImports()) |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
683 | self.__error(0, 0, "A-871", imports) |
9276
e6748a5e24b9
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9274
diff
changeset
|
684 | elif forceFutureAnnotations: |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
685 | self.__error(0, 0, "A-872") |
10043
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
686 | |
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
687 | if checkFutureAnnotations and visitor.hasSimplifiedTypes(): |
f1427d95cfde
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
688 | simplifiedTypes = ", ".join(sorted(visitor.getSimplifiedTypes())) |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
689 | self.__error(0, 0, "A-873", simplifiedTypes) |
10086
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
690 | |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
691 | ####################################################################### |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
692 | ## check use of 'typing.Union' (see PEP 604) |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
693 | ## |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
694 | ## adapted from: flake8-pep604 v1.1.0 |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
695 | ####################################################################### |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
696 | |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
697 | def __checkAnnotationPep604(self): |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
698 | """ |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
699 | Private method to check the use of typing.Union. |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
700 | """ |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
701 | from .AnnotationsUnionVisitor import AnnotationsUnionVisitor |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
702 | |
10087
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
703 | if sys.version_info < (3, 10): |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
704 | # the union operator was introduced with Python 3.10 |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
705 | return |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
706 | |
10086
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
707 | visitor = AnnotationsUnionVisitor() |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
708 | visitor.visit(self.__tree) |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
709 | |
c8854a6300d1
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10058
diff
changeset
|
710 | for node in visitor.getIssues(): |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
711 | self.__error(node.lineno - 1, node.col_offset, "A-901") |
10087
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
712 | |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
713 | ####################################################################### |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
714 | ## check use of 'typing.Union' (see PEP 604) |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
715 | ## |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
716 | ## adapted from: flake8-pep585 v0.1.7 |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
717 | ####################################################################### |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
718 | |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
719 | def __checkDeprecatedTypingSymbols(self): |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
720 | """ |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
721 | Private method to check the use of deprecated 'typing' symbols. |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
722 | """ |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
723 | from .AnnotationsDeprecationsVisitor import ( |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
724 | AnnotationsDeprecationsVisitor, |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
725 | AnnotationsFutureImportVisitor, |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
726 | ) |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
727 | |
10119
64147a7e6393
Removed support for Python 3.7 because that is EOL.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10087
diff
changeset
|
728 | if sys.version_info < (3, 9): |
10087
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
729 | # py 3.8: only if activated via __future__ import |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
730 | visitor = AnnotationsFutureImportVisitor() |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
731 | visitor.visit(self.__tree) |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
732 | if not visitor.futureImportPresent(): |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
733 | return |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
734 | |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
735 | visitor = AnnotationsDeprecationsVisitor( |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
736 | self.__args.get( |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
737 | "ExemptedTypingSymbols", |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
738 | AnnotationsCheckerDefaultArgs["ExemptedTypingSymbols"], |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
739 | ) |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
740 | ) |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
741 | visitor.visit(self.__tree) |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
742 | |
65b7354b0d4c
Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10086
diff
changeset
|
743 | for node, (name, replacement) in visitor.getIssues(): |
11147
dee6e106b4d3
Modified the code style checker such, that the issue category and issue number are separated by a '-' to make up the issue code (e.g E-901).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
11145
diff
changeset
|
744 | self.__error(node.lineno - 1, node.col_offset, "A-911", name, replacement) |