Skip to main content
`Ctrl`+`K`

# 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` and `v_structures` and deprecated `compute_v_structures` in `dag.py` (#7398).

- Expires the `random_tree` deprecation (#7415).

- Expire deprecation for strongly_connected_components_recursive (#7420).

- Expire deprecated `sort_neighbors` param in `generic_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/deprecate `link` keyword arguments in `JSON` input-output (#7565).

- Revert breaking change to `node_link_*` link defaults (#7652).

## Enhancements

- Add a `nodelist` feature to `from_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` and `v_structures` and deprecated `compute_v_structures` in `dag.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` in `get_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` to `needs_numpy` (#7493).

- MAINT: Rename `LoopbackDispatcher` to `LoopbackBackendInterface` and `dispatcher` to `backend_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`: add `not_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):

- @finaltrip

- @goodactive

- @inbalh1

- @johnthagen

- @jrdnh

- @lejansenGitHub

- 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):

- @finaltrip

- @inbalh1

- @jrdnh

- 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._