From 9113d23b91dfaa48b5886e19355ecdc2dcf71193 Mon Sep 17 00:00:00 2001 From: MinekPo1 <68391527+MinekPo1@users.noreply.github.com> Date: Sun, 6 Mar 2022 00:20:13 +0100 Subject: [PATCH 1/5] Added the ability to ignore W191 aka to leave tabs alone --- autopep8.py | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/autopep8.py b/autopep8.py index 121b8f6e..ad24819b 100755 --- a/autopep8.py +++ b/autopep8.py @@ -1661,9 +1661,9 @@ def get_item(items, index, default=None): return default -def reindent(source, indent_size): +def reindent(source, indent_size,leave_tabs = False): """Reindent all lines.""" - reindenter = Reindenter(source) + reindenter = Reindenter(source,leave_tabs) return reindenter.run(indent_size) @@ -3020,7 +3020,7 @@ class Reindenter(object): """ - def __init__(self, input_text): + def __init__(self, input_text, leave_tabs=False): sio = io.StringIO(input_text) source_lines = sio.readlines() @@ -3037,10 +3037,16 @@ def __init__(self, input_text): else: # Only expand leading tabs. with_rstrip = line_number != len(source_lines) - self.lines.append( - _get_indentation(line).expandtabs() + - _remove_leading_and_normalize(line, with_rstrip) - ) + if leave_tabs: + self.lines.append( + _get_indentation(line) + + _remove_leading_and_normalize(line, with_rstrip) + ) + else: + self.lines.append( + _get_indentation(line).expandtabs() + + _remove_leading_and_normalize(line, with_rstrip) + ) self.lines.insert(0, None) self.index = 1 # index into self.lines of next line @@ -3689,7 +3695,9 @@ def apply_global_fixes(source, options, where='global', filename='', if any(code_match(code, select=options.select, ignore=options.ignore) for code in ['E101', 'E111']): source = reindent(source, - indent_size=options.indent_size) + indent_size=options.indent_size, + leave_tabs=not(code_match('W191',select=options.select,ignore=options.ignore)) + ) for (code, function) in global_fixes(): if code.upper() in SELECTED_GLOBAL_FIXED_METHOD_CODES \ From c1201f4f45a099e8c7495c8a0349306a9d497424 Mon Sep 17 00:00:00 2001 From: MinekPo1 <68391527+MinekPo1@users.noreply.github.com> Date: Sun, 6 Mar 2022 00:27:37 +0100 Subject: [PATCH 2/5] Added related test --- .vscode/settings.json | 12 ++++++++++++ test/test_autopep8.py | 12 +++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..b7f268b2 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "python.linting.enabled": false, + "python.testing.unittestArgs": [ + "-v", + "-s", + "./test", + "-p", + "test_*.py" + ], + "python.testing.pytestEnabled": false, + "python.testing.unittestEnabled": true +} diff --git a/test/test_autopep8.py b/test/test_autopep8.py index 2e189d62..1a6947b7 100755 --- a/test/test_autopep8.py +++ b/test/test_autopep8.py @@ -1810,6 +1810,16 @@ def test_w191(self): with autopep8_context(line, options=['--aggressive']) as result: self.assertEqual(fixed, result) + def test_w191_ignore(self): + line = """\ +while True: +\tif True: +\t\t1 +""" + with autopep8_context(line, options=['--aggressive', '--ignore=W191']) as result: + self.assertEqual(line, result) + + def test_e131_with_select_option(self): line = 'd = f(\n a="hello"\n "world",\n b=1)\n' fixed = 'd = f(\n a="hello"\n "world",\n b=1)\n' @@ -5834,7 +5844,7 @@ def test_parallel_jobs_with_diff_option(self): --- original/{filename} +++ fixed/{filename} @@ -1 +1 @@ --'abc' +-'abc' +'abc' """.format(filename=filename)) self.assertEqual(p.returncode, autopep8.EXIT_CODE_OK) From d8e023395561eb325992792ad3ccf56f7026c50d Mon Sep 17 00:00:00 2001 From: MinekPo1 <68391527+MinekPo1@users.noreply.github.com> Date: Sun, 6 Mar 2022 00:46:54 +0100 Subject: [PATCH 3/5] fix pep8 --- autopep8.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/autopep8.py b/autopep8.py index ad24819b..b4406c74 100755 --- a/autopep8.py +++ b/autopep8.py @@ -1661,9 +1661,9 @@ def get_item(items, index, default=None): return default -def reindent(source, indent_size,leave_tabs = False): +def reindent(source, indent_size, leave_tabs=False): """Reindent all lines.""" - reindenter = Reindenter(source,leave_tabs) + reindenter = Reindenter(source, leave_tabs) return reindenter.run(indent_size) @@ -3696,8 +3696,13 @@ def apply_global_fixes(source, options, where='global', filename='', for code in ['E101', 'E111']): source = reindent(source, indent_size=options.indent_size, - leave_tabs=not(code_match('W191',select=options.select,ignore=options.ignore)) - ) + leave_tabs=not( + code_match( + 'W191', + select=options.select, + ignore=options.ignore) + ) + ) for (code, function) in global_fixes(): if code.upper() in SELECTED_GLOBAL_FIXED_METHOD_CODES \ From c457e426fe96f2c0ac933c3df5f221e3593574e2 Mon Sep 17 00:00:00 2001 From: MinekPo1 <68391527+MinekPo1@users.noreply.github.com> Date: Sun, 6 Mar 2022 12:30:37 +0100 Subject: [PATCH 4/5] Fix test. Oops! --- test/test_autopep8.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/test_autopep8.py b/test/test_autopep8.py index 1a6947b7..40b65465 100755 --- a/test/test_autopep8.py +++ b/test/test_autopep8.py @@ -5836,6 +5836,7 @@ def test_parallel_jobs_with_diff_option(self): ['--jobs=3', '--diff'], stdout=PIPE) p.wait() output = p.stdout.read().decode() + output = output.replace("\r\n","\n") # windows compatibility p.stdout.close() actual_diffs = [] @@ -5844,9 +5845,9 @@ def test_parallel_jobs_with_diff_option(self): --- original/{filename} +++ fixed/{filename} @@ -1 +1 @@ --'abc' +-'abc' {blank} +'abc' -""".format(filename=filename)) +""".format(filename=filename, blank="")) # in case the users IDE trims leaning whitespace self.assertEqual(p.returncode, autopep8.EXIT_CODE_OK) for actual_diff in actual_diffs: self.assertIn(actual_diff, output) From 23944ffc2bc7119852d9e8556e3d5e561a0891f6 Mon Sep 17 00:00:00 2001 From: MinekPo1 <68391527+MinekPo1@users.noreply.github.com> Date: Sun, 6 Mar 2022 12:31:22 +0100 Subject: [PATCH 5/5] remove vscode settings I accidentaly pushed --- .vscode/settings.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index b7f268b2..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "python.linting.enabled": false, - "python.testing.unittestArgs": [ - "-v", - "-s", - "./test", - "-p", - "test_*.py" - ], - "python.testing.pytestEnabled": false, - "python.testing.unittestEnabled": true -}