[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.
|