跳转到主要内容

Rust版本的Python stdlib graphlib模块

项目描述

graphlib2

CI

这是Python标准库graphlib的Rust版本。它通过了所有标准库测试,可以作为直接替换品。它也恰好与Python 3.7兼容,因此可以用作回退版本。由于使用方式与标准库完全相同,请参阅它们的文档以获取使用细节。

GitHub上查看此项目。

示例

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

动机

这主要是为di和我学习Rust而编写的。换句话说:请在使用之前自行审核代码。

与标准库实现的差异

  1. 添加了TopologicalSorter.copy(),它复制一个准备好的或未准备好的图,以便它可以多次执行。
  2. 性能有了相当大的提升(请参阅基准测试)。
  3. 一些其他改进,如工作泛型而不进行延迟评估(ToplologicalSorter[int]在运行时工作)。

性能

实现是为添加所有节点、调用prepare()然后循环复制和执行的具体用例而设计的

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)

这意味着重点关注的是TopologicalSorter.get_ready()TopologicalSorter.done()的性能,而对其他方法(如prepare()add()get_static_order())的投入最小,尽管这些方法仍然相当高效。

贡献

  1. 克隆仓库。
  2. 运行make init
  3. 运行make test
  4. 进行更改
  5. 推送并打开一个pull request
  6. 等待CI运行。

如果你的pull request获得批准并被合并,它将自动发布到PyPi(每次对main的提交都会发布)。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪一个,请了解有关安装包的更多信息。

源分布

graphlib2-0.4.7.tar.gz (390.5 kB 查看哈希值

上传时间:

构建分布

graphlib2-0.4.7-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223.3 kB 查看哈希值

上传时间: PyPy manylinux: glibc 2.17+ x86-64

graphlib2-0.4.7-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (207.1 kB 查看哈希值

上传时间: PyPy manylinux: glibc 2.17+ ARM64

graphlib2-0.4.7-pp39-pypy39_pp73-macosx_10_7_x86_64.whl (203.7 kB 查看哈希值

上传时间: PyPy macOS 10.7+ x86-64

graphlib2-0.4.7-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223.3 kB 查看哈希值

上传时间: PyPy manylinux: glibc 2.17+ x86-64

graphlib2-0.4.7-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (207.4 kB 查看哈希值

上传时间: PyPy manylinux: glibc 2.17+ ARM64

graphlib2-0.4.7-pp38-pypy38_pp73-macosx_10_7_x86_64.whl (203.8 kB 查看哈希值)

上传时间 PyPy macOS 10.7+ x86-64

graphlib2-0.4.7-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (225.6 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ x86-64

graphlib2-0.4.7-pp37-pypy37_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (209.5 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

graphlib2-0.4.7-pp37-pypy37_pp73-macosx_10_7_x86_64.whl (205.6 kB 查看哈希值)

上传时间 PyPy macOS 10.7+ x86-64

graphlib2-0.4.7-cp37-abi3-win_amd64.whl (150.5 kB 查看哈希值)

上传时间 CPython 3.7+ Windows x86-64

graphlib2-0.4.7-cp37-abi3-win32.whl (145.1 kB 查看哈希值)

上传时间 CPython 3.7+ Windows x86

graphlib2-0.4.7-cp37-abi3-musllinux_1_2_x86_64.whl (394.6 kB 查看哈希值)

上传时间 CPython 3.7+ musllinux: musl 1.2+ x86-64

graphlib2-0.4.7-cp37-abi3-musllinux_1_2_i686.whl (419.3 kB 查看哈希值)

上传时间 CPython 3.7+ musllinux: musl 1.2+ i686

graphlib2-0.4.7-cp37-abi3-musllinux_1_2_armv7l.whl (475.7 kB 查看哈希值)

上传时间 CPython 3.7+ musllinux: musl 1.2+ ARMv7l

graphlib2-0.4.7-cp37-abi3-musllinux_1_2_aarch64.whl (387.6 kB 查看哈希值)

上传时间 CPython 3.7+ musllinux: musl 1.2+ ARM64

graphlib2-0.4.7-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (223.1 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.17+ x86-64

graphlib2-0.4.7-cp37-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl (278.2 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.17+ s390x

graphlib2-0.4.7-cp37-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl (311.7 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.17+ ppc64le

graphlib2-0.4.7-cp37-abi3-manylinux_2_17_ppc64.manylinux2014_ppc64.whl (322.4 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.17+ ppc64

graphlib2-0.4.7-cp37-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl (212.6 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.17+ ARMv7l

graphlib2-0.4.7-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (206.9 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.17+ ARM64

graphlib2-0.4.7-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.whl (247.1 kB 查看哈希值)

上传于 CPython 3.7+ manylinux: glibc 2.5+ i686

graphlib2-0.4.7-cp37-abi3-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl (389.0 kB 查看哈希值)

上传于 CPython 3.7+ macOS 10.9+ universal2 (ARM64, x86-64) macOS 10.9+ x86-64 macOS 11.0+ ARM64

graphlib2-0.4.7-cp37-abi3-macosx_10_7_x86_64.whl (203.7 kB 查看哈希值)

上传于 CPython 3.7+ macOS 10.7+ x86-64

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面