Skip to content

gh-103668: Run pyugrade on idlelib #103671

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Apr 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions Lib/idlelib/calltip_w.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def __init__(self, text_widget):
text_widget: a Text widget with code for which call-tips are desired
"""
# Note: The Text widget will be accessible as self.anchor_widget
super(CalltipWindow, self).__init__(text_widget)
super().__init__(text_widget)

self.label = self.text = None
self.parenline = self.parencol = self.lastline = None
Expand Down Expand Up @@ -54,7 +54,7 @@ def position_window(self):
return
self.lastline = curline
self.anchor_widget.see("insert")
super(CalltipWindow, self).position_window()
super().position_window()

def showtip(self, text, parenleft, parenright):
"""Show the call-tip, bind events which will close it and reposition it.
Expand All @@ -73,7 +73,7 @@ def showtip(self, text, parenleft, parenright):
self.parenline, self.parencol = map(
int, self.anchor_widget.index(parenleft).split("."))

super(CalltipWindow, self).showtip()
super().showtip()

self._bind_events()

Expand Down Expand Up @@ -143,7 +143,7 @@ def hidetip(self):
# ValueError may be raised by MultiCall
pass

super(CalltipWindow, self).hidetip()
super().hidetip()

def _bind_events(self):
"""Bind event handlers."""
Expand Down
7 changes: 4 additions & 3 deletions Lib/idlelib/debugger.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,9 @@ def __frame2message(self, frame):
filename = code.co_filename
lineno = frame.f_lineno
basename = os.path.basename(filename)
message = "%s:%s" % (basename, lineno)
message = f"{basename}:{lineno}"
if code.co_name != "?":
message = "%s: %s()" % (message, code.co_name)
message = f"{message}: {code.co_name}()"
return message


Expand Down Expand Up @@ -213,7 +213,8 @@ def interaction(self, message, frame, info=None):
m1 = "%s" % str(type)
if value is not None:
try:
m1 = "%s: %s" % (m1, str(value))
# TODO redo entire section, tries not needed.
m1 = f"{m1}: {value}"
except:
pass
bg = "yellow"
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/debugobj.py
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ def GetSubList(self):
continue
def setfunction(value, key=key, object=self.object):
object[key] = value
item = make_objecttreeitem("%r:" % (key,), value, setfunction)
item = make_objecttreeitem(f"{key!r}:", value, setfunction)
sublist.append(item)
return sublist

Expand Down
13 changes: 7 additions & 6 deletions Lib/idlelib/editor.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,13 @@
def _sphinx_version():
"Format sys.version_info to produce the Sphinx version string used to install the chm docs"
major, minor, micro, level, serial = sys.version_info
release = '%s%s' % (major, minor)
release += '%s' % (micro,)
# TODO remove unneeded function since .chm no longer installed
release = f'{major}{minor}'
release += f'{micro}'
if level == 'candidate':
release += 'rc%s' % (serial,)
release += f'rc{serial}'
elif level != 'final':
release += '%s%s' % (level[0], serial)
release += f'{level[0]}{serial}'
return release


