diff options
-rw-r--r-- | pyreverse/diadefslib.py | 11 | ||||
-rw-r--r-- | pyreverse/diagrams.py | 19 | ||||
-rw-r--r-- | pyreverse/utils.py | 13 |
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 |