mirror of
https://github.com/python/cpython.git
synced 2025-08-22 17:55:18 +00:00
bpo-36405: IDLE - Restore __main__ and add tests (#12518)
Fix error in commit 2b75155
noticed by Serhiy Storchaka.
This commit is contained in:
parent
6661c1720e
commit
0fe4513d9a
5 changed files with 18 additions and 10 deletions
|
@ -3,7 +3,7 @@ Released on 2019-10-20?
|
|||
======================================
|
||||
|
||||
|
||||
bpo-36405: Use dict unpacking in idlelib and remove unneeded __main__ imports.
|
||||
bpo-36405: Use dict unpacking in idlelib.
|
||||
|
||||
bpo-36396: Remove fgBg param of idlelib.config.GetHighlight().
|
||||
This param was only used twice and changed the return type.
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
Either on demand or after a user-selected delay after a key character,
|
||||
pop up a list of candidates.
|
||||
"""
|
||||
import __main__
|
||||
import os
|
||||
import string
|
||||
import sys
|
||||
|
@ -181,7 +182,8 @@ class AutoComplete:
|
|||
else:
|
||||
if mode == COMPLETE_ATTRIBUTES:
|
||||
if what == "":
|
||||
namespace = {**__builtins__.__dict__, **globals()}
|
||||
namespace = {**__main__.__builtins__.__dict__,
|
||||
**__main__.__dict__}
|
||||
bigl = eval("dir()", namespace)
|
||||
bigl.sort()
|
||||
if "__all__" in bigl:
|
||||
|
@ -216,8 +218,8 @@ class AutoComplete:
|
|||
return smalll, bigl
|
||||
|
||||
def get_entity(self, name):
|
||||
"Lookup name in a namespace spanning sys.modules and globals()."
|
||||
return eval(name, {**sys.modules, **globals()})
|
||||
"Lookup name in a namespace spanning sys.modules and __main.dict__."
|
||||
return eval(name, {**sys.modules, **__main__.__dict__})
|
||||
|
||||
|
||||
AutoComplete.reload()
|
||||
|
|
|
@ -4,6 +4,7 @@ Call Tips are floating windows which display function, class, and method
|
|||
parameter and docstring information when you type an opening parenthesis, and
|
||||
which disappear when you type a closing parenthesis.
|
||||
"""
|
||||
import __main__
|
||||
import inspect
|
||||
import re
|
||||
import sys
|
||||
|
@ -99,10 +100,10 @@ class Calltip:
|
|||
|
||||
def get_entity(expression):
|
||||
"""Return the object corresponding to expression evaluated
|
||||
in a namespace spanning sys.modules and globals().
|
||||
in a namespace spanning sys.modules and __main.dict__.
|
||||
"""
|
||||
if expression:
|
||||
namespace = {**sys.modules, **globals()}
|
||||
namespace = {**sys.modules, **__main__.__dict__}
|
||||
try:
|
||||
return eval(expression, namespace) # Only protect user code.
|
||||
except BaseException:
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
import unittest
|
||||
from test.support import requires
|
||||
from tkinter import Tk, Text
|
||||
import __main__
|
||||
|
||||
import idlelib.autocomplete as ac
|
||||
import idlelib.autocomplete_w as acw
|
||||
|
@ -35,7 +36,7 @@ class AutoCompleteTest(unittest.TestCase):
|
|||
del cls.root
|
||||
|
||||
def setUp(self):
|
||||
self.editor.text.delete('1.0', 'end')
|
||||
self.text.delete('1.0', 'end')
|
||||
self.autocomplete = ac.AutoComplete(self.editor)
|
||||
|
||||
def test_init(self):
|
||||
|
@ -132,12 +133,16 @@ class AutoCompleteTest(unittest.TestCase):
|
|||
# a small list containing non-private variables.
|
||||
# For file completion, a large list containing all files in the path,
|
||||
# and a small list containing files that do not start with '.'
|
||||
pass
|
||||
small, large = self.autocomplete.fetch_completions(
|
||||
'', ac.COMPLETE_ATTRIBUTES)
|
||||
self.assertLess(len(small), len(large))
|
||||
if __main__.__file__ != ac.__file__:
|
||||
self.assertNotIn('AutoComplete', small) # See issue 36405.
|
||||
|
||||
def test_get_entity(self):
|
||||
# Test that a name is in the namespace of sys.modules and
|
||||
# __main__.__dict__
|
||||
pass
|
||||
self.assertEqual(self.autocomplete.get_entity('int'), int)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
@ -1 +1 @@
|
|||
Use dict unpacking in idlelib and remove unneeded __main__ imports.
|
||||
Use dict unpacking in idlelib.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue