Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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
     )
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
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
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
Arquivo: module.py Projeto: Shieh/jedi
 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))
Exemplo n.º 8
0
 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
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 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)
Exemplo n.º 11
0
 def get_filters(self,
                 search_global,
                 until_position=None,
                 origin_scope=None):
     yield ParserTreeFilter(self.evaluator, self)