doc/release/release_3.0.rst
Release date: 7 January 2023
Supports Python 3.8, 3.9, 3.10, and 3.11.
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
For more information, please visit our website <https://networkx.org/>_
and our :ref:gallery of examples <examples_gallery>.
Please send comments and questions to the networkx-discuss mailing list <http://groups.google.com/group/networkx-discuss>_.
This release is the result of 8 months of work with over 180 changes by
41 contributors. We also have a guide for people moving from NetworkX 2.X to NetworkX 3.0 <https://networkx.org/documentation/latest/release/migration_guide_from_2.x_to_3.0.html>_. Highlights include:
_adj as a criteria for the object
being a Graph instance, that code may need updating. The graph classes
themselves now have an attribute _adj. So, it is possible that whatever you
are checking might be a class rather than an instance. We suggest you check
for attribute _adj to verify it is like a NetworkX graph object or type and
then type(obj) is type to check if it is a class.experimental plugin feature <https://github.com/networkx/networkx/pull/6000>_,
which let users choose alternate backends like GraphBLAS, CuGraph for computation. This is an
opt-in feature and may change in future releases.Scientific Python ecosystem <https://networkx.org/documentation/latest/release/migration_guide_from_2.x_to_3.0.html#improved-integration-with-scientific-python>_.nx.to_latex(G, pos, **options) to construct a string of latex code or
nx.write_latex(G, filename, as_document=True, **options) to write the string to a file.#5663 <https://github.com/networkx/networkx/pull/5663>_]
Implements edge swapping for directed graphs.#5883 <https://github.com/networkx/networkx/pull/5883>_]
Replace the implementation of lowest_common_ancestor and
all_pairs_lowest_common_ancestor with a "naive" algorithm to fix
several bugs and improve performance.#5912 <https://github.com/networkx/networkx/pull/5912>_]
The mapping argument of the relabel_nodes function can be either a
mapping or a function that creates a mapping. relabel_nodes first checks
whether the mapping is callable - if so, then it is used as a function.
This fixes a bug related for mapping=str and may change the behavior for
other mapping arguments that implement both __getitem__ and
__call__.#5898 <https://github.com/networkx/networkx/pull/5898>_]
Implements computing and checking for minimal d-separators between two nodes.
Also adds functionality to DAGs for computing v-structures.#5943 <https://github.com/networkx/networkx/pull/5943>_]
is_path used to raise a KeyError when the path argument contained
a node that was not in the Graph. The behavior has been updated so that
is_path returns False in this case rather than raising the exception.#6003 <https://github.com/networkx/networkx/pull/6003>_]
avg_shortest_path_length now raises an exception if the provided
graph is directed but not strongly connected. The previous test (weak
connecting) was wrong; in that case, the returned value was nonsensical.#5813 <https://github.com/networkx/networkx/pull/5813>_]
OrderedGraph and other Ordered classes are replaced by Graph because
Python dicts (and thus networkx graphs) now maintain order.#5899 <https://github.com/networkx/networkx/pull/5899>_]
The attrs keyword argument will be replaced with keyword only arguments
source, target, name, key and link for json_graph/node_link functions.#5723 <https://github.com/networkx/networkx/issues/5723>_]
nx.nx_pydot.* will be deprecated in the future if pydot isn't being
actively maintained. Users are recommended to use pygraphviz instead.#5899 <https://github.com/networkx/networkx/pull/5899>_]
The attrs keyword argument will be replaced with keyword only arguments
source, target, name, key and link for json_graph/node_link functions.union (#5741)euclidean from geometric.py (#5744)to_numpy_recarray (#5737)adj_matrix from linalg/graphmatrix.py (#5753)union, disjoint_union, and compose (#5892)node_link functions: for issue #5787 (#5899)relabel_nodes (#5912)is_path (#5967)find_cores (#6139)seed to function called by connected_double_edge_swap (#6231)alpha when using nx.draw_networkx_edges (#6254)is_simple_path when path contains nodes not in the graph. (#6272)line.py (#6215)