From f9eedfbf6434aacc5726e4b17ebc030e885b2e91 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 19 May 2019 14:19:30 +0200 Subject: [PATCH] Remove FUNCTION_CLASS, in favor of a typeshed solution --- jedi/evaluate/compiled/access.py | 1 - jedi/evaluate/context/function.py | 4 +++- jedi/evaluate/helpers.py | 4 ++++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/jedi/evaluate/compiled/access.py b/jedi/evaluate/compiled/access.py index c5f3ab93..ff4e7d08 100644 --- a/jedi/evaluate/compiled/access.py +++ b/jedi/evaluate/compiled/access.py @@ -441,7 +441,6 @@ def _is_class_instance(obj): class _SPECIAL_OBJECTS(object): - FUNCTION_CLASS = types.FunctionType BOUND_METHOD_CLASS = type(DirectObjectAccess(None, None).py__bool__) MODULE_CLASS = types.ModuleType diff --git a/jedi/evaluate/context/function.py b/jedi/evaluate/context/function.py index 24876f45..c9d7d0be 100644 --- a/jedi/evaluate/context/function.py +++ b/jedi/evaluate/context/function.py @@ -19,6 +19,7 @@ from jedi.evaluate.lazy_context import LazyKnownContexts, LazyKnownContext, \ from jedi.evaluate.context import iterable from jedi import parser_utils from jedi.evaluate.parser_cache import get_yield_exprs +from jedi.evaluate.helpers import contexts_from_qualified_names class LambdaName(AbstractNameDefinition): @@ -139,7 +140,8 @@ class FunctionContext(use_metaclass(CachedMetaClass, FunctionMixin, TreeContext) return function def py__class__(self): - return compiled.get_special_object(self.evaluator, u'FUNCTION_CLASS') + c, = contexts_from_qualified_names(self.evaluator, 'types', 'FunctionType') + return c def get_default_param_context(self): return self.parent_context diff --git a/jedi/evaluate/helpers.py b/jedi/evaluate/helpers.py index f337906e..c7071501 100644 --- a/jedi/evaluate/helpers.py +++ b/jedi/evaluate/helpers.py @@ -271,3 +271,7 @@ def parse_dotted_names(nodes, is_import_from, until_node=None): # for names. break return level, names + + +def contexts_from_qualified_names(evaluator, *names): + return evaluator.import_module(names[:-1]).py__getattribute__(names[-1])