POC for an improved graph model.
There are very few graph libraries for Python out there, in the python.org we can find some of them but they have too many dependencies, they are discontinued or too focused on AI or plotting. We need a pure graph library: data and algorithm to traverse the graph.
In the C++ world there are many alternatives, but most opinions converge to Boost Graph Library or LEMON as the most powerful and flexible alternatives.
Some Python alternatives:
- networkx: only requires
decorator
if no extras or optional features are requested. - igraph: C library with Python interface.
- graph-tool: C++ library on top of BGL with Python bindings
- bgl-python: official Python bindings for BGL. No longer in Boost codebase and no further developed.
Networkx looks like the best candidate as it is only Python, stable, widely used and with strong support in Github. Concerns:
- It requires Python 3.6: our lower version is Python 3.5, need to test if it works
- It would be an external dependency in the core model: current version is stable enough (v2.5) and our requirements are quite simple from a graph perspective. Will be ever face an issue that will require us to upgrade to a newer incompatible version?
This POC will implement a layer on top of NetworkX.