mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
gh-134235: Import Autocomplete for Builtin Modules (GH-134277)
* added enhancement auto completing import with sys builtins --------- Co-authored-by: Hunter <hyoung3@gmail.com>
This commit is contained in:
parent
470941782f
commit
8421b03b16
3 changed files with 25 additions and 2 deletions
|
@ -81,8 +81,9 @@ class ModuleCompleter:
|
|||
def _find_modules(self, path: str, prefix: str) -> list[str]:
|
||||
if not path:
|
||||
# Top-level import (e.g. `import foo<tab>`` or `from foo<tab>`)`
|
||||
return [name for _, name, _ in self.global_cache
|
||||
if name.startswith(prefix)]
|
||||
builtin_modules = [name for name in sys.builtin_module_names if name.startswith(prefix)]
|
||||
third_party_modules = [name for _, name, _ in self.global_cache if name.startswith(prefix)]
|
||||
return sorted(builtin_modules + third_party_modules)
|
||||
|
||||
if path.startswith('.'):
|
||||
# Convert relative path to absolute path
|
||||
|
|
|
@ -959,6 +959,26 @@ class TestPyReplModuleCompleter(TestCase):
|
|||
output = reader.readline()
|
||||
self.assertEqual(output, expected)
|
||||
|
||||
def test_builtin_completion_top_level(self):
|
||||
import importlib
|
||||
# Make iter_modules() search only the standard library.
|
||||
# This makes the test more reliable in case there are
|
||||
# other user packages/scripts on PYTHONPATH which can
|
||||
# intefere with the completions.
|
||||
lib_path = os.path.dirname(importlib.__path__[0])
|
||||
sys.path = [lib_path]
|
||||
|
||||
cases = (
|
||||
("import bui\t\n", "import builtins"),
|
||||
("from bui\t\n", "from builtins"),
|
||||
)
|
||||
for code, expected in cases:
|
||||
with self.subTest(code=code):
|
||||
events = code_to_events(code)
|
||||
reader = self.prepare_reader(events, namespace={})
|
||||
output = reader.readline()
|
||||
self.assertEqual(output, expected)
|
||||
|
||||
def test_relative_import_completions(self):
|
||||
cases = (
|
||||
("from .readl\t\n", "from .readline"),
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Updated tab completion on REPL to include builtin modules. Contributed by
|
||||
Tom Wang, Hunter Young
|
Loading…
Add table
Add a link
Reference in a new issue