def wrapper(cls, metaclasses): for metaclass in metaclasses: if metaclass.py__name__() == 'EnumMeta' \ and metaclass.get_root_context().py__name__() == 'enum': filter_ = ParserTreeFilter(cls.evaluator, context=cls) return [DictFilter({ name.string_name: EnumInstance(cls, name).name for name in filter_.values() })] return func(cls, metaclasses)
def get_filters(self, search_global=False, until_position=None, origin_scope=None, is_instance=False): if search_global: yield ParserTreeFilter(self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope) else: for cls in self.py__mro__(): if isinstance(cls, compiled.CompiledObject): for filter in cls.get_filters(is_instance=is_instance): yield filter else: yield ClassFilter(self.evaluator, self, node_context=cls, origin_scope=origin_scope, is_instance=is_instance) if not is_instance: from jedi.evaluate.compiled import builtin_from_name type_ = builtin_from_name(self.evaluator, u'type') if type_ != self: yield next(type_.get_filters())
def get_global_filter(self, until_position=None, origin_scope=None): return ParserTreeFilter( self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope )
def get_filters(self, search_global=False, until_position=None, origin_scope=None, is_instance=False): if search_global: yield ParserTreeFilter( self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope ) else: for cls in self.py__mro__(): if isinstance(cls, compiled.CompiledObject): for filter in cls.get_filters(is_instance=is_instance): yield filter else: yield ClassFilter( self.evaluator, self, node_context=cls, origin_scope=origin_scope, is_instance=is_instance ) if not is_instance: from jedi.evaluate.compiled import builtin_from_name type_ = builtin_from_name(self.evaluator, u'type') assert isinstance(type_, ClassContext) if type_ != self: for instance in type_.py__call__(ValuesArguments([])): instance_filters = instance.get_filters() # Filter out self filters next(instance_filters) next(instance_filters) yield next(instance_filters)
def _find_overload_functions(context, tree_node): def _is_overload_decorated(funcdef): if funcdef.parent.type == 'decorated': decorators = funcdef.parent.children[0] if decorators.type == 'decorator': decorators = [decorators] else: decorators = decorators.children for decorator in decorators: dotted_name = decorator.children[1] if dotted_name.type == 'name' and dotted_name.value == 'overload': # TODO check with contexts if it's the right overload return True return False if tree_node.type == 'lambdef': return if _is_overload_decorated(tree_node): yield tree_node while True: filter = ParserTreeFilter( context.evaluator, context, until_position=tree_node.start_pos ) names = filter.get(tree_node.name.value) assert isinstance(names, list) if not names: break found = False for name in names: funcdef = name.tree_name.parent if funcdef.type == 'funcdef' and _is_overload_decorated(funcdef): tree_node = funcdef found = True yield funcdef if not found: break
def get_filters(self, search_global, until_position=None, origin_scope=None): if search_global: yield ParserTreeFilter( self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope ) else: scope = self.py__class__() for filter in scope.get_filters(search_global=False, origin_scope=origin_scope): yield filter
def get_filters(self, search_global, until_position=None, origin_scope=None): yield ParserTreeFilter( self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope ) yield GlobalNameFilter(self, self.tree_node) yield DictFilter(self._sub_modules_dict()) yield DictFilter(self._module_attributes_dict()) for star_module in self.star_imports(): yield next(star_module.get_filters(search_global))
def get_filters(self, search_global=False, until_position=None, origin_scope=None): if search_global: yield ParserTreeFilter( self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope ) else: cls = self.py__class__() for instance in cls.execute_evaluated(): for filter in instance.get_filters(search_global=False, origin_scope=origin_scope): yield filter
def get_filters(self, search_global=False, until_position=None, origin_scope=None): yield MergedFilter( ParserTreeFilter(self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope), GlobalNameFilter(self, self.tree_node), ) yield DictFilter(self.sub_modules_dict()) yield DictFilter(self._module_attributes_dict()) for star_filter in self.iter_star_filters(): yield star_filter
def get_filters(self, search_global, until_position=None, origin_scope=None, is_instance=False): if search_global: yield ParserTreeFilter( self.evaluator, context=self, until_position=until_position, origin_scope=origin_scope ) else: for cls in self.py__mro__(): if isinstance(cls, compiled.CompiledObject): for filter in cls.get_filters(is_instance=is_instance): yield filter else: yield ClassFilter( self.evaluator, self, node_context=cls, origin_scope=origin_scope)
def get_filters(self, search_global, until_position=None, origin_scope=None): yield ParserTreeFilter(self.evaluator, self)