Index: third_party/pylint/pyreverse/writer.py |
diff --git a/third_party/pylint/pyreverse/writer.py b/third_party/pylint/pyreverse/writer.py |
index 8628a8ccf18c32191b9cace42141414df8e8de89..6dbfc2658c5690c26d288280347049589b1ae633 100644 |
--- a/third_party/pylint/pyreverse/writer.py |
+++ b/third_party/pylint/pyreverse/writer.py |
@@ -1,5 +1,5 @@ |
# -*- coding: utf-8 -*- |
-# Copyright (c) 2008-2013 LOGILAB S.A. (Paris, FRANCE). |
+# Copyright (c) 2008-2010 LOGILAB S.A. (Paris, FRANCE). |
# http://www.logilab.fr/ -- mailto:contact@logilab.fr |
# |
# This program is free software; you can redistribute it and/or modify it under |
@@ -13,15 +13,17 @@ |
# |
# You should have received a copy of the GNU General Public License along with |
# this program; if not, write to the Free Software Foundation, Inc., |
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
-"""Utilities for creating VCG and Dot diagrams""" |
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. |
+""" |
+Utilities for creating VCG and Dot diagrams. |
+""" |
from logilab.common.vcgutils import VCGPrinter |
from logilab.common.graph import DotBackend |
from pylint.pyreverse.utils import is_exception |
-class DiagramWriter(object): |
+class DiagramWriter: |
"""base class for writing project diagrams |
""" |
def __init__(self, config, styles): |
@@ -44,33 +46,30 @@ class DiagramWriter(object): |
def write_packages(self, diagram): |
"""write a package diagram""" |
- # sorted to get predictable (hence testable) results |
- for i, obj in enumerate(sorted(diagram.modules(), key=lambda x: x.title)): |
- self.printer.emit_node(i, label=self.get_title(obj), shape='box') |
- obj.fig_id = i |
+ for obj in diagram.modules(): |
+ label = self.get_title(obj) |
+ self.printer.emit_node(obj.fig_id, label=label, shape='box') |
# package dependencies |
- for rel in diagram.get_relationships('depends'): |
+ for rel in diagram.relationships.get('depends', ()): |
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id, |
- **self.pkg_edges) |
+ **self.pkg_edges) |
def write_classes(self, diagram): |
"""write a class diagram""" |
- # sorted to get predictable (hence testable) results |
- for i, obj in enumerate(sorted(diagram.objects, key=lambda x: x.title)): |
- self.printer.emit_node(i, **self.get_values(obj)) |
- obj.fig_id = i |
+ for obj in diagram.objects: |
+ self.printer.emit_node(obj.fig_id, **self.get_values(obj) ) |
# inheritance links |
- for rel in diagram.get_relationships('specialization'): |
+ for rel in diagram.relationships.get('specialization', ()): |
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id, |
- **self.inh_edges) |
+ **self.inh_edges) |
# implementation links |
- for rel in diagram.get_relationships('implements'): |
+ for rel in diagram.relationships.get('implements', ()): |
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id, |
- **self.imp_edges) |
+ **self.imp_edges) |
# generate associations |
- for rel in diagram.get_relationships('association'): |
+ for rel in diagram.relationships.get('association', ()): |
self.printer.emit_edge(rel.from_object.fig_id, rel.to_object.fig_id, |
- label=rel.name, **self.ass_edges) |
+ label=rel.name, **self.ass_edges) |
def set_printer(self, file_name, basename): |
"""set printer""" |
@@ -94,12 +93,11 @@ class DotWriter(DiagramWriter): |
""" |
def __init__(self, config): |
- styles = [dict(arrowtail='none', arrowhead="open"), |
- dict(arrowtail='none', arrowhead='empty'), |
- dict(arrowtail='node', arrowhead='empty', style='dashed'), |
+ styles = [dict(arrowtail='none', arrowhead="open"), |
+ dict(arrowtail = "none", arrowhead='empty'), |
+ dict(arrowtail="node", arrowhead='empty', style='dashed'), |
dict(fontcolor='green', arrowtail='none', |
- arrowhead='diamond', style='solid'), |
- ] |
+ arrowhead='diamond', style='solid') ] |
DiagramWriter.__init__(self, config, styles) |
def set_printer(self, file_name, basename): |
@@ -115,20 +113,20 @@ class DotWriter(DiagramWriter): |
def get_values(self, obj): |
"""get label and shape for classes. |
- |
+ |
The label contains all attributes and methods |
""" |
- label = obj.title |
+ label = obj.title |
if obj.shape == 'interface': |
- label = u'«interface»\\n%s' % label |
+ label = "«interface»\\n%s" % label |
if not self.config.only_classnames: |
- label = r'%s|%s\l|' % (label, r'\l'.join(obj.attrs)) |
+ label = "%s|%s\l|" % (label, r"\l".join(obj.attrs) ) |
for func in obj.methods: |
label = r'%s%s()\l' % (label, func.name) |
label = '{%s}' % label |
if is_exception(obj.node): |
- return dict(fontcolor='red', label=label, shape='record') |
- return dict(label=label, shape='record') |
+ return dict(fontcolor="red", label=label, shape="record") |
+ return dict(label=label, shape="record") |
def close_graph(self): |
"""print the dot graph into <file_name>""" |
@@ -141,13 +139,12 @@ class VCGWriter(DiagramWriter): |
def __init__(self, config): |
styles = [dict(arrowstyle='solid', backarrowstyle='none', |
backarrowsize=0), |
- dict(arrowstyle='solid', backarrowstyle='none', |
+ dict(arrowstyle='solid', backarrowstyle='none', |
backarrowsize=10), |
dict(arrowstyle='solid', backarrowstyle='none', |
linestyle='dotted', backarrowsize=10), |
dict(arrowstyle='solid', backarrowstyle='none', |
- textcolor='green'), |
- ] |
+ textcolor='green') ] |
DiagramWriter.__init__(self, config, styles) |
def set_printer(self, file_name, basename): |
@@ -166,7 +163,7 @@ class VCGWriter(DiagramWriter): |
def get_values(self, obj): |
"""get label and shape for classes. |
- |
+ |
The label contains all attributes and methods |
""" |
if is_exception(obj.node): |
@@ -182,7 +179,7 @@ class VCGWriter(DiagramWriter): |
methods = [func.name for func in obj.methods] |
# box width for UML like diagram |
maxlen = max(len(name) for name in [obj.title] + methods + attrs) |
- line = '_' * (maxlen + 2) |
+ line = "_" * (maxlen + 2) |
label = r'%s\n\f%s' % (label, line) |
for attr in attrs: |
label = r'%s\n\f08%s' % (label, attr) |