Sat, 18 Feb 2012 12:27:41 +0100
Prepared new release.
805
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
1 | #!/usr/bin/env python2 |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
2 | # -*- coding: utf-8 -*- |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
3 | |
1509
c0b5e693b0eb
Updated copyright for 2012.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1465
diff
changeset
|
4 | # Copyright (c) 2011 - 2012 Detlev Offenbach <detlev@die-offenbachs.de> |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
5 | # |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
6 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
7 | """ |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
8 | Module implementing the syntax check for Python 2. |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
9 | """ |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
10 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
11 | import sys |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
12 | import re |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
13 | import traceback |
805
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
14 | |
1308
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
15 | from Tools import readEncodedFile, normalizeCode, extractLineFlags |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
16 | |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
17 | from py2flakes.checker import Checker |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
18 | from py2flakes.messages import ImportStarUsed |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
19 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
20 | |
805
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
21 | def compile(file, codestring): |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
22 | """ |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
23 | Function to compile one Python source file to Python bytecode. |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
24 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
25 | @param file source filename (string) |
805
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
26 | @param codestring source code (string) |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
27 | @return A tuple indicating status (True = an error was found), the |
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
28 | file name, the line number, the index number, the code string |
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
29 | and the error message (boolean, string, string, string, string, |
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
30 | string). The values are only valid, if the status equals 1. |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
31 | """ |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
32 | import __builtin__ |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
33 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
34 | try: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
35 | if type(file) == type(u""): |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
36 | file = file.encode('utf-8') |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
37 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
38 | if file.endswith('.ptl'): |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
39 | try: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
40 | import quixote.ptl_compile |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
41 | except ImportError: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
42 | return (0, None, None, None, None) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
43 | template = quixote.ptl_compile.Template(codestring, file) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
44 | template.compile() |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
45 | else: |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
46 | __builtin__.compile(codestring, file, 'exec') |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
47 | except SyntaxError, detail: |
1465
3b459b88fcd4
Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1308
diff
changeset
|
48 | index = "0" |
3b459b88fcd4
Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1308
diff
changeset
|
49 | code = "" |
3b459b88fcd4
Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1308
diff
changeset
|
50 | error = "" |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
51 | lines = traceback.format_exception_only(SyntaxError, detail) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
52 | match = re.match('\s*File "(.+)", line (\d+)', |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
53 | lines[0].replace('<string>', '%s' % file)) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
54 | if match is not None: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
55 | fn, line = match.group(1, 2) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
56 | if lines[1].startswith('SyntaxError:'): |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
57 | error = re.match('SyntaxError: (.+)', lines[1]).group(1) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
58 | else: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
59 | code = re.match('(.+)', lines[1]).group(1) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
60 | for seLine in lines[2:]: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
61 | if seLine.startswith('SyntaxError:'): |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
62 | error = re.match('SyntaxError: (.+)', seLine).group(1) |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
63 | elif seLine.rstrip().endswith('^'): |
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
64 | index = len(seLine.rstrip()) - 4 |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
65 | else: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
66 | fn = detail.filename |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
67 | line = detail.lineno and detail.lineno or 1 |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
68 | error = detail.msg |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
69 | return (1, fn, line, index, code, error) |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
70 | except ValueError, detail: |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
71 | index = "0" |
1465
3b459b88fcd4
Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1308
diff
changeset
|
72 | code = "" |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
73 | try: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
74 | fn = detail.filename |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
75 | line = detail.lineno |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
76 | error = detail.msg |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
77 | except AttributeError: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
78 | fn = file |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
79 | line = 1 |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
80 | error = unicode(detail) |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
81 | return (1, fn, line, index, code, error) |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
82 | except StandardError, detail: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
83 | try: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
84 | fn = detail.filename |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
85 | line = detail.lineno |
1465
3b459b88fcd4
Fixed a few quirks in Utilities and UtilitiesPython2.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
1308
diff
changeset
|
86 | index = "0" |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
87 | code = "" |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
88 | error = detail.msg |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
89 | return (1, fn, line, index, code, error) |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
90 | except: # this catchall is intentional |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
91 | pass |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
92 | |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
93 | return (0, None, None, None, None, None) |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
94 | |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
95 | |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
96 | def flakesCheck(fileName, codestring, ignoreStarImportWarnings): |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
97 | """ |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
98 | Function to perform a pyflakes check. |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
99 | |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
100 | @param fileName name of the file (string) |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
101 | @param codestring source code to be checked (string) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
102 | @param ignoreStarImportWarnings flag indicating to |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
103 | ignore 'star import' warnings (boolean) |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
104 | @return list of strings containing the warnings |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
105 | (marker, file name, line number, message) |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
106 | """ |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
107 | strings = [] |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
108 | lines = codestring.splitlines() |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
109 | try: |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
110 | warnings = Checker(codestring, fileName) |
945
8cd4d08fa9f6
Made code mostly PEP 8 compliant (except all whitespace and line length).
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
915
diff
changeset
|
111 | warnings.messages.sort(key=lambda a: a.lineno) |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
112 | for warning in warnings.messages: |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
113 | if ignoreStarImportWarnings and \ |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
114 | isinstance(warning, ImportStarUsed): |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
115 | continue |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
116 | |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
117 | _fn, lineno, message = warning.getMessageData() |
1308
2b602a1521e7
Made the check for line flags like __IGNORE_WARNING__ more flexible and extensible.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
945
diff
changeset
|
118 | if "__IGNORE_WARNING__" not in extractLineFlags(lines[lineno - 1].strip()): |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
119 | strings.extend(["FLAKES_WARNING", _fn, lineno, message]) |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
120 | except SyntaxError as err: |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
121 | if err.text.strip(): |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
122 | msg = err.text.strip() |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
123 | else: |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
124 | msg = err.msg |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
125 | strings.extend(["FLAKES_ERROR", fileName, err.lineno, msg]) |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
126 | |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
127 | return strings |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
128 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
129 | if __name__ == "__main__": |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
130 | if len(sys.argv) < 2 or \ |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
131 | len(sys.argv) > 3 or \ |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
132 | (len(sys.argv) == 3 and sys.argv[1] not in ["-fi", "-fs"]): |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
133 | print "ERROR" |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
134 | print "" |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
135 | print "" |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
136 | print "" |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
137 | print "" |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
138 | print "No file name given." |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
139 | else: |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
140 | filename = sys.argv[-1] |
805
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
141 | try: |
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
142 | codestring = readEncodedFile(filename)[0] |
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
143 | codestring = normalizeCode(codestring) |
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
144 | |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
145 | syntaxerror, fname, line, index, code, error = \ |
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
146 | compile(filename, codestring) |
805
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
147 | except IOError, msg: |
83ca4d1ff648
Added a tabnanny checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
802
diff
changeset
|
148 | # fake a syntax error |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
149 | syntaxerror, fname, line, index, code, error = \ |
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
150 | 1, filename, "1", "0", "", "I/O Error: %s" % unicode(msg) |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
151 | |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
152 | if syntaxerror: |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
153 | print "ERROR" |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
154 | else: |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
155 | print "NO_ERROR" |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
156 | print fname |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
157 | print line |
915
c1e052773c08
Changed syntax check to report error position within the line.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
805
diff
changeset
|
158 | print index |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
159 | print code |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
160 | print error |
802
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
161 | |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
162 | if not syntaxerror and sys.argv[1] in ["-fi", "-fs"]: |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
163 | # do pyflakes check |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
164 | warningLines = flakesCheck(filename, codestring, sys.argv[1] == "-fi") |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
165 | for warningLine in warningLines: |
e8882d16384c
Added a pyflakes checker function for Python 2 files and made some additional Python 2 related changes.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
795
diff
changeset
|
166 | print warningLine |
795
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
167 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
168 | sys.exit(0) |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
169 | |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
170 | # |
917f1945355c
Added a syntax checker function for Python 2 files.
Detlev Offenbach <detlev@die-offenbachs.de>
parents:
diff
changeset
|
171 | # eflag: FileType = Python2 |