Package epydoc :: Package docwriter :: Module dotgraph :: Class DotGraphUmlClassNode
[hide private]
[frames] | no frames]

Class DotGraphUmlClassNode

source code


A specialized dot graph node used to display ClassDocs using UML notation. The node is rendered as a table with three cells: the top cell contains the class name; the middle cell contains a list of attributes; and the bottom cell contains a list of operations:

+-------------+
|  ClassName  |
+-------------+
| x: int      |
|     ...     |
+-------------+
| f(self, x)  |
|     ...     |
+-------------+

DotGraphUmlClassNodes may be collapsed, in which case they are drawn as a simple box containing the class name:

+-------------+
|  ClassName  |
+-------------+

Attributes with types corresponding to documented classes can optionally be converted into edges, using link_attributes().


To Do: Add more options? - show/hide operation signature - show/hide operation signature types - show/hide operation signature return type - show/hide attribute types - use qualifiers

Instance Methods [hide private]
 
__init__(self, class_doc, linker, context, collapsed=False, bgcolor='#d8ffe8', **options)
Create a new DotGraphUmlClassNode based on the class class_doc.
source code
call graph 

Inherited from DotGraphNode: __getitem__, __setitem__

    Attribute Linking
 
link_attributes(self, nodes)
Convert any attributes with type descriptions corresponding to documented classes to edges.
source code
call graph 
 
_link_attribute(self, var, nodes)
Helper for link_attributes(): try to convert the attribute variable var into an edge, and add that edge to self.edges.
source code
call graph 
 
_add_attribute_edge(self, var, nodes, type_str, **attribs)
Helper for link_attributes(): try to add an edge for the given attribute variable var.
source code
call graph 
    Helper Methods
 
_type_descr(self, api_doc)
Return a plaintext type description for api_doc
source code
call graph 
 
_tooltip(self, var_doc)
Return a tooltip for var_doc.
source code
call graph 
    Rendering
 
_attribute_cell(self, var_doc) source code
call graph 
 
_operation_cell(self, var_doc) source code
call graph 
 
_operation_arg(self, name, default, func_doc) source code
call graph 
 
_qualifier_cell(self, key_label, port) source code
call graph 
 
_get_html_label(self) source code
call graph 
 
to_dotfile(self)
Return the dot commands that should be used to render this node.
source code
call graph 
Class Methods [hide private]
    Helper Methods
 
_summary(self, api_doc)
Return a plaintext summary for api_doc
source code
call graph 
Class Variables [hide private]

Inherited from DotGraphNode (private): _next_id

    Attribute Linking
  SIMPLE_TYPE_RE = re.compile(r'^([\w\.]+)$')
