Skip to main content

JGraphT graph library

Project description

Build Status

Python-JGraphT

Python bindings for the JGraphT 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 a native build provided by the jgrapht-capi project. The native build is in the form of a shared library, created by GraalVM.

The result is a native self-contained library with no dependency on the JVM!

Installing

We 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 from PyPI or using pip. For linux we use PEP 571 which means that pip version must be >= 19.0.

Thus, on a recent machine, installation should be as easy as:

pip install jgrapht

If your pip version is older than 19.0 you will need to upgrade:

pip install --upgrade pip
pip install jgrapht

If you want to use virtualenv or venv module, you can write:

python -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install jgrapht

Installation on the user directory is also possible:

pip install --upgrade pip
pip install --user jgrapht

Documentation

Automatically generated documentation with a tutorial and examples can be found at https://python-jgrapht.readthedocs.io/. This includes full API docs, tutorials and examples.

Citing

Are 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},
}

Building

The jgrapht-capi project is included in the sources as a git submodule in folder vendor/source/jgrapht-capi. You need to either initialize the submodule by hand, or you can pass option --recurse-submodules when cloning this repository.

The following pieces of software are required for the build to succeed:

  • GraalVM 20.0 with Java 11 support
  • Native Image component from GraalVM
  • Maven Java build tool
  • GNU C compiler or clang
  • CMake
  • Python 3.6 and above
  • SWIG 3 and above

If all the above are installed properly, building can be done using

python setup.py build

For Windows you will need Microsoft Visual C++ (MSVC) 2017 15.5.5 or later. Build the system using the proper Developer Command Prompt for your version of Visual Studio. This means x64 Native Tools Command Prompt. Use Visual Studio 2017 or later.

Install

Install using

pip install .

Develop

Since 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.txt

This 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 the PYTHONPATH accordingly. Note also that the above commands call python 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.

Tests

Execute the tests by giving

pip install -r requirements/test.txt
pytest

Building the docs

pip install -r requirements/doc.txt
cd docs && make html

License

This library may be used under the terms of either the

or the

As a recipient, you may choose which license to receive the code under. A copy of the EPL license and the LPGL license is 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.0

Author

(C) Copyright 2020, by Dimitrios Michail

Enjoy!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jgrapht-1.5.0.3.tar.gz (353.2 kB view details)

Uploaded Source

Built Distributions

jgrapht-1.5.0.3-cp38-cp38-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.8 Windows x86-64

jgrapht-1.5.0.3-cp38-cp38-manylinux2010_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

jgrapht-1.5.0.3-cp38-cp38-macosx_10_13_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.8 macOS 10.13+ x86-64

jgrapht-1.5.0.3-cp37-cp37m-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.7m Windows x86-64

jgrapht-1.5.0.3-cp37-cp37m-manylinux2010_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

jgrapht-1.5.0.3-cp37-cp37m-macosx_10_13_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.7m macOS 10.13+ x86-64

jgrapht-1.5.0.3-cp36-cp36m-win_amd64.whl (8.7 MB view details)

Uploaded CPython 3.6m Windows x86-64

