[Epydoc-commits] SF.net SVN: epydoc: [1643] trunk/epydoc/src/epydoc/docwriter/dotgraph.py
Brought to you by:
edloper
From: <ed...@us...> - 2007-09-25 18:34:00
|
Revision: 1643 http://epydoc.svn.sourceforge.net/epydoc/?rev=1643&view=rev Author: edloper Date: 2007-09-25 11:33:58 -0700 (Tue, 25 Sep 2007) Log Message: ----------- - Removed 'show_private_subclasses' option that was added in the last checkin; replaced it with an 'exclude' option that can be used to exclude selected classes from the tree. Modified Paths: -------------- trunk/epydoc/src/epydoc/docwriter/dotgraph.py Modified: trunk/epydoc/src/epydoc/docwriter/dotgraph.py =================================================================== --- trunk/epydoc/src/epydoc/docwriter/dotgraph.py 2007-09-25 18:09:07 UTC (rev 1642) +++ trunk/epydoc/src/epydoc/docwriter/dotgraph.py 2007-09-25 18:33:58 UTC (rev 1643) @@ -1007,7 +1007,7 @@ Return a `DotGraph` that graphically displays the class hierarchy for the given classes. Options: - - show_private_subclasses + - exclude - dir: LR|RL|BT requests a left-to-right, right-to-left, or bottom-to- top, drawing. (corresponds to the dot option 'rankdir' @@ -1020,7 +1020,7 @@ # Options if options.get('dir', 'TB') != 'TB': # default: top-down graph.body += 'rankdir=%s\n' % options.get('dir', 'TB') - show_private_subclasses = options.get('show_private_subclasses', True) + exclude = options.get('exclude', ()) # Find all superclasses & subclasses of the given classes. classes = set(bases) @@ -1028,19 +1028,20 @@ for cls in queue: if isinstance(cls, ClassDoc): if cls.subclasses not in (None, UNKNOWN): - if show_private_subclasses: - subclasses = cls.subclasses - else: - subclasses = [c for c in cls.subclasses - if not c.canonical_name[-1].startswith('_')] + subclasses = cls.subclasses + if exclude: + subclasses = [d for d in subclasses if d not in exclude] queue.extend(subclasses) classes.update(subclasses) queue = list(bases) for cls in queue: if isinstance(cls, ClassDoc): if cls.bases not in (None, UNKNOWN): - queue.extend(cls.bases) - classes.update(cls.bases) + bases = cls.bases + if exclude: + bases = [d for d in bases if d not in exclude] + queue.extend(bases) + classes.update(bases) # Add a node for each cls. classes = [d for d in classes if isinstance(d, ClassDoc) @@ -1063,20 +1064,19 @@ Return a `DotGraph` that graphically displays the class hierarchy for the given class, using UML notation. Options: - - show_private_subclasses - max_attributes - max_operations - show_private_vars - show_magic_vars - link_attributes """ - show_private_subclasses = options.get('show_private_subclasses', True) - nodes = {} # ClassDoc -> DotGraphUmlClassNode + exclude = options.get('exclude', ()) # Create nodes for class_doc and all its bases. for cls in class_doc.mro(): if cls.pyval is object: continue # don't include `object`. + if cls in exclude: break # stop if we get to an excluded class. if cls == class_doc: color = SELECTED_BG else: color = BASECLASS_BG nodes[cls] = DotGraphUmlClassNode(cls, linker, context, @@ -1088,12 +1088,10 @@ for cls in queue: if (isinstance(cls, ClassDoc) and cls.subclasses not in (None, UNKNOWN)): - queue.extend(cls.subclasses) for subcls in cls.subclasses: subcls_name = subcls.canonical_name[-1] - if ( (subcls not in nodes) and - (show_private_subclasses or - not subcls_name.startswith('_')) ): + if subcls not in nodes and subcls not in exclude: + queue.append(subcls) nodes[subcls] = DotGraphUmlClassNode( subcls, linker, context, collapsed=True, bgcolor=SUBCLASS_BG) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |