diff options
-rw-r--r-- | Lib/idlelib/NEWS.txt | 2 | ||||
-rw-r--r-- | Lib/idlelib/autocomplete.py | 10 | ||||
-rw-r--r-- | Lib/idlelib/calltip.py | 8 | ||||
-rw-r--r-- | Misc/NEWS.d/next/IDLE/2019-03-23-01-45-56.bpo-36405.m7Wv1F.rst | 1 |
4 files changed, 9 insertions, 12 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index d79d9ce..d31ca83 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -3,6 +3,8 @@ Released on 2019-10-20? ====================================== +bpo-36405: Use dict unpacking in idlelib and remove unneeded __main__ imports. + bpo-36396: Remove fgBg param of idlelib.config.GetHighlight(). This param was only used twice and changed the return type. diff --git a/Lib/idlelib/autocomplete.py b/Lib/idlelib/autocomplete.py index 9caf50d..6751928 100644 --- a/Lib/idlelib/autocomplete.py +++ b/Lib/idlelib/autocomplete.py @@ -14,7 +14,6 @@ COMPLETE_ATTRIBUTES, COMPLETE_FILES = range(1, 2+1) from idlelib import autocomplete_w from idlelib.config import idleConf from idlelib.hyperparser import HyperParser -import __main__ # This string includes all chars that may be in an identifier. # TODO Update this here and elsewhere. @@ -182,8 +181,7 @@ class AutoComplete: else: if mode == COMPLETE_ATTRIBUTES: if what == "": - namespace = __main__.__dict__.copy() - namespace.update(__main__.__builtins__.__dict__) + namespace = {**__builtins__.__dict__, **globals()} bigl = eval("dir()", namespace) bigl.sort() if "__all__" in bigl: @@ -218,10 +216,8 @@ class AutoComplete: return smalll, bigl def get_entity(self, name): - """Lookup name in a namespace spanning sys.modules and __main.dict__""" - namespace = sys.modules.copy() - namespace.update(__main__.__dict__) - return eval(name, namespace) + "Lookup name in a namespace spanning sys.modules and globals()." + return eval(name, {**sys.modules, **globals()}) AutoComplete.reload() diff --git a/Lib/idlelib/calltip.py b/Lib/idlelib/calltip.py index 2a9a131..4b78917 100644 --- a/Lib/idlelib/calltip.py +++ b/Lib/idlelib/calltip.py @@ -12,7 +12,6 @@ import types from idlelib import calltip_w from idlelib.hyperparser import HyperParser -import __main__ class Calltip: @@ -100,13 +99,12 @@ class Calltip: def get_entity(expression): """Return the object corresponding to expression evaluated - in a namespace spanning sys.modules and __main.dict__. + in a namespace spanning sys.modules and globals(). """ if expression: - namespace = sys.modules.copy() - namespace.update(__main__.__dict__) + namespace = {**sys.modules, **globals()} try: - return eval(expression, namespace) + return eval(expression, namespace) # Only protect user code. except BaseException: # An uncaught exception closes idle, and eval can raise any # exception, especially if user classes are involved. diff --git a/Misc/NEWS.d/next/IDLE/2019-03-23-01-45-56.bpo-36405.m7Wv1F.rst b/Misc/NEWS.d/next/IDLE/2019-03-23-01-45-56.bpo-36405.m7Wv1F.rst new file mode 100644 index 0000000..619ab6a --- /dev/null +++ b/Misc/NEWS.d/next/IDLE/2019-03-23-01-45-56.bpo-36405.m7Wv1F.rst @@ -0,0 +1 @@ +Use dict unpacking in idlelib and remove unneeded __main__ imports. |