Expand Down Expand Up @@ -950,7 +951,7 @@ def update_recent_files_list(self, new_file=None):
rf_list = []
file_path = self.recent_files_path
if file_path and os.path.exists(file_path):
with open(file_path, 'r',
with open(file_path,
encoding='utf_8', errors='replace') as rf_list_file:
rf_list = rf_list_file.readlines()
if new_file:
Expand Down Expand Up @@ -1458,7 +1459,7 @@ def newline_and_indent_event(self, event):
else:
self.reindent_to(y.compute_backslash_indent())
else:
assert 0, "bogus continuation type %r" % (c,)
assert 0, f"bogus continuation type {c!r}"
return "break"

# This line starts a brand new statement; indent relative to
Expand Down
4 changes: 2 additions & 2 deletions Lib/idlelib/filelist.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def open(self, filename, action=None):
# This can happen when bad filename is passed on command line:
messagebox.showerror(
"File Error",
"%r is a directory." % (filename,),
f"{filename!r} is a directory.",
master=self.root)
return None
key = os.path.normcase(filename)
Expand Down Expand Up @@ -90,7 +90,7 @@ def filename_changed_edit(self, edit):
self.inversedict[conflict] = None
messagebox.showerror(
"Name Conflict",
"You now have multiple edit windows open for %r" % (filename,),
f"You now have multiple edit windows open for {filename!r}",
master=self.root)
self.dict[newkey] = edit
self.inversedict[edit] = newkey
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/idle_test/test_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ def setUpClass(cls):
idle_dir = os.path.abspath(sys.path[0])
for ctype in conf.config_types:
config_path = os.path.join(idle_dir, '../config-%s.def' % ctype)
with open(config_path, 'r') as f:
with open(config_path) as f:
cls.config_string[ctype] = f.read()

cls.orig_warn = config._warn
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/idle_test/test_outwin.py
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ def test_file_line_helper(self, mock_open):
for line, expected_output in test_lines:
self.assertEqual(flh(line), expected_output)
if expected_output:
mock_open.assert_called_with(expected_output[0], 'r')
mock_open.assert_called_with(expected_output[0])


if __name__ == '__main__':
Expand Down
10 changes: 5 additions & 5 deletions Lib/idlelib/multicall.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,9 @@
_modifier_masks = (MC_CONTROL, MC_ALT, MC_SHIFT, MC_META)

# a dictionary to map a modifier name into its number
_modifier_names = dict([(name, number)
_modifier_names = {name: number
for number in range(len(_modifiers))
for name in _modifiers[number]])
for name in _modifiers[number]}

# In 3.4, if no shell window is ever open, the underlying Tk widget is
# destroyed before .__del__ methods here are called. The following
Expand Down Expand Up @@ -134,7 +134,7 @@ def nbits(n):
return nb
statelist = []
for state in states:
substates = list(set(state & x for x in states))
substates = list({state & x for x in states})
substates.sort(key=nbits, reverse=True)
statelist.append(substates)
return statelist
Expand Down Expand Up @@ -258,9 +258,9 @@ def __del__(self):
_binder_classes = (_ComplexBinder,) * 4 + (_SimpleBinder,) * (len(_types)-4)

# A dictionary to map a type name into its number
_type_names = dict([(name, number)
_type_names = {name: number
for number in range(len(_types))
for name in _types[number]])
for name in _types[number]}

_keysym_re = re.compile(r"^\w+$")
_button_re = re.compile(r"^[1-5]$")
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/outwin.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ def file_line_helper(line):
if match:
filename, lineno = match.group(1, 2)
try:
f = open(filename, "r")
f = open(filename)
f.close()
break
except OSError:
Expand Down
20 changes: 10 additions & 10 deletions Lib/idlelib/pyshell.py
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ def store_file_breaks(self):
breaks = self.breakpoints
filename = self.io.filename
try:
with open(self.breakpointPath, "r") as fp:
with open(self.breakpointPath) as fp:
lines = fp.readlines()
except OSError:
lines = []
Expand Down Expand Up @@ -279,7 +279,7 @@ def restore_file_breaks(self):
if filename is None:
return
if os.path.isfile(self.breakpointPath):
with open(self.breakpointPath, "r") as fp:
with open(self.breakpointPath) as fp:
lines = fp.readlines()
for line in lines:
if line.startswith(filename + '='):
Expand Down Expand Up @@ -441,7 +441,7 @@ def build_subprocess_arglist(self):
# run from the IDLE source directory.
del_exitf = idleConf.GetOption('main', 'General', 'delete-exitfunc',
default=False, type='bool')
command = "__import__('idlelib.run').run.main(%r)" % (del_exitf,)
command = f"__import__('idlelib.run').run.main({del_exitf!r})"
return [sys.executable] + w + ["-c", command, str(self.port)]

def start_subprocess(self):
Expand Down Expand Up @@ -574,9 +574,9 @@ def transfer_path(self, with_cwd=False):

self.runcommand("""if 1:
import sys as _sys
_sys.path = %r
_sys.path = {!r}
del _sys
\n""" % (path,))
\n""".format(path))

active_seq = None

Expand Down Expand Up @@ -703,14 +703,14 @@ def stuffsource(self, source):
def prepend_syspath(self, filename):
"Prepend sys.path with file's directory if not already included"
self.runcommand("""if 1:
_filename = %r
_filename = {!r}
import sys as _sys
from os.path import dirname as _dirname
_dir = _dirname(_filename)
if not _dir in _sys.path:
_sys.path.insert(0, _dir)
del _filename, _sys, _dirname, _dir
\n""" % (filename,))
\n""".format(filename))

def showsyntaxerror(self, filename=None):
"""Override Interactive Interpreter method: Use Colorizing
Expand Down Expand Up @@ -1536,7 +1536,7 @@ def main():
try:
opts, args = getopt.getopt(sys.argv[1:], "c:deihnr:st:")
except getopt.error as msg:
print("Error: %s\n%s" % (msg, usage_msg), file=sys.stderr)
print(f"Error: {msg}\n{usage_msg}", file=sys.stderr)
sys.exit(2)
for o, a in opts:
if o == '-c':
Expand Down Expand Up @@ -1668,9 +1668,9 @@ def main():
if cmd or script:
shell.interp.runcommand("""if 1:
import sys as _sys
_sys.argv = %r
_sys.argv = {!r}
del _sys
\n""" % (sys.argv,))
\n""".format(sys.argv))
if cmd:
shell.interp.execsource(cmd)
elif script:
Expand Down
8 changes: 3 additions & 5 deletions Lib/idlelib/redirector.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,9 +47,8 @@ def __init__(self, widget):
tk.createcommand(w, self.dispatch)

