mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +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 @@ def fetch_completions(self, what, mode): | |||
|         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 @@ def fetch_completions(self, what, mode): | |||
|             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 @@ | |||
| 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 @@ def fetch_tip(self, expression): | |||
| 
 | ||||
| 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 @@ def tearDownClass(cls): | |||
|         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 @@ def test_fetch_completions(self): | |||
|         # 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
	
	 Terry Jan Reedy
						Terry Jan Reedy