diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2019-06-01 15:26:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-01 15:26:00 -0700 |
commit | ac60d1afd2b04f61fe4c965740fa32809f2b84ed (patch) | |
tree | 7c3d6c0e7baf541d4572c357bf816387dfa214b8 /Lib | |
parent | fefdc009906c5ea8fb57383817b3c42d3b0634ad (diff) | |
download | cpython-git-ac60d1afd2b04f61fe4c965740fa32809f2b84ed.tar.gz |
bpo-32411: IDLE: Remove line number sort in browser.py (GH-5011)
Insertion in line order makes sorting keys by line order unneeded.
(cherry picked from commit 1a4d9ffa1aecd7e750195f2be06d3d16c7a3a88f)
Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/idlelib/NEWS.txt | 2 | ||||
-rw-r--r-- | Lib/idlelib/browser.py | 7 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_browser.py | 28 |
3 files changed, 20 insertions, 17 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 7b5a13a215..808c236bb5 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,8 @@ Released on 2019-06-24? ====================================== +bpo-32411: Stop sorting dict created with desired line order. + bpo-37038: Make idlelib.run runnable; add test clause. bpo-36958: Print any argument other than None or int passed to diff --git a/Lib/idlelib/browser.py b/Lib/idlelib/browser.py index 234883fe86..e5b0bc53c6 100644 --- a/Lib/idlelib/browser.py +++ b/Lib/idlelib/browser.py @@ -29,9 +29,10 @@ def transform_children(child_dict, modname=None): The dictionary maps names to pyclbr information objects. Filter out imported objects. Augment class names with bases. - Sort objects by line number. + The insertion order of the dictonary is assumed to have been in line + number order, so sorting is not necessary. - The current tree only calls this once per child_dic as it saves + The current tree only calls this once per child_dict as it saves TreeItems once created. A future tree and tests might violate this, so a check prevents multiple in-place augmentations. """ @@ -51,7 +52,7 @@ def transform_children(child_dict, modname=None): supers.append(sname) obj.name += '({})'.format(', '.join(supers)) obs.append(obj) - return sorted(obs, key=lambda o: o.lineno) + return obs class ModuleBrowser: diff --git a/Lib/idlelib/idle_test/test_browser.py b/Lib/idlelib/idle_test/test_browser.py index dfbab6dd6b..25d6dc6630 100644 --- a/Lib/idlelib/idle_test/test_browser.py +++ b/Lib/idlelib/idle_test/test_browser.py @@ -61,16 +61,16 @@ class ModuleBrowserTest(unittest.TestCase): # Nested tree same as in test_pyclbr.py except for supers on C0. C1. mb = pyclbr module, fname = 'test', 'test.py' -f0 = mb.Function(module, 'f0', fname, 1) -f1 = mb._nest_function(f0, 'f1', 2) -f2 = mb._nest_function(f1, 'f2', 3) -c1 = mb._nest_class(f0, 'c1', 5) -C0 = mb.Class(module, 'C0', ['base'], fname, 6) -F1 = mb._nest_function(C0, 'F1', 8) -C1 = mb._nest_class(C0, 'C1', 11, ['']) -C2 = mb._nest_class(C1, 'C2', 12) -F3 = mb._nest_function(C2, 'F3', 14) -mock_pyclbr_tree = {'f0': f0, 'C0': C0} +C0 = mb.Class(module, 'C0', ['base'], fname, 1) +F1 = mb._nest_function(C0, 'F1', 3) +C1 = mb._nest_class(C0, 'C1', 6, ['']) +C2 = mb._nest_class(C1, 'C2', 7) +F3 = mb._nest_function(C2, 'F3', 9) +f0 = mb.Function(module, 'f0', fname, 11) +f1 = mb._nest_function(f0, 'f1', 12) +f2 = mb._nest_function(f1, 'f2', 13) +c1 = mb._nest_class(f0, 'c1', 15) +mock_pyclbr_tree = {'C0': C0, 'f0': f0} # Adjust C0.name, C1.name so tests do not depend on order. browser.transform_children(mock_pyclbr_tree, 'test') # C0(base) @@ -87,12 +87,12 @@ class TransformChildrenTest(unittest.TestCase): transform = browser.transform_children # Parameter matches tree module. tcl = list(transform(mock_pyclbr_tree, 'test')) - eq(tcl, [f0, C0]) - eq(tcl[0].name, 'f0') - eq(tcl[1].name, 'C0(base)') + eq(tcl, [C0, f0]) + eq(tcl[0].name, 'C0(base)') + eq(tcl[1].name, 'f0') # Check that second call does not change suffix. tcl = list(transform(mock_pyclbr_tree, 'test')) - eq(tcl[1].name, 'C0(base)') + eq(tcl[0].name, 'C0(base)') # Nothing to traverse if parameter name isn't same as tree module. tcl = list(transform(mock_pyclbr_tree, 'different name')) eq(tcl, []) |