def __repr__(self):
return "%s(%s<%s>)" % (self.__class__.__name__,
self.widget.__class__.__name__,
self.widget._w)
w = self.widget
return f"{self.__class__.__name__,}({w.__class__.__name__}<{w._w}>)"

def close(self):
"Unregister operations and revert redirection created by .__init__."
Expand Down Expand Up @@ -143,8 +142,7 @@ def __init__(self, redir, operation):
self.orig_and_operation = (redir.orig, operation)

def __repr__(self):
return "%s(%r, %r)" % (self.__class__.__name__,
self.redir, self.operation)
return f"{self.__class__.__name__,}({self.redir!r}, {self.operation!r})"

def __call__(self, *args):
return self.tk_call(self.orig_and_operation + args)
Expand Down
4 changes: 2 additions & 2 deletions Lib/idlelib/rpc.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ def localcall(self, seq, request):
except TypeError:
return ("ERROR", "Bad request format")
if oid not in self.objtable:
return ("ERROR", "Unknown object id: %r" % (oid,))
return ("ERROR", f"Unknown object id: {oid!r}")
obj = self.objtable[oid]
if methodname == "__methods__":
methods = {}
Expand All @@ -185,7 +185,7 @@ def localcall(self, seq, request):
_getattributes(obj, attributes)
return ("OK", attributes)
if not hasattr(obj, methodname):
return ("ERROR", "Unsupported method name: %r" % (methodname,))
return ("ERROR", f"Unsupported method name: {methodname!r}")
method = getattr(obj, methodname)
try:
if how == 'CALL':
Expand Down
4 changes: 2 additions & 2 deletions Lib/idlelib/run.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@ def idle_formatwarning(message, category, filename, lineno, line=None):
"""Format warnings the IDLE way."""

s = "\nWarning (from warnings module):\n"
s += ' File \"%s\", line %s\n' % (filename, lineno)
s += f' File \"{filename}\", line {lineno}\n'
if line is None:
line = linecache.getline(filename, lineno)
line = line.strip()
if line:
s += " %s\n" % line
s += "%s: %s\n" % (category.__name__, message)
s += f"{category.__name__}: {message}\n"
return s

def idle_showwarning_subproc(
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/textview.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ def view_file(parent, title, filename, encoding, modal=True, wrap='word',
with contents of the file.
"""
try:
with open(filename, 'r', encoding=encoding) as file:
with open(filename, encoding=encoding) as file:
contents = file.read()
except OSError:
showerror(title='File Load Error',
Expand Down
8 changes: 4 additions & 4 deletions Lib/idlelib/tooltip.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ def __init__(self, anchor_widget, hover_delay=1000):
e.g. after hovering over the anchor widget with the mouse for enough
time.
"""
super(OnHoverTooltipBase, self).__init__(anchor_widget)
super().__init__(anchor_widget)
self.hover_delay = hover_delay

self._after_id = None
Expand All @@ -107,7 +107,7 @@ def __del__(self):
self.anchor_widget.unbind("<Button>", self._id3) # pragma: no cover
except TclError:
pass
super(OnHoverTooltipBase, self).__del__()
super().__del__()

def _show_event(self, event=None):
"""event handler to display the tooltip"""
Expand Down Expand Up @@ -139,7 +139,7 @@ def hidetip(self):
self.unschedule()
except TclError: # pragma: no cover
pass
super(OnHoverTooltipBase, self).hidetip()
super().hidetip()


class Hovertip(OnHoverTooltipBase):
Expand All @@ -154,7 +154,7 @@ def __init__(self, anchor_widget, text, hover_delay=1000):
e.g. after hovering over the anchor widget with the mouse for enough
time.
"""
super(Hovertip, self).__init__(anchor_widget, hover_delay=hover_delay)
super().__init__(anchor_widget, hover_delay=hover_delay)
self.text = text

def showcontents(self):
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/tree.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
if os.path.isdir(_icondir):
ICONDIR = _icondir
elif not os.path.isdir(ICONDIR):
raise RuntimeError("can't find icon directory (%r)" % (ICONDIR,))
raise RuntimeError(f"can't find icon directory ({ICONDIR!r})")

def listicons(icondir=ICONDIR):
"""Utility to display the available icons."""
Expand Down
2 changes: 1 addition & 1 deletion Lib/idlelib/undo.py
Original file line number Diff line number Diff line change
Expand Up @@ -309,7 +309,7 @@ def __repr__(self):
s = self.__class__.__name__
strs = []
for cmd in self.cmds:
strs.append(" %r" % (cmd,))
strs.append(f" {cmd!r}")
return s + "(\n" + ",\n".join(strs) + "\n)"

def __len__(self):
Expand Down