Tue, 10 Dec 2024 15:46:34 +0100
Updated copyright for 2025.
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
1 | # -*- coding: utf-8 -*- |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
2 | |
11090
f5f5f5803935
Updated copyright for 2025.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10690
diff
changeset
|
3 | # Copyright (c) 2011 - 2025 Detlev Offenbach <detlev@die-offenbachs.de> |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
4 | # |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
5 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
6 | """ |
7639
422fd05e9c91
Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7637
diff
changeset
|
7 | Module implementing the syntax check for Python 3. |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
8 | """ |
4543
2e6a880670e9
Fixed a few code style issues (forgotten future imports, copyrights,...).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4385
diff
changeset
|
9 | |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9462
diff
changeset
|
10 | import ast |
9482
a2bc06a54d9d
Corrected/acknowledged some bad import style and removed some obsolete code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9473
diff
changeset
|
11 | import builtins |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9462
diff
changeset
|
12 | import contextlib |
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9462
diff
changeset
|
13 | import multiprocessing |
7637
c878e8255972
Removed some more Python2 related code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7635
diff
changeset
|
14 | import queue |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
15 | import re |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
16 | import traceback |
10162
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
17 | import warnings |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
18 | |
8243
cc717c2ae956
Applied some more code simplifications suggested by the new Simplify checker (Y105: use contextlib.suppress) (batch 2).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8234
diff
changeset
|
19 | with contextlib.suppress(ImportError): |
3173
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
20 | from pyflakes.checker import Checker |
9473
3f23dbf37dbe
Resorted the import statements using isort.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9462
diff
changeset
|
21 | from pyflakes.messages import ImportStarUsage, ImportStarUsed |
3173
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
22 | |
6107
78dabf542c6b
Extended the check for VCS conflict markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
23 | VcsConflictMarkerRegExpList = ( |
78dabf542c6b
Extended the check for VCS conflict markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
24 | re.compile( |
6109
041715a2f703
Another fix for the VCS conflict markers regexp.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6108
diff
changeset
|
25 | r"""^<<<<<<< .*?\|\|\|\|\|\|\| .*?=======.*?>>>>>>> .*?$""", |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
26 | re.MULTILINE | re.DOTALL, |
6107
78dabf542c6b
Extended the check for VCS conflict markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
27 | ), |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
28 | re.compile(r"""^<<<<<<< .*?=======.*?>>>>>>> .*?$""", re.MULTILINE | re.DOTALL), |
6107
78dabf542c6b
Extended the check for VCS conflict markers.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6048
diff
changeset
|
29 | ) |
3173
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
30 | |
6119
18fb5d765f3a
Fixed some code style issues.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6109
diff
changeset
|
31 | |
3173
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
32 | def initService(): |
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
33 | """ |
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
34 | Initialize the service and return the entry point. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
35 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
36 | @return the entry point for the background client |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
37 | @rtype function |
3173
1fb284abe46e
Interface to add user-defined services, e.g. in plugins. Auto syntax check working. Little cleanup.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
3159
diff
changeset
|
38 | """ |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
39 | return pySyntaxAndPyflakesCheck |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
40 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
41 | |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
42 | def initBatchService(): |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
43 | """ |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
44 | Initialize the batch service and return the entry point. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
45 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
46 | @return the entry point for the background client |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
47 | @rtype function |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
48 | """ |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
49 | return pySyntaxAndPyflakesBatchCheck |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
50 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
51 | |
5586
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
52 | def extractLineFlags(line, startComment="#", endComment="", flagsLine=False): |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
53 | """ |
3065
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2571
diff
changeset
|
54 | Function to extract flags starting and ending with '__' from a line |
070b35dde35e
Fixed a bunch of indentation issues.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
2571
diff
changeset
|
55 | comment. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
56 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
57 | @param line line to extract flags from |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
58 | @type str |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
59 | @param startComment string identifying the start of the comment |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
60 | @type str |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
61 | @param endComment string identifying the end of a comment |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
62 | @type str |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
63 | @param flagsLine flag indicating to check for a flags only line |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
64 | @type bool |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
65 | @return list containing the extracted flags |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
66 | @rtype list of str |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
67 | """ |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
68 | flags = [] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
69 | |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
70 | if not flagsLine or (flagsLine and line.strip().startswith(startComment)): |
5586
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
71 | pos = line.rfind(startComment) |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
72 | if pos >= 0: |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
73 | comment = line[pos + len(startComment) :].strip() |
5586
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
74 | if endComment: |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
75 | endPos = line.rfind(endComment) |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
76 | if endPos >= 0: |
0e5421d679e7
Added capability to place line flags (e.g. __IGNORE...) on the line following the one to be ignored.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5389
diff
changeset
|
77 | comment = comment[:endPos] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
78 | flags = [ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
79 | f.strip() |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
80 | for f in comment.split() |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
81 | if (f.startswith("__") and f.endswith("__")) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
82 | ] |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
83 | flags += [ |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
84 | f.strip().lower() for f in comment.split() if f in ("noqa", "NOQA") |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
85 | ] |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
86 | return flags |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
87 | |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
88 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
89 | def pySyntaxAndPyflakesCheck( |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
90 | filename, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
91 | codestring, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
92 | checkFlakes=True, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
93 | ignoreStarImportWarnings=False, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
94 | additionalBuiltins=None, |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
95 | ): |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
96 | """ |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
97 | Function to compile one Python source file to Python bytecode |
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
98 | and to perform a pyflakes check. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
99 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
100 | @param filename source filename |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
101 | @type str |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
102 | @param codestring string containing the code to compile |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
103 | @type str |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
104 | @param checkFlakes flag indicating to do a pyflakes check |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
105 | @type bool |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
106 | @param ignoreStarImportWarnings flag indicating to ignore 'star import' warnings |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
107 | @type bool |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
108 | @param additionalBuiltins list of names pyflakes should consider as builtins |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
109 | @type list of str |
10341
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
110 | @return list of dictionaries with the keys 'error', 'py_warnings' and 'warnings' |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
111 | which contain a tuple with details about the syntax error or a list of |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
112 | tuples with details about Python warnings and PyFlakes warnings. Each tuple |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
113 | contains the file name, line number, column, code string (only for syntax |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
114 | errors), the message and an optional list with arguments for the message. |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
115 | @rtype list of dict |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
116 | """ |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
117 | return __pySyntaxAndPyflakesCheck( |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
118 | filename, codestring, checkFlakes, ignoreStarImportWarnings, additionalBuiltins |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
119 | ) |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
120 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
121 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
122 | def pySyntaxAndPyflakesBatchCheck(argumentsList, send, fx, cancelled, maxProcesses=0): |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
123 | """ |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
124 | Module function to check syntax for a batch of files. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
125 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
126 | @param argumentsList list of arguments tuples as given for pySyntaxAndPyflakesCheck |
5762
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
127 | @type list |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
128 | @param send reference to send function |
10341
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
129 | @type function |
5762
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
130 | @param fx registered service name |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
131 | @type str |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
132 | @param cancelled reference to function checking for a cancellation |
10341
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
133 | @type function |
5762
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
134 | @param maxProcesses number of processes to be used |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
135 | @type int |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
136 | """ |
5762
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
137 | if maxProcesses == 0: |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
138 | # determine based on CPU count |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
139 | try: |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
140 | NumberOfProcesses = multiprocessing.cpu_count() |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
141 | if NumberOfProcesses >= 1: |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
142 | NumberOfProcesses -= 1 |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
143 | except NotImplementedError: |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
144 | NumberOfProcesses = 1 |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
145 | else: |
76ef5f340007
Added functionality to limit the number of processes used for bachground services.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5683
diff
changeset
|
146 | NumberOfProcesses = maxProcesses |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
147 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
148 | # Create queues |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
149 | taskQueue = multiprocessing.Queue() |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
150 | doneQueue = multiprocessing.Queue() |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
151 | |
9289
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
152 | # Submit tasks (initially two times the number of processes) |
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
153 | tasks = len(argumentsList) |
9292
a5c8a0213fe3
Fixed an issue in the multiprocessing usage causing a traceback when then number of tasks is smaller than the number of worker processes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9289
diff
changeset
|
154 | initialTasks = min(2 * NumberOfProcesses, tasks) |
9289
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
155 | for _ in range(initialTasks): |
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
156 | taskQueue.put(argumentsList.pop(0)) |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
157 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
158 | # Start worker processes |
8650
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
159 | workers = [ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
160 | multiprocessing.Process(target=workerTask, args=(taskQueue, doneQueue)) |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
161 | for _ in range(NumberOfProcesses) |
8650
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
162 | ] |
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
163 | for worker in workers: |
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
164 | worker.start() |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
165 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
166 | # Get and send results |
9289
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
167 | for _ in range(tasks): |
5672
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
168 | resultSent = False |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
169 | wasCancelled = False |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
170 | |
5672
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
171 | while not resultSent: |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
172 | try: |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
173 | # get result (waiting max. 3 seconds and send it to frontend |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
174 | filename, result = doneQueue.get() |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
175 | send(fx, filename, result) |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
176 | resultSent = True |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
177 | except queue.Empty: |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
178 | # ignore empty queue, just carry on |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
179 | if cancelled(): |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
180 | wasCancelled = True |
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
181 | break |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
182 | |
5672
495b53f37f6c
Corrected an issue in various checker services that caused them to block, if an exception was thrown in a checker class.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5616
diff
changeset
|
183 | if wasCancelled or cancelled(): |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
184 | # just exit the loop ignoring the results of queued tasks |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
185 | break |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
186 | |
9289
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
187 | if argumentsList: |
ba49c41e8f63
Did some optimizations in the multiprocessing code.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9284
diff
changeset
|
188 | taskQueue.put(argumentsList.pop(0)) |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
189 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
190 | # Tell child processes to stop |
6188
5a6ae3be31e6
Fixed some loop related coding issues detected by the extended code style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
6119
diff
changeset
|
191 | for _ in range(NumberOfProcesses): |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
192 | taskQueue.put("STOP") |
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
193 | |
8650
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
194 | for worker in workers: |
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
195 | worker.join() |
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
196 | worker.close() |
9284
3b3a4f659782
"Blacked" the sources.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9279
diff
changeset
|
197 | |
9279
e252f827aaa7
Added code to explicitly close the queues to/from the workers at the end of a batch check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
198 | taskQueue.close() |
e252f827aaa7
Added code to explicitly close the queues to/from the workers at the end of a batch check.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9221
diff
changeset
|
199 | doneQueue.close() |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
200 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
201 | |
8650
100726f55a9a
Changed the 'multiprocessing.Process()' code of the background batch services to (hopefully) cure the slow down when used multiple times.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
8312
diff
changeset
|
202 | def workerTask(inputQueue, outputQueue): |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
203 | """ |
7335
07ed3d73bf58
Syntax Checker:
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7256
diff
changeset
|
204 | Module function acting as the parallel worker for the syntax check. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
205 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
206 | @param inputQueue input queue |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
207 | @type multiprocessing.Queue |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
208 | @param outputQueue output queue |
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
209 | @type multiprocessing.Queue |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
210 | """ |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
211 | for filename, args in iter(inputQueue.get, "STOP"): |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
212 | source, checkFlakes, ignoreStarImportWarnings, additionalBuiltins = args |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
213 | result = __pySyntaxAndPyflakesCheck( |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
214 | filename, source, checkFlakes, ignoreStarImportWarnings, additionalBuiltins |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
215 | ) |
5588
6ba512d9f46a
Continued fixing code style issues detected by the extended style checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
5586
diff
changeset
|
216 | outputQueue.put((filename, result)) |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
217 | |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
218 | |
9508
5a02bdb1dcba
Harmonized the naming of some code in the syntax checker plugin.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9507
diff
changeset
|
219 | def __pySyntaxAndPyflakesCheck( |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
220 | filename, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
221 | codestring, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
222 | checkFlakes=True, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
223 | ignoreStarImportWarnings=False, |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
224 | additionalBuiltins=None, |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
225 | ): |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
226 | """ |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
227 | Function to compile one Python source file to Python bytecode |
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
228 | and to perform a pyflakes check. |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
229 | |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
230 | @param filename source filename |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
231 | @type str |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
232 | @param codestring string containing the code to compile |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
233 | @type str |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
234 | @param checkFlakes flag indicating to do a pyflakes check |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
235 | @type bool |
7900
72b88fb20261
Corrected the use of '@keyparam' in the source documentation.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7639
diff
changeset
|
236 | @param ignoreStarImportWarnings flag indicating to |
8205
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
237 | ignore 'star import' warnings |
4a0f1f896341
Applied some code simplifications suggested by the new Simplify checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
7923
diff
changeset
|
238 | @type bool |
9924
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
239 | @param additionalBuiltins list of names pyflakes should consider as builtins |
b41c9a7bcbbb
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9653
diff
changeset
|
240 | @type list of str |
10341
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
241 | @return list of dictionaries with the keys 'error', 'py_warnings' and 'warnings' |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
242 | which contain a tuple with details about the syntax error or a list of |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
243 | tuples with details about Python warnings and PyFlakes warnings. Each tuple |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
244 | contains the file name, line number, column, code string (only for syntax |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
245 | errors), the message and an optional list with arguments for the message. |
3fdffd9cc21d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10188
diff
changeset
|
246 | @rtype list of dict |
4231
0b38613388c9
Implemented the batch check mode for the syntax checker.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
4207
diff
changeset
|
247 | """ |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
248 | if codestring: |
10162
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
249 | errorDict = {} |
10188
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
250 | pyWarnings = [] |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
251 | |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
252 | def showwarning( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
253 | message, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
254 | category, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
255 | filename, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
256 | lineno, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
257 | file=None, # noqa: U100 |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
258 | line=None, # noqa: U100 |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
259 | ): |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
260 | pyWarnings.append( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
261 | ( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
262 | filename, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
263 | lineno, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
264 | 0, |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
265 | "", |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
266 | "{0}: {1}".format(category.__name__, message), |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
267 | ) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
268 | ) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
269 | |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
270 | warnings.showwarning = showwarning |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
271 | warnings.filterwarnings("always") |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
272 | |
2571
e6bb19eb87ea
Fixes for autocodecheck with pyflakes and update of py2flakes to 0.6.1.
T.Rzepka <Tobias.Rzepka@gmail.com>
parents:
diff
changeset
|
273 | try: |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
274 | # Check for VCS conflict markers |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
275 | for conflictMarkerRe in VcsConflictMarkerRegExpList: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
276 | conflict = conflictMarkerRe.search(codestring) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
277 | if conflict is not None: |
10690
fab36645aa7d
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:
10670
diff
changeset
|
278 | start, _i = conflict.span() |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
279 | lineindex = 1 + codestring.count("\n", 0, start) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
280 | return [ |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
281 | { |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
282 | "error": ( |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
283 | filename, |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
284 | lineindex, |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
285 | 0, |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
286 | "", |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
287 | "VCS conflict marker found", |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
288 | ) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
289 | } |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
290 | ] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
291 | |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
292 | if filename.endswith(".ptl"): |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
293 | try: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
294 | import quixote.ptl_compile # __IGNORE_WARNING_I10__ |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
295 | except ImportError: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
296 | return [ |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
297 | {"error": (filename, 0, 0, "", "Quixote plugin not found.")} |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
298 | ] |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
299 | template = quixote.ptl_compile.Template(codestring, filename) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
300 | template.compile() |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
301 | else: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
302 | module = builtins.compile( |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
303 | codestring, filename, "exec", ast.PyCF_ONLY_AST |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
304 | ) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
305 | except SyntaxError as detail: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
306 | index = 0 |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
307 | code = "" |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
308 | error = "" |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
309 | lines = traceback.format_exception_only(SyntaxError, detail) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
310 | match = re.match( |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
311 | r'\s*File "(.+)", line (\d+)', lines[0].replace("<string>", filename) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
312 | ) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
313 | if match is not None: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
314 | fn, line = match.group(1, 2) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
315 | if lines[1].startswith("SyntaxError:"): |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
316 | error = re.match("SyntaxError: (.+)", lines[1]).group(1) |
10670
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
317 | elif lines[1].startswith("IndentationError:"): |
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
318 | error = re.match("IndentationError: (.+)", lines[1]).group(1) |
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
319 | elif lines[1].startswith("TabError:"): |
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
320 | error = re.match("TabError: (.+)", lines[1]).group(1) |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
321 | else: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
322 | code = re.match("(.+)", lines[1]).group(1) |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
323 | for seLine in lines[2:]: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
324 | if seLine.startswith("SyntaxError:"): |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
325 | error = re.match("SyntaxError: (.+)", seLine).group(1) |
10670
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
326 | elif seLine.startswith("IndentationError:"): |
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
327 | error = re.match("IndentationError: (.+)", seLine).group(1) |
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
328 | elif seLine.startswith("TabError:"): |
bfa05f79d932
Corrected the Python syntax check to handle indentation and tab errors (subclasses of SyntaxError) (see issue 555).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10439
diff
changeset
|
329 | error = re.match("TabError: (.+)", seLine).group(1) |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
330 | elif seLine.rstrip().endswith("^"): |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
331 | index = len(seLine.rstrip()) - 4 |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
332 | else: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
333 | fn = detail.filename |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
334 | line = detail.lineno or 1 |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
335 | error = detail.msg |
10162
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
336 | errorDict = {"error": (fn, int(line), index, code.strip(), error)} |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
337 | except ValueError as detail: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
338 | try: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
339 | fn = detail.filename |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
340 | line = detail.lineno |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
341 | error = detail.msg |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
342 | except AttributeError: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
343 | fn = filename |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
344 | line = 1 |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
345 | error = str(detail) |
10162
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
346 | errorDict = {"error": (fn, line, 0, "", error)} |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
347 | except Exception as detail: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
348 | with contextlib.suppress(AttributeError): |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
349 | fn = detail.filename |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
350 | line = detail.lineno |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
351 | error = detail.msg |
10162
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
352 | errorDict = {"error": (fn, line, 0, "", error)} |
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
353 | finally: |
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
354 | warnings.resetwarnings() |
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
355 | |
10188
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
356 | # return the syntax error, if one was detected |
10162
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
357 | if errorDict: |
e7040c88b39e
Made some modification in preparation for Python 3.12.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10111
diff
changeset
|
358 | return [errorDict] |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
359 | |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
360 | # pyflakes |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
361 | results = [] |
10188
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
362 | if checkFlakes: |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
363 | lines = codestring.splitlines() |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
364 | try: |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
365 | flakesWarnings = Checker( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
366 | module, filename, builtins=additionalBuiltins, withDoctest=True |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
367 | ) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
368 | flakesWarnings.messages.sort(key=lambda a: a.lineno) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
369 | for flakesWarning in flakesWarnings.messages: |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
370 | if ignoreStarImportWarnings and isinstance( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
371 | flakesWarning, (ImportStarUsed, ImportStarUsage) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
372 | ): |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
373 | continue |
9221
bf71ee032bb4
Reformatted the source code using the 'Black' utility.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9209
diff
changeset
|
374 | |
10188
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
375 | _fn, lineno, col, message, msg_args = flakesWarning.getMessageData() |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
376 | lineFlags = extractLineFlags(lines[lineno - 1].strip()) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
377 | with contextlib.suppress(IndexError): |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
378 | lineFlags += extractLineFlags( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
379 | lines[lineno].strip(), flagsLine=True |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
380 | ) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
381 | if ( |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
382 | "__IGNORE_WARNING__" not in lineFlags |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
383 | and "__IGNORE_FLAKES_WARNING__" not in lineFlags |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
384 | and "noqa" not in lineFlags |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
385 | ): |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
386 | results.append((_fn, lineno, col, "", message, msg_args)) |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
387 | except SyntaxError as err: |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
388 | msg = err.text.strip() if err.text.strip() else err.msg |
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
389 | results.append((filename, err.lineno, 0, "FLAKES_ERROR", msg, [])) |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
390 | |
10188
0f873791d67e
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
10162
diff
changeset
|
391 | return [{"py_warnings": pyWarnings, "warnings": results}] |
10111
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
392 | |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
393 | else: |
049fbbd2253d
Syntax Checker
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
9924
diff
changeset
|
394 | return [{}] |