104 global indents, check_equal |
104 global indents, check_equal |
105 indents = [Whitespace("")] |
105 indents = [Whitespace("")] |
106 check_equal = 0 |
106 check_equal = 0 |
107 |
107 |
108 try: |
108 try: |
109 f = open(file, "r") |
109 text = Utilities.readEncodedFile(file)[0] |
110 except IOError as msg: |
110 except (UnicodeError, IOError) as msg: |
111 return (True, file, "1", "I/O Error: %s" % str(msg)) |
111 return (True, file, "1", "Error: %s" % str(msg)) |
112 |
|
113 try: |
|
114 text = f.read() |
|
115 finally: |
|
116 f.close() |
|
117 |
112 |
118 # convert eols |
113 # convert eols |
119 text = Utilities.convertLineEnds(text, os.linesep) |
114 text = Utilities.convertLineEnds(text, os.linesep) |
120 |
115 |
121 source = io.StringIO(text) |
116 source = io.StringIO(text) |
122 try: |
117 try: |
123 process_tokens(tokenize.generate_tokens(source.readline)) |
118 process_tokens(tokenize.generate_tokens(source.readline)) |
124 |
119 |
125 except tokenize.TokenError as msg: |
120 except tokenize.TokenError as msg: |
126 f.close() |
|
127 return (True, file, "1", "Token Error: %s" % str(msg)) |
121 return (True, file, "1", "Token Error: %s" % str(msg)) |
128 |
122 |
129 except IndentationError as err: |
123 except IndentationError as err: |
130 f.close() |
|
131 return (True, file, err.lineno, "Indentation Error: %s" % str(err.msg)) |
124 return (True, file, err.lineno, "Indentation Error: %s" % str(err.msg)) |
132 |
125 |
133 except NannyNag as nag: |
126 except NannyNag as nag: |
134 badline = nag.get_lineno() |
127 badline = nag.get_lineno() |
135 line = nag.get_line() |
128 line = nag.get_line() |
136 f.close() |
|
137 return (True, file, str(badline), line) |
129 return (True, file, str(badline), line) |
138 |
130 |
139 except Exception as err: |
131 except Exception as err: |
140 f.close() |
|
141 return (True, file, "1", "Unspecific Error: %s" % str(err)) |
132 return (True, file, "1", "Unspecific Error: %s" % str(err)) |
142 |
133 |
143 f.close() |
|
144 return (False, None, None, None) |
134 return (False, None, None, None) |
145 |
135 |
146 class Whitespace(object): |
136 class Whitespace(object): |
147 """ |
137 """ |
148 Class implementing the whitespace checker. |
138 Class implementing the whitespace checker. |