Ejemplo n.º 1
0
def build_class(name, basenames=(), doc=None):
    """create and initialize a astng Class node"""
    node = Class(name, doc)
    for base in basenames:
        basenode = Name()
        basenode.name = base
        node.bases.append(basenode)
        basenode.parent = node
    return node
Ejemplo n.º 2
0
    from logilab.common.compat import builtins
    astng_builtin = ASTNG_BUILDER.inspect_build(builtins)
    for cls, node_cls in CONST_CLS.items():
        if cls is type(None):
            proxy = build_class('NoneType')
            proxy.parent = astng_builtin
        else:
            proxy = astng_builtin.getattr(cls.__name__)[0]
        if cls in (dict, list, set, tuple):
            node_cls._proxied = proxy
        else:
            _CONST_PROXY[cls] = proxy


astng_boot_strapping()


# TODO : find a nicer way to handle this situation;
# However __proxied introduced an
# infinite recursion (see https://bugs.launchpad.net/pylint/+bug/456870)
def _set_proxied(const):
    return _CONST_PROXY[const.value.__class__]


Const._proxied = property(_set_proxied)

from types import GeneratorType

Generator._proxied = Class(GeneratorType.__name__, GeneratorType.__doc__)
ASTNG_BUILDER.object_build(Generator._proxied, GeneratorType)