summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmile Anclin <emile.anclin@logilab.fr>2009-11-25 19:17:36 +0100
committerEmile Anclin <emile.anclin@logilab.fr>2009-11-25 19:17:36 +0100
commit64ea2049c068a1e99bc036a650af94f22c76c796 (patch)
treea380f376212d46c9e7fbb4c26de58cf00a3f9dbd
parent61df5384faee1c38e4881a81a00183be6861ed6f (diff)
downloadastroid-git-64ea2049c068a1e99bc036a650af94f22c76c796.tar.gz
remove most factory functions and create instances
--HG-- branch : rebuild
-rw-r--r--_nodes.py2
-rw-r--r--_nodes_ast.py66
-rw-r--r--_nodes_compiler.py53
-rw-r--r--node_classes.py9
-rw-r--r--nodes.py1
-rw-r--r--raw_building.py40
6 files changed, 40 insertions, 131 deletions
diff --git a/_nodes.py b/_nodes.py
index ee455592..65b5a259 100644
--- a/_nodes.py
+++ b/_nodes.py
@@ -23,11 +23,9 @@ from itertools import imap
try:
from logilab.astng._nodes_ast import *
- from logilab.astng._nodes_ast import _const_factory
AST_MODE = '_ast'
except ImportError:
from logilab.astng._nodes_compiler import *
- from logilab.astng._nodes_compiler import _const_factory
AST_MODE = 'compiler'
from logilab.astng.utils import REDIRECT
diff --git a/_nodes_ast.py b/_nodes_ast.py
index 216048f4..cda2b625 100644
--- a/_nodes_ast.py
+++ b/_nodes_ast.py
@@ -296,69 +296,3 @@ class TreeRebuilder(ASTVisitor):
del node.optional_vars, node.context_expr
-# raw building ################################################################
-
-def module_factory(doc):
- node = Module()
- node.body = []
- node.doc = doc
- return node
-
-
-def import_from_factory(modname, membername):
- node = From()
- node.level = 0
- node.modname = modname
- node.names = [(membername, None)]
- return node
-
-
-def _const_factory(value):
- if isinstance(value, (int, long, complex, float, basestring)):
- node = Const()
- else:
- raise Exception(type(value))
- node.value = value
- return node
-
-
-def function_factory(name, args, defaults, flag=0, doc=None):
- """create and initialize a astng Function node"""
- # XXX local import necessary due to cyclic deps
- from logilab.astng.nodes import const_factory
- node = Function()
- node.decorators = None
- node.body = []
- node.name = name
- # XXX ensure we get a compatible representation
- node.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 = node
- node.doc = doc
- return node
-
-
-def class_factory(name, basenames=(), doc=None):
- """create and initialize a astng Class node"""
- node = Class()
- node.body = []
- node.name = name
- # XXX to check
- node.bases = []
- for base in basenames:
- basenode = Name()
- basenode.name = base
- node.bases.append(basenode)
- basenode.parent = node
- node.doc = doc
- return node
diff --git a/_nodes_compiler.py b/_nodes_compiler.py
index 313acf15..f138261b 100644
--- a/_nodes_compiler.py
+++ b/_nodes_compiler.py
@@ -615,55 +615,4 @@ class TreeRebuilder(ASTVisitor):
node.parent = stmt
-# raw building ################################################################
-
-def module_factory(doc):
- node = Module(doc, None)
- del node.node
- node.body = []
- return node
-
-
-if sys.version_info < (2, 5):
- def import_from_factory(modname, membername):
- return From(modname, ( (membername, None), ) )
-else:
- def import_from_factory(modname, membername):
- return From(modname, ( (membername, None), ), 0)
-
-
-def _const_factory(value):
- return Const(value)
-
-
-# introduction of decorators has changed the Function initializer arguments
-if sys.version_info >= (2, 4):
- def function_factory(name, args, defaults, flag=0, doc=None):
- """create and initialize a astng Function node"""
- # first argument is now a list of decorators
- func = Function(Decorators([]), name, args, defaults, flag, doc, None)
- del func.code
- func.body = []
- args_compiler_to_ast(func)
- return func
-
-else:
- def function_factory(name, args, defaults, flag=0, doc=None):
- """create and initialize a astng Function node"""
- func = Function(name, args, defaults, flag, doc, None)
- del func.code
- func.body = []
- args_compiler_to_ast(func)
- return func
-
-
-def class_factory(name, basenames=(), doc=None):
- """create and initialize a astng Class node"""
- node = Class(name, [], doc, None)
- del node.code
- node.body = []
- bases = [Name(base) for base in basenames]
- for base in bases:
- base.parent = node
- node.bases = bases
- return node
+
diff --git a/node_classes.py b/node_classes.py
index d7deb76b..f61a6ad3 100644
--- a/node_classes.py
+++ b/node_classes.py
@@ -1,7 +1,7 @@
#
from logilab.astng import (ASTNGBuildingException, InferenceError,
NotFoundError, NoDefault)
-from logilab.astng._nodes import NodeNG, StmtMixIn, BlockRangeMixIn, BaseClass, _const_factory
+from logilab.astng._nodes import NodeNG, StmtMixIn, BlockRangeMixIn, BaseClass
from logilab.astng.infutils import Instance
"""
@@ -528,10 +528,9 @@ def const_factory(value):
else:
node.elts = ()
except KeyError:
- try:
- node = Const(value)
- except KeyError:
- node = _const_factory(value)
+ assert isinstance(value, (int, long, complex, float, basestring))
+ node = Const()
+ node.value = value
return node
diff --git a/nodes.py b/nodes.py
index b015820a..e42da0d8 100644
--- a/nodes.py
+++ b/nodes.py
@@ -44,7 +44,6 @@ from itertools import imap
from logilab.astng._exceptions import UnresolvableName, NotFoundError, \
InferenceError, ASTNGError
from logilab.astng.utils import REDIRECT
-from logilab.astng._nodes import class_factory, module_factory
from logilab.astng.node_classes import (Arguments, AssAttr, Assert,
Assign, AugAssign, Backquote, BinOp, BoolOp, Break, CallFunc, Compare,
diff --git a/raw_building.py b/raw_building.py
index 621be5f6..2129db44 100644
--- a/raw_building.py
+++ b/raw_building.py
@@ -55,13 +55,17 @@ def attach_import_node(node, modname, membername):
"""create a From node and register it in the locals of the given
node with the specified name
"""
- _attach_local_node(node, nodes.import_from_factory(modname, membername),
- membername)
+ from_node = nodes.From()
+ from_node.level = 0
+ from_node.modname = modname
+ from_node.names = [(membername, None)]
+ _attach_local_node(node, from_node, membername)
def build_module(name, doc=None):
"""create and initialize a astng Module node"""
- node = nodes.module_factory(doc)
+ node = nodes.Module()
+ node.doc = doc
node.name = name
node.pure_python = False
node.package = False
@@ -71,7 +75,16 @@ def build_module(name, doc=None):
def build_class(name, basenames=(), doc=None):
"""create and initialize a astng Class node"""
- node = nodes.class_factory(name, basenames, doc)
+ node = nodes.Class()
+ node.body = []
+ node.name = name
+ node.bases = []
+ for base in basenames:
+ basenode = nodes.Name()
+ basenode.name = base
+ node.bases.append(basenode)
+ basenode.parent = node
+ node.doc = doc
node.locals = {}
node.instance_attrs = {}
return node
@@ -80,7 +93,24 @@ def build_function(name, args=None, defaults=None, flag=0, doc=None):
"""create and initialize a astng Function node"""
args, defaults = args or [], defaults or []
# first argument is now a list of decorators
- func = nodes.function_factory(name, args, defaults, flag, doc)
+ func = nodes.Function()
+ node.decorators = None
+ func.body = []
+ func.name = name
+ func.args = argsnode = nodes.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(nodes.const_factory(default))
+ argsnode.defaults[-1].parent = argsnode
+ argsnode.kwarg = None
+ argsnode.vararg = None
+ argsnode.parent = node
+ func.doc = doc
func.locals = {}
if args:
register_arguments(func)