summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnon Yaari <wiggin15@yahoo.com>2024-09-06 07:33:40 (GMT)
committerGitHub <noreply@github.com>2024-09-06 07:33:40 (GMT)
commitd683f49a7b0635a26150cfbb398a3d93b227a74e (patch)
tree053b00ac18ec291c35899ae9cbf13ec40c21124f
parent67957ea77da8c667df1508a9d3d9b39e59f671d6 (diff)
downloadcpython-d683f49a7b0635a26150cfbb398a3d93b227a74e.zip
cpython-d683f49a7b0635a26150cfbb398a3d93b227a74e.tar.gz
cpython-d683f49a7b0635a26150cfbb398a3d93b227a74e.tar.bz2
gh-111201: fix auto-indent in pyrepl for muliple pound comments (#123196)
-rw-r--r--Lib/_pyrepl/readline.py2
-rw-r--r--Lib/test/test_pyrepl/test_pyrepl.py18
2 files changed, 19 insertions, 1 deletions
diff --git a/Lib/_pyrepl/readline.py b/Lib/_pyrepl/readline.py
index dfacfd8..a6ef138 100644
--- a/Lib/_pyrepl/readline.py
+++ b/Lib/_pyrepl/readline.py
@@ -249,7 +249,7 @@ def _should_auto_indent(buffer: list[str], pos: int) -> bool:
while pos > 0:
pos -= 1
if last_char is None:
- if buffer[pos] not in " \t\n": # ignore whitespaces
+ if buffer[pos] not in " \t\n#": # ignore whitespaces and comments
last_char = buffer[pos]
else:
# even if we found a non-whitespace character before
diff --git a/Lib/test/test_pyrepl/test_pyrepl.py b/Lib/test/test_pyrepl/test_pyrepl.py
index 012ce7c..d9d83c4 100644
--- a/Lib/test/test_pyrepl/test_pyrepl.py
+++ b/Lib/test/test_pyrepl/test_pyrepl.py
@@ -466,6 +466,24 @@ class TestPyReplAutoindent(TestCase):
output = multiline_input(reader)
self.assertEqual(output, output_code)
+ def test_auto_indent_with_multicomment(self):
+ # fmt: off
+ events = code_to_events(
+ "def f(): ## foo\n"
+ "pass\n\n"
+ )
+
+ output_code = (
+ "def f(): ## foo\n"
+ " pass\n"
+ " "
+ )
+ # fmt: on
+
+ reader = self.prepare_reader(events)
+ output = multiline_input(reader)
+ self.assertEqual(output, output_code)
+
def test_auto_indent_ignore_comments(self):
# fmt: off
events = code_to_events(