Releases: igraph/python-igraph
python-igraph 0.9.7
Added
-
Added support for graph chordality which was already available in the C core:
Graph.is_chordal(),Graph.chordal_completion(), and
Graph.maximal_cardinality_search(). See PR #437 for more details. Thanks to @cptwunderlich for requesting this. -
Graph.write()andGraph.Read()now acceptPathobjects as well as strings. See PR #441 for more details. Thanks to @jboynyc for the implementation. -
This release contains wheels for Python 3.10, and also contains experimental Python wheels for the
aarch64architecture.
Changed
Fixed
-
Fixed the Apple Silicon wheels so they should now work out of the box on newer Macs with Apple M1 CPUs.
-
Fixed a bug that resulted in an unexpected error when plotting a graph with
wrap_labels=Trueif the size of one of the vertices was zero or negative, thanks to @jboynyc. See PR #439 for more details. -
Fixed a bug that sometimes caused random crashes in
Graph.Realize_Degree_Sequence()and at other times caused weird errors inGraph.Read_Ncol()when it received an invalid data type.
python-igraph 0.9.6
Fixed
- Version 0.9.5 accidentally broke the Matplotlib backend when it was invoked without the mark_groups=... keyword argument; this version fixes the issue. Thanks to @dschult for reporting it!
python-igraph 0.9.5
Fixed
-
plot(g, ..., mark_groups=True)now works with the Matplotlib plotting backend. -
set_random_number_generator(None)now correctly switches back to igraph's own random number generator instead of the default one that hooks into therandommodule of Python. -
Improved performance in cases when igraph has to call back to Python's
randommodule to generate random numbers. One example isGraph.Degree_Sequence(method="vl"), whose performance suffered a more than 30x slowdown on 32-bit platforms before, compared to the native C implementation. Now the gap is smaller. Note that if you need performance and do not care about seeding the random number generator from Python, you can now useset_random_number_generator(None)to switch back to igraph's own RNG that does not need a roundtrip to Python.
python-igraph 0.9.4
Added
-
Added
Graph.is_tree()to test whether a graph is a tree. -
Added
Graph.Realize_Degree_Sequence()to construct a graph that realizes a given degree sequence, using a deterministic (Havel-Hakimi-style) algorithm. -
Added
Graph.Tree_Game()to generate random trees with uniform sampling. -
Graph.to_directed()now supports amode=...keyword argument. -
Added a
create_using=...keyword argument toGraph.to_networkx()to let the user specify which NetworkX class to use when converting the graph.
Changed
- Updated igraph dependency to 0.9.4.
Fixed
-
Improved performance of
Graph.from_networkx()andGraph.from_graph_tool()on large graphs, thanks to @szhorvat and @iosonofabio for fixing the issue. -
Fixed the
autocurve=...keyword argument ofplot()when using the Matplotlib backend.
Deprecated
-
Functions and methods that take string arguments that represent an underlying enum in the C core of igraph now print a deprecation warning when provided with a string that does not match one of the enum member names (as documented in the docstrings) exactly. Partial matches will be removed in the next minor or major version, whichever comes first.
-
Graph.to_directed(mutual=...)is now deprecated, usemode=...instead. -
igraph.graph.drawing.UbiGraphDraweris deprecated as the upstream project is not maintained since 2008.
python-igraph 0.9.1
Changed
- Calling
plot()without a filename or a target surface is now deprecated.
The original intention was to plot to a temporary file and then open it in
the default image viewer of the platform of the user automatically, but this
has never worked reliably. The feature will be removed in 0.10.0.
Fixed
-
Fixed plotting of
VertexClusteringobjects on Matplotlib axes. -
The
IGRAPH_CMAKE_EXTRA_ARGSenvironment variable is now applied after the
default CMake arguments when building the C core of igraph from source. This
enables package maintainers to override any of the default arguments we pass
to CMake. -
Fixed the documentation build by replacing Epydoc with PyDoctor.
Miscellaneous
-
Building
python-igraphfrom source should not requireflexandbison
any more; sources of the parsers used by the C core are now included in the
Python source tarball. -
Many old code constructs that were used to maintain compatibility with Python
2.x are removed now that we have dropped support for Python 2.x. -
Reading GraphML files is now also supported on Windows if you use one of the
official Python wheels.
python-igraph 0.9.0
Added
-
Graph.DataFramenow has ause_vids=...keyword argument that decides whether
the data frame contains vertex IDs (True) or vertex names (False). (PR #348, thanks to @iosonofabio) -
Added
MatplotlibGraphDrawerto draw a graph on an existing Matplotlib
figure. (PR #341, thanks to @iosonofabio) -
Added a code path to choose between preferred image viewers on FreeBSD. (PR #354, thanks @thierry-FreeBSD)
-
Added
Graph.harmonic_centrality()that wrapsigraph_harmonic_centrality()
from the underlying C library.
Changed
-
python-igraphis now compatible withigraph0.9.0. -
The setup script was adapted to the new CMake-based build system of
igraph. -
Dropped support for older Python versions; the oldest Python version that
python-igraphis tested on is now Python 3.6. -
The default splitting heuristic of the BLISS isomorphism algorithm was changed
fromIGRAPH_BLISS_FM(first maximally non-trivially connected non-singleton cell)
toIGRAPH_BLISS_FL(first largest non-singleton cell) as this seems to provide
better performance on a variety of graph classes. This change is a follow-up
of the change in the recommended heuristic in the core igraph C library.
Fixed
-
Fixed crashes in the Python-C glue code related to the handling of empty
vectors in certain attribute merging functions (see issue #358). -
Fixed a memory leak in
Graph.closeness_centrality()when an invalidcutoff
argument was provided to the function. -
Clarified that the
fixed=...argument is ineffective for the DrL layout
because the underlying C code does not handle it. The argument was not
removed for sake of backwards compatibility. -
VertexSeq.find(name=x)now works correctly whenxis an integer; fixes
#367
Miscellaneous
-
The Python codebase was piped through
blackfor consistent formatting. -
Wildcard imports were removed from the codebase.
-
CI tests were moved to Github Actions from Travis.
-
The core C library is now built with
-fPICon Linux to allow linking to the
Python interface.
python-igraph 0.8.3
This is the third release of the 0.8 series.
Added
-
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 (#303) -
You can now create a
Graphobject from apandasdataframe withGraph.DataFrame, thanks to @iosonofabio (#309) -
Added conversion to/from
networkxandgraph-toolwithGraph.{to,from}_{networkx,graph_tool}, thanks to @iosonofabio (#242) -
Graph.add_edges()andGraph.add_vertices()now supports specifying attributes for the newly added vertices and edges, thanks to @iosonofabio (#319) -
Added
Graph.dfs()andGraph.dfsiter(), thanks to @iosonofabio (#315) -
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 (#320)
Changed
-
Upgraded igraph C library to 0.8.3.
-
Graph union and intersection now supports graphs with vertex names, thanks to @iosonofabio (#310)
-
Graph.delete_vertices(None)andGraph.delete_edges(None)are now deprecated; useGraph.delete_vertices()andGraph.delete_edges()(without a positional argument) instead to delete all vertices or edges. The old syntax will be removed in 0.9.
Fixed
-
setup.pynow works on Windows with MinGW, thanks to @Parakoopa (#297) -
Graph.difference()now treats loop edges correctly -
summary()does not fail with non-string vertex names any more, thanks to @deeenes (#329) -
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.
Other
-
Various documentation improvements, thanks to @chrisfalter, @iosonofabio, @kmankinen, @remysucre, @szhorvat (#308, #313, #314, #323, #324, #334)
-
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.