Example #1
0
def build_class(name, basenames=(), doc=None):
    """create and initialize a astroid Class node"""
    node = Class(name, doc)
    for base in basenames:
        basenode = Name()
        basenode.name = base
        node.bases.append(basenode)
        basenode.parent = node
    return node
Example #2
0
def build_class(name, basenames=(), doc=None):
    """create and initialize a astroid Class node"""
    node = Class(name, doc)
    for base in basenames:
        basenode = Name()
        basenode.name = base
        node.bases.append(basenode)
        basenode.parent = node
    return node
Example #3
0
 def _name_holds_generator(
         test: nodes.Name) -> tuple[bool, nodes.Call | None]:
     """Return whether `test` tests a name certain to hold a generator, or optionally
     a call that should be then tested to see if *it* returns only generators.
     """
     assert isinstance(test, nodes.Name)
     emit = False
     maybe_generator_call = None
     lookup_result = test.frame(future=True).lookup(test.name)
     if not lookup_result:
         return emit, maybe_generator_call
     maybe_generator_assigned = (
         isinstance(assign_name.parent.value, nodes.GeneratorExp)
         for assign_name in lookup_result[1]
         if isinstance(assign_name.parent, nodes.Assign))
     first_item = next(maybe_generator_assigned, None)
     if first_item is not None:
         # Emit if this variable is certain to hold a generator
         if all(itertools.chain((first_item, ), maybe_generator_assigned)):
             emit = True
         # If this variable holds the result of a call, save it for next test
         elif (len(lookup_result[1]) == 1
               and isinstance(lookup_result[1][0].parent, nodes.Assign) and
               isinstance(lookup_result[1][0].parent.value, nodes.Call)):
             maybe_generator_call = lookup_result[1][0].parent.value
     return emit, maybe_generator_call
Example #4
0
def build_function(name, args=None, defaults=None, flag=0, doc=None):
    """create and initialize a astroid Function node"""
    args, defaults = args or [], defaults or []
    # first argument is now a list of decorators
    func = Function(name, doc)
    func.args = argsnode = Arguments()
    argsnode.args = []
    for arg in args:
        argsnode.args.append(Name())
        argsnode.args[-1].name = arg
        argsnode.args[-1].parent = argsnode
    argsnode.defaults = []
    for default in defaults:
        argsnode.defaults.append(const_factory(default))
        argsnode.defaults[-1].parent = argsnode
    argsnode.kwarg = None
    argsnode.vararg = None
    argsnode.parent = func
    if args:
        register_arguments(func)
    return func