bpo-43013: Update idlelib code to 3.x (GH-24315)

Remove 9 remaining '(object)' occurrences in class headers in idlelib
and 25 '()' occurrences in idlelib.idle_test class headers.
(cherry picked from commit 8dfe15625e)

Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
Miss Islington (bot) 2021-01-24 15:36:02 -08:00 committed by GitHub
parent 00e24cdca4
commit ff06957710
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 49 additions and 47 deletions

View file

@ -46,7 +46,7 @@ def _sphinx_version():
return release return release
class EditorWindow(object): class EditorWindow:
from idlelib.percolator import Percolator from idlelib.percolator import Percolator
from idlelib.colorizer import ColorDelegator, color_config from idlelib.colorizer import ColorDelegator, color_config
from idlelib.undo import UndoDelegator from idlelib.undo import UndoDelegator
@ -1546,7 +1546,7 @@ def get_line_indent(line, tabwidth):
return m.end(), len(m.group().expandtabs(tabwidth)) return m.end(), len(m.group().expandtabs(tabwidth))
class IndentSearcher(object): class IndentSearcher:
# .run() chews over the Text widget, looking for a block opener # .run() chews over the Text widget, looking for a block opener
# and the stmt following it. Returns a pair, # and the stmt following it. Returns a pair,

View file

@ -195,7 +195,7 @@ class AutoCompleteTest(unittest.TestCase):
self.assertFalse(acp.open_completions(ac.TAB)) self.assertFalse(acp.open_completions(ac.TAB))
self.text.delete('1.0', 'end') self.text.delete('1.0', 'end')
class dummy_acw(): class dummy_acw:
__init__ = Func() __init__ = Func()
show_window = Func(result=False) show_window = Func(result=False)
hide_window = Func() hide_window = Func()

View file

@ -10,7 +10,7 @@ from idlelib.idle_test.mock_tk import Text
# Test Class TC is used in multiple get_argspec test methods # Test Class TC is used in multiple get_argspec test methods
class TC(): class TC:
'doc' 'doc'
tip = "(ai=None, *b)" tip = "(ai=None, *b)"
def __init__(self, ai=None, *b): 'doc' def __init__(self, ai=None, *b): 'doc'
@ -268,7 +268,7 @@ class Get_entityTest(unittest.TestCase):
# open_calltip is about half the code; the others are fairly trivial. # open_calltip is about half the code; the others are fairly trivial.
# The default mocks are what are needed for open_calltip. # The default mocks are what are needed for open_calltip.
class mock_Shell(): class mock_Shell:
"Return mock sufficient to pass to hyperparser." "Return mock sufficient to pass to hyperparser."
def __init__(self, text): def __init__(self, text):
text.tag_prevrange = Mock(return_value=None) text.tag_prevrange = Mock(return_value=None)

View file

@ -20,7 +20,7 @@ testcfg = {
} }
code_sample = """\ code_sample = """\
class C1(): class C1:
# Class comment. # Class comment.
def __init__(self, a, b): def __init__(self, a, b):
self.a = a self.a = a
@ -178,29 +178,29 @@ class CodeContextTest(unittest.TestCase):
with self.assertRaises(AssertionError): with self.assertRaises(AssertionError):
gc(1, stopline=0) gc(1, stopline=0)
eq(gc(3), ([(2, 0, 'class C1():', 'class')], 0)) eq(gc(3), ([(2, 0, 'class C1:', 'class')], 0))
# Don't return comment. # Don't return comment.
eq(gc(4), ([(2, 0, 'class C1():', 'class')], 0)) eq(gc(4), ([(2, 0, 'class C1:', 'class')], 0))
# Two indentation levels and no comment. # Two indentation levels and no comment.
eq(gc(5), ([(2, 0, 'class C1():', 'class'), eq(gc(5), ([(2, 0, 'class C1:', 'class'),
(4, 4, ' def __init__(self, a, b):', 'def')], 0)) (4, 4, ' def __init__(self, a, b):', 'def')], 0))
# Only one 'def' is returned, not both at the same indent level. # Only one 'def' is returned, not both at the same indent level.
eq(gc(10), ([(2, 0, 'class C1():', 'class'), eq(gc(10), ([(2, 0, 'class C1:', 'class'),
(7, 4, ' def compare(self):', 'def'), (7, 4, ' def compare(self):', 'def'),
(8, 8, ' if a > b:', 'if')], 0)) (8, 8, ' if a > b:', 'if')], 0))
# With 'elif', also show the 'if' even though it's at the same level. # With 'elif', also show the 'if' even though it's at the same level.
eq(gc(11), ([(2, 0, 'class C1():', 'class'), eq(gc(11), ([(2, 0, 'class C1:', 'class'),
(7, 4, ' def compare(self):', 'def'), (7, 4, ' def compare(self):', 'def'),
(8, 8, ' if a > b:', 'if'), (8, 8, ' if a > b:', 'if'),
(10, 8, ' elif a < b:', 'elif')], 0)) (10, 8, ' elif a < b:', 'elif')], 0))
# Set stop_line to not go back to first line in source code. # Set stop_line to not go back to first line in source code.
# Return includes stop_line. # Return includes stop_line.
eq(gc(11, stopline=2), ([(2, 0, 'class C1():', 'class'), eq(gc(11, stopline=2), ([(2, 0, 'class C1:', 'class'),
(7, 4, ' def compare(self):', 'def'), (7, 4, ' def compare(self):', 'def'),
(8, 8, ' if a > b:', 'if'), (8, 8, ' if a > b:', 'if'),
(10, 8, ' elif a < b:', 'elif')], 0)) (10, 8, ' elif a < b:', 'elif')], 0))
@ -240,37 +240,37 @@ class CodeContextTest(unittest.TestCase):
# Scroll down to line 2. # Scroll down to line 2.
cc.text.yview(2) cc.text.yview(2)
cc.update_code_context() cc.update_code_context()
eq(cc.info, [(0, -1, '', False), (2, 0, 'class C1():', 'class')]) eq(cc.info, [(0, -1, '', False), (2, 0, 'class C1:', 'class')])
eq(cc.topvisible, 3) eq(cc.topvisible, 3)
eq(cc.context.get('1.0', 'end-1c'), 'class C1():') eq(cc.context.get('1.0', 'end-1c'), 'class C1:')
# Scroll down to line 3. Since it's a comment, nothing changes. # Scroll down to line 3. Since it's a comment, nothing changes.
cc.text.yview(3) cc.text.yview(3)
cc.update_code_context() cc.update_code_context()
eq(cc.info, [(0, -1, '', False), (2, 0, 'class C1():', 'class')]) eq(cc.info, [(0, -1, '', False), (2, 0, 'class C1:', 'class')])
eq(cc.topvisible, 4) eq(cc.topvisible, 4)
eq(cc.context.get('1.0', 'end-1c'), 'class C1():') eq(cc.context.get('1.0', 'end-1c'), 'class C1:')
# Scroll down to line 4. # Scroll down to line 4.
cc.text.yview(4) cc.text.yview(4)
cc.update_code_context() cc.update_code_context()
eq(cc.info, [(0, -1, '', False), eq(cc.info, [(0, -1, '', False),
(2, 0, 'class C1():', 'class'), (2, 0, 'class C1:', 'class'),
(4, 4, ' def __init__(self, a, b):', 'def')]) (4, 4, ' def __init__(self, a, b):', 'def')])
eq(cc.topvisible, 5) eq(cc.topvisible, 5)
eq(cc.context.get('1.0', 'end-1c'), 'class C1():\n' eq(cc.context.get('1.0', 'end-1c'), 'class C1:\n'
' def __init__(self, a, b):') ' def __init__(self, a, b):')
# Scroll down to line 11. Last 'def' is removed. # Scroll down to line 11. Last 'def' is removed.
cc.text.yview(11) cc.text.yview(11)
cc.update_code_context() cc.update_code_context()
eq(cc.info, [(0, -1, '', False), eq(cc.info, [(0, -1, '', False),
(2, 0, 'class C1():', 'class'), (2, 0, 'class C1:', 'class'),
(7, 4, ' def compare(self):', 'def'), (7, 4, ' def compare(self):', 'def'),
(8, 8, ' if a > b:', 'if'), (8, 8, ' if a > b:', 'if'),
(10, 8, ' elif a < b:', 'elif')]) (10, 8, ' elif a < b:', 'elif')])
eq(cc.topvisible, 12) eq(cc.topvisible, 12)
eq(cc.context.get('1.0', 'end-1c'), 'class C1():\n' eq(cc.context.get('1.0', 'end-1c'), 'class C1:\n'
' def compare(self):\n' ' def compare(self):\n'
' if a > b:\n' ' if a > b:\n'
' elif a < b:') ' elif a < b:')
@ -279,12 +279,12 @@ class CodeContextTest(unittest.TestCase):
cc.update_code_context() cc.update_code_context()
cc.context_depth = 1 cc.context_depth = 1
eq(cc.info, [(0, -1, '', False), eq(cc.info, [(0, -1, '', False),
(2, 0, 'class C1():', 'class'), (2, 0, 'class C1:', 'class'),
(7, 4, ' def compare(self):', 'def'), (7, 4, ' def compare(self):', 'def'),
(8, 8, ' if a > b:', 'if'), (8, 8, ' if a > b:', 'if'),
(10, 8, ' elif a < b:', 'elif')]) (10, 8, ' elif a < b:', 'elif')])
eq(cc.topvisible, 12) eq(cc.topvisible, 12)
eq(cc.context.get('1.0', 'end-1c'), 'class C1():\n' eq(cc.context.get('1.0', 'end-1c'), 'class C1:\n'
' def compare(self):\n' ' def compare(self):\n'
' if a > b:\n' ' if a > b:\n'
' elif a < b:') ' elif a < b:')
@ -293,7 +293,7 @@ class CodeContextTest(unittest.TestCase):
cc.text.yview(5) cc.text.yview(5)
cc.update_code_context() cc.update_code_context()
eq(cc.info, [(0, -1, '', False), eq(cc.info, [(0, -1, '', False),
(2, 0, 'class C1():', 'class'), (2, 0, 'class C1:', 'class'),
(4, 4, ' def __init__(self, a, b):', 'def')]) (4, 4, ' def __init__(self, a, b):', 'def')])
eq(cc.topvisible, 6) eq(cc.topvisible, 6)
# context_depth is 1. # context_depth is 1.
@ -440,7 +440,7 @@ class HelperFunctionText(unittest.TestCase):
# Line 1 is not a BLOCKOPENER. # Line 1 is not a BLOCKOPENER.
eq(gli(lines[0]), (codecontext.INFINITY, '', False)) eq(gli(lines[0]), (codecontext.INFINITY, '', False))
# Line 2 is a BLOCKOPENER without an indent. # Line 2 is a BLOCKOPENER without an indent.
eq(gli(lines[1]), (0, 'class C1():', 'class')) eq(gli(lines[1]), (0, 'class C1:', 'class'))
# Line 3 is not a BLOCKOPENER and does not return the indent level. # Line 3 is not a BLOCKOPENER and does not return the indent level.
eq(gli(lines[2]), (codecontext.INFINITY, ' # Class comment.', False)) eq(gli(lines[2]), (codecontext.INFINITY, ' # Class comment.', False))
# Line 4 is a BLOCKOPENER and is indented. # Line 4 is a BLOCKOPENER and is indented.

