src/eric7/Plugins/CheckerPlugins/CodeStyleChecker/Naming/NamingStyleChecker.py

Sat, 26 Apr 2025 12:34:32 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Sat, 26 Apr 2025 12:34:32 +0200
branch
eric7
changeset 11240
c48c615c04a3
parent 11163
f6c0a18254d6
permissions
-rw-r--r--

MicroPython
- Added a configuration option to disable the support for the no longer produced Pimoroni Pico Wireless Pack.

2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
1 # -*- coding: utf-8 -*-
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
2
11090
f5f5f5803935 Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10683
diff changeset
3 # Copyright (c) 2013 - 2025 Detlev Offenbach <detlev@die-offenbachs.de>
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
4 #
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
5
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
6 """
2984
031cceaa8b01 Continued changing the names of the various code style checkers to make them more appropriate to the broadened scope.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2982
diff changeset
7 Module implementing a checker for naming conventions.
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
8 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
9
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
10 import ast
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
11 import collections
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
12 import functools
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
13 import os
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
14
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
15 try:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
16 ast.AsyncFunctionDef # __IGNORE_EXCEPTION__
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
17 except AttributeError:
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
18 ast.AsyncFunctionDef = ast.FunctionDef
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
19
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
20 from CodeStyleTopicChecker import CodeStyleTopicChecker
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
21
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
22
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
23 class NamingStyleChecker(CodeStyleTopicChecker):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
24 """
2984
031cceaa8b01 Continued changing the names of the various code style checkers to make them more appropriate to the broadened scope.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2982
diff changeset
25 Class implementing a checker for naming conventions.
2894
8e4264045fc9 Started implementing a PEP-8 naming 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
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
28 Codes = [
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
29 "N-801",
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 "N-802",
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 "N-803",
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 "N-804",
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
33 "N-805",
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 "N-806",
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 "N-807",
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
36 "N-808",
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 "N-809",
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 "N-811",
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 "N-812",
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 "N-813",
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 "N-814",
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 "N-815",
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
43 "N-818",
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 "N-821",
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
45 "N-822",
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 "N-823",
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
47 "N-831",
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
48 ]
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
49 Category = "N"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
50
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
51 def __init__(self, source, filename, tree, select, ignore, expected, repeat, args):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
52 """
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
53 Constructor
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
54
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
55 @param source source code to be checked
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
56 @type list of str
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
57 @param filename name of the source file
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
58 @type str
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
59 @param tree AST tree of the source code
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
60 @type ast.Module
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
61 @param select list of selected codes
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
62 @type list of str
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
63 @param ignore list of codes to be ignored
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
64 @type list of str
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
65 @param expected list of expected codes
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
66 @type list of str
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
67 @param repeat flag indicating to report each occurrence of a code
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
68 @type bool
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
69 @param args dictionary of arguments for the various checks
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
70 @type dict
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
71 """
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
72 super().__init__(
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
73 NamingStyleChecker.Category,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
74 source,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
75 filename,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
76 tree,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
77 select,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
78 ignore,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
79 expected,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
80 repeat,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
81 args,
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
82 )
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
83
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
84 self.__parents = collections.deque()
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
85
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
86 self.__checkersWithCodes = {
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
87 "classdef": [
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
88 (self.__checkClassName, ("N-801", "N-818")),
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
89 (self.__checkNameToBeAvoided, ("N-831",)),
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
90 ],
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
91 "module": [
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
92 (self.__checkModule, ("N-807", "N-808")),
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
93 ],
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
94 }
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
95 for name in ("functiondef", "asyncfunctiondef"):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
96 self.__checkersWithCodes[name] = [
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
97 (self.__checkFunctionName, ("N-802", "N-809")),
11148
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11147
diff changeset
98 (
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11147
diff changeset
99 self.__checkFunctionArgumentNames,
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11147
diff changeset
100 ("N-803", "N-804", "N-805", "N-806"),
15e30f0c76a8 Adjusted the code to the modified issue codes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11147
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 (self.__checkNameToBeAvoided, ("N-831",)),
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
103 ]
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
104 for name in ("assign", "namedexpr", "annassign"):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
105 self.__checkersWithCodes[name] = [
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
106 (self.__checkVariableNames, ("N-821",)),
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 (self.__checkNameToBeAvoided, ("N-831",)),
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
108 ]
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
109 for name in (
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
110 "with",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
111 "asyncwith",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
112 "for",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
113 "asyncfor",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
114 "excepthandler",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
115 "generatorexp",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
116 "listcomp",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
117 "dictcomp",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
118 "setcomp",
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
119 ):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
120 self.__checkersWithCodes[name] = [
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
121 (self.__checkVariableNames, ("N-821",)),
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
122 ]
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
123 for name in ("import", "importfrom"):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
124 self.__checkersWithCodes[name] = [
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
125 (self.__checkImportAs, ("N-811", "N-812", "N-813", "N-814", "N-815")),
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
126 ]
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
127
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
128 self.__checkers = collections.defaultdict(list)
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
129 for key, checkers in self.__checkersWithCodes.items():
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
130 for checker, codes in checkers:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
131 if any(not (code and self._ignoreCode(code)) for code in codes):
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
132 self.__checkers[key].append(checker)
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
133
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
134 def addErrorFromNode(self, node, msgCode):
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
135 """
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
136 Public method to build the error information.
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
137
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
138 @param node AST node to report an error for
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
139 @type ast.AST
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
140 @param msgCode message code
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
141 @type str
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
142 """
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
143 if self._ignoreCode(msgCode):
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
144 return
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
145
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
146 if isinstance(node, ast.Module):
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
147 lineno = 0
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
148 offset = 0
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
149 else:
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
150 lineno = node.lineno
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
151 offset = node.col_offset
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
152 if isinstance(node, ast.ClassDef):
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
153 lineno += len(node.decorator_list)
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
154 offset += 6
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
155 elif isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
156 lineno += len(node.decorator_list)
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
157 offset += 4
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
158
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
159 self.addError(lineno, offset, msgCode, [])
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
160
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
161 def run(self):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
162 """
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
163 Public method to execute the relevant checks.
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
164 """
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
165 if not self.filename:
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
166 # don't do anything, if essential data is missing
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
167 return
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
168
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
169 if not self.__checkers:
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
170 # don't do anything, if no codes were selected
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
171 return
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
172
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
173 self.__visitTree(self.tree)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
174
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
175 def __visitTree(self, node):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
176 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
177 Private method to scan the given AST tree.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
178
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
179 @param node AST tree node to scan
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
180 @type ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
181 """
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
182 self.__visitNode(node)
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
183 self.__parents.append(node)
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
184 for child in ast.iter_child_nodes(node):
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
185 self.__visitTree(child)
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
186 self.__parents.pop()
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
187
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
188 def __visitNode(self, node):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
189 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
190 Private method to inspect the given AST node.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
191
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
192 @param node AST tree node to inspect
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
193 @type ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
194 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
195 if isinstance(node, ast.ClassDef):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
196 self.__tagClassFunctions(node)
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
197 elif isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
198 self.__findGlobalDefs(node)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
199
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
200 checkerName = node.__class__.__name__.lower()
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
201 if checkerName in self.__checkers:
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
202 for checker in self.__checkers[checkerName]:
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
203 checker(node, self.__parents)
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
204
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
205 def __tagClassFunctions(self, classNode):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
206 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
207 Private method to tag functions if they are methods, class methods or
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
208 static methods.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
209
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
210 @param classNode AST tree node to tag
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
211 @type ast.ClassDef
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
212 """
7249
0bf517e60f54 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
213 # try to find all 'old style decorators'
0bf517e60f54 Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 6942
diff changeset
214 # like m = staticmethod(m)
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
215 lateDecoration = {}
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
216 for node in ast.iter_child_nodes(classNode):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
217 if not (
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
218 isinstance(node, ast.Assign)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
219 and isinstance(node.value, ast.Call)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
220 and isinstance(node.value.func, ast.Name)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
221 ):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
222 continue
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
223 funcName = node.value.func.id
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
224 if funcName in ("classmethod", "staticmethod"):
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
225 meth = len(node.value.args) == 1 and node.value.args[0]
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
226 if isinstance(meth, ast.Name):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
227 lateDecoration[meth.id] = funcName
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
228
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
229 # iterate over all functions and tag them
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
230 for node in ast.iter_child_nodes(classNode):
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
231 if not isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
232 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
233
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
234 node.function_type = "method"
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
235 if node.name == "__new__":
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
236 node.function_type = "classmethod"
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
237
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
238 if node.name in lateDecoration:
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
239 node.function_type = lateDecoration[node.name]
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
240 elif node.decorator_list:
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
241 names = [
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
242 d.id
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
243 for d in node.decorator_list
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
244 if isinstance(d, ast.Name)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
245 and d.id in ("classmethod", "staticmethod")
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
246 ]
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
247 if names:
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
248 node.function_type = names[0]
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
249
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
250 def __findGlobalDefs(self, functionNode):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
251 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
252 Private method amend a node with global definitions information.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
253
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
254 @param functionNode AST tree node to amend
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
255 @type ast.FunctionDef or ast.AsyncFunctionDef
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
256 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
257 globalNames = set()
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
258 nodesToCheck = collections.deque(ast.iter_child_nodes(functionNode))
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
259 while nodesToCheck:
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
260 node = nodesToCheck.pop()
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
261 if isinstance(node, ast.Global):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
262 globalNames.update(node.names)
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
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 not isinstance(
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
265 node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef)
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
266 ):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
267 nodesToCheck.extend(ast.iter_child_nodes(node))
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
268 functionNode.global_names = globalNames
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
269
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
270 def __getArgNames(self, node):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
271 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
272 Private method to get the argument names of a function node.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
273
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
274 @param node AST node to extract arguments names from
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
275 @type ast.FunctionDef or ast.AsyncFunctionDef
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
276 @return list of argument names
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
277 @rtype list of str
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
278 """
7637
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
279 posArgs = [arg.arg for arg in node.args.args]
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
280 kwOnly = [arg.arg for arg in node.args.kwonlyargs]
c878e8255972 Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7360
diff changeset
281 return posArgs + kwOnly
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
282
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
283 def __isNameToBeAvoided(self, name):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
284 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
285 Private method to check, if the given name should be avoided.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
286
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
287 @param name name to be checked
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
288 @type str
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
289 @return flag indicating to avoid it
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
290 @rtype bool
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
291 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
292 return name in ("l", "O", "I")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
293
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
294 def __checkNameToBeAvoided(self, node, _parents):
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
295 """
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
296 Private class to check the given node for a name to be avoided (N831).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
297
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
298 @param node AST note to check
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
299 @type ast.Ast
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
300 @param _parents list of parent nodes (unused)
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
301 @type list of ast.AST
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
302 """
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
303 if isinstance(node, (ast.ClassDef, ast.FunctionDef, ast.AsyncFunctionDef)):
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
304 name = node.name
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
305 if self.__isNameToBeAvoided(name):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
306 self.addErrorFromNode(node, "N-831")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
307
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
308 elif isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef)):
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
309 argNames = self.__getArgNames(node)
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
310 for arg in argNames:
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
311 if self.__isNameToBeAvoided(arg):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
312 self.addErrorFromNode(node, "N-831")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
313
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
314 elif isinstance(node, (ast.Assign, ast.NamedExpr, ast.AnnAssign)):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
315 if isinstance(node, ast.Assign):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
316 targets = node.targets
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
317 else:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
318 targets = [node.target]
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
319 for target in targets:
5589
ad8f37c6a306 Fixed code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5585
diff changeset
320 if isinstance(target, ast.Name):
5597
3d88d53f8c2b Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5589
diff changeset
321 name = target.id
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
322 if bool(name) and self.__isNameToBeAvoided(name):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
323 self.addErrorFromNode(node, "N-831")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
324
5589
ad8f37c6a306 Fixed code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5585
diff changeset
325 elif isinstance(target, (ast.Tuple, ast.List)):
ad8f37c6a306 Fixed code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5585
diff changeset
326 for element in target.elts:
ad8f37c6a306 Fixed code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5585
diff changeset
327 if isinstance(element, ast.Name):
5597
3d88d53f8c2b Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 5589
diff changeset
328 name = element.id
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
329 if bool(name) and self.__isNameToBeAvoided(name):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
330 self.addErrorFromNode(node, "N-831")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
331
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
332 def __getClassdef(self, name, parents):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
333 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
334 Private method to extract the class definition.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
335
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
336 @param name name of the class
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
337 @type str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
338 @param parents list of parent nodes
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
339 @type list of ast.AST
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
340 @return node containing the class definition
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
341 @rtype ast.ClassDef
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
342 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
343 for parent in parents:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
344 for node in parent.body:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
345 if isinstance(node, ast.ClassDef) and node.name == name:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
346 return node
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
347
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
348 return None
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
349
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
350 def __superClassNames(self, name, parents, names=None):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
351 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
352 Private method to extract the names of all super classes.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
353
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
354 @param name name of the class
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
355 @type str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
356 @param parents list of parent nodes
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
357 @type list of ast.AST
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
358 @param names set of collected class names (defaults to None)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
359 @type set of str (optional)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
360 @return set of class names
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
361 @rtype set of str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
362 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
363 if names is None:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
364 # initialize recursive search with empty set
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
365 names = set()
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
366
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
367 classdef = self.__getClassdef(name, parents)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
368 if not classdef:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
369 return names
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
370
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
371 for base in classdef.bases:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
372 if isinstance(base, ast.Name) and base.id not in names:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
373 names.add(base.id)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
374 names.update(self.__superClassNames(base.id, parents, names))
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
375 return names
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
376
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
377 def __checkClassName(self, node, parents):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
378 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
379 Private class to check the given node for class name
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
380 conventions (N801, N818).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
381
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
382 Almost without exception, class names use the CapWords convention.
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
383 Classes for internal use have a leading underscore in addition.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
384
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
385 @param node AST note to check
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
386 @type ast.ClassDef
2962
d6c9d1ca2da4 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2910
diff changeset
387 @param parents list of parent nodes
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
388 @type list of ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
389 """
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
390 name = node.name
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
391 strippedName = name.strip("_")
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
392 if not strippedName[:1].isupper() or "_" in strippedName:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
393 self.addErrorFromNode(node, "N-801")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
394
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
395 superClasses = self.__superClassNames(name, parents)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
396 if "Exception" in superClasses and not name.endswith("Error"):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
397 self.addErrorFromNode(node, "N-818")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
398
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
399 def __checkFunctionName(self, node, _parents):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
400 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
401 Private class to check the given node for function name
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
402 conventions (N802, N809).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
403
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
404 Function names should be lowercase, with words separated by underscores
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
405 as necessary to improve readability. Functions <b>not</b> being
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
406 methods '__' in front and back are not allowed. Mixed case is allowed
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
407 only in contexts where that's already the prevailing style
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
408 (e.g. threading.py), to retain backwards compatibility.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
409
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
410 @param node AST note to check
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
411 @type ast.FunctionDef or ast.AsynFunctionDef
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
412 @param _parents list of parent nodes (unused)
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
413 @type list of ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
414 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
415 functionType = getattr(node, "function_type", "function")
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
416 name = node.name
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
417
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
418 if name in ("__dir__", "__getattr__"):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
419 return
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
420
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
421 if name.lower() != name:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
422 self.addErrorFromNode(node, "N-802")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
423 if functionType == "function" and name[:2] == "__" and name[-2:] == "__":
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
424 self.addErrorFromNode(node, "N-809")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
425
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
426 def __checkFunctionArgumentNames(self, node, _parents):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
427 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
428 Private class to check the argument names of functions
2910
cdc56e9d9f12 Optimized the PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2905
diff changeset
429 (N803, N804, N805, N806).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
430
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
431 The argument names of a function should be lowercase, with words
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
432 separated by underscores. A class method should have 'cls' as the
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
433 first argument. A method should have 'self' as the first argument.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
434
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
435 @param node AST note to check
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
436 @type ast.FunctionDef or ast.AsynFunctionDef
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
437 @param _parents list of parent nodes (unused)
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
438 @type list of ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
439 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
440 if node.args.kwarg is not None:
7894
4370a8b30648 Changed the minimum supported Python version to 3.6.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7784
diff changeset
441 kwarg = node.args.kwarg.arg
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
442 if kwarg.lower() != kwarg:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
443 self.addErrorFromNode(node, "N-803")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
444
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
445 elif node.args.vararg is not None:
7894
4370a8b30648 Changed the minimum supported Python version to 3.6.0.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 7784
diff changeset
446 vararg = node.args.vararg.arg
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
447 if vararg.lower() != vararg:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
448 self.addErrorFromNode(node, "N-803")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
449
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
450 else:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
451 argNames = self.__getArgNames(node)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
452 functionType = getattr(node, "function_type", "function")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
453
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
454 if not argNames:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
455 if functionType == "method":
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
456 self.addErrorFromNode(node, "N-805")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
457 elif functionType == "classmethod":
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
458 self.addErrorFromNode(node, "N-804")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
459
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
460 elif functionType == "method" and argNames[0] != "self":
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
461 self.addErrorFromNode(node, "N-805")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
462 elif functionType == "classmethod" and argNames[0] != "cls":
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
463 self.addErrorFromNode(node, "N-804")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
464 elif functionType == "staticmethod" and argNames[0] in ("cls", "self"):
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
465 self.addErrorFromNode(node, "N-806")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
466 for arg in argNames:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
467 if arg.lower() != arg:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
468 self.addErrorFromNode(node, "N-803")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
469 break
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
470
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
471 def __checkVariableNames(self, node, parents):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
472 """
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
473 Private method to check variable names in function, class and global scope
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
474 (N821, N822, N823).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
475
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
476 Local variables in functions should be lowercase.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
477
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
478 @param node AST note to check
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
479 @type ast.AST
2962
d6c9d1ca2da4 Continued correcting doc strings by using the new doc string checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 2910
diff changeset
480 @param parents list of parent nodes
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
481 @type list of ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
482 """
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
483 nodeType = type(node)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
484 if nodeType is ast.Assign:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
485 if self.__isNamedTupel(node.value):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
486 return
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
487 for target in node.targets:
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
488 self.__findVariableNameErrors(target, parents)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
489
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
490 elif nodeType in (ast.NamedExpr, ast.AnnAssign):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
491 if self.__isNamedTupel(node.value):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
492 return
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
493 self.__findVariableNameErrors(node.target, parents)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
494
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
495 elif nodeType in (ast.With, ast.AsyncWith):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
496 for item in node.items:
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
497 self.__findVariableNameErrors(item.optional_vars, parents)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
498
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
499 elif nodeType in (ast.For, ast.AsyncFor):
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
500 self.__findVariableNameErrors(node.target, parents)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
501
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
502 elif nodeType is ast.ExceptHandler:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
503 if node.name:
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
504 self.__findVariableNameErrors(node, parents)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
505
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
506 elif nodeType in (ast.GeneratorExp, ast.ListComp, ast.DictComp, ast.SetComp):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
507 for gen in node.generators:
11142
2f0fb22c1d63 Fixed a few issues in the code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11090
diff changeset
508 self.__findVariableNameErrors(gen.target, parents)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
509
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
510 def __findVariableNameErrors(self, assignmentTarget, parents):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
511 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
512 Private method to check, if there is a variable name error.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
513
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
514 @param assignmentTarget target node of the assignment
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
515 @type ast.Name, ast.Tuple, ast.List or ast.ExceptHandler
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
516 @param parents list of parent nodes
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
517 @type ast.AST
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
518 """
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
519 for parentFunc in reversed(parents):
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
520 if isinstance(parentFunc, ast.ClassDef):
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
521 checker = self.__classVariableCheck
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
522 break
4465
2fbb5bdb8ddf Prepared eric for Python 3.5 to support the new 'async def' function definition.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 4021
diff changeset
523 if isinstance(parentFunc, (ast.FunctionDef, ast.AsyncFunctionDef)):
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
524 checker = functools.partial(self.__functionVariableCheck, parentFunc)
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
525 break
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
526 else:
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
527 checker = self.__globalVariableCheck
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
528 for name in self.__extractNames(assignmentTarget):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
529 errorCode = checker(name)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
530 if errorCode:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
531 self.addErrorFromNode(assignmentTarget, errorCode)
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
532
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
533 def __extractNames(self, assignmentTarget):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
534 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
535 Private method to extract the names from the target node.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
536
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
537 @param assignmentTarget target node of the assignment
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
538 @type ast.Name, ast.Tuple, ast.List or ast.ExceptHandler
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
539 @yield name of the variable
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
540 @ytype str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
541 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
542 targetType = type(assignmentTarget)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
543 if targetType is ast.Name:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
544 yield assignmentTarget.id
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
545 elif targetType in (ast.Tuple, ast.List):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
546 for element in assignmentTarget.elts:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
547 elementType = type(element)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
548 if elementType is ast.Name:
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
549 yield element.id
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
550 elif elementType in (ast.Tuple, ast.List):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
551 yield from self.__extractNames(element)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
552 elif elementType is ast.Starred: # PEP 3132
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
553 yield from self.__extractNames(element.value)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
554 elif isinstance(assignmentTarget, ast.ExceptHandler):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
555 yield assignmentTarget.name
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
556
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
557 def __isMixedCase(self, name):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
558 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
559 Private method to check, if the given name is mixed case.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
560
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
561 @param name variable name to be checked
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
562 @type str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
563 @return flag indicating mixed case
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
564 @rtype bool
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
565 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
566 return name.lower() != name and name.lstrip("_")[:1].islower()
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
567
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
568 def __globalVariableCheck(self, name):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
569 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
570 Private method to determine the error code for a variable in global scope.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
571
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
572 @param name variable name to be checked
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
573 @type str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
574 @return error code or None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
575 @rtype str or None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
576 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
577 if self.__isMixedCase(name):
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
578 return "N-823"
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
579
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
580 return None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
581
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
582 def __classVariableCheck(self, name):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
583 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
584 Private method to determine the error code for a variable in class scope.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
585
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
586 @param name variable name to be checked
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
587 @type str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
588 @return error code or None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
589 @rtype str or None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
590 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
591 if self.__isMixedCase(name):
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
592 return "N-822"
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
593
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
594 return None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
595
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
596 def __functionVariableCheck(self, func, varName):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
597 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
598 Private method to determine the error code for a variable in class scope.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
599
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
600 @param func reference to the function definition node
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
601 @type ast.FunctionDef or ast.AsyncFunctionDef
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
602 @param varName variable name to be checked
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
603 @type str
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
604 @return error code or None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
605 @rtype str or None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
606 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
607 if varName not in func.global_names and varName.lower() != varName:
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
608 return "N-821"
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
609
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
610 return None
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
611
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
612 def __isNamedTupel(self, nodeValue):
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
613 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
614 Private method to check, if a node is a named tuple.
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
615
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
616 @param nodeValue node to be checked
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
617 @type ast.AST
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
618 @return flag indicating a nemd tuple
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
619 @rtype bool
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
620 """
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
621 return isinstance(nodeValue, ast.Call) and (
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
622 (
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
623 isinstance(nodeValue.func, ast.Attribute)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
624 and nodeValue.func.attr == "namedtuple"
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
625 )
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
626 or (
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
627 isinstance(nodeValue.func, ast.Name)
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
628 and nodeValue.func.id == "namedtuple"
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
629 )
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
630 )
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
631
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
632 def __checkModule(self, node, _parents):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
633 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
634 Private method to check module naming conventions (N807, N808).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
635
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
636 Module and package names should be lowercase.
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
637
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
638 @param node AST node to check
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
639 @type ast.AST
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
640 @param _parents list of parent nodes (unused)
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
641 @type list of ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
642 """
11163
f6c0a18254d6 Fixed an issue in NamingStyleChecker.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11150
diff changeset
643 if self.filename:
f6c0a18254d6 Fixed an issue in NamingStyleChecker.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11150
diff changeset
644 moduleName = os.path.splitext(os.path.basename(self.filename))[0]
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
645 if moduleName.lower() != moduleName:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
646 self.addErrorFromNode(node, "N-807")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
647
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
648 if moduleName == "__init__":
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
649 # we got a package
11163
f6c0a18254d6 Fixed an issue in NamingStyleChecker.py.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11150
diff changeset
650 packageName = os.path.split(os.path.dirname(self.filename))[1]
3762
ac51ccb60e35 Fixed an issue in the naming style checker for check N808.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 3646
diff changeset
651 if packageName.lower() != packageName:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
652 self.addErrorFromNode(node, "N-808")
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
653
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
654 def __checkImportAs(self, node, _parents):
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
655 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
656 Private method to check that imports don't change the
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
657 naming convention (N811, N812, N813, N814, N815).
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
658
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
659 @param node AST node to check
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
660 @type ast.Import
10683
779cda568acb Changed the source code and the source code documentation to improve the indication of unused method/function arguments.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10439
diff changeset
661 @param _parents list of parent nodes (unused)
10437
2f70ca07f0af Converted some source code documentation to the new style.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 10069
diff changeset
662 @type list of ast.AST
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
663 """
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
664 for name in node.names:
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
665 asname = name.asname
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
666 if not asname:
2894
8e4264045fc9 Started implementing a PEP-8 naming checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff changeset
667 continue
9221
bf71ee032bb4 Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9209
diff changeset
668
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
669 originalName = name.name
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
670 if originalName.isupper():
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
671 if not asname.isupper():
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
672 self.addErrorFromNode(node, "N-811")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
673 elif originalName.islower():
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
674 if asname.lower() != asname:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
675 self.addErrorFromNode(node, "N-812")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
676 elif asname.islower():
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
677 self.addErrorFromNode(node, "N-813")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
678 elif asname.isupper():
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
679 if "".join(filter(str.isupper, originalName)) == asname:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
680 self.addErrorFromNode(node, "N-815")
9271
f655c20ff500 Code Style Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 9221
diff changeset
681 else:
11150
73d80859079c Code Style Checkers
Detlev Offenbach <detlev@die-offenbachs.de>
parents: 11148
diff changeset
682 self.addErrorFromNode(node, "N-814")

eric ide

mercurial