Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/networkx/classes/ordered.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:d30785e31577 | 1:56ad4e20f292 |
---|---|
1 """ | |
2 Consistently ordered variants of the default base classes. | |
3 Note that if you are using Python 3.6+, you shouldn't need these classes | |
4 because the dicts in Python 3.6+ are ordered. | |
5 Note also that there are many differing expectations for the word "ordered" | |
6 and that these classes may not provide the order you expect. | |
7 The intent here is to give a consistent order not a particular order. | |
8 | |
9 The Ordered (Di/Multi/MultiDi) Graphs give a consistent order for reporting of | |
10 nodes and edges. The order of node reporting agrees with node adding, but for | |
11 edges, the order is not necessarily the order that the edges were added. | |
12 | |
13 In general, you should use the default (i.e., unordered) graph classes. | |
14 However, there are times (e.g., when testing) when you may need the | |
15 order preserved. | |
16 | |
17 Special care is required when using subgraphs of the Ordered classes. | |
18 The order of nodes in the subclass is not necessarily the same order | |
19 as the original class. In general it is probably better to avoid using | |
20 subgraphs and replace with code similar to: | |
21 | |
22 .. code-block:: python | |
23 | |
24 # instead of SG = G.subgraph(ordered_nodes) | |
25 SG=nx.OrderedGraph() | |
26 SG.add_nodes_from(ordered_nodes) | |
27 SG.add_edges_from((u, v) for (u, v) in G.edges() if u in SG if v in SG) | |
28 | |
29 """ | |
30 from collections import OrderedDict | |
31 | |
32 from .graph import Graph | |
33 from .multigraph import MultiGraph | |
34 from .digraph import DiGraph | |
35 from .multidigraph import MultiDiGraph | |
36 | |
37 __all__ = [] | |
38 | |
39 __all__.extend([ | |
40 'OrderedGraph', | |
41 'OrderedDiGraph', | |
42 'OrderedMultiGraph', | |
43 'OrderedMultiDiGraph', | |
44 ]) | |
45 | |
46 | |
47 class OrderedGraph(Graph): | |
48 """Consistently ordered variant of :class:`~networkx.Graph`.""" | |
49 node_dict_factory = OrderedDict | |
50 adjlist_outer_dict_factory = OrderedDict | |
51 adjlist_inner_dict_factory = OrderedDict | |
52 edge_attr_dict_factory = OrderedDict | |
53 | |
54 | |
55 class OrderedDiGraph(DiGraph): | |
56 """Consistently ordered variant of :class:`~networkx.DiGraph`.""" | |
57 node_dict_factory = OrderedDict | |
58 adjlist_outer_dict_factory = OrderedDict | |
59 adjlist_inner_dict_factory = OrderedDict | |
60 edge_attr_dict_factory = OrderedDict | |
61 | |
62 | |
63 class OrderedMultiGraph(MultiGraph): | |
64 """Consistently ordered variant of :class:`~networkx.MultiGraph`.""" | |
65 node_dict_factory = OrderedDict | |
66 adjlist_outer_dict_factory = OrderedDict | |
67 adjlist_inner_dict_factory = OrderedDict | |
68 edge_key_dict_factory = OrderedDict | |
69 edge_attr_dict_factory = OrderedDict | |
70 | |
71 | |
72 class OrderedMultiDiGraph(MultiDiGraph): | |
73 """Consistently ordered variant of :class:`~networkx.MultiDiGraph`.""" | |
74 node_dict_factory = OrderedDict | |
75 adjlist_outer_dict_factory = OrderedDict | |
76 adjlist_inner_dict_factory = OrderedDict | |
77 edge_key_dict_factory = OrderedDict | |
78 edge_attr_dict_factory = OrderedDict |