Package: jgrapht
Python-JGraphTPython bindings for theJGraphT graph library.The JGraphT is a free Java class library that provides mathematical graph-theory objects and algorithms. It
contains very efficient and generic graph data-structures along with a sizeable collection of sophisticated
algorithms. The library is written with stability, performance and interoperability in mind. It includes
algorithms encountered in diverse application domains such as  path planning, routing, network analysis,
combinatorial optimization, computational biology, and others.While the original library is written in Java, this package uses anative buildprovided by
thejgrapht-capiproject. The native build is in the form of a
shared library, created byGraalVM.The result is anative self-contained librarywithno dependencyon the JVM!InstallingWe automatically build 64-bit wheels for python versions 3.6, 3.7, and 3.8 on Linux,
Windows and MacOSX. They can be directly downloaded fromPyPIor using pip.
For linux we usePEP 571which means that pip version must be>= 19.0.Thus, on a recent machine, installation should be as easy as:pip install jgraphtIf your pip version is older than19.0you will need to upgrade:pip install --upgrade pip
pip install jgraphtIf you want to usevirtualenvorvenvmodule, you can write:python -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install jgraphtInstallation on the user directory is also possible:pip install --upgrade pip
pip install --user jgraphtDocumentationAutomatically generated documentation with a tutorial and examples can be found athttps://python-jgrapht.readthedocs.io/. This includes full API docs, tutorials and examples.CitingAre you using the software in your research? We would appreciate if you cite the following publication:@article{jgrapht,
  title = {{J}{G}raph{T}--{A} {J}ava {L}ibrary for {G}raph {D}ata {S}tructures and {A}lgorithms},
  author = {Michail, Dimitrios and Kinable, Joris and Naveh, Barak and Sichi, John V.},
  year = {2020},
  issue_date = {May 2020},
  publisher = {Association for Computing Machinery},
  address = {New York, NY, USA},
  volume = {46},
  number = {2},
  journal = {ACM Trans. Math. Softw.},
  month = may,
  articleno = {16},
  numpages = {29},
}BuildingThe jgrapht-capi project is included in the sources as a git submodule in foldervendor/source/jgrapht-capi.
You need to either initialize the submodule by hand, or you can pass option--recurse-submoduleswhen
cloning this repository.The following pieces of software are required for the build to succeed:GraalVM 20.0 with Java 11 supportNative Image component from GraalVMMaven Java build toolGNU C compiler or clangCMakePython 3.6 and aboveSWIG 3 and aboveIf all the above are installed properly, building can be done usingpython setup.py buildFor Windows you will need Microsoft Visual C++ (MSVC) 2017 15.5.5 or later. Build the
system using the properDeveloper Command Promptfor your version ofVisual Studio. This meansx64 Native Tools Command Prompt. Use Visual Studio 2017 or later.InstallInstall usingpip install .DevelopSince the library contains parts which are written in C that need to be compiled before use, make sure you have
the necessary compilers and development headers installed. Compiled code means that additional steps are required
in order to import from the development sources. Using the following commands you can setup an in-place development
environment:python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtThis allows you to import the in-place build from the repository base directory. If you want it to
also be visible outside the base dir, you have to adjust thePYTHONPATHaccordingly.
Note also that the above commands callpython setup.py develop. Instead of adjusting PYTHONPATH, this installs
a .egg-link file into your site-packages as well as adjusts the easy-install.pth there, so its a more permanent
operation.TestsExecute the tests by givingpip install -r requirements/test.txt
pytestBuilding the docspip install -r requirements/doc.txt
cd docs && make htmlLicenseThis library may be used under the terms of either theGNU Lesser General Public License (LGPL) 2.1http://www.gnu.org/licenses/lgpl-2.1.htmlor theEclipse Public License (EPL)http://www.eclipse.org/org/documents/epl-v20.phpAs a recipient, you may choose which license to receive the code under.
A copy of theEPL licenseand theLPGL licenseis included in this repository.Please note that this library is distributed WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.Please refer to the license for details.SPDX-License-Identifier: LGPL-2.1-or-later OR EPL-2.0Author(C) Copyright 2020, by Dimitrios MichailEnjoy!