NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #152 most downloaded on PyPI
Python package for creating and manipulating graphs and networks
Last release today
17 Sep 2026
Release timing varies
gaps range from 2 weeks to 9 months
Nearly every release is documented
notes for 57 of the last 60 stable releases
2 versions withdrawn
withdrawn after publishing
19 years old
97 releases · first in 2007
find cycles in a directed graph
Release date: 23 January 2011
k-shell,k-crust,k-corona
read GraphML files from yEd
read/write GEXF format files
find cycles in a directed graph
DFS and BFS algorithms
chordal graph functions
Prim's algorithm for minimum spanning tree
r-ary tree generator
rich club coefficient
NumPy matrix version of Floyd's algorithm for all-pairs shortest path
read GIS shapefiles
functions to get and set node and edge attributes
and more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.4
gnp_random_graph() now takes a directed=True|False keyword instead of create_using
gnm_random_graph() now takes a directed=True|False keyword instead of create_using
Nothing published for this version
One column per quarter.
See: https://networkx.lanl.gov/trac/timeline
Release date: 28 August 2010
See: https://networkx.lanl.gov/trac/timeline
Works with Python versions 2.6, 2.7, 3.1, and 3.2 (but not 2.4 and 2.5).
Minimum cost flow algorithms
Bellman-Ford shortest paths
GraphML reader and writer
More exception/error types
Updated many tests to unittest style. Run with: “import networkx; networkx.test()” (requires nose testing package)
and more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.3
Nothing published for this version
See: https://networkx.lanl.gov/trac/timeline
Release date: 28 July 2010
See: https://networkx.lanl.gov/trac/timeline
Ford-Fulkerson max flow and min cut
Closeness vitality
Eulerian circuits
Functions for isolates
Simpler s_max generator
Compatible with IronPython-2.6
Improved testing functionality: import networkx; networkx.test() tests entire package and skips tests with missing optional packages
All tests work with Python-2.4
and more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.2
Nothing published for this version
See: https://networkx.lanl.gov/trac/timeline
Release date: 21 April 2010
See: https://networkx.lanl.gov/trac/timeline
Algorithm for finding a basis for graph cycles
Blockmodeling
Assortativity and mixing matrices
in-degree and out-degree centrality
Attracting components and condensation .
Weakly connected components
Simpler interface to shortest path algorithms
Edgelist format to read and write data with attributes
Attribute matrices
GML reader for nested attributes
Current-flow (random walk) betweenness and closeness .
Directed configuration model , and directed random graph model .
Improved documentation of drawing, shortest paths, and other algorithms
Many more tests, can be run with “import networkx; networkx.test()”
and much more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.1
Several of the algorithms and the degree() method now return dictionaries keyed by node instead of lists. In some cases there was a with_labels keyword which is no longer necessary. For example,
G = nx . Graph () >>> G . add_edge ( 'a' , 'b' ) >>> G . degree () # doctest: +SKIP {'a': 1, 'b': 1}
Asking for the degree of a single node still returns a single number
G . degree ( 'a' ) 1
The following now return dictionaries by default (instead of lists) and the with_labels keyword has been removed:
Graph.degree() , MultiGraph.degree() , DiGraph.degree() , DiGraph.in_degree() , DiGraph.out_degree() , MultiDiGraph.degree() , MultiDiGraph.in_degree() , MultiDiGraph.out_degree() .
clustering() , triangles()
node_clique_number() , number_of_cliques() , cliques_containing_node()
eccentricity()
The following now return dictionaries by default (instead of lists)
pagerank()
hits()
add_nodes_from now accepts (node, attrdict) two-tuples
G = nx . Graph () >>> G . add_nodes_from ([( 1 , { 'color' : 'red' })])
Mayvi2 drawing
Blockmodel
Sampson’s monastery
Ego graph
Support graph attributes with union, intersection, and other graph operations
Improve subgraph speed (and related algorithms such as connected_components_subgraphs())
Handle multigraphs in more operators (e.g. union)
Handle double-quoted labels with pydot
Normalize betweenness_centrality for undirected graphs correctly
Normalize eigenvector_centrality by l2 norm
read_gml() now returns multigraphs
See: https://networkx.lanl.gov/trac/timeline
Release date: 11 Jan 2010
See: https://networkx.lanl.gov/trac/timeline
Bug fix release for missing setup.py in manifest.
See: https://networkx.lanl.gov/trac/timeline
Release date: 8 Jan 2010
See: https://networkx.lanl.gov/trac/timeline
This release has significant changes to parts of the graph API to allow graph, node, and edge attributes. See http://networkx.lanl.gov/reference/api_changes.html
Update Graph, DiGraph, and MultiGraph classes to allow attributes.
Default edge data is now an empty dictionary (was the integer 1)
Difference and intersection operators
Average shortest path
A* (A-Star) algorithm
PageRank, HITS, and eigenvector centrality
Read Pajek files
Line graphs
Minimum spanning tree (Kruskal’s algorithm)
Dense and sparse Fruchterman-Reingold layout
Random clustered graph generator
Directed scale-free graph generator
Faster random regular graph generator
Improved edge color and label drawing with Matplotlib
and much more, see https://networkx.lanl.gov/trac/query?status=closed&group=milestone&milestone=networkx-1.0
Update to work with networkx-1.0 API
Graph subclass example
Nothing published for this version
See: https://networkx.lanl.gov/trac/timeline
Release date: 18 November 2008
See: https://networkx.lanl.gov/trac/timeline
This release has significant changes to parts of the graph API. See http://networkx.lanl.gov/reference/api_changes.html
Update Graph and DiGraph classes to use weighted graphs as default Change in API for performance and code simplicity.
New MultiGraph and MultiDiGraph classes (replace XGraph and XDiGraph)
Update to use Sphinx documentation system http://networkx.lanl.gov/
Developer site at https://networkx.lanl.gov/trac/
Experimental LabeledGraph and LabeledDiGraph
Moved package and file layout to subdirectories.
Update to work with networkx-0.99 API
Drawing examples now use matplotlib.pyplot interface
Improved drawings in many examples
New examples - see http://networkx.lanl.gov/examples/
See: https://networkx.lanl.gov/trac/timeline
Release date: 17 August 2008
See: https://networkx.lanl.gov/trac/timeline
NetworkX now requires Python 2.4 or later for full functionality.
Edge coloring and node line widths with Matplotlib drawings
Update pydot functions to work with pydot-1.0.2
Maximum-weight matching algorithm
Ubigraph interface for 3D OpenGL layout and drawing
Pajek graph file format reader and writer
p2g graph file format reader and writer
Secondary sort in topological sort
Better edge data handling with GML writer
Edge betweenness fix for XGraph with default data of None
Handle Matplotlib version strings (allow “pre”)
Interface to PyGraphviz (to_agraph()) now handles parallel edges
Fix bug in copy from XGraph to XGraph with multiedges
Use SciPy sparse lil matrix format instead of coo format
Clear up ambiguous cases for Barabasi-Albert model
Better care of color maps with Matplotlib when drawing colored nodes and edges
Fix error handling in layout.py
See: https://networkx.lanl.gov/trac/timeline
Release date: 13 January 2008
See: https://networkx.lanl.gov/trac/timeline
GML format graph reader, tests, and example (football.py)
edge_betweenness() and load_betweenness()
remove obsolete parts of pygraphviz interface
improve handling of Matplotlib version strings
write_dot() now writes parallel edges and self loops
is_bipartite() and bipartite_color() fixes
configuration model speedup using random.shuffle()
convert with specified nodelist now works correctly
vf2 isomorphism checker updates
See: https://networkx.lanl.gov/trac/timeline
Release date: 27 July 2007
See: https://networkx.lanl.gov/trac/timeline
Small update to fix import readwrite problem and maintain Python2.3 compatibility.
See: https://networkx.lanl.gov/trac/timeline
Release date: 22 July 2007
See: https://networkx.lanl.gov/trac/timeline
algorithms for strongly connected components.
Brandes betweenness centrality algorithm (weighted and unweighted versions)
closeness centrality for weighted graphs
dfs_preorder, dfs_postorder, dfs_tree, dfs_successor, dfs_predecessor
readers for GraphML, LEDA, sparse6, and graph6 formats.
allow arguments in graphviz_layout to be passed directly to graphviz
more detailed installation instructions
replaced dfs_preorder,dfs_postorder (see search.py)
allow initial node positions in spectral_layout
report no error on attempting to draw empty graph
report errors correctly when using tuples as nodes #114
handle conversions from incomplete dict-of-dict data
See: https://networkx.lanl.gov/trac/timeline
Release date: 12 April 2007
See: https://networkx.lanl.gov/trac/timeline
benchmarks for graph classes
Brandes betweenness centrality algorithm
Dijkstra predecessor and distance algorithm
xslt to convert DIA graphs to NetworkX
number_of_edges(u,v) counts edges between nodes u and v
run tests with python setup_egg.py test (needs setuptools) else use python -c “import networkx; networkx.test()”
is_isomorphic() that uses vf2 algorithm
speedups of neighbors()
simplified Dijkstra’s algorithm code
better exception handling for shortest paths
get_edge(u,v) returns None (instead of exception) if no edge u-v
floyd_warshall_array fixes for negative weights
bad G467, docs, and unittest fixes for graph atlas
don’t put nans in numpy or scipy sparse adjacency matrix
handle get_edge() exception (return None if no edge)
remove extra kwds arguments in many places
no multi counting edges in conversion to dict of lists for multigraphs
allow passing tuple to get_edge()
bad parameter order in node/edge betweenness
edge betweenness doesn’t fail with XGraph
don’t throw exceptions for nodes not in graph (silently ignore instead) in edges_* and degree_*
- use numpy only, Numeric is deprecated
Release date: 27 November 2006
See: https://networkx.lanl.gov/trac/timeline
draw edges with specified colormap
more efficient version of Floyd’s algorithm for all pairs shortest path
use numpy only, Numeric is deprecated
include tests in source package (networkx/tests)
include documentation in source package (doc)
import networkx >>> networkx . test ()
read_gpickle now works correctly with Windows
refactored large modules into smaller code files
degree(nbunch) now returns degrees in same order as nbunch
degree() now works for multiedges=True
update node_boundary and edge_boundary for efficiency
edited documentation for graph classes, now mostly in info.py
Release date: 29 September 2006
Release date: 29 September 2006
See: https://networkx.lanl.gov/trac/timeline
Update to work with numpy-1.0x
Make egg usage optional: use python setup_egg.py bdist_egg to build egg
Generators and functions for bipartite graphs
Experimental classes for trees and forests
Support for new pygraphviz update (in nx_agraph.py) , see http://networkx.lanl.gov/pygraphviz/ for pygraphviz details
Handle special cases correctly in triangles function
Typos in documentation
Handle special cases in shortest_path and shortest_path_length, allow cutoff parameter for maximum depth to search
Update examples: erdos_renyi.py, miles.py, roget,py, eigenvalues.py
Expected degree sequence
New pygraphviz interface
See: https://networkx.lanl.gov/trac/timeline
Release date: 20 July 2006
See: https://networkx.lanl.gov/trac/timeline
arbitrary node relabeling (use relabel_nodes)
conversion of NetworkX graphs to/from Python dict/list types, numpy matrix or array types, and scipy_sparse_matrix types
generator for random graphs with given expected degree sequence
Allow drawing graphs with no edges using pylab
Use faster heapq in dijkstra
Don’t complain if X windows is not available
See: https://networkx.lanl.gov/trac/timeline
Release date: 23 June 2006
See: https://networkx.lanl.gov/trac/timeline
update to work with Python 2.5
bidirectional version of shortest_path and Dijkstra
single_source_shortest_path and all_pairs_shortest_path
s-metric and experimental code to generate maximal s-metric graph
double_edge_swap and connected_double_edge_swap
Floyd’s algorithm for all pairs shortest path
read and write unicode graph data to text files
read and write YAML format text files, http://yaml.org
speed improvements (faster version of subgraph, is_connected)
added cumulative distribution and modified discrete distribution utilities
report error if DiGraphs are sent to connected_components routines
removed with_labels keywords for many functions where it was causing confusion
function name changes in shortest_path routines
saner internal handling of nbunch (node bunches), raise an exception if an nbunch isn’t a node or iterable
better keyword handling in io.py allows reading multiple graphs
don’t mix Numeric and numpy arrays in graph layouts and drawing
avoid automatically rescaling matplotlib axes when redrawing graph layout
See: https://networkx.lanl.gov/trac/timeline
Release date: 28 April 2006
See: https://networkx.lanl.gov/trac/timeline
Algorithms for betweenness, eigenvalues, eigenvectors, and spectral projection for threshold graphs
Use numpy when available
dense_gnm_random_graph generator
Generators for some directed graphs: GN, GNR, and GNC by Krapivsky and Redner
Grid graph generators now label by index tuples. Helper functions for manipulating labels.
relabel_nodes_with_function
Betweenness centrality now correctly uses Brandes definition and has normalization option outside main loop
Empty graph now labeled as empty_graph(n)
shortest_path_length used python2.4 generator feature
degree_sequence_tree off by one error caused nonconsecutive labeling
periodic_grid_2d_graph removed in favor of grid_2d_graph with periodic=True
See: https://networkx.lanl.gov/trac/timeline
Release date: 13 March 2006
See: https://networkx.lanl.gov/trac/timeline
Option to construct Laplacian with rows and columns in specified order
Option in convert_node_labels_to_integers to use sorted order
predecessor(G,n) function that returns dictionary of nodes with predecessors from breadth-first search of G starting at node n. https://networkx.lanl.gov/trac/ticket/26
Formation of giant component in binomial_graph:
Chess masters matches:
Gallery https://networkx.org/documentation/latest/auto_examples/index.html
Adjusted names for random graphs.
erdos_renyi_graph=binomial_graph=gnp_graph: n nodes with edge probability p
gnm_graph: n nodes and m edges
fast_gnp_random_graph: gnp for sparse graphs (small p)
Documentation contains correct spelling of Barabási, Bollobás, Erdős, and Rényi in UTF-8 encoding
Increased speed of connected_components and related functions by using faster BFS algorithm in networkx.paths https://networkx.lanl.gov/trac/ticket/27
XGraph and XDiGraph with multiedges=True produced error on delete_edge
Cleaned up docstring errors
Normalize names of some graphs to produce strings that represent calling sequence
See: https://networkx.lanl.gov/trac/timeline
Release date: 5 February 2006
See: https://networkx.lanl.gov/trac/timeline
sparse_binomial_graph: faster graph generator for sparse random graphs
read/write routines in io.py now handle XGraph() type and gzip and bzip2 files
optional mapping of type for read/write routine to allow on-the-fly conversion of node and edge datatype on read
Substantial changes related to digraphs and definitions of neighbors() and edges(). For digraphs edges=out_edges. Neighbors now returns a list of neighboring nodes with possible duplicates for graphs with parallel edges See https://networkx.lanl.gov/trac/ticket/24
Addition of out_edges, in_edges and corresponding out_neighbors and in_neighbors for digraphs. For digraphs edges=out_edges.
Simpler interface to drawing with pylab
Release date: 6 January 2006
Simpler interface to drawing with pylab
G.info(node=None) function returns short information about graph or node
adj_matrix now takes optional nodelist to force ordering of rows/columns in matrix
optional pygraphviz and pydot interface to graphviz is now callable as “graphviz” with pygraphviz preferred. Use draw_graphviz(G).
Default data type for all graphs is now None (was the integer 1)
add_nodes_from now won’t delete edges if nodes added already exist
Added missing names to generated graphs
Indexes for nodes in graphs start at zero by default (was 1)
Uses setuptools for installation http://peak.telecommunity.com/DevCenter/setuptools
Release date: 5 December 2005
Uses setuptools for installation http://peak.telecommunity.com/DevCenter/setuptools
Improved testing infrastructure, can now run python setup.py test
Added interface to draw graphs with pygraphviz https://networkx.lanl.gov/pygraphviz/
is_directed() function call
use create_using= instead of result= keywords for graph types in all cases
missing weights for degree 0 and 1 nodes in clustering
configuration model now uses XGraph, returns graph with identical degree sequence as input sequence
fixed Dijkstra priority queue
fixed non-recursive toposort and is_directed_acyclic graph
Update of Dijkstra algorithm code
Release date: 20 August 2005
Update of Dijkstra algorithm code
dfs_successor now calls proper search method
Changed to list comprehension in DiGraph.reverse() for python2.3 compatibility
Barabasi-Albert graph generator fixed
Attempt to add self loop should add node even if parallel edges not allowed
The NetworkX web locations have changed:
Release date: 14 July 2005
The NetworkX web locations have changed:
http://networkx.lanl.gov/ - main documentation site http://networkx.lanl.gov/svn/ - subversion source code repository https://networkx.lanl.gov/trac/ - bug tracking and info
The naming conventions in NetworkX have changed. The package name “NX” is now “networkx”.
The suggested ways to import the NetworkX package are
import networkx
import networkx as NX
from networkx import *
DiGraph reverse
Graph generators
watts_strogatz_graph now does rewiring method
old watts_strogatz_graph->newman_watts_strogatz_graph
Changed to reflect NX-networkx change
main site is now https://networkx.lanl.gov/
Fixed logic in io.py for reading DiGraphs.
Path based centrality measures (betweenness, closeness) modified so they work on graphs that are not connected and produce the same result as if each connected component were considered separately.
Your coding agent can read these notes before it upgrades. Set up the MCP server →