diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 224a93eb..13a40030 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -136,12 +136,12 @@ class Evaluator(object): def import_module(self, import_names, parent_module_context, sys_path): try: - return ContextSet(self.module_cache.get(import_names)) + return self.module_cache.get(import_names) except KeyError: pass context_set = self._import_module(import_names, parent_module_context, sys_path) - self.module_cache.add(context_set, import_names) + self.module_cache.add(import_names, context_set) return context_set @property diff --git a/jedi/evaluate/context/function.py b/jedi/evaluate/context/function.py index d9efd75b..370428f3 100644 --- a/jedi/evaluate/context/function.py +++ b/jedi/evaluate/context/function.py @@ -103,7 +103,7 @@ class FunctionContext(use_metaclass(CachedMetaClass, AbstractFunction)): function = create(tree_node) - if len(overloaded_funcs) > 1: + if overloaded_funcs: return OverloadedFunctionContext( function, ContextSet.from_iterable(create(f) for f in overloaded_funcs) @@ -365,6 +365,9 @@ def _find_overload_functions(context, tree_node): return True return False + if tree_node.type == 'lambdef': + return + if _is_overload_decorated(tree_node): yield tree_node @@ -381,4 +384,5 @@ def _find_overload_functions(context, tree_node): if funcdef.type == 'funcdef' and _is_overload_decorated(funcdef): yield funcdef + # TODO this is probably not good enough? Why are we always breaking? break # By default break diff --git a/jedi/evaluate/context/typing.py b/jedi/evaluate/context/typing.py index af205cb7..af8317a6 100644 --- a/jedi/evaluate/context/typing.py +++ b/jedi/evaluate/context/typing.py @@ -510,7 +510,7 @@ class _AbstractAnnotatedClass(ClassContext): @to_list def py__bases__(self): - for base in super().py__bases__(): + for base in super(_AbstractAnnotatedClass, self).py__bases__(): yield LazyAnnotatedBaseClass(self, base)