View file

@ -418,7 +418,7 @@ class FormatRegionTest(unittest.TestCase):
code_sample = """\ code_sample = """\
# WS line needed for test. # WS line needed for test.
class C1(): class C1:
# Class comment. # Class comment.
def __init__(self, a, b): def __init__(self, a, b):
self.a = a self.a = a

View file

@ -134,7 +134,7 @@ class CloseTest(unittest.TestCase):
self.dialog.winfo_class() self.dialog.winfo_class()
class Dummy_about_dialog(): class Dummy_about_dialog:
# Dummy class for testing file display functions. # Dummy class for testing file display functions.
idle_credits = About.show_idle_credits idle_credits = About.show_idle_credits
idle_readme = About.show_readme idle_readme = About.show_readme

View file

@ -73,11 +73,12 @@ class PyParseTest(unittest.TestCase):
# Split def across lines. # Split def across lines.
setcode('"""This is a module docstring"""\n' setcode('"""This is a module docstring"""\n'
'class C():\n' 'class C:\n'
' def __init__(self, a,\n' ' def __init__(self, a,\n'
' b=True):\n' ' b=True):\n'
' pass\n' ' pass\n'
) )
pos0, pos = 33, 42 # Start of 'class...', ' def' lines.
# Passing no value or non-callable should fail (issue 32989). # Passing no value or non-callable should fail (issue 32989).
with self.assertRaises(TypeError): with self.assertRaises(TypeError):
@ -91,40 +92,41 @@ class PyParseTest(unittest.TestCase):
# Make all text look like it's not in a string. This means that it # Make all text look like it's not in a string. This means that it
# found a good start position. # found a good start position.
eq(start(char_in_string_false), 44) eq(start(char_in_string_false), pos)
# If the beginning of the def line is not in a string, then it # If the beginning of the def line is not in a string, then it
# returns that as the index. # returns that as the index.
eq(start(is_char_in_string=lambda index: index > 44), 44) eq(start(is_char_in_string=lambda index: index > pos), pos)
# If the beginning of the def line is in a string, then it # If the beginning of the def line is in a string, then it
# looks for a previous index. # looks for a previous index.
eq(start(is_char_in_string=lambda index: index >= 44), 33) eq(start(is_char_in_string=lambda index: index >= pos), pos0)
# If everything before the 'def' is in a string, then returns None. # If everything before the 'def' is in a string, then returns None.
# The non-continuation def line returns 44 (see below). # The non-continuation def line returns 44 (see below).
eq(start(is_char_in_string=lambda index: index < 44), None) eq(start(is_char_in_string=lambda index: index < pos), None)
# Code without extra line break in def line - mostly returns the same # Code without extra line break in def line - mostly returns the same
# values. # values.
setcode('"""This is a module docstring"""\n' setcode('"""This is a module docstring"""\n'
'class C():\n' 'class C:\n'
' def __init__(self, a, b=True):\n' ' def __init__(self, a, b=True):\n'
' pass\n' ' pass\n'
) ) # Does not affect class, def positions.
eq(start(char_in_string_false), 44) eq(start(char_in_string_false), pos)
eq(start(is_char_in_string=lambda index: index > 44), 44) eq(start(is_char_in_string=lambda index: index > pos), pos)
eq(start(is_char_in_string=lambda index: index >= 44), 33) eq(start(is_char_in_string=lambda index: index >= pos), pos0)
# When the def line isn't split, this returns which doesn't match the # When the def line isn't split, this returns which doesn't match the
# split line test. # split line test.
eq(start(is_char_in_string=lambda index: index < 44), 44) eq(start(is_char_in_string=lambda index: index < pos), pos)
def test_set_lo(self): def test_set_lo(self):
code = ( code = (
'"""This is a module docstring"""\n' '"""This is a module docstring"""\n'
'class C():\n' 'class C:\n'
' def __init__(self, a,\n' ' def __init__(self, a,\n'
' b=True):\n' ' b=True):\n'
' pass\n' ' pass\n'
) )
pos = 42
p = self.parser p = self.parser
p.set_code(code) p.set_code(code)
@ -137,8 +139,8 @@ class PyParseTest(unittest.TestCase):
self.assertEqual(p.code, code) self.assertEqual(p.code, code)
# An index that is preceded by a newline. # An index that is preceded by a newline.
p.set_lo(44) p.set_lo(pos)
self.assertEqual(p.code, code[44:]) self.assertEqual(p.code, code[pos:])
def test_study1(self): def test_study1(self):
eq = self.assertEqual eq = self.assertEqual

