Plugins/CheckerPlugins/Tabnanny/Tabnanny.py

changeset 45
9a18f4dbb493
parent 15
f6ccc31d6e72
child 96
9624a110667d
equal deleted inserted replaced
44:fe5cd20cb0eb 45:9a18f4dbb493
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.

eric ide

mercurial