About igraph releases and other things

python-igraph 0.8.3

python-igraph 0.8.3, the third bugfix release of the 0.8 series, has arrived.

The preferred way of installing the Python interface is via pip; typing pip install python-igraph should install a pre-compiled Python wheel on most supported platforms (Windows, Linux and macOS). The pre-compiled wheels and the source code are also available from the Python Package Index page.

This release brings python-igraph up-to-date with igraph 0.8.3, and it also contains bug fixes and performance improvements. This release will also be the last one whose version number is deliberately in sync with the version number of the C core. The changelog is below.


  • Graph.community_leiden() now supports a negative number of iterations; it will keep on iterating until the algorithm reaches a stable partition.

  • Graph.Incidence() now supports weighted graphs, thanks to @PuneethaPai

  • You can now create a Graph object from a pandas dataframe with Graph.DataFrame, thanks to @iosonofabio

  • Added conversion to/from networkx and graph-tool with Graph.{to,from}_{networkx,graph_tool}, thanks to @iosonofabio

  • Graph.add_edges() and Graph.add_vertices() now supports specifying attributes for the newly added vertices and edges, thanks to @iosonofabio

  • Added Graph.dfs() and Graph.dfsiter(), thanks to @iosonofabio

  • Added Graph.bridges() to get the bridges of a graph.

  • Added Graph.clear() to remove all edges, vertices and graph attributes in a single call, thanks to @iosonofabio


  • Upgraded igraph C library to 0.8.3.

  • Graph union and intersection now supports graphs with vertex names, thanks to @iosonofabio

  • Graph.delete_vertices(None) and Graph.delete_edges(None) are now deprecated; use Graph.delete_vertices() and Graph.delete_edges() (without a positional argument) instead to delete all vertices or edges. The old syntax will be removed in 0.9.


  • now works on Windows with MinGW, thanks to @Parakoopa

  • Graph.difference() now treats loop edges correctly

  • summary() does not fail with non-string vertex names any more, thanks to @deeenes

  • The Reingold-Tilford layout should not produce edge crossings on tree graphs any more.

  • The postprocessing step of Graph.biconnected_components() is much faster now (#281); the earlier version was responsible for a significant speed difference between the C core and the Python interface.


  • Various documentation improvements, thanks to @chrisfalter, @iosonofabio, @kmankinen, @remysucre, @szhorvat

  • Graph.complementer() now allows keyword arguments (it used to support positional arguments only).

  • Dropped support for Python 3.5, added support for Python 3.9.