View file

@ -125,7 +125,7 @@ request_queue = queue.Queue(0)
response_queue = queue.Queue(0) response_queue = queue.Queue(0)
class SocketIO(object): class SocketIO:
nextseq = 0 nextseq = 0
@ -486,7 +486,7 @@ class SocketIO(object):
#----------------- end class SocketIO -------------------- #----------------- end class SocketIO --------------------
class RemoteObject(object): class RemoteObject:
# Token mix-in class # Token mix-in class
pass pass
@ -497,7 +497,7 @@ def remoteref(obj):
return RemoteProxy(oid) return RemoteProxy(oid)
class RemoteProxy(object): class RemoteProxy:
def __init__(self, oid): def __init__(self, oid):
self.oid = oid self.oid = oid
@ -547,7 +547,7 @@ class RPCClient(SocketIO):
return RPCProxy(self, oid) return RPCProxy(self, oid)
class RPCProxy(object): class RPCProxy:
__methods = None __methods = None
__attributes = None __attributes = None
@ -596,7 +596,7 @@ def _getattributes(obj, attributes):
attributes[name] = 1 attributes[name] = 1
class MethodProxy(object): class MethodProxy:
def __init__(self, sockio, oid, name): def __init__(self, sockio, oid, name):
self.sockio = sockio self.sockio = sockio

View file

@ -538,7 +538,7 @@ class MyHandler(rpc.RPCHandler):
thread.interrupt_main() thread.interrupt_main()
class Executive(object): class Executive:
def __init__(self, rpchandler): def __init__(self, rpchandler):
self.rpchandler = rpchandler self.rpchandler = rpchandler

View file

@ -7,7 +7,7 @@ This includes:
from tkinter import * from tkinter import *
class TooltipBase(object): class TooltipBase:
"""abstract base class for tooltips""" """abstract base class for tooltips"""
def __init__(self, anchor_widget): def __init__(self, anchor_widget):