diff env/lib/python3.9/site-packages/networkx/classes/ordered.py @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/env/lib/python3.9/site-packages/networkx/classes/ordered.py	Mon Mar 22 18:12:50 2021 +0000
@@ -0,0 +1,79 @@
+"""
+Consistently ordered variants of the default base classes.
+Note that if you are using Python 3.6+, you shouldn't need these classes
+because the dicts in Python 3.6+ are ordered.
+Note also that there are many differing expectations for the word "ordered"
+and that these classes may not provide the order you expect.
+The intent here is to give a consistent order not a particular order.
+
+The Ordered (Di/Multi/MultiDi) Graphs give a consistent order for reporting of
+nodes and edges.  The order of node reporting agrees with node adding, but for
+edges, the order is not necessarily the order that the edges were added.
+
+In general, you should use the default (i.e., unordered) graph classes.
+However, there are times (e.g., when testing) when you may need the
+order preserved.
+
+Special care is required when using subgraphs of the Ordered classes.
+The order of nodes in the subclass is not necessarily the same order
+as the original class.  In general it is probably better to avoid using
+subgraphs and replace with code similar to:
+
+.. code-block:: python
+
+    # instead of SG = G.subgraph(ordered_nodes)
+    SG = nx.OrderedGraph()
+    SG.add_nodes_from(ordered_nodes)
+    SG.add_edges_from((u, v) for (u, v) in G.edges() if u in SG if v in SG)
+
+"""
+from collections import OrderedDict
+
+from .graph import Graph
+from .multigraph import MultiGraph
+from .digraph import DiGraph
+from .multidigraph import MultiDiGraph
+
+__all__ = []
+
+__all__.extend(
+    ["OrderedGraph", "OrderedDiGraph", "OrderedMultiGraph", "OrderedMultiDiGraph"]
+)
+
+
+class OrderedGraph(Graph):
+    """Consistently ordered variant of :class:`~networkx.Graph`."""
+
+    node_dict_factory = OrderedDict
+    adjlist_outer_dict_factory = OrderedDict
+    adjlist_inner_dict_factory = OrderedDict
+    edge_attr_dict_factory = OrderedDict
+
+
+class OrderedDiGraph(DiGraph):
+    """Consistently ordered variant of :class:`~networkx.DiGraph`."""
+
+    node_dict_factory = OrderedDict
+    adjlist_outer_dict_factory = OrderedDict
+    adjlist_inner_dict_factory = OrderedDict
+    edge_attr_dict_factory = OrderedDict
+
+
+class OrderedMultiGraph(MultiGraph):
+    """Consistently ordered variant of :class:`~networkx.MultiGraph`."""
+
+    node_dict_factory = OrderedDict
+    adjlist_outer_dict_factory = OrderedDict
+    adjlist_inner_dict_factory = OrderedDict
+    edge_key_dict_factory = OrderedDict
+    edge_attr_dict_factory = OrderedDict
+
+
+class OrderedMultiDiGraph(MultiDiGraph):
+    """Consistently ordered variant of :class:`~networkx.MultiDiGraph`."""
+
+    node_dict_factory = OrderedDict
+    adjlist_outer_dict_factory = OrderedDict
+    adjlist_inner_dict_factory = OrderedDict
+    edge_key_dict_factory = OrderedDict
+    edge_attr_dict_factory = OrderedDict