jgrapht-1.5.0.3-cp36-cp36m-manylinux2010_x86_64.whl (9.8 MB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

jgrapht-1.5.0.3-cp36-cp36m-macosx_10_13_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.6m macOS 10.13+ x86-64

File details

Details for the file jgrapht-1.5.0.3.tar.gz.

File metadata

  • Download URL: jgrapht-1.5.0.3.tar.gz
  • Upload date:
  • Size: 353.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/2.7.12

File hashes

Hashes for jgrapht-1.5.0.3.tar.gz
Algorithm Hash digest
SHA256 be61ff30ab8bf472cd861aff79203ea8d25851458efeec7631a30735a91e9288
MD5 285055249224ab14badd94559f44658f
BLAKE2b-256 2a009c910c9e55fc2a644f9b9d468f0b6390796cb0bfcd36143719584e8889b5

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 8.7 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.2

File hashes

Hashes for jgrapht-1.5.0.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 aaa9e35a18b6b5c8da4ed4db85fe0affa63bb9a76bfa6cedd4b2946c0dbb5456
MD5 84e66120dff7fbebb2e8f3ccf41b8cdf
BLAKE2b-256 41edbde56564dcb514e6160657ed7d1e87c0d30dd3d765fd3cece046df4cf669

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/2.7.12

File hashes

Hashes for jgrapht-1.5.0.3-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 b8d50fbdd760220cba102d3054a5489e9e6dd109608ea5ba3c12fa2f9084757d
MD5 147acdc1c960c6cc131a3309bb1482a1
BLAKE2b-256 22f979345e3c4017b422bbc6ce209b093f384e1570b7ec2951c9cd239c0d072b

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp38-cp38-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp38-cp38-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.8, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.9.0

File hashes

Hashes for jgrapht-1.5.0.3-cp38-cp38-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2d6047427512a736908477b730724ae5138c0e1ef1c3f1f13a62198bba5b348a
MD5 3bb11b1417dd0e2519a7d2a8b404adb0
BLAKE2b-256 f78db42e47d6cb80f8854f7b67e513786138c03c337f0394aec165c4b3cfaf5b

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 8.7 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.2

File hashes

Hashes for jgrapht-1.5.0.3-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 45914b8cbdcc8d22011f20881a090419302db88c01e61b8bb93353bc3b3d2eec
MD5 9be3bbcb5f5f824c09d830584370bdb4
BLAKE2b-256 b775536234b88ab2a88d33d4d4b8677453c6f8b92a0d805d33d295967c4203d5

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/2.7.12

File hashes

Hashes for jgrapht-1.5.0.3-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 129c190322e96f455b4577f55fa0f4db588d44ac338bccc89b6ebeb7da794471
MD5 6aa2fef5e6f0faf5d94eaa83a0d53cd6
BLAKE2b-256 98a7d91cf9f789b1b704e625a4e1e50562ea3a9cd908a97d86f2b5b91feeb763

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp37-cp37m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp37-cp37m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.7m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.9.0

File hashes

Hashes for jgrapht-1.5.0.3-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 00270f267aa624e4256feb98fef1ed88a2f19889dd995114373969d871adb373
MD5 5edb61faeaa0a828b313e0a2a8ab7a9b
BLAKE2b-256 9c2f800f0e497ec6dcea1eaa404ee3a1d3cc06e3fa723c410566d47cc5ef1a71

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp36-cp36m-win_amd64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp36-cp36m-win_amd64.whl
  • Upload date:
  • Size: 8.7 MB
  • Tags: CPython 3.6m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.8.2

File hashes

Hashes for jgrapht-1.5.0.3-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 b3955083c5cae333b8c1e1b29f081bd869922b89fc87fb3b441443d8a735f232
MD5 e94c6e57ee671fd31abfcff87c07914e
BLAKE2b-256 b516478b3371abf792b3b3810ae012e644dbda2d76c0d22d9b9d3f38734e9418

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 9.8 MB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.6.1 requests/2.25.0 setuptools/44.1.1 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/2.7.12

File hashes

Hashes for jgrapht-1.5.0.3-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a1cc72f7fb422eb253832e39997c7bde830b2b4c195155e6ab96a3f26451f350
MD5 eac497270c6eed5c11d654be1d8c3f70
BLAKE2b-256 9d9e7162d160d0f738f46645760a86bebecb0e601e74307377c3ab3b05eec8cd

See more details on using hashes here.

File details

Details for the file jgrapht-1.5.0.3-cp36-cp36m-macosx_10_13_x86_64.whl.

File metadata

  • Download URL: jgrapht-1.5.0.3-cp36-cp36m-macosx_10_13_x86_64.whl
  • Upload date:
  • Size: 9.0 MB
  • Tags: CPython 3.6m, macOS 10.13+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.52.0 CPython/3.9.0

File hashes

Hashes for jgrapht-1.5.0.3-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 875480fc8089f665819f6213238faedbfb884052840b33468c3b94d01c773a72
MD5 ac786b1ff41c79725ea15d72b9c19c02
BLAKE2b-256 4b7893af9c0a2d28876befb123eb41b29bc96fe93fb32aee97e2b79773d9384f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page