Exemplo n.º 1
0
    def check_hasattr(node, suite):
        try:
            assert suite.start_pos <= jedi_name.start_pos < suite.end_pos
            assert node.type in ('power', 'atom_expr')
            base = node.children[0]
            assert base.type == 'name' and base.value == 'hasattr'
            trailer = node.children[1]
            assert trailer.type == 'trailer'
            arglist = trailer.children[1]
            assert arglist.type == 'arglist'
            from jedi.evaluate.param import TreeArguments
            args = list(
                TreeArguments(node_context.evaluator, node_context,
                              arglist).unpack())
            # Arguments should be very simple
            assert len(args) == 2

            # Check name
            key, lazy_context = args[1]
            names = list(lazy_context.infer())
            assert len(names) == 1 and isinstance(names[0], CompiledObject)
            assert names[0].obj == str(payload[1])

            # Check objects
            key, lazy_context = args[0]
            objects = lazy_context.infer()
            return payload[0] in objects
        except AssertionError:
            return False
Exemplo n.º 2
0
 def create_func_excs():
     arglist = trailer.children[1]
     if arglist == ')':
         arglist = ()
     args = TreeArguments(evaluator, context, arglist, trailer)
     if value_node.type == 'funcdef':
         yield value.get_function_execution(args)
     else:
         created_instance = instance.TreeInstance(evaluator,
                                                  value.parent_context,
                                                  value, args)
         for execution in created_instance.create_init_executions():
             yield execution