Some small improvements

This commit is contained in:
Dave Halter
2019-08-16 16:44:03 +02:00
parent 165639c1dd
commit c6d2aa6da2
5 changed files with 24 additions and 9 deletions

View File

@@ -75,7 +75,7 @@ class BaseDefinition(object):
# This can take a while to complete, because in the worst case of # This can take a while to complete, because in the worst case of
# imports (consider `import a` completions), we need to load all # imports (consider `import a` completions), we need to load all
# modules starting with a first. # modules starting with a first.
return self._name.get_root_value() return self._name.get_root_context()
@property @property
def module_path(self): def module_path(self):
@@ -289,7 +289,7 @@ class BaseDefinition(object):
if not self._name.is_value_name: if not self._name.is_value_name:
return False return False
return self._name.get_root_value().is_stub() return self._name.get_root_context().is_stub()
def goto_assignments(self, **kwargs): # Python 2... def goto_assignments(self, **kwargs): # Python 2...
with debug.increase_indent_cm('goto for %s' % self._name): with debug.increase_indent_cm('goto for %s' % self._name):
@@ -389,7 +389,7 @@ class BaseDefinition(object):
if not self._name.is_value_name or self.in_builtin_module(): if not self._name.is_value_name or self.in_builtin_module():
return '' return ''
lines = self._name.get_root_value().code_lines lines = self._name.get_root_context().code_lines
index = self._name.start_pos[0] - 1 index = self._name.start_pos[0] - 1
start_index = max(index - before, 0) start_index = max(index - before, 0)

View File

@@ -28,18 +28,17 @@ class AbstractContext(object):
return self._value.py__getattribute__ return self._value.py__getattribute__
@property @property
def tree_name(self): def tree_node(self):
return self._value.tree_node return self._value.tree_node
def infer_node(self, node): def infer_node(self, node):
raise NotImplementedError return self.inference_state.infer_element(self, node)
def __repr__(self): def __repr__(self):
return '%s(%s)' % (self.__class__.__name__, self._value) return '%s(%s)' % (self.__class__.__name__, self._value)
class FunctionContext(AbstractContext): class FunctionContext(AbstractContext):
@abstractmethod
def get_filters(self, until_position=None, origin_scope=None): def get_filters(self, until_position=None, origin_scope=None):
yield ParserTreeFilter( yield ParserTreeFilter(
self.inference_state, self.inference_state,
@@ -56,3 +55,15 @@ class ModuleContext(AbstractContext):
@property @property
def py__package__(self): def py__package__(self):
return self._value.py__package__ return self._value.py__package__
class ClassContext(AbstractContext):
def get_filters(self, until_position=None, origin_scope=None):
yield self._value.get_global_filter(until_position, origin_scope)
def get_global_filter(self, until_position=None, origin_scope=None):
return ParserTreeFilter(
value=self,
until_position=until_position,
origin_scope=origin_scope
)

View File

@@ -157,7 +157,7 @@ def infer_trailer(context, atom_values, trailer):
if trailer_op == '[': if trailer_op == '[':
trailer_op, node, _ = trailer.children trailer_op, node, _ = trailer.children
return atom_values.get_item( return atom_values.get_item(
infer_subscript_list(context.inference_state, context, node), _infer_subscript_list(context, node),
ValueualizedNode(context, trailer) ValueualizedNode(context, trailer)
) )
else: else:
@@ -705,7 +705,7 @@ def check_tuple_assignments(valueualized_name, value_set):
return value_set return value_set
def infer_subscript_list(context, index): def _infer_subscript_list(context, index):
""" """
Handles slices in subscript nodes. Handles slices in subscript nodes.
""" """

View File

@@ -11,6 +11,7 @@ from jedi.inference.names import SubModuleName
from jedi.inference.helpers import values_from_qualified_names from jedi.inference.helpers import values_from_qualified_names
from jedi.inference.compiled import create_simple_object from jedi.inference.compiled import create_simple_object
from jedi.inference.base_value import ValueSet from jedi.inference.base_value import ValueSet
from jedi.inference.context import ModuleContext
class _ModuleAttributeName(AbstractNameDefinition): class _ModuleAttributeName(AbstractNameDefinition):
@@ -275,6 +276,9 @@ class ModuleValue(ModuleMixin, TreeValue):
else: else:
raise AttributeError('Only packages have __path__ attributes.') raise AttributeError('Only packages have __path__ attributes.')
def as_context(self):
return ModuleContext(self)
def __repr__(self): def __repr__(self):
return "<%s: %s@%s-%s is_stub=%s>" % ( return "<%s: %s@%s-%s is_stub=%s>" % (
self.__class__.__name__, self._string_name, self.__class__.__name__, self._string_name,

View File

@@ -227,7 +227,7 @@ class IntegrationTestCase(object):
element = parser.get_root_node() element = parser.get_root_node()
module_context = script._get_module_context() module_context = script._get_module_context()
user_context = get_user_context(module_context, (self.line_nr, 0)) user_context = get_user_context(module_context, (self.line_nr, 0))
if user_context.api_type == 'function': if user_context._value.api_type == 'function':
user_context = user_context.get_function_execution() user_context = user_context.get_function_execution()
element.parent = user_context.tree_node element.parent = user_context.tree_node
results = convert_values( results = convert_values(