summaryrefslogtreecommitdiff
path: root/networkx/classes/function.py
diff options
context:
space:
mode:
authoraric <none@none>2010-03-23 03:35:44 +0000
committeraric <none@none>2010-03-23 03:35:44 +0000
commita846e7a4bcd0565a1cbdfe68fc2524e0ec79b72a (patch)
tree80177166d4f090165bcc32aa05e1b49108685473 /networkx/classes/function.py
parentc017362a961b63610f0c783757953466f3724790 (diff)
downloadnetworkx-a846e7a4bcd0565a1cbdfe68fc2524e0ec79b72a.tar.gz
Move freeze() and is_frozen() to function.py
--HG-- extra : convert_revision : svn%3A3ed01bd8-26fb-0310-9e4c-ca1a4053419f/networkx/trunk%401568
Diffstat (limited to 'networkx/classes/function.py')
-rw-r--r--networkx/classes/function.py63
1 files changed, 62 insertions, 1 deletions
diff --git a/networkx/classes/function.py b/networkx/classes/function.py
index 1917ea1c..ef25953b 100644
--- a/networkx/classes/function.py
+++ b/networkx/classes/function.py
@@ -15,7 +15,8 @@ __author__ = """Aric Hagberg (hagberg@lanl.gov)\nPieter Swart (swart@lanl.gov)\n
__all__ = ['nodes', 'edges', 'degree', 'degree_histogram', 'neighbors',
'number_of_nodes', 'number_of_edges', 'density',
- 'nodes_iter', 'edges_iter', 'is_directed','info']
+ 'nodes_iter', 'edges_iter', 'is_directed','info',
+ 'freeze','is_frozen']
def nodes(G):
"""Return a copy of the graph nodes in a list."""
@@ -128,3 +129,63 @@ def info(G, n=None):
print ("Neighbors:").ljust(width_left), wrapped_neighbors[0]
for i in wrapped_neighbors[1:]:
print "".ljust(width_left), i
+
+def freeze(G):
+ """Modify graph to prevent addition of nodes or edges.
+
+ Parameters
+ -----------
+ G : graph
+ A NetworkX graph
+
+ Examples
+ --------
+ >>> G=nx.path_graph(4)
+ >>> G=nx.freeze(G)
+ >>> G.add_edge(4,5)
+ Traceback (most recent call last):
+ ...
+ NetworkXError: Frozen graph can't be modified
+
+ Notes
+ -----
+ This does not prevent modification of edge data.
+
+ To "unfreeze" a graph you must make a copy.
+
+ See Also
+ --------
+ is_frozen()
+
+ """
+ def frozen(*args):
+ raise networkx.NetworkXError("Frozen graph can't be modified")
+ G.add_node=frozen
+ G.add_nodes_from=frozen
+ G.remove_node=frozen
+ G.remove_nodes_from=frozen
+ G.add_edge=frozen
+ G.add_edges_from=frozen
+ G.remove_edge=frozen
+ G.remove_edges_from=frozen
+ G.clear=frozen
+ G.frozen=True
+ return G
+
+def is_frozen(G):
+ """Return True if graph is frozen."
+
+ Parameters
+ -----------
+ G : graph
+ A NetworkX graph
+
+ See Also
+ --------
+ freeze()
+
+ """
+ try:
+ return G.frozen
+ except AttributeError:
+ return False