A regular expression that matches descriptions of simple types.
  COLLECTION_TYPE_RE = re.compile(r'^(list|set|sequence|tuple|co...
A regular expression that matches descriptions of collection types.
  MAPPING_TYPE_RE = re.compile(r'^(dict|dictionary|map|mapping) ...
A regular expression that matches descriptions of mapping types.
  MAPPING_TO_COLLECTION_TYPE_RE = re.compile(r'^(dict|dictionary...
A regular expression that matches descriptions of mapping types whose value type is a collection.
  OPTIONAL_TYPE_RE = re.compile(r'^(None or|optional) ([\w\.]+)$...
A regular expression that matches descriptions of optional types.
    Rendering
  _ATTRIBUTE_CELL = '\n <TR><TD ALIGN="LEFT" HREF="%s" TOOLTI...
args: (url, tooltip, label)
  _OPERATION_CELL = '\n <TR><TD ALIGN="LEFT" HREF="%s" TOOLTI...
args: (url, tooltip, label)
  _QUALIFIER_CELL = '\n <TR><TD VALIGN="BOTTOM" PORT="%s" BGC...
args: (port, bgcolor, label)
  _QUALIFIER_DIV = '\n <TR><TD VALIGN="BOTTOM" HEIGHT="10" WI...
  _LABEL = '\n <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="...
Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)
  _COLLAPSED_LABEL = '\n <TABLE CELLBORDER="0" BGCOLOR="%s" P...
Instance Variables [hide private]
  class_doc
The class represented by this node.
  linker
Used to look up URLs for classes.
  context
The context in which the node will be drawn.
  bgcolor
The background color of the node.
  options
Options used to control how the node is displayed.
  collapsed
If true, then draw this node as a simple box.
  attributes
The list of VariableDocs for attributes
  operations
The list of VariableDocs for operations
  qualifiers
List of (key_label, port) tuples.
  edges
List of edges used to represent this node's attributes.
Method Details [hide private]

__init__(self, class_doc, linker, context, collapsed=False, bgcolor='#d8ffe8', **options)
(Constructor)

source code 
call graph 
Create a new DotGraphUmlClassNode based on the class class_doc.
Parameters:
  • linker (markup.DocstringLinker) - Used to look up URLs for classes.
  • context (APIDoc) - The context in which this node will be drawn; dotted names will be contextualized to this context.
  • collapsed (bool) - If true, then display this node as a simple box.
  • bgcolor (`str`) - The background color for this node.
  • options (dict) - A set of options used to control how the node should be displayed.
  • show_private_vars - If false, then private variables are filtered out of the attributes & operations lists. (Default: False)
  • show_magic_vars - If false, then magic variables (such as __init__ and __add__) are filtered out of the attributes & operations lists. (Default: True)
  • show_inherited_vars - If false, then inherited variables are filtered out of the attributes & operations lists. (Default: False)
  • max_attributes - The maximum number of attributes that should be listed in the attribute box. If the class has more than this number of attributes, some will be ellided. Ellipsis is marked with '...'.
  • max_operations - The maximum number of operations that should be listed in the operation box.
  • add_nodes_for_linked_attributes - If true, then link_attributes() will create new a collapsed node for the types of a linked attributes if no node yet exists for that type.
Overrides: DotGraphNode.__init__

link_attributes(self, nodes)

source code 
call graph 

Convert any attributes with type descriptions corresponding to documented classes to edges. The following type descriptions are currently handled:

  • Dotted names: Create an attribute edge to the named type, labelled with the variable name.
  • Collections: Create an attribute edge to the named type, labelled with the variable name, and marked with '*' at the type end of the edge.
  • Mappings: Create an attribute edge to the named type, labelled with the variable name, connected to the class by a qualifier box that contains the key type description.
  • Optional: Create an attribute edge to the named type, labelled with the variable name, and marked with '0..1' at the type end of the edge.

The edges created by link_attributes() are handled internally by DotGraphUmlClassNode; they should not be added directly to the DotGraph.

Parameters:
  • nodes - A dictionary mapping from ClassDocs to DotGraphUmlClassNodes, used to look up the nodes for attribute types. If the add_nodes_for_linked_attributes option is used, then new nodes will be added to this dictionary for any types that are not already listed. These added nodes must be added to the DotGraph.

_link_attribute(self, var, nodes)

source code 
call graph 
Helper for link_attributes(): try to convert the attribute variable var into an edge, and add that edge to self.edges. Return True iff the variable was successfully converted to an edge (in which case, it should be removed from the attributes list).

_add_attribute_edge(self, var, nodes, type_str, **attribs)

source code 
call graph 
Helper for link_attributes(): try to add an edge for the given attribute variable var. Return True if successful.

_operation_cell(self, var_doc)

source code 
call graph 
To Do:
  • do 'word wrapping' on the signature, by starting a new row in the table, if necessary. How to indent the new line? Maybe use align=right? I don't think dot has a &nbsp;.
  • Optionally add return type info?

_operation_arg(self, name, default, func_doc)

source code 
call graph 
To Do:
  • Handle tuple args better
  • Optionally add type info?

to_dotfile(self)

source code 
call graph 
Return the dot commands that should be used to render this node.
Overrides: DotGraphNode.to_dotfile
(inherited documentation)

Class Variable Details [hide private]

COLLECTION_TYPE_RE

A regular expression that matches descriptions of collection types.
Value:
re.compile(r'^(list|set|sequence|tuple|collection) of ([\w\.]+)$')

MAPPING_TYPE_RE

A regular expression that matches descriptions of mapping types.
Value:
re.compile(r'^(dict|dictionary|map|mapping) from ([\w\.]+) to ([\w\.]+\
)$')

MAPPING_TO_COLLECTION_TYPE_RE

A regular expression that matches descriptions of mapping types whose value type is a collection.
Value:
re.compile(r'^(dict|dictionary|map|mapping) from ([\w\.]+) to (list|se\
t|sequence|tuple|collection) of ([\w\.]+)$')

OPTIONAL_TYPE_RE

A regular expression that matches descriptions of optional types.
Value:
re.compile(r'^(None or|optional) ([\w\.]+)$|([\w\.]+) or None$')

_ATTRIBUTE_CELL

args: (url, tooltip, label)
Value:
'''
    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR>
    '''

_OPERATION_CELL

args: (url, tooltip, label)
Value:
'''
    <TR><TD ALIGN="LEFT" HREF="%s" TOOLTIP="%s">%s</TD></TR>
    '''

_QUALIFIER_CELL

args: (port, bgcolor, label)
Value:
'''
    <TR><TD VALIGN="BOTTOM" PORT="%s" BGCOLOR="%s" BORDER="1">%s</TD><\
/TR>
    '''

_QUALIFIER_DIV

Value:
'''
    <TR><TD VALIGN="BOTTOM" HEIGHT="10" WIDTH="10" FIXEDSIZE="TRUE"></\
TD></TR>
    '''

_LABEL

Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)
Value:
'''
    <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" CELLPADDING="0">
      <TR><TD ROWSPAN="%s">
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0"
               CELLPADDING="0" PORT="body" BGCOLOR="%s">
          <TR><TD>%s</TD></TR>
          <TR><TD><TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0">
            %s</TABLE></TD></TR>
...

_COLLAPSED_LABEL

Value:
'''
    <TABLE CELLBORDER="0" BGCOLOR="%s" PORT="body">
      <TR><TD>%s</TD></TR>
    </TABLE>'''

Instance Variable Details [hide private]

edges

List of edges used to represent this node's attributes. These should not be added to the DotGraph; this node will generate their dotfile code directly.