Skip to content

Commit ecaeb45

Browse files
committed
Simplify some while-loops
1 parent e8659b4 commit ecaeb45

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+58
-206
lines changed

Lib/_pyio.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -651,10 +651,7 @@ def read(self, size=-1):
651651
def readall(self):
652652
"""Read until EOF, using multiple read() call."""
653653
res = bytearray()
654-
while True:
655-
data = self.read(DEFAULT_BUFFER_SIZE)
656-
if not data:
657-
break
654+
while (data := self.read(DEFAULT_BUFFER_SIZE)):
658655
res += data
659656
if res:
660657
return bytes(res)

Lib/aifc.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -954,9 +954,6 @@ def open(f, mode=None):
954954
print("Writing", gn)
955955
with open(gn, 'w') as g:
956956
g.setparams(f.getparams())
957-
while 1:
958-
data = f.readframes(1024)
959-
if not data:
960-
break
957+
while (data := f.readframes(1024)):
961958
g.writeframes(data)
962959
print("Done.")

Lib/base64.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -508,10 +508,7 @@ def b85decode(b):
508508

509509
def encode(input, output):
510510
"""Encode a file; input and output are binary files."""
511-
while True:
512-
s = input.read(MAXBINSIZE)
513-
if not s:
514-
break
511+
while (s := input.read(MAXBINSIZE)):
515512
while len(s) < MAXBINSIZE:
516513
ns = input.read(MAXBINSIZE-len(s))
517514
if not ns:
@@ -523,10 +520,7 @@ def encode(input, output):
523520

524521
def decode(input, output):
525522
"""Decode a file; input and output are binary files."""
526-
while True:
527-
line = input.readline()
528-
if not line:
529-
break
523+
while (line := input.readline()):
530524
s = binascii.a2b_base64(line)
531525
output.write(s)
532526

Lib/ctypes/_aix.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,12 +108,8 @@ def get_ld_headers(file):
108108
p = Popen(["/usr/bin/dump", f"-X{AIX_ABI}", "-H", file],
109109
universal_newlines=True, stdout=PIPE, stderr=DEVNULL)
110110
# be sure to read to the end-of-file - getting all entries
111-
while True:
112-
ld_header = get_ld_header(p)
113-
if ld_header:
114-
ldr_headers.append((ld_header, get_ld_header_info(p)))
115-
else:
116-
break
111+
while (ld_header := get_ld_header(p)):
112+
ldr_headers.append((ld_header, get_ld_header_info(p)))
117113
p.stdout.close()
118114
p.wait()
119115
return ldr_headers

Lib/distutils/command/bdist_rpm.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,7 @@ def run(self):
341341
try:
342342
binary_rpms = []
343343
source_rpm = None
344-
while True:
345-
line = out.readline()
346-
if not line:
347-
break
344+
while (line := out.readline()):
348345
l = line.strip().split()
349346
assert(len(l) == 2)
350347
binary_rpms.append(l[1])

Lib/distutils/command/config.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -204,10 +204,7 @@ def search_cpp(self, pattern, body=None, headers=None, include_dirs=None,
204204

205205
with open(out) as file:
206206
match = False
207-
while True:
208-
line = file.readline()
209-
if line == '':
210-
break
207+
while (line := file.readline()) != '':
211208
if pattern.search(line):
212209
match = True
213210
break

Lib/distutils/command/sdist.py

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -333,11 +333,7 @@ def read_template(self):
333333
collapse_join=1)
334334

335335
try:
336-
while True:
337-
line = template.readline()
338-
if line is None: # end of file
339-
break
340-
336+
while (line := template.readline()) is not None: # eof
341337
try:
342338
self.filelist.process_template_line(line)
343339
# the call above can raise a DistutilsTemplateError for

Lib/distutils/extension.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,10 +158,7 @@ def read_setup_file(filename):
158158
try:
159159
extensions = []
160160

161-
while True:
162-
line = file.readline()
163-
if line is None: # eof
164-
break
161+
while (line := file.readline()) is not None: # eof
165162
if re.match(_variable_rx, line): # VAR=VALUE, handled in first pass
166163
continue
167164

Lib/distutils/sysconfig.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,10 +88,7 @@ def parse_makefile(fn, g=None):
8888
done = {}
8989
notdone = {}
9090

91-
while True:
92-
line = fp.readline()
93-
if line is None: # eof
94-
break
91+
while (line := fp.readline()) is not None: # eof
9592
m = re.match(_variable_rx, line)
9693
if m:
9794
n, v = m.group(1, 2)

Lib/distutils/text_file.py

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -273,11 +273,9 @@ def readlines(self):
273273
"""Read and return the list of all logical lines remaining in the
274274
current file."""
275275
lines = []
276-
while True:
277-
line = self.readline()
278-
if line is None:
279-
return lines
276+
while (line := self.readline()) is not None:
280277
lines.append(line)
278+
return lines
281279

282280
def unreadline(self, line):
283281
"""Push 'line' (a string) onto an internal buffer that will be

Lib/email/parser.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,10 +49,7 @@ def parse(self, fp, headersonly=False):
4949
feedparser = FeedParser(self._class, policy=self.policy)
5050
if headersonly:
5151
feedparser._set_headersonly()
52-
while True:
53-
data = fp.read(8192)
54-
if not data:
55-
break
52+
while (data := fp.read(8192)):
5653
feedparser.feed(data)
5754
return feedparser.close()
5855

Lib/ftplib.py

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -434,10 +434,7 @@ def retrbinary(self, cmd, callback, blocksize=8192, rest=None):
434434
"""
435435
self.voidcmd('TYPE I')
436436
with self.transfercmd(cmd, rest) as conn:
437-
while 1:
438-
data = conn.recv(blocksize)
439-
if not data:
440-
break
437+
while (data := conn.recv(blocksize)):
441438
callback(data)
442439
# shutdown ssl layer
443440
if _SSLSocket is not None and isinstance(conn, _SSLSocket):
@@ -496,10 +493,7 @@ def storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None):
496493
"""
497494
self.voidcmd('TYPE I')
498495
with self.transfercmd(cmd, rest) as conn:
499-
while 1:
500-
buf = fp.read(blocksize)
501-
if not buf:
502-
break
496+
while (buf := fp.read(blocksize)):
503497
conn.sendall(buf)
504498
if callback:
505499
callback(buf)

Lib/http/client.py

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -578,11 +578,7 @@ def _read_chunked(self, amt=None):
578578
assert self.chunked != _UNKNOWN
579579
value = []
580580
try:
581-
while True:
582-
chunk_left = self._get_chunk_left()
583-
if chunk_left is None:
584-
break
585-
581+
while (chunk_left := self._get_chunk_left()) is not None:
586582
if amt is not None and amt <= chunk_left:
587583
value.append(self._safe_read(amt))
588584
self.chunk_left = chunk_left - amt
@@ -984,10 +980,7 @@ def send(self, data):
984980
encode = self._is_textIO(data)
985981
if encode and self.debuglevel > 0:
986982
print("encoding file using iso-8859-1")
987-
while 1:
988-
datablock = data.read(self.blocksize)
989-
if not datablock:
990-
break
983+
while (datablock := data.read(self.blocksize)):
991984
if encode:
992985
datablock = datablock.encode("iso-8859-1")
993986
sys.audit("http.client.send", self, datablock)
@@ -1017,10 +1010,7 @@ def _read_readable(self, readable):
10171010
encode = self._is_textIO(readable)
10181011
if encode and self.debuglevel > 0:
10191012
print("encoding file using iso-8859-1")
1020-
while True:
1021-
datablock = readable.read(self.blocksize)
1022-
if not datablock:
1023-
break
1013+
while (datablock := readable.read(self.blocksize)):
10241014
if encode:
10251015
datablock = datablock.encode("iso-8859-1")
10261016
yield datablock

Lib/http/cookiejar.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1920,9 +1920,7 @@ def _really_load(self, f, filename, ignore_discard, ignore_expires):
19201920
"comment", "commenturl")
19211921

19221922
try:
1923-
while 1:
1924-
line = f.readline()
1925-
if line == "": break
1923+
while (line := f.readline()) != "":
19261924
if not line.startswith(header):
19271925
continue
19281926
line = line[len(header):].strip()
@@ -2022,12 +2020,9 @@ def _really_load(self, f, filename, ignore_discard, ignore_expires):
20222020
filename)
20232021

20242022
try:
2025-
while 1:
2026-
line = f.readline()
2023+
while (line := f.readline()) != "":
20272024
rest = {}
20282025

2029-
if line == "": break
2030-
20312026
# httponly is a cookie flag as defined in rfc6265
20322027
# when encoded in a netscape cookie file,
20332028
# the line is prepended with "#HttpOnly_"

Lib/idlelib/idle_test/test_sidebar.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -474,10 +474,7 @@ def get_shell_line_y_coords(self):
474474
index = text.index("@0,0")
475475
if index.split('.', 1)[1] != '0':
476476
index = text.index(f"{index} +1line linestart")
477-
while True:
478-
lineinfo = text.dlineinfo(index)
479-
if lineinfo is None:
480-
break
477+
while (lineinfo := text.dlineinfo(index)) is not None:
481478
y_coords.append(lineinfo[1])
482479
index = text.index(f"{index} +1line")
483480
return y_coords

Lib/idlelib/pyparse.py

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -179,14 +179,10 @@ def find_good_parse_start(self, is_char_in_string):
179179
# Peeking back worked; look forward until _synchre no longer
180180
# matches.
181181
i = pos + 1
182-
while 1:
183-
m = _synchre(code, i)
184-
if m:
185-
s, i = m.span()
186-
if not is_char_in_string(s):
187-
pos = s
188-
else:
189-
break
182+
while (m := _synchre(code, i)):
183+
s, i = m.span()
184+
if not is_char_in_string(s):
185+
pos = s
190186
return pos
191187

192188
def set_lo(self, lo):

Lib/idlelib/replace.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -158,11 +158,8 @@ def replace_all(self, event=None):
158158
first = last = None
159159
# XXX ought to replace circular instead of top-to-bottom when wrapping
160160
text.undo_block_start()
161-
while True:
162-
res = self.engine.search_forward(text, prog, line, col,
163-
wrap=False, ok=ok)
164-
if not res:
165-
break
161+
while (res := self.engine.search_forward(
162+
text, prog, line, col, wrap=False, ok=ok)):
166163
line, m = res
167164
chars = text.get("%d.0" % line, "%d.0" % (line+1))
168165
orig = m.group()

Lib/idlelib/run.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -482,9 +482,7 @@ def read(self, size=-1):
482482
result = self._line_buffer
483483
self._line_buffer = ''
484484
if size < 0:
485-
while True:
486-
line = self.shell.readline()
487-
if not line: break
485+
while (line := self.shell.readline()):
488486
result += line
489487
else:
490488
while len(result) < size:

Lib/idlelib/sidebar.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -471,10 +471,7 @@ def update_sidebar(self):
471471
index = text.index("@0,0")
472472
if index.split('.', 1)[1] != '0':
473473
index = text.index(f'{index}+1line linestart')
474-
while True:
475-
lineinfo = text.dlineinfo(index)
476-
if lineinfo is None:
477-
break
474+
while (lineinfo := text.dlineinfo(index)) is not None:
478475
y = lineinfo[1]
479476
prev_newline_tagnames = text_tagnames(f"{index} linestart -1c")
480477
prompt = (

Lib/mailbox.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1956,10 +1956,7 @@ def readlines(self, sizehint=None):
19561956

19571957
def __iter__(self):
19581958
"""Iterate over lines."""
1959-
while True:
1960-
line = self.readline()
1961-
if not line:
1962-
return
1959+
while (line := self.readline()):
19631960
yield line
19641961

19651962
def tell(self):

Lib/mailcap.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,7 @@ def _readmailcapfile(fp, lineno):
7878
the viewing command is stored with the key "view".
7979
"""
8080
caps = {}
81-
while 1:
82-
line = fp.readline()
83-
if not line: break
81+
while (line := fp.readline()):
8482
# Ignore comments and blank lines
8583
if line[0] == '#' or line.strip() == '':
8684
continue

Lib/mimetypes.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -219,10 +219,7 @@ def readfp(self, fp, strict=True):
219219
list of standard types, else to the list of non-standard
220220
types.
221221
"""
222-
while 1:
223-
line = fp.readline()
224-
if not line:
225-
break
222+
while (line := fp.readline()):
226223
words = line.split()
227224
for i in range(len(words)):
228225
if words[i][0] == '#':

Lib/pstats.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,8 +223,6 @@ def get_sort_arg_defs(self):
223223
for word, tup in self.sort_arg_dict_default.items():
224224
fragment = word
225225
while fragment:
226-
if not fragment:
227-
break
228226
if fragment in dict:
229227
bad_list[fragment] = 0
230228
break

Lib/pydoc.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -679,9 +679,7 @@ def markup(self, text, escape=None, funcs={}, classes={}, methods={}):
679679
r'RFC[- ]?(\d+)|'
680680
r'PEP[- ]?(\d+)|'
681681
r'(self\.)?(\w+))')
682-
while True:
683-
match = pattern.search(text, here)
684-
if not match: break
682+
while (match := pattern.search(text, here)):
685683
start, end = match.span()
686684
results.append(escape(text[here:start]))
687685

Lib/quopri.py

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,10 +67,7 @@ def write(s, output=output, lineEnd=b'\n'):
6767
output.write(s + lineEnd)
6868

6969
prevline = None
70-
while 1:
71-
line = input.readline()
72-
if not line:
73-
break
70+
while (line := input.readline()):
7471
outline = []
7572
# Strip off any readline induced trailing newline
7673
stripped = b''
@@ -126,9 +123,7 @@ def decode(input, output, header=False):
126123
return
127124

128125
new = b''
129-
while 1:
130-
line = input.readline()
131-
if not line: break
126+
while (line := input.readline()):
132127
i, n = 0, len(line)
133128
if n > 0 and line[n-1:n] == b'\n':
134129
partial = 0; n = n-1

Lib/shlex.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -335,10 +335,7 @@ def quote(s):
335335

336336

337337
def _print_tokens(lexer):
338-
while 1:
339-
tt = lexer.get_token()
340-
if not tt:
341-
break
338+
while (tt := lexer.get_token()):
342339
print("Token: " + repr(tt))
343340

344341
if __name__ == '__main__':

0 commit comments

Comments
 (0)