Mercurial > repos > shellac > sam_consensus_v3
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