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=CLASS_BG, **options)
Create a new DotGraphUmlClassNode based on the class class_doc.

Inherited from DotGraphNode: __getitem__, __setitem__

    Attribute Linking
  link_attributes(self, nodes)
Convert any attributes with type descriptions corresponding to documented classes to edges.
  _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.
  _add_attribute_edge(self, var, nodes, type_str, **attribs)
Helper for link_attribute(): try to add an edge for the given attribute variable var.
    Helper Methods
  _summary(self, api_doc)
Return a plaintext summary for api_doc
  _type_descr(self, api_doc)
Return a plaintext type description for api_doc
  _tooltip(self, var_doc)
Return a tooltip for var_doc.
    Rendering
  _attribute_cell(self, var_doc)
  _operation_cell(self, var_doc)
  _operation_arg(self, name, default, func_doc)
  _qualifier_cell(self, key_label, port)
  _get_html_label(self)
  to_dotfile(self)
Return the dot commands that should be used to render this node.

Class Variables [hide private]

Inherited from DotGraphNode (private): _next_id

    Attribute Linking
SIMPLE_TYPE_RE A regular expression that matches descriptions of simple types.
COLLECTION_TYPE_RE A regular expression that matches descriptions of collection types.
MAPPING_TYPE_RE A regular expression that matches descriptions of mapping types.
MAPPING_TO_COLLECTION_TYPE_RE A regular expression that matches descriptions of mapping types whose value type is a collection.
OPTIONAL_TYPE_RE A regular expression that matches descriptions of optional types.
    Rendering
_ATTRIBUTE_CELL args: (url, tooltip, label)
_OPERATION_CELL args: (url, tooltip, label)
_QUALIFIER_CELL args: (port, bgcolor, label)
_QUALIFIER_DIV  
_LABEL Args: (rowspan, bgcolor, classname, attributes, operations, qualifiers)
_COLLAPSED_LABEL  

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=CLASS_BG, **options)
(Constructor)

source code 
Create a new DotGraphUmlClassNode based on the class class_doc.
Parameters:
  • linker (DocstringLinker<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 

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_attribute() 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 
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 
Helper for link_attribute(): try to add an edge for the given attribute variable var. Return True if successful.

_summary(self, api_doc)

source code 
Return a plaintext summary for api_doc

_type_descr(self, api_doc)

source code 
Return a plaintext type description for api_doc

_tooltip(self, var_doc)

source code 
Return a tooltip for var_doc.

_attribute_cell(self, var_doc)

source code 

_operation_cell(self, var_doc)

source code 

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 

To Do:

  • Handle tuple args better
  • Optionally add type info?

_qualifier_cell(self, key_label, port)

source code 

_get_html_label(self)

source code 

to_dotfile(self)

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

Class Variable Details [hide private]

SIMPLE_TYPE_RE

A regular expression that matches descriptions of simple types.
Value:
^([\w\.]+)$                                                            
      

COLLECTION_TYPE_RE

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

MAPPING_TYPE_RE

A regular expression that matches descriptions of mapping types.
Value:
^(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:
^(dict|dictionary|map|mapping) from ([\w\.]+) to (list|set|sequence|tu\
ple|collection) of ([\w\.]+)$                                          
      

OPTIONAL_TYPE_RE

A regular expression that matches descriptions of optional types.
Value:
^(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]

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. These should not be added to the DotGraph; this node will generate their dotfile code directly.