graphlib2 0.2.15
pip install graphlib2==0.2.15
Released:
Rust port of the Python stdlib graphlib modules
Navigation
Unverified details
These details have not been verified by PyPIMeta
- License: MIT License (MIT)
- Author: Adrian Garcia Badaracco
- Requires: Python >=3.7
Classifiers
- Development Status
- Intended Audience
- License
- Topic
Project description
graphlib2
This is a Rust port of Python's stdlib graphlib. It passes all of the standard libraries tests and is a drop in replacement. This also happens to be Python 3.7 compatible, so it can be used as a backport. Since usage is exactly the same as the standard libraries, please refer to their documentation for usage details.
See this project on GitHub.
Example
from graphlib2 import TopologicalSorter
graph = {0: [1], 1: [2]} # 0 depends on 1, 1 depends on 2
ts = TopologicalSorter(graph)
ts.prepare()
while ts.is_active():
ready_nodes = ts.get_ready()
ts.done(*ready_nodes) # all at a time or one by one
Motivation
This was primarily written for di and for me to learn Rust. In other words: please vet the code yourself before using this.
Differences with the stdlib implementation
- Added
TopologicalSorter.copy()
which copies a prepared or unprepared graph so that it can be executed multiple times. - Pretty solid performance improvements (see benchmarks).
- Misc improvements, like working generics without postponed evaluateion (
ToplologicalSorter[int]
works at runtime).
Performance
The implementation was designed for the specific use case of adding all nodes, calling prepare()
then copying and executing in a loop:
from graphlib2 import TopologicalSorter
graph = {0: [1], 1: [2]}
ts = TopologicalSorter(graph)
ts.prepare()
while True: # hot loop
t = ts.copy()
while t.is_active():
ready_nodes = t.get_ready()
t.done(*ready_nodes)
This means that the focus is on the performance of TopologicalSorter.get_ready()
and TopologicalSorter.done()
, and only minimal effort was put into other methods (prepare()
, add()
and get_static_order()
), although these are still quite performant.
Contributing
- Clone the repo.
- Run
make init
- Run
make test
- Make your changes
- Push and open a pull request
- Wait for CI to run.
If your pull request gets approved and merged, it will automatically be relased to PyPi (every commit to main
is released).
Project details
Unverified details
These details have not been verified by PyPIMeta
- License: MIT License (MIT)
- Author: Adrian Garcia Badaracco
- Requires: Python >=3.7
Classifiers
- Development Status
- Intended Audience
- License
- Topic
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Uploaded
PyPy
manylinux: glibc 2.17+ x86-64
Uploaded
PyPy
manylinux: glibc 2.17+ ARM64
Uploaded
PyPy
manylinux: glibc 2.17+ i686
manylinux: glibc 2.5+ i686
Uploaded
PyPy
macOS 10.9+ x86-64
Uploaded
PyPy
manylinux: glibc 2.17+ x86-64
Uploaded
PyPy
manylinux: glibc 2.17+ ARM64
Uploaded
PyPy
manylinux: glibc 2.17+ i686
manylinux: glibc 2.5+ i686
Uploaded
PyPy
macOS 10.9+ x86-64
Uploaded
CPython 3.7+
Windows x86-64
Uploaded
CPython 3.7+
musllinux: musl 1.1+ x86-64
Uploaded
CPython 3.7+
musllinux: musl 1.1+ i686
Uploaded
CPython 3.7+
musllinux: musl 1.1+ ARM64
Uploaded
CPython 3.7+
manylinux: glibc 2.17+ x86-64
Uploaded
CPython 3.7+
manylinux: glibc 2.17+ ARM64
Uploaded
CPython 3.7+
manylinux: glibc 2.17+ i686
manylinux: glibc 2.5+ i686
Uploaded
CPython 3.7+
macOS 10.9+ x86-64
File details
Details for the file graphlib2-0.2.15.tar.gz
.
File metadata
- Download URL: graphlib2-0.2.15.tar.gz
- Upload date:
- Size: 156.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ed0289411a0f89df5ed84351a771fbeee9f6b537b1e8b8f005b808ea83b2f311
|
|
MD5 |
2c85fd51d42bb985f806dd0c55ca7866
|
|
BLAKE2b-256 |
c3ed6fa57d8fb3927872ce2ba7d3843039af78e6c2b8dffb9cf564dabd4ab497
|
File details
Details for the file graphlib2-0.2.15-pp38-pypy38_pp73-win_amd64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp38-pypy38_pp73-win_amd64.whl
- Upload date:
- Size: 145.2 kB
- Tags: PyPy, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
7ac782b6b512a8e919cef99fe40b980866ae64598d24649f670218467aeb699a
|
|
MD5 |
f6bc7ede47e6a07c2a1043f97c8d2dfd
|
|
BLAKE2b-256 |
0c8c4de36698d8ecd7f262d2420cdb1724e630d5fcd25713db584612d361142e
|
File details
Details for the file graphlib2-0.2.15-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 214.7 kB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
21995d11cc37aa2736f681c44cacbdf248d4aec05d6155d2dfe28da82c8053ea
|
|
MD5 |
8018bde2505c1bf8c01ab4066fdec3c2
|
|
BLAKE2b-256 |
f69c48365365b5785c7230dc9f6506a03a2b7fb5b75856f216f7fbe009bc2b9a
|
File details
Details for the file graphlib2-0.2.15-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 197.5 kB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
78134016e074ecf8d7ebb13bee5dda9e4d05d4e6e16a2d22b4703ca978a99da1
|
|
MD5 |
2d1e4f21439fd1e857f77acedc1210fb
|
|
BLAKE2b-256 |
e5555d6cd9faafeda328801ae9106287fe6d58380d1206b0005dd7e9bec8f5f8
|
File details
Details for the file graphlib2-0.2.15-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 240.8 kB
- Tags: PyPy, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c279c1c28e8babb26fabedfb8a0d1546a59ede9817f8f3f4e58c4fac5b479cfa
|
|
MD5 |
25cbdea10f9b69dd94fe56b74b88d152
|
|
BLAKE2b-256 |
50fc640625fb40eb1a0d1c2acefbea4bfd296fdaa1392330998670cb38c48b61
|
File details
Details for the file graphlib2-0.2.15-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp38-pypy38_pp73-macosx_10_9_x86_64.whl
- Upload date:
- Size: 197.9 kB
- Tags: PyPy, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
57b80aa63c5bc70efbd28fa9113b0e378bf4b792a5cc0a804eb8c2c1543e45ac
|
|
MD5 |
67f379df5971760bd0fecce214d36124
|
|
BLAKE2b-256 |
ade1ffb4119bac961cd822f2c8645df153f85d77f245b452e179cca708498612
|
File details
Details for the file graphlib2-0.2.15-pp37-pypy37_pp73-win_amd64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp37-pypy37_pp73-win_amd64.whl
- Upload date:
- Size: 145.2 kB
- Tags: PyPy, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
70332eea1e7b69c853d27a5c7ecf49537a22ef2f500efbb04bfa5afa57792125
|
|
MD5 |
296a64a69f9a670f58dd460088121148
|
|
BLAKE2b-256 |
e75afada980115b7643bf0bcd36cf6f56c9228e54fdcac7de8d94c31aaee4300
|
File details
Details for the file graphlib2-0.2.15-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 214.7 kB
- Tags: PyPy, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
dc880e209c5aab97c7640d0f5812d20065ba323446004da02b922911eb35b3df
|
|
MD5 |
7514298498f000eecec39d4a72de6519
|
|
BLAKE2b-256 |
04b9e1ab61178ae3b2ca59fcfa176e47045b7ca293dbf1038f1dfe54516458a1
|
File details
Details for the file graphlib2-0.2.15-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 197.5 kB
- Tags: PyPy, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
1e2f2ffa1d6536fa5b5f9cc68e87f1f0daf1e7eb162400b28fe9bb6b73cc097f
|
|
MD5 |
119c3dd22229335678f7dd9a2aad03dc
|
|
BLAKE2b-256 |
fc3899fc42439ef0faf6e93a1d5efc9d41d8b21c700af2e8fd81c48135776862
|
File details
Details for the file graphlib2-0.2.15-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 240.8 kB
- Tags: PyPy, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
9ce807042d2b3c7caaffa6d93dbaead84a43f7948cd245cf8608c9749412543e
|
|
MD5 |
7b0d41368829039503f68a1cb4dacb40
|
|
BLAKE2b-256 |
95154fe8a2898b37606104e038ae016919d9d41b3507cfcf4e1c53bcc5e320da
|
File details
Details for the file graphlib2-0.2.15-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-pp37-pypy37_pp73-macosx_10_9_x86_64.whl
- Upload date:
- Size: 197.9 kB
- Tags: PyPy, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
bd7b4e6043b685cd7f133d40c19e9ad4cc3d6677d5fdf28cbd35c7684c6d1586
|
|
MD5 |
ad39c8df4cb17e3044e8bcdedab265be
|
|
BLAKE2b-256 |
036d5aae48c198d6c46d5444fa59736c3bfd148921fdda78c601a1d632dc5112
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-win_amd64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-win_amd64.whl
- Upload date:
- Size: 145.0 kB
- Tags: CPython 3.7+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
15007c10f4aeb26ca91c32f3488640fcd707deb57d2af33d9d70a0533db1f40b
|
|
MD5 |
372d8fb671901d4a00af0f2f815535df
|
|
BLAKE2b-256 |
83b2e07b0b3b55140b6f56ac33b2c4ec5b3454e80214c2f26c7853c17420ff41
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-musllinux_1_1_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-musllinux_1_1_x86_64.whl
- Upload date:
- Size: 247.6 kB
- Tags: CPython 3.7+, musllinux: musl 1.1+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
bd7afc591e07b923a7705046724c53287f6ee6f2205c1a8a3c31545714ec8e72
|
|
MD5 |
5936f1b5a1a5897e586b23753e779319
|
|
BLAKE2b-256 |
12407678921110e69d2ace8e3bcc09b40baa19f79d71de2f060721a4f3e80cb3
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-musllinux_1_1_i686.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-musllinux_1_1_i686.whl
- Upload date:
- Size: 266.5 kB
- Tags: CPython 3.7+, musllinux: musl 1.1+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
6888788cb31f99174588fac134852462e37d25cd5d903dc6a03e8bb5b4e6626e
|
|
MD5 |
1f2fc6b31af721e17720d2f3b48e0335
|
|
BLAKE2b-256 |
56d58c0a9b1e17d6a9deed55d52de0301b357dfd7c3674da525e6147a55106e6
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-musllinux_1_1_aarch64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-musllinux_1_1_aarch64.whl
- Upload date:
- Size: 232.1 kB
- Tags: CPython 3.7+, musllinux: musl 1.1+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
4affdaa6fd584daa82604436396f3cc3a71db57ca048fae1d655c19ed6bc9dd8
|
|
MD5 |
4a5e7b578d0f60b3fc1260b742473574
|
|
BLAKE2b-256 |
8848f9a7d0e0a4fcc93b240d3bd6ed2e7d40b2672868ef6f779b78fa22cf5c25
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 214.9 kB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
b3f90234e921bd62b5b1ae10f37193221ebbdfa7b41ebbf801555bfe3ed37f64
|
|
MD5 |
5f55d983c012f780737c402e039a496c
|
|
BLAKE2b-256 |
970e00219c42208493d4ede4c47aa6a4605e6e19e3d3031b235885447d0150b8
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 197.4 kB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
c2b7813f2df46aafc6c55021f2263f7c210fe32ac2440dc937c01a2293d41e62
|
|
MD5 |
d3a1e01df0c2972f5dc6975e782460d2
|
|
BLAKE2b-256 |
8682e0f41efe5cc0b6fdf7920dd2e621af545e9f7688319ae93d8fb844d77f22
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
- Upload date:
- Size: 240.7 kB
- Tags: CPython 3.7+, manylinux: glibc 2.17+ i686, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
82e2cedebf91d9119d4b2fd3b03c198b94259af7e7faaaef70d8b383e5a617b2
|
|
MD5 |
b00b3075a0a6692c3543e82833bb2dea
|
|
BLAKE2b-256 |
462638eeaf09cd205b83b8027c4a11ad48e0165f890236cd813dfb9ef732f675
|
File details
Details for the file graphlib2-0.2.15-cp37-abi3-macosx_10_9_x86_64.whl
.
File metadata
- Download URL: graphlib2-0.2.15-cp37-abi3-macosx_10_9_x86_64.whl
- Upload date:
- Size: 198.2 kB
- Tags: CPython 3.7+, macOS 10.9+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.7.1 importlib_metadata/4.8.2 pkginfo/1.8.2 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
565415d49502850f00d7614fe437913f163de140e40ee7607c800a010bbbc1bf
|
|
MD5 |
6afd7832c67255ff09034ecbf460034b
|
|
BLAKE2b-256 |
db7e45541fb6c4b6177409a49102ef162d6f023d99b396986647e0b10c7db0d7
|