summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pyreverse/diadefslib.py11
-rw-r--r--pyreverse/diagrams.py19
-rw-r--r--pyreverse/utils.py13
3 files changed, 23 insertions, 20 deletions
diff --git a/pyreverse/diadefslib.py b/pyreverse/diadefslib.py
index b2ad793..a577b0e 100644
--- a/pyreverse/diadefslib.py
+++ b/pyreverse/diadefslib.py
@@ -12,13 +12,10 @@
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. """
# library to handle diagrams definition """
-__revision__ = "$Id: diadefslib.py,v 1.13 2006-03-14 09:56:08 syt Exp $"
-
import sys
from logilab.common.configuration import OptionsProviderMixIn
from logilab import astng
-from logilab.astng.astng import ancestors
from logilab.astng.utils import LocalsVisitor
from pyreverse.extensions.xmlconf import DictSaxHandlerMixIn, PrefReader
@@ -103,7 +100,7 @@ class DiadefsResolverHelper:
"""return all class defined in the given astng module
"""
classes = []
- for object in module.locals.values():
+ for object in module.values():
if isinstance(object, astng.Class):
classes.append((object, object.name))
return classes
@@ -127,7 +124,7 @@ class DiadefsResolverHelper:
print >> sys.stderr, 'Warning: no module named %s' % module
else:
try:
- return module.locals[name]
+ return module[name]
except KeyError:
print >> sys.stderr, 'Warning: no module class %s in %s' % (
name, module)
@@ -202,7 +199,7 @@ class ClassDiadefGenerator:
else:
module = project.modules[0]
klass = klass.split('.')[-1]
- klass = module.resolve(klass)
+ klass = module.ilookup(klass).next()
self.extract_classes(diagram, klass, linker,
include_level, include_module_name)
return diagram
@@ -215,7 +212,7 @@ class ClassDiadefGenerator:
return
self.add_class_def(diagram, klass_node, linker, include_module_name)
# add all ancestors whatever the include_level ?
- for ancestor in ancestors(klass_node):
+ for ancestor in klass_node.ancestors():
self.extract_classes(diagram, ancestor, linker,
include_level, include_module_name)
include_level -= 1
diff --git a/pyreverse/diagrams.py b/pyreverse/diagrams.py
index 7f281d4..fdff82c 100644
--- a/pyreverse/diagrams.py
+++ b/pyreverse/diagrams.py
@@ -16,7 +16,7 @@
"""diagram objects
"""
-__revision__ = "$Id: diagrams.py,v 1.6 2006-03-14 09:56:08 syt Exp $"
+from logilab import astng
from pyreverse.utils import is_interface
from logilab import astng
@@ -120,7 +120,7 @@ class ClassDiagram(Figure):
else:
obj.shape = 'class'
# inheritance link
- for par_node in node.baseobjects:
+ for par_node in node.ancestors(recurs=False):
try:
par_obj = self.object_from_node(par_node)
self.add_relationship(obj, par_obj, 'specialization')
@@ -134,12 +134,15 @@ class ClassDiagram(Figure):
except KeyError:
continue
# associations link
- for name, value in node.instance_attrs_type.items():
- try:
- ass_obj = self.object_from_node(value)
- self.add_relationship(obj, ass_obj, 'association', name)
- except KeyError:
- continue
+ for name, values in node.instance_attrs_type.items():
+ for value in values:
+ if value is astng.YES:
+ continue
+ try:
+ ass_obj = self.object_from_node(value)
+ self.add_relationship(obj, ass_obj, 'association', name)
+ except KeyError:
+ continue
class PackageDiagram(ClassDiagram):
TYPE = 'package'
diff --git a/pyreverse/utils.py b/pyreverse/utils.py
index def4d21..fb9b7c5 100644
--- a/pyreverse/utils.py
+++ b/pyreverse/utils.py
@@ -17,14 +17,10 @@
generic classes/functions for pyreverse core/extensions
"""
-__revision__ = "$Id: utils.py,v 1.12 2006-03-14 09:56:06 syt Exp $"
-
import sys
import re
from logilab.astng import ASTNGManager, IgnoreChild, Project
-from logilab.astng.utils import is_interface, is_exception, \
- get_raises, get_returns
from logilab.astng.manager import astng_wrapper
from logilab.common.configuration import ConfigurationMixIn
@@ -82,6 +78,13 @@ def is_final(node):
"""
return FINAL.match(node.name)
+def is_interface(node):
+ # bw compat
+ return node.type == 'interface'
+
+def is_exception(node):
+ # bw compat
+ return node.type == 'exception'
# Helpers #####################################################################
@@ -118,7 +121,7 @@ class FilterMixIn:
)
def __init__(self):
- pass
+ self.load_defaults()
def get_mode(self):
"""return the integer value of a mode string