--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py Sat Sep 21 18:30:02 2019 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleFixer.py Sat Sep 21 20:30:56 2019 +0200 @@ -288,9 +288,11 @@ else: code = message.split(None, 1)[0].strip() - if line <= len(self.__source) and \ - self.__codeMatch(code) and \ - code in self.__fixes: + if ( + line <= len(self.__source) and + self.__codeMatch(code) and + code in self.__fixes + ): res = self.__fixes[code](code, line, pos) if res[0] == 1: self.__modified = True @@ -568,8 +570,11 @@ else: return (0, "", 0) - newText = self.__getIndent(self.__source[line]) + \ - insertChar + self.__source[line].lstrip() + newText = ( + self.__getIndent(self.__source[line]) + + insertChar + + self.__source[line].lstrip() + ) self.__source[line] = newText # Introductory quotes corrected to be {0}""" return (1, ('FD112', (insertChar,)), 0) @@ -596,8 +601,10 @@ # only correctly formatted docstrings will be fixed return (0, "", 0) - docstring = self.__source[line].rstrip() + \ + docstring = ( + self.__source[line].rstrip() + self.__source[line + 1].strip() + ) if docstring.endswith('"""'): docstring += self.__eol else: @@ -629,17 +636,25 @@ """ line = line - 1 newText = "" - if self.__source[line].rstrip().endswith(('"""', "'''")) and \ - self.__source[line].lstrip().startswith(('"""', 'r"""', 'u"""')): + if ( + self.__source[line].rstrip().endswith(('"""', "'''")) and + self.__source[line].lstrip().startswith(('"""', 'r"""', 'u"""')) + ): # it is a one-liner - newText = self.__source[line].rstrip()[:-3].rstrip() + "." + \ - self.__source[line].rstrip()[-3:] + self.__eol + newText = ( + self.__source[line].rstrip()[:-3].rstrip() + + "." + + self.__source[line].rstrip()[-3:] + + self.__eol + ) else: - if line < len(self.__source) - 1 and \ + if ( + line < len(self.__source) - 1 and (not self.__source[line + 1].strip() or self.__source[line + 1].lstrip().startswith("@") or (self.__source[line + 1].strip() in ('"""', "'''") and - not self.__source[line].lstrip().startswith("@"))): + not self.__source[line].lstrip().startswith("@"))) + ): newText = self.__source[line].rstrip() + "." + self.__eol if newText: @@ -812,8 +827,14 @@ else: # trailing first, second = source[:-3].strip(), source[-3:] - newText = indent + first + self.__eol + \ - indent + second + self.__eol + newText = ( + indent + + first + + self.__eol + + indent + + second + + self.__eol + ) self.__source[line] = newText if code == "D221": # Leading quotes put on separate line. @@ -1004,8 +1025,10 @@ line = line - 1 text = self.__source[line] indentation = self.__getIndent(text) - self.__source[line] = indentation + \ + self.__source[line] = ( + indentation + self.__indentWord + text.lstrip() + ) # Missing indentation of continuation line corrected. return (1, "FE122", 0) return (0, "", 0) @@ -1076,8 +1099,10 @@ if not modified: row = line - 1 text = self.__source[row] - self.__source[row] = self.__getIndent(text) + \ + self.__source[row] = ( + self.__getIndent(text) + self.__indentWord + text.lstrip() + ) # Indentation level changed. return (1, "FE125", 0) return (0, "", 0) @@ -1109,8 +1134,10 @@ logicalLines = logical[2] row = line - 1 text = self.__source[row] - newText = self.__getIndent(logicalLines[0]) + \ + newText = ( + self.__getIndent(logicalLines[0]) + self.__indentWord + text.lstrip() + ) if newText == text: # fall back to slower method changed = self.__fixReindent(line, pos, logical) @@ -1151,8 +1178,11 @@ newText = text if logicalLines[0].rstrip().endswith('\\'): - newText = self.__getIndent(logicalLines[0]) + \ - self.__indentWord + text.lstrip() + newText = ( + self.__getIndent(logicalLines[0]) + + self.__indentWord + + text.lstrip() + ) else: startIndex = None for symbol in '([{': @@ -1291,8 +1321,11 @@ """ line = line - 1 pos = pos + 1 - self.__source[line] = self.__source[line][:pos] + \ - " " + self.__source[line][pos:] + self.__source[line] = ( + self.__source[line][:pos] + + " " + + self.__source[line][pos:] + ) # Missing whitespace added. return (1, "FE231", 0) @@ -1323,8 +1356,6 @@ newText = text[:col].rstrip() + text[col:].lstrip() # There could be an escaped newline - # like 'def foo(a=\ - # 1)' if newText.endswith(('=\\\n', '=\\\r\n', '=\\\r')): self.__source[line] = newText.rstrip("\n\r \t\\") self.__source[line + 1] = self.__source[line + 1].lstrip() @@ -1471,8 +1502,13 @@ if ';' in text: return (0, "", 0) - newText = text[:pos].rstrip("\t ,") + self.__eol + \ - self.__getIndent(text) + "import " + text[pos:].lstrip("\t ,") + newText = ( + text[:pos].rstrip("\t ,") + + self.__eol + + self.__getIndent(text) + + "import " + + text[pos:].lstrip("\t ,") + ) self.__source[line] = newText # Imports were put on separate lines. return (1, "FE401", 0) @@ -1497,8 +1533,9 @@ fix (integer) """ if apply: - multilineStringLines, docStringLines = \ + multilineStringLines, docStringLines = ( self.__multilineStringLines() + ) isDocString = line in docStringLines line = line - 1 text = self.__source[line] @@ -1544,8 +1581,10 @@ a message for the fix (string) and an ID for a deferred fix (integer) """ - self.__source[line - 1] = \ - self.__source[line - 1].rstrip("\n\r \t\\") + self.__eol + self.__source[line - 1] = ( + self.__source[line - 1].rstrip("\n\r \t\\") + + self.__eol + ) # Redundant backslash in brackets removed. return (1, "FE502", 0) @@ -1569,9 +1608,14 @@ text = self.__source[line] pos = pos + 1 - newText = text[:pos] + self.__eol + self.__getIndent(text) + \ - self.__indentWord + text[pos:].lstrip("\n\r \t\\") + \ + newText = ( + text[:pos] + + self.__eol + + self.__getIndent(text) + + self.__indentWord + + text[pos:].lstrip("\n\r \t\\") + self.__eol + ) self.__source[line] = newText # Compound statement corrected. return (1, "FE701", 0) @@ -1679,8 +1723,14 @@ arg = "self" if text.rstrip().endswith("("): - newText = text + self.__getIndent(text) + \ - self.__indentWord + arg + "," + self.__eol + newText = ( + text + + self.__getIndent(text) + + self.__indentWord + + arg + + "," + + self.__eol + ) else: index = text.find("(") + 1 left = text[:index] @@ -1746,8 +1796,9 @@ right = right.lstrip(", ") if right.startswith("):"): # merge with previous line - self.__source[line - 1] = \ + self.__source[line - 1] = ( self.__source[line - 1].rstrip() + right + ) self.__source[line] = "" else: self.__source[line] = indent + right @@ -1918,10 +1969,11 @@ for j in range(i - 1, -1, -1): jline, jlevel = stats[j] if jlevel >= 0: - want = \ - have + \ - self.__getlspace(after[jline - 1]) - \ + want = ( + have + + self.__getlspace(after[jline - 1]) - self.__getlspace(lines[jline]) + ) break if want < 0: # Still no luck -- leave it alone. @@ -2212,8 +2264,9 @@ # pycodestyle. visual_indent = indent_chances.get(start[1]) last_indent = start - rel_indent[row] = \ + rel_indent[row] = ( pycodestyle.expand_indent(line) - indent_level + ) hang = rel_indent[row] - rel_indent[open_row] if token_type == tokenize.OP and text in ']})': @@ -2309,8 +2362,12 @@ return True, newText, "" elif '#' in self.__text: pos = self.__text.rfind("#") - newText = self.__text[:pos].rstrip() + self.__eol + \ - self.__getIndent(self.__text) + self.__text[pos:] + newText = ( + self.__text[:pos].rstrip() + + self.__eol + + self.__getIndent(self.__text) + + self.__text[pos:] + ) if newText == self.__text: return False, "", "" else: @@ -2332,18 +2389,30 @@ if self.__nextText.lstrip().startswith("@"): # eric doc comment # create a new line and indent it - newText = first + self.__eol + \ - self.__getIndent(first) + self.__indentWord + \ + newText = ( + first + + self.__eol + + self.__getIndent(first) + + self.__indentWord + second + ) newNext = "" else: newText = first + self.__eol - newNext = self.__getIndent(self.__nextText) + \ - second.rstrip() + " " + self.__nextText.lstrip() + newNext = ( + self.__getIndent(self.__nextText) + + second.rstrip() + + " " + + self.__nextText.lstrip() + ) else: # empty line, add a new line - newText = first + self.__eol + self.__getIndent(first) + \ + newText = ( + first + + self.__eol + + self.__getIndent(first) + second + ) newNext = "" return True, newText, newNext @@ -2359,8 +2428,12 @@ if source.rstrip().endswith("\\"): # just join the continuation line and let the next run # handle it once it tokenizes ok - newText = indent + source.rstrip()[:-1].rstrip() + " " + \ + newText = ( + indent + + source.rstrip()[:-1].rstrip() + + " " + self.__nextText.lstrip() + ) if indent: newNext = indent else: @@ -2442,9 +2515,11 @@ len(indentation) + 72) MIN_CHARACTER_REPEAT = 5 - if len(newText) - len(newText.rstrip(newText[-1])) >= \ - MIN_CHARACTER_REPEAT and \ - not newText[-1].isalnum(): + if ( + len(newText) - len(newText.rstrip(newText[-1])) >= + MIN_CHARACTER_REPEAT and + not newText[-1].isalnum() + ): # Trim comments that end with things like --------- return newText[:maxLength] + self.__eol elif isLast and re.match(r"\s*#+\s*\w+", newText): @@ -2504,13 +2579,21 @@ newText += self.__getIndent(newText) + second + self.__eol newNext = "" else: - newNext = self.__getIndent(newNext) + \ - second + " " + newNext.lstrip() + newNext = ( + self.__getIndent(newNext) + + second + + " " + + newNext.lstrip() + ) else: # empty line, add a new line newText = first + self.__eol - newNext = self.__getIndent(newNext) + \ - second + self.__eol + newNext.lstrip() + newNext = ( + self.__getIndent(newNext) + + second + + self.__eol + + newNext.lstrip() + ) return newText, newNext else: return None @@ -2672,8 +2755,10 @@ for ending in '([{': # Avoid lonely opening. They result in longer lines. - if currentLine.endswith(ending) and \ - len(currentLine.strip()) <= len(self.__indentWord): + if ( + currentLine.endswith(ending) and + len(currentLine.strip()) <= len(self.__indentWord) + ): rank += 100 if currentLine.endswith('%'):