OLD | NEW |
1 # Copyright (c) 2000-2013 LOGILAB S.A. (Paris, FRANCE). | 1 # Copyright (c) 2000-2013 LOGILAB S.A. (Paris, FRANCE). |
2 # http://www.logilab.fr/ -- mailto:contact@logilab.fr | 2 # http://www.logilab.fr/ -- mailto:contact@logilab.fr |
3 # | 3 # |
4 # This program is free software; you can redistribute it and/or modify it under | 4 # This program is free software; you can redistribute it and/or modify it under |
5 # the terms of the GNU General Public License as published by the Free Software | 5 # the terms of the GNU General Public License as published by the Free Software |
6 # Foundation; either version 2 of the License, or (at your option) any later | 6 # Foundation; either version 2 of the License, or (at your option) any later |
7 # version. | 7 # version. |
8 # | 8 # |
9 # This program is distributed in the hope that it will be useful, but WITHOUT | 9 # This program is distributed in the hope that it will be useful, but WITHOUT |
10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS | 10 # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 return | 92 return |
93 for ancestor in node.ancestors(recurs=False): | 93 for ancestor in node.ancestors(recurs=False): |
94 if not self.show_node(ancestor): | 94 if not self.show_node(ancestor): |
95 continue | 95 continue |
96 yield ancestor | 96 yield ancestor |
97 | 97 |
98 def get_associated(self, klass_node, level): | 98 def get_associated(self, klass_node, level): |
99 """return associated nodes of a class node""" | 99 """return associated nodes of a class node""" |
100 if level == 0: | 100 if level == 0: |
101 return | 101 return |
102 for ass_nodes in klass_node.instance_attrs_type.values() + \ | 102 for ass_nodes in list(klass_node.instance_attrs_type.values()) + \ |
103 klass_node.locals_type.values(): | 103 list(klass_node.locals_type.values()): |
104 for ass_node in ass_nodes: | 104 for ass_node in ass_nodes: |
105 if isinstance(ass_node, astroid.Instance): | 105 if isinstance(ass_node, astroid.Instance): |
106 ass_node = ass_node._proxied | 106 ass_node = ass_node._proxied |
107 if not (isinstance(ass_node, astroid.Class) | 107 if not (isinstance(ass_node, astroid.Class) |
108 and self.show_node(ass_node)): | 108 and self.show_node(ass_node)): |
109 continue | 109 continue |
110 yield ass_node | 110 yield ass_node |
111 | 111 |
112 def extract_classes(self, klass_node, anc_level, ass_level): | 112 def extract_classes(self, klass_node, anc_level, ass_level): |
113 """extract recursively classes related to klass_node""" | 113 """extract recursively classes related to klass_node""" |
(...skipping 24 matching lines...) Expand all Loading... |
138 | 138 |
139 create a diagram definition for packages | 139 create a diagram definition for packages |
140 """ | 140 """ |
141 mode = self.config.mode | 141 mode = self.config.mode |
142 if len(node.modules) > 1: | 142 if len(node.modules) > 1: |
143 self.pkgdiagram = PackageDiagram('packages %s' % node.name, mode) | 143 self.pkgdiagram = PackageDiagram('packages %s' % node.name, mode) |
144 else: | 144 else: |
145 self.pkgdiagram = None | 145 self.pkgdiagram = None |
146 self.classdiagram = ClassDiagram('classes %s' % node.name, mode) | 146 self.classdiagram = ClassDiagram('classes %s' % node.name, mode) |
147 | 147 |
148 def leave_project(self, node): | 148 def leave_project(self, node): # pylint: disable=unused-argument |
149 """leave the astroid.Project node | 149 """leave the astroid.Project node |
150 | 150 |
151 return the generated diagram definition | 151 return the generated diagram definition |
152 """ | 152 """ |
153 if self.pkgdiagram: | 153 if self.pkgdiagram: |
154 return self.pkgdiagram, self.classdiagram | 154 return self.pkgdiagram, self.classdiagram |
155 return self.classdiagram, | 155 return self.classdiagram, |
156 | 156 |
157 def visit_module(self, node): | 157 def visit_module(self, node): |
158 """visit an astroid.Module node | 158 """visit an astroid.Module node |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 related klasses | 191 related klasses |
192 """ | 192 """ |
193 | 193 |
194 self.classdiagram = ClassDiagram(klass, self.config.mode) | 194 self.classdiagram = ClassDiagram(klass, self.config.mode) |
195 if len(project.modules) > 1: | 195 if len(project.modules) > 1: |
196 module, klass = klass.rsplit('.', 1) | 196 module, klass = klass.rsplit('.', 1) |
197 module = project.get_module(module) | 197 module = project.get_module(module) |
198 else: | 198 else: |
199 module = project.modules[0] | 199 module = project.modules[0] |
200 klass = klass.split('.')[-1] | 200 klass = klass.split('.')[-1] |
201 klass = module.ilookup(klass).next() | 201 klass = next(module.ilookup(klass)) |
202 | 202 |
203 anc_level, ass_level = self._get_levels() | 203 anc_level, ass_level = self._get_levels() |
204 self.extract_classes(klass, anc_level, ass_level) | 204 self.extract_classes(klass, anc_level, ass_level) |
205 return self.classdiagram | 205 return self.classdiagram |
206 | 206 |
207 # diagram handler ############################################################# | 207 # diagram handler ############################################################# |
208 | 208 |
209 class DiadefsHandler(object): | 209 class DiadefsHandler(object): |
210 """handle diagram definitions : | 210 """handle diagram definitions : |
211 | 211 |
(...skipping 12 matching lines...) Expand all Loading... |
224 # read and interpret diagram definitions (Diadefs) | 224 # read and interpret diagram definitions (Diadefs) |
225 diagrams = [] | 225 diagrams = [] |
226 generator = ClassDiadefGenerator(linker, self) | 226 generator = ClassDiadefGenerator(linker, self) |
227 for klass in self.config.classes: | 227 for klass in self.config.classes: |
228 diagrams.append(generator.class_diagram(project, klass)) | 228 diagrams.append(generator.class_diagram(project, klass)) |
229 if not diagrams: | 229 if not diagrams: |
230 diagrams = DefaultDiadefGenerator(linker, self).visit(project) | 230 diagrams = DefaultDiadefGenerator(linker, self).visit(project) |
231 for diagram in diagrams: | 231 for diagram in diagrams: |
232 diagram.extract_relationships() | 232 diagram.extract_relationships() |
233 return diagrams | 233 return diagrams |
OLD | NEW |