Plugins/CheckerPlugins/Pep8/Pep8Fixer.py

changeset 945
8cd4d08fa9f6
parent 869
6d16246da792
child 1031
c0f795aa71a7
equal deleted inserted replaced
944:1b59c4ba121e 945:8cd4d08fa9f6
16 16
17 import Utilities 17 import Utilities
18 18
19 Pep8FixableIssues = ["E101", "W191", "E201", "E202", "E203", "E211", "E221", 19 Pep8FixableIssues = ["E101", "W191", "E201", "E202", "E203", "E211", "E221",
20 "E222", "E225", "E231", "E241", "E251", "E261", "E262", 20 "E222", "E225", "E231", "E241", "E251", "E261", "E262",
21 "W291", "W292", "W293", "E301", "E302", "E303", "E304", 21 "W291", "W292", "W293", "E301", "E302", "E303", "E304",
22 "W391", "W603"] 22 "W391", "W603"]
23
23 24
24 class Pep8Fixer(QObject): 25 class Pep8Fixer(QObject):
25 """ 26 """
26 Class implementing a fixer for certain PEP 8 issues. 27 Class implementing a fixer for certain PEP 8 issues.
27 """ 28 """
46 self.__fixCodes = [c.strip() for c in fixCodes.split(",") if c.strip()] 47 self.__fixCodes = [c.strip() for c in fixCodes.split(",") if c.strip()]
47 self.fixed = 0 48 self.fixed = 0
48 49
49 if not inPlace: 50 if not inPlace:
50 self.__origName = self.__filename 51 self.__origName = self.__filename
51 self.__filename = os.path.join(os.path.dirname(self.__filename), 52 self.__filename = os.path.join(os.path.dirname(self.__filename),
52 "fixed_" + os.path.basename(self.__filename)) 53 "fixed_" + os.path.basename(self.__filename))
53 54
54 self.__fixes = { 55 self.__fixes = {
55 "E101" : self.__fixTabs, 56 "E101": self.__fixTabs,
56 "W191" : self.__fixTabs, 57 "W191": self.__fixTabs,
57 "E201" : self.__fixWhitespaceAfter, 58 "E201": self.__fixWhitespaceAfter,
58 "E202" : self.__fixWhitespaceBefore, 59 "E202": self.__fixWhitespaceBefore,
59 "E203" : self.__fixWhitespaceBefore, 60 "E203": self.__fixWhitespaceBefore,
60 "E211" : self.__fixWhitespaceBefore, 61 "E211": self.__fixWhitespaceBefore,
61 "E221" : self.__fixWhitespaceAroundOperator, 62 "E221": self.__fixWhitespaceAroundOperator,
62 "E222" : self.__fixWhitespaceAroundOperator, 63 "E222": self.__fixWhitespaceAroundOperator,
63 "E225" : self.__fixMissingWhitespaceAroundOperator, 64 "E225": self.__fixMissingWhitespaceAroundOperator,
64 "E231" : self.__fixMissingWhitespaceAfter, 65 "E231": self.__fixMissingWhitespaceAfter,
65 "E241" : self.__fixWhitespaceAroundOperator, 66 "E241": self.__fixWhitespaceAroundOperator,
66 "E251" : self.__fixWhitespaceAroundEquals, 67 "E251": self.__fixWhitespaceAroundEquals,
67 "E261" : self.__fixWhitespaceBeforeInline, 68 "E261": self.__fixWhitespaceBeforeInline,
68 "E262" : self.__fixWhitespaceAfterInline, 69 "E262": self.__fixWhitespaceAfterInline,
69 "W291" : self.__fixWhitespace, 70 "W291": self.__fixWhitespace,
70 "W292" : self.__fixNewline, 71 "W292": self.__fixNewline,
71 "W293" : self.__fixWhitespace, 72 "W293": self.__fixWhitespace,
72 "E301" : self.__fixOneBlankLine, 73 "E301": self.__fixOneBlankLine,
73 "E302" : self.__fixTwoBlankLines, 74 "E302": self.__fixTwoBlankLines,
74 "E303" : self.__fixTooManyBlankLines, 75 "E303": self.__fixTooManyBlankLines,
75 "E304" : self.__fixBlankLinesAfterDecorator, 76 "E304": self.__fixBlankLinesAfterDecorator,
76 "W391" : self.__fixTrailingBlankLines, 77 "W391": self.__fixTrailingBlankLines,
77 "W603" : self.__fixNotEqual, 78 "W603": self.__fixNotEqual,
78 } 79 }
79 self.__modified = False 80 self.__modified = False
80 self.__stack = [] # these need to be fixed before the file is saved 81 self.__stack = [] # these need to be fixed before the file is saved
81 # but after all inline fixes 82 # but after all inline fixes
82 83
177 @param line line number of the issue (integer) 178 @param line line number of the issue (integer)
178 @param pos position inside line (integer) 179 @param pos position inside line (integer)
179 @return flag indicating an applied fix (boolean) and a message for 180 @return flag indicating an applied fix (boolean) and a message for
180 the fix (string) 181 the fix (string)
181 """ 182 """
182 self.__source[line - 1] = re.sub(r'[\t ]*$', "", 183 self.__source[line - 1] = re.sub(r'[\t ]*$', "",
183 self.__source[line - 1]) 184 self.__source[line - 1])
184 return (True, self.trUtf8("Whitespace stripped from end of line.")) 185 return (True, self.trUtf8("Whitespace stripped from end of line."))
185 186
186 def __fixNewline(self, code, line, pos): 187 def __fixNewline(self, code, line, pos):
187 """ 188 """
411 self.__source[line] = self.__source[line][:pos - 1] + \ 412 self.__source[line] = self.__source[line][:pos - 1] + \
412 self.__source[line][pos:] 413 self.__source[line][pos:]
413 pos -= 1 414 pos -= 1
414 return (True, self.trUtf8("Extraneous whitespace removed.")) 415 return (True, self.trUtf8("Extraneous whitespace removed."))
415 416
416 def __fixMissingWhitespaceAroundOperator(self, code, line, pos, 417 def __fixMissingWhitespaceAroundOperator(self, code, line, pos,
417 apply=False): 418 apply=False):
418 """ 419 """
419 Private method to fix missing whitespace after ',;:'. 420 Private method to fix missing whitespace after ',;:'.
420 421
421 @param code code of the issue (string) 422 @param code code of the issue (string)

eric ide

mercurial