Skip to main content

⚡️ fastdsu

A fast disjoint sets implementation for Python, backed by Rust.

Accepts Arrow arrays via the C Data Interface (__arrow_c_array__) for zero-copy ingestion and zero-copy output. Works with any library that exports Arrow — PyArrow, Polars, pandas, and so on.

Why another implementation?

If you need disjoint sets / connected components over Arrow in Python, the common options are:

  • A pure Python implementation
  • SciPy's connected_components
  • A graph library such as NetworkX or rustworkx

Pure Python requires leaving Arrow. SciPy requires leaving Arrow and constructing a sparse matrix — a large intermediate allocation entirely separate from the operation you actually want. Graph libraries bring heavy dependencies for what is fundamentally a simple algorithm.

fastdsu accepts Arrow arrays directly: no intermediate objects, no unnecessary allocations.

Requirements

Inputs must be non-nullable Arrow arrays, both of the same data type, using a fixed-width integer type (int8/int16/int32/int64/uint8/uint16/uint32/uint64).

fastdsu has no required Python dependencies — inputs and outputs use the Arrow C Data Interface protocol, so any Arrow-compatible library works at call time without being a declared dependency.

Usage

import pyarrow as pa
from fastdsu import DSU

dsu = DSU()

# Feed edge batches as they arrive: zero-copy in
dsu.union(batch_1_src, batch_1_dst)
dsu.union(batch_2_src, batch_2_dst)

# Extract components: zero-copy out, a two-column (key, label) Arrow table
components = dsu.components()
pa.record_batch(components)  # consume with PyArrow
pl.from_arrow(components)    # or Polars, or any Arrow-compatible library

Works naturally with Polars:

import polars as pl
from fastdsu import DSU

edges = pl.DataFrame({"src": [0, 1, 3, 4], "dst": [1, 2, 4, 5]}).cast(pl.UInt32)
dsu = DSU()
dsu.union(edges["src"].to_arrow(), edges["dst"].to_arrow())

components = pl.from_arrow(dsu.components())
result = edges.join(components, left_on="src", right_on="key", how="left")

One-shot convenience function

For a single batch of edges, connected_components skips constructing a DSU:

import pyarrow as pa
from fastdsu import connected_components

components = connected_components(src, dst)
pa.record_batch(components)

Contributing

pre-commit is mandatory and must be turned on.

pre-commit install --install-hooks --overwrite -t commit-msg -t pre-commit

This repo uses just as its task runner.

Release files for fastdsu 0.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastdsu 0.0.0
File Size Uploaded
fastdsu-0.0.0.tar.gz 38.1 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for fastdsu 0.0.0
File
fastdsu-0.0.0-cp311-abi3-win_amd64.whl CPython 3.11 abi3 Windows x86-64 Details
fastdsu-0.0.0-cp311-abi3-manylinux_2_28_x86_64.whl CPython 3.11 abi3 Linux glibc 2.28+ x86-64 Details
fastdsu-0.0.0-cp311-abi3-manylinux_2_28_aarch64.whl CPython 3.11 abi3 Linux glibc 2.28+ ARM64 Details
fastdsu-0.0.0-cp311-abi3-macosx_11_0_x86_64.whl CPython 3.11 abi3 macOS 11.0+ x86-64 Details
fastdsu-0.0.0-cp311-abi3-macosx_11_0_arm64.whl CPython 3.11 abi3 macOS 11.0+ ARM64 Details

Total release size: 14.9 MB

Release files / fastdsu-0.0.0.tar.gz

Download URL fastdsu-0.0.0.tar.gz
Size 38.1 kB
Tags Source
SHA-256 checksum
How to use checksums
ebaf712832bbe0c0bb041a678462d4759bc3d5b34e5618d1b849cc88a5dc19af
BLAKE2b-256 checksum
How to use checksums
a6c7a988cc15f568e42d15ed76a29e089e3dfac757dc590610f41161b39d7288
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / fastdsu-0.0.0-cp311-abi3-win_amd64.whl

Download URL fastdsu-0.0.0-cp311-abi3-win_amd64.whl
Size 2.9 MB
Tags CPython 3.11 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
bc46ad7347ef8c9f78bdcfd62644395610a1bfc6f6f67749a772c45173fda189
BLAKE2b-256 checksum
How to use checksums
b9bb53331c8a06743df893f89eda58aecf82f7bb7d203c0b5cdcb84f32e83d6a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / fastdsu-0.0.0-cp311-abi3-manylinux_2_28_x86_64.whl

Download URL fastdsu-0.0.0-cp311-abi3-manylinux_2_28_x86_64.whl
Size 3.2 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
d2d81268d35c2f804df5d6d7d98f27dfa1c7b42d04c9674043fe28dca6bf9a07
BLAKE2b-256 checksum
How to use checksums
45dd0e1e8fdc67e659efaf64a99fb87bcec7c6f6c9f32775d38079b7988610c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / fastdsu-0.0.0-cp311-abi3-manylinux_2_28_aarch64.whl

Download URL fastdsu-0.0.0-cp311-abi3-manylinux_2_28_aarch64.whl
Size 3.2 MB
Tags CPython 3.11 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
737d1e2461035a3739771c75c961de81aea23da42947eea60368c5b32fe6917b
BLAKE2b-256 checksum
How to use checksums
ed044f178d4315f6f05ef4623190c8efbb09dda5ea30e9723fcb22dd4e2fee23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / fastdsu-0.0.0-cp311-abi3-macosx_11_0_x86_64.whl

Download URL fastdsu-0.0.0-cp311-abi3-macosx_11_0_x86_64.whl
Size 2.9 MB
Tags CPython 3.11 abi3 macOS 11.0+ x86-64
SHA-256 checksum
How to use checksums
68b533ea5e5a53c2a41a3f2f055302c0d6e806953e533876f9c34b3c40911846
BLAKE2b-256 checksum
How to use checksums
a343906cfe4d214e145e65003661383ac9a11f7edda74e7f06c138e761c4e985
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release files / fastdsu-0.0.0-cp311-abi3-macosx_11_0_arm64.whl

Download URL fastdsu-0.0.0-cp311-abi3-macosx_11_0_arm64.whl
Size 2.7 MB
Tags CPython 3.11 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0c746377601ab55dfa8b4bcab53392aa3679e789867ebda47d892961ba5ca9c6
BLAKE2b-256 checksum
How to use checksums
9c1e55ea3ec4a8c6a37e6b5e72fbd50fba1e241adc730b022d64ed74e4eaff78
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.0.0 This release

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page