1
0
forked from VimPlug/jedi

Use "namespace" as a Name.type

This commit is contained in:
Dave Halter
2021-01-02 12:14:28 +01:00
parent 02d43caa5e
commit 2ec3d72151
8 changed files with 10 additions and 11 deletions

View File

@@ -627,7 +627,7 @@ def search_in_module(inference_state, module_context, names, wanted_names,
new_names = []
for n in names:
if s == n.string_name:
if n.tree_name is not None and n.api_type == 'module' \
if n.tree_name is not None and n.api_type in ('module', 'namespace') \
and ignore_imports:
continue
new_names += complete_trailer(

View File

@@ -439,5 +439,5 @@ def get_default_project(path=None):
def _remove_imports(names):
return [
n for n in names
if n.tree_name is None or n.api_type != 'module'
if n.tree_name is None or n.api_type not in ('module', 'namespace')
]

View File

@@ -156,8 +156,8 @@ def rename(inference_state, definitions, new_name):
def inline(inference_state, names):
if not names:
raise RefactoringError("There is no name under the cursor")
if any(n.api_type == 'module' for n in names):
raise RefactoringError("Cannot inline imports or modules")
if any(n.api_type in ('module', 'namespace') for n in names):
raise RefactoringError("Cannot inline imports, modules or namespaces")
if any(n.tree_name is None for n in names):
raise RefactoringError("Cannot inline builtins/extensions")

View File

@@ -339,7 +339,7 @@ class Importer:
values = self.follow()
for value in values:
# Non-modules are not completable.
if value.api_type != 'module': # not a module
if value.api_type not in ('module', 'namespace'): # not a module
continue
if not value.is_compiled():
# sub_modules_dict is not implemented for compiled modules.

View File

@@ -20,10 +20,7 @@ class ImplicitNamespaceValue(Value, SubModuleDictMixin):
"""
Provides support for implicit namespace packages
"""
# Is a module like every other module, because if you import an empty
# folder foobar it will be available as an object:
# <module 'foobar' (namespace)>.
api_type = 'module'
api_type = 'namespace'
parent_context = None
def __init__(self, inference_state, string_names, paths):