[Python-checkins] bpo-45975: Use walrus operator for some idlelib while loops (GH-31083)

terryjreedy webhook-mailer at python.org
Wed Feb 2 20:59:32 EST 2022


https://github.com/python/cpython/commit/51a95be1d035a717ab29e98056b8831a98e61125
commit: 51a95be1d035a717ab29e98056b8831a98e61125
branch: main
author: Nick Drozd <nicholasdrozd at gmail.com>
committer: terryjreedy <tjreedy at udel.edu>
date: 2022-02-02T20:59:24-05:00
summary:

bpo-45975: Use walrus operator for some idlelib while loops (GH-31083)

files:
M Lib/idlelib/idle_test/test_sidebar.py
M Lib/idlelib/pyparse.py
M Lib/idlelib/replace.py
M Lib/idlelib/run.py
M Lib/idlelib/sidebar.py

diff --git a/Lib/idlelib/idle_test/test_sidebar.py b/Lib/idlelib/idle_test/test_sidebar.py
index 53ac3eb27335d..01fd6a04d0de3 100644
--- a/Lib/idlelib/idle_test/test_sidebar.py
+++ b/Lib/idlelib/idle_test/test_sidebar.py
@@ -474,10 +474,7 @@ def get_shell_line_y_coords(self):
         index = text.index("@0,0")
         if index.split('.', 1)[1] != '0':
             index = text.index(f"{index} +1line linestart")
-        while True:
-            lineinfo = text.dlineinfo(index)
-            if lineinfo is None:
-                break
+        while (lineinfo := text.dlineinfo(index)) is not None:
             y_coords.append(lineinfo[1])
             index = text.index(f"{index} +1line")
         return y_coords
diff --git a/Lib/idlelib/pyparse.py b/Lib/idlelib/pyparse.py
index d34872b4396e1..a94327533d865 100644
--- a/Lib/idlelib/pyparse.py
+++ b/Lib/idlelib/pyparse.py
@@ -179,14 +179,10 @@ def find_good_parse_start(self, is_char_in_string):
         # Peeking back worked; look forward until _synchre no longer
         # matches.
         i = pos + 1
-        while 1:
-            m = _synchre(code, i)
-            if m:
-                s, i = m.span()
-                if not is_char_in_string(s):
-                    pos = s
-            else:
-                break
+        while (m := _synchre(code, i)):
+            s, i = m.span()
+            if not is_char_in_string(s):
+                pos = s
         return pos
 
     def set_lo(self, lo):
diff --git a/Lib/idlelib/replace.py b/Lib/idlelib/replace.py
index 2f9ca231a05e4..ac04ed94dd475 100644
--- a/Lib/idlelib/replace.py
+++ b/Lib/idlelib/replace.py
@@ -158,11 +158,8 @@ def replace_all(self, event=None):
         first = last = None
         # XXX ought to replace circular instead of top-to-bottom when wrapping
         text.undo_block_start()
-        while True:
-            res = self.engine.search_forward(text, prog, line, col,
-                                             wrap=False, ok=ok)
-            if not res:
-                break
+        while (res := self.engine.search_forward(
+                text, prog, line, col, wrap=False, ok=ok)):
             line, m = res
             chars = text.get("%d.0" % line, "%d.0" % (line+1))
             orig = m.group()
diff --git a/Lib/idlelib/run.py b/Lib/idlelib/run.py
index 47c4cbdcb8c3f..01f8d65426abc 100644
--- a/Lib/idlelib/run.py
+++ b/Lib/idlelib/run.py
@@ -482,9 +482,7 @@ def read(self, size=-1):
         result = self._line_buffer
         self._line_buffer = ''
         if size < 0:
-            while True:
-                line = self.shell.readline()
-                if not line: break
+            while (line := self.shell.readline()):
                 result += line
         else:
             while len(result) < size:
diff --git a/Lib/idlelib/sidebar.py b/Lib/idlelib/sidebar.py
index 018c368f421c6..fb1084dbf3f18 100644
--- a/Lib/idlelib/sidebar.py
+++ b/Lib/idlelib/sidebar.py
@@ -471,10 +471,7 @@ def update_sidebar(self):
         index = text.index("@0,0")
         if index.split('.', 1)[1] != '0':
             index = text.index(f'{index}+1line linestart')
-        while True:
-            lineinfo = text.dlineinfo(index)
-            if lineinfo is None:
-                break
+        while (lineinfo := text.dlineinfo(index)) is not None:
             y = lineinfo[1]
             prev_newline_tagnames = text_tagnames(f"{index} linestart -1c")
             prompt = (



More information about the Python-checkins mailing list