Reading and writing¶
Module tock.tables¶
-
class
tock.tables.
Table
(rows, num_header_cols=1, num_header_rows=1)¶ A simple class that just stores a list of lists of strings.
- Parameters
rows – list of lists of strings
num_header_rows (int) – number of header rows
num_header_cols (int) – number of header columns
-
num_header_cols
= None¶ Number of header rows
-
num_header_rows
= None¶ Number of header columns
-
rows
= None¶ The table contents
-
tock.tables.
from_table
(table)¶ Convert a Table to a Machine.
Example
0
1
&
0
&
1
&
$
&
>@q1
q2,$
q2
q2,0
q2,1
q3,&
q3
q3,&
q3,&
q4,&
@q4
The first two rows, because they have empty first cells, are assumed to be header rows.
In a header row, cells “fill” to the right. In the above example, the first row effectively has cells 0, 0, 1, 1, &, &.
-
tock.tables.
read_csv
(filename)¶ Reads a CSV file containing a tabular description of a transition function (see from_table).
-
tock.tables.
read_excel
(filename, sheet=None)¶ Reads an Excel file containing a tabular description of a transition function (see from_table).
-
tock.tables.
to_table
(m)¶ Converts a Machine to a Table.
Module tock.graphs¶
-
class
tock.graphs.
Graph
(attrs=None)¶ A directed graph. Both nodes and edges can have a dict of attributes.
Nodes can be any object that implements __hash__ and __eq__.
If g is a Graph and v is a node, v’s attributes can be accessed as g.nodes[v]. If u and v are nodes, edge (u, v)’s attributes can be accessed as g.edges[u][v].
-
add_edge
(u, v, attrs=None)¶ Add edge from u to v to graph with attributes attrs.
-
add_node
(v, attrs=None)¶ Add node v to graph with attributes attrs.
-
has_edge
(u, v)¶ Remove edge from u to v.
-
has_path
()¶ Returns True iff there is a path from the start node to an accept node.
-
only_path
()¶ Finds the only path from the start node. If there is more than one, raises ValueError.
-
remove_node
(v)¶ Remove node v, as well as any edges incident to v.
-
shortest_path
()¶ Finds the shortest path from the start node to an accept node. If there is more than one, chooses one arbitrarily.
-
-
tock.graphs.
from_graph
(g)¶ Converts a Graph to a Machine.
-
tock.graphs.
write_dot
(x, filename)¶ Writes a Machine or Graph to file named filename in GraphViz (DOT) format.
-
tock.graphs.
read_tgf
(filename)¶ Reads a file in Trivial Graph Format. Edge labels are read into the label attribute.
-
tock.graphs.
to_graph
(m)¶ Converts a Machine to a Graph.