NetworkX 3.4#
Release date: 10 October 2024
Supports Python 3.10, 3.11, 3.12, and 3.13.
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 and our gallery of examples. Please send comments and questions to the networkx-discuss mailing list.
API Changes#
Expires the
forest_str
deprecation (#7414).[ENH, BUG]: added
colliders
andv_structures
and deprecatedcompute_v_structures
indag.py
(#7398).Expires the
random_tree
deprecation (#7415).Expire deprecation for strongly_connected_components_recursive (#7420).
Expire deprecated
sort_neighbors
param ingeneric_bfs_edges
(#7417).Rm deprecated normalized param from s_metric (#7418).
Expire deprecated nx.join in favor of join_trees (#7419).
Remove depercated Edmonds class for 3.4 (#7447).
Remove deprecated MultiDiGraph_EdgeKey for 3.4 (#7448).
Add
edges
keyword/deprecatelink
keyword arguments inJSON
input-output (#7565).Revert breaking change to
node_link_*
link defaults (#7652).
Enhancements#
Add a
nodelist
feature tofrom_numpy_array
(#7412).Prioritize edgelist representations in
to_networkx_graph
(#7424).Adds initial debug logging calls to _dispatchable (#7300).
add: nodes attribute is modifiable (#7532).
Enable config to be used as context manager (#7363).
Added code to handle multi-graph in mst (#7454).
Enable caching by default (#7498).
#7546 More detail error message for pydot (#7558).
Fix weakly_connected_components() performance on graph view (#7586).
Forceatlas2 (#7543).
avoid iteration and use boolean indexing (#7591).
Hide edges with a weight of None in simple_paths (#7583).
Improved running time for harmonic centrality (#7595).
Add remove attribute functions (#7569).
Log “can/should run” and caching in dispatch machinery (#7568).
Individualize drawing attributes (#7570).
added nx-parallel gsoc project (#7620).
Harmonic diameter (#5251).
Allow dispatch machinery to fall back to networkx (#7585).
Add
create_using
parameter for random graphs (#5672).Add config option to disable warning when using cached value (#7497).
Bug Fixes#
Fix graph name attribute for
complete_bipartite_graph
(#7399).Remove import warnings during to_networkx_graph conversion (#7426).
Fix nx.from_pandas_edgelist so edge keys are not added as edge attributes and edge keys (#7445).
Fix
from_pandas_edgelist
for MultiGraph given edge_key (#7466).Fix dispatch tests when using numpy 2 (#7506).
[ENH, BUG]: added
colliders
andv_structures
and deprecatedcompute_v_structures
indag.py
(#7398).Fix reading edgelist when delimiter is whitespace, e.g. tab (#7465).
Ensure we always raise for unknown backend in
backend=
(#7494).Prevent
to_agraph
from modifying graph argument (#7610).Implementing iterative removal of non_terminal_leaves in Steiner Tree approximation (#7422).
Only allow connected graphs in
eigenvector_centrality_numpy
(#7549).CI: Fix typo in nightly run pip install (#7625).
Documentation#
Document missing shortest_path functions (#7394).
Optimal Edit Paths Return Section Improved (#7375).
Minor updates to simple_cycles docstring (#7421).
DOC: Clarifying
NetworkXPointlessConcept
exception (#7434).DOC: updated
pairs.py
(#7416).Add docstring example for directed tree (#7449).
Change docs of
shortest_path_length
so return is number instead of int (#7477).Use intersphinx_registry to manage intersphinx mapping (#7481).
Ma: fix some spelling errors in docs (#7480).
Update NetworkX reference links in doc index (#7500).
strong product docs update (#7511).
Refactoring and enhancing user-facing
Backend and Configs
docs (#7404).Fixed the citation in
dominance.py
[Issue #7522] (#7524).Clarify generation number in
dorogovtsev_goltsev_mendes_graph()
(#7473).Add
Introspection
section to backends docs (#7556).DOC: Added
default_config
inget_info
’s description (#7567).Prettify
README.rst
(#7514).DOC: Fix typo in the code snippet provided in the docstring of nx_pydot.pydot_layout() (#7572).
Fix installation instructions for
default
extras in README (#7574).Add missing metadata to v3.3 release notes (#7592).
Correct the members of steering council (#7604).
Fix dispatch docs formatting (#7619).
Add to Contributor List (#7621).
Example fix for issue 7633 (#7634).
Fix: Correct community color assignment in Girvan-Newman community detection (#7644).
Updated docstring for generators/karate_club_graph() (#7626).
Updates documentation to include details about using NetworkX with backends (#7611).
Add examples section to
to_scipy_sparse_array
(#7627).Add examples to docstrings of subgraph_(iso/monomorphism) methods (#7622).
Maintenance#
Simplify flow func augmentation logic in
connectivity
module (#7367).A few more doctest skips for mpl/np dependencies (#7403).
Remove repetitive words (#7406).
FilterAdjacency: __len__ is recalculated unnecessarily #7377 (#7378).
Add check for empty graphs in
flow_hierarchy
(#7393).Use nodelist feature of from_numpy_array (#7425).
Cleanup remaining usages of deprecated
random_tree
in package (#7411).Add check for empty graphs in
non_randomness
(#7395).Update tests for macOS Sonoma v14 (#7437).
Update doc requirements (#7435).
Update pygraphviz (#7441).
Always cache graph attrs for better cache behavior (#7455).
retain adjacency order in nx-loopback copy of networkx graph (#7432).
DEV: Add files generated by benchmarking to .gitignore (#7461).
Remove redundant graph copy in
algorithms.bridges.bridges()
(#7471).CI: Add GitHub artifact attestations to package distribution (#7459).
Add
polynomials.py
toneeds_numpy
(#7493).MAINT: Rename
LoopbackDispatcher
toLoopbackBackendInterface
anddispatcher
tobackend_interface
(#7492).CI: update action that got moved org (#7503).
Update momepy (#7507).
Fix pygraphviz install on Windows (#7512).
MAINT: Made
plot_image_segmentation_spectral_graph_partition
example compatible with scipy 1.14.0 (#7518).Fix CI installation of nx-cugraph in docs workflow (#7538).
Minor doc/test tweaks for dorogovtsev_goltsev_mendes (#7535).
CI: Add timeout limit to coverage job (#7542).
Update images used in docs build workflow (#7537).
Remove parallelization related TODO comments (#7226).
FIX: scipy 1d indexing tripped up numpy? (#7541).
Minor touchups to node_link functions (#7540).
Minor updates to colliders v_structures tests (#7539).
Update sphinx gallery config to enable sphinx build caching (#7548).
Update geospatial gallery dependencies (#7508).
Update ruff pre-commit and config (#7547).
More accurate NodeNotFound error message (#7545).
Update ruff config (#7552).
Add changelist config (#7551).
Fix installing nx-cugraph in deploy docs CI (#7561).
Fix
nx_pydot.graphviz_layout
for nodes with quoted/escaped chars (#7588).DOC: Rm redundant module from autosummary (#7599).
Update numpydoc (1.8) (#7573).
Bump minimum pydot version to 3.0 (#7596).
CI: Include Python 3.13 in nightly wheel tests (#7594).
pydot - Remove Colon Check on Strings (#7606).
MAINT: Do not use requirements files in circle CI (#7553).
Do not use requirements file in github workflow (#7495).
weisfeiler_lehman_graph_hash
: addnot_implemented_for("multigraph")
decorator (#7614).Update teams doc by running
tools/team_list.py
(#7616).Add single node with self loop check to local and global reaching centrality (#7350).
Full test coverage for maxflow in issue #6029 (#6355).
CI: Fix typo in nightly run pip install (#7625).
DOC: Bring back plausible for docs (#7639).
Update minimum dependencies (SPEC 0) (#7631).
Update pygraphviz (1.14) (#7654).
modified product.py to raise NodeNotFound when ‘root is not in H’ (#7635).
Support Python 3.13 (#7661).
Use official Python 3.13 release (#7667).
Other#
chore: fix some typos in comments (#7427).
Contributors#
53 authors added to this release (alphabetically):
Aditi Juneja (@Schefflera-Arboricola)
Alexander Bakhtin (@bakhtos)
Ashwin Nayak (@ashwin-nayak)
Brigitta Sipőcz (@bsipocz)
Casper van Elteren (@cvanelteren)
Charitha Buddhika Heendeniya (@buddih09)
chrizzftd (@chrizzFTD)
Cora Schneck (@cyschneck)
Dan Schult (@dschult)
Erik Welch (@eriknw)
Ewout ter Hoeven (@EwoutH)
Fabian Spaeh (@285714)
Gilles Peiffer (@Peiffap)
Gregory Shklover (@gregory-shklover)
Jarrod Millman (@jarrodmillman)
Jim Hull (@jmhull)
Joye Mang (@joyemang33)
Kelvin Chung (@KelvinChung2000)
Koushik_Nekkanti (@KoushikNekkanti)
M Bussonnier (@Carreau)
Marc-Alexandre Côté (@MarcCote)
Matt Schwennesen (@mjschwenne)
Matthew Feickert (@matthewfeickert)
Maverick18 (@Aditya-Shandilya1182)
Michael Bolger (@mbbolger)
Miguel Cárdenas (@miguelcsx)
Mohamed Rezk (@mohamedrezk122)
Mridul Seth (@MridulS)
Mudassir Chapra (@muddi900)
Orion Sehn (@OrionSehn)
Orion Sehn (@OrionSehn-personal)
Peter Cock (@peterjc)
Philipp van Kempen (@PhilippvK)
prathamesh shinde (@prathamesh901)
Raj Pawar (@Raj3110)
Rick Ratzel (@rlratzel)
Rike-Benjamin Schuppner (@Debilski)
Ross Barnowski (@rossbar)
Sanchit Ram Arvind (@sanchitram1)
Sebastiano Vigna (@vigna)
STEVEN ADAMS (@hugehope)
Thomas J. Fan (@thomasjpfan)
Till Hoffmann (@tillahoffmann)
Vanshika Mishra (@vanshika230)
Woojin Jung (@WoojinJung-04)
Yury Fedotov (@yury-fedotov)
Łukasz (@lkk7)
28 reviewers added to this release (alphabetically):
Aditi Juneja (@Schefflera-Arboricola)
Bhuvneshwar Chouksey (@gbhuvneshwar)
Casper van Elteren (@cvanelteren)
chrizzftd (@chrizzFTD)
Dan Schult (@dschult)
Erik Welch (@eriknw)
Fabian Spaeh (@285714)
Gilles Peiffer (@Peiffap)
Jarrod Millman (@jarrodmillman)
M Bussonnier (@Carreau)
Matt Schwennesen (@mjschwenne)
Maverick18 (@Aditya-Shandilya1182)
Michael Bolger (@mbbolger)
Miguel Cárdenas (@miguelcsx)
Mohamed Rezk (@mohamedrezk122)
Mridul Seth (@MridulS)
Orion Sehn (@OrionSehn)
Orion Sehn (@OrionSehn-personal)
Raj Pawar (@Raj3110)
Rick Ratzel (@rlratzel)
Ross Barnowski (@rossbar)
Sanchit Ram Arvind (@sanchitram1)
Sebastiano Vigna (@vigna)
Till Hoffmann (@tillahoffmann)
Woojin Jung (@WoojinJung-04)
_These lists are automatically generated, and may not be complete or may contain duplicates._