Fast image dithering: ordered (Bayer), error diffusion (Floyd-Steinberg & friends), random; palettes, linear-light and more. Rust speed, one-call API.
Project description
Fast image dithering for Python, written in Rust. One call, sane defaults, every classic algorithm:
- Error diffusion — Floyd–Steinberg, Jarvis–Judice–Ninke, Stucki, Atkinson, Burkes, Sierra, Two-Row Sierra, Sierra Lite, False Floyd–Steinberg — with optional serpentine scanning.
- Ordered (Bayer) — 2×2 to 16×16 generated matrices, or bring your own threshold matrix.
- Random (white noise) — seedable.
- Palettes — dither straight to any color set (
["#0f380f", "#306230", ...]), not just black & white. - Multi-level — quantize to N gray/color levels per channel, not just 2.
- Gamma-correct mode —
linear=Truedoes the math in linear light and preserves perceived brightness (most libraries get this wrong). - Ergonomics — numpy in → numpy out, PIL in → PIL out, alpha channels preserved, forgiving names (
"fs","Floyd-Steinberg","BAYER8X8"all work, andordered_dithertakes the matrix size as an int), typed stubs, helpful error messages. - Fast — the hot loops release the GIL; ~550 MP/s ordered and ~120 MP/s Floyd–Steinberg on an M-series laptop.
Installation
pip install dithering
Wheels are published for Linux (glibc + musl), macOS and Windows — one abi3 wheel per platform covers CPython 3.9 and everything newer. PyPy installs from the source distribution (needs a Rust toolchain).
Quickstart
from PIL import Image
import dithering
img = Image.open("photo.jpg")
# Classic black & white Floyd-Steinberg (the default):
bw = dithering.dither(img)
# Ordered dithering with an 8x8 Bayer matrix:
retro = dithering.dither(img, "bayer8x8")
# Dither to a Game Boy palette:
gameboy = dithering.dither(img, "atkinson", palette=["#0f380f", "#306230", "#8bac0f", "#9bbc0f"])
gameboy.save("gameboy.png")
Everything also works directly on numpy arrays (2-D grayscale or H×W×C uint8), and returns arrays in that case:
import numpy as np
import dithering
arr = np.asarray(Image.open("photo.jpg"))
out = dithering.error_diffusion(arr, "stucki", serpentine=True, levels=4)
Gallery
| Original | Floyd–Steinberg | Atkinson |
|---|---|---|
| Bayer 2×2 | Bayer 8×8 | Random |
|---|---|---|
| RGB Floyd–Steinberg | Game Boy palette | 16-color palette, Bayer 8×8 |
|---|---|---|
API
The one-stop entry point dispatches on the method name:
dithering.dither(image, method="floyd_steinberg", *, levels=2, palette=None,
serpentine=False, seed=None, strength=1.0, linear=False,
preserve_alpha=True)
Or call the specific functions — same parameters, minus the ones that don't apply:
| Function | Methods |
|---|---|
error_diffusion(image, method, ...) |
floyd_steinberg (alias fs), false_floyd_steinberg (ffs), jarvis_judice_ninke (jjn), stucki, atkinson, burkes, sierra (sierra3), sierra_two_row (sierra2), sierra_lite |
ordered_dither(image, matrix, ...) |
bayer2x2 … bayer16x16, the size as an int (8), or a custom 2-D numpy matrix (integer dtype = Bayer-style indices, float dtype = thresholds in [0, 1]) |
random_dither(image, ...) |
white noise; pass seed= for reproducible output |
All names are case-insensitive and -/_ are interchangeable. available_methods() and available_matrices() list the valid names at runtime.
Common parameters
| Parameter | Default | Meaning |
|---|---|---|
levels |
2 |
Output levels per channel. 2 = black & white; 4 gives 0/85/170/255, etc. |
palette |
None |
Dither to these exact colors instead of gray levels. Hex strings ("#fff", "#0f380f") or (r, g, b) tuples. Needs an RGB(A) image. |
serpentine |
False |
(Error diffusion) alternate the scan direction each row; reduces directional "worm" artifacts. |
strength |
1.0 |
0.0 = plain quantization, 1.0 = full dithering. |
linear |
False |
Do the math in linear light (gamma-correct). sRGB 50 % gray is only ~21 % linear light — with linear=True the dithered result keeps the perceived brightness of the original instead of coming out too bright. |
preserve_alpha |
True |
For LA/RGBA inputs, pass the alpha channel through untouched instead of dithering it. |
Input/output contract
- Accepts uint8 numpy arrays — 2-D grayscale or 3-D (H, W, C) — and PIL images (any mode; exotic modes are converted to RGB first).
- Returns a new uint8 array of the same shape, or a PIL image if you passed one. The input is never modified.
- Float arrays are rejected with a hint (
(img * 255).clip(0, 255).astype(np.uint8)), invalid names raiseValueErrorlisting the valid ones.
Performance
2048×2048 grayscale (4.2 MP) on an Apple M-series laptop:
| Operation | Time | Throughput |
|---|---|---|
ordered_dither, Bayer 8×8 |
~8 ms | ~550 MP/s |
random_dither |
~7 ms | ~570 MP/s |
error_diffusion, Floyd–Steinberg |
~34 ms | ~120 MP/s |
error_diffusion, Stucki + serpentine |
~38 ms | ~110 MP/s |
Pillow convert("1") (Floyd–Steinberg, the only dither it has) |
~18 ms | ~240 MP/s |
Pillow's single hard-coded binary-grayscale Floyd–Steinberg loop is still faster than our general engine — but it can't do other kernels, serpentine, levels, palettes, strength or linear light. Pure-Python libraries are typically 100–1000× slower. The hot loops release the GIL, so other Python threads keep running.
Correctness notes
- Bayer thresholds use the mean-preserving
(index + 0.5) / n²convention: a 50 % gray dithers to exactly 50 % white pixels, solid black stays black, solid white stays white. - Error-diffusion kernels are the canonical published coefficients; error falling off the image edge is discarded.
- Atkinson intentionally diffuses only 6/8 of the error — deep shadows and highlights clip to solid black/white. That's the classic Mac look, not a bug.
- The test suite (44 Rust + 82 Python tests) asserts mean preservation, palette exactness, alpha preservation and reproducibility for every algorithm.
Development
cargo test # Rust unit tests
maturin develop --release # build into the active venv
pytest tests/ -v # Python end-to-end tests
Contributing
Contributions are welcome! Fork the repository, create a branch from main, make your changes (please add tests), and open a pull request.
License
MIT — see LICENSE.
Contact
Questions, suggestions, feedback: open an issue on GitHub or email patrik@tensorhead.com.
Project details
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dithering-0.2.0.tar.gz.
File metadata
- Download URL: dithering-0.2.0.tar.gz
- Upload date:
- Size: 1.3 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2b66ab0be0e408e58a6f8eab8dc8fdcda60d8a3822a5571954a4e24666948810
|
|
| MD5 |
47fa444441262138084478b8ef5cd1ba
|
|
| BLAKE2b-256 |
c4d2bdb00d5c968bd800de9b1e0679f743a3c63ddca0ef38bdc989ed4330dc43
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-win_arm64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-win_arm64.whl
- Upload date:
- Size: 189.1 kB
- Tags: CPython 3.14t, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6305ab257669e47f214f2db4b0fbb8b71a9cf408b54db3d5742a320d784c809e
|
|
| MD5 |
b468d20467eff11d80eefcc40b6ad006
|
|
| BLAKE2b-256 |
5739f275defee47c7b7936f949fae18e9288bf12e384485199aa0f97c9a09434
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-win_amd64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-win_amd64.whl
- Upload date:
- Size: 199.1 kB
- Tags: CPython 3.14t, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e82eb6cf88b7a51f48086e3a7fbe582858be81f115ecc4260caa233c4390321c
|
|
| MD5 |
d88217c7774b7bce031348be15ccec16
|
|
| BLAKE2b-256 |
f13acfa1da073e8732a5135a0226b9556532d71b2654f3a8491d1d10fb0fea73
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-win32.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-win32.whl
- Upload date:
- Size: 188.9 kB
- Tags: CPython 3.14t, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2b372732daa435f5f4e9589e9aa3039cee44c215afac47a3bc1be766104586e
|
|
| MD5 |
e55c4d0312c8775076bf9735622179af
|
|
| BLAKE2b-256 |
62d028a754da4ecaf4f793756f5f88a6309a0c5368944446054e3d413a415cc3
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 527.9 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
06c9af5a4ba29f9248e80c2a050c44a36a596e88ed57f32394b0062f29352654
|
|
| MD5 |
d8b6f2db36dcbe95f659ad5385834100
|
|
| BLAKE2b-256 |
948ad6dd1f273404cd6d41aead20ec0f69cdcc7818e8e513081c6b519a32bda6
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-musllinux_1_2_i686.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-musllinux_1_2_i686.whl
- Upload date:
- Size: 557.0 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
67cb0db174ff8215a745296aad7ca7b592ca1291e58192cd9b6b14ca3440b6cf
|
|
| MD5 |
bd2a193cf384293d0447e6f4b12f2645
|
|
| BLAKE2b-256 |
8669cdc11347885326a248d764b8e836f57e52f0a52d7c29a980958bffd29e17
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 596.2 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aeecad6df9957dc7b1c709f48f55c9a70d9c8423897a756ab8bd9565a3f293a2
|
|
| MD5 |
a6a9e5f44867ac36bffc4682f2b33a5f
|
|
| BLAKE2b-256 |
a7e09589b775d871eed6589b48dd3a55b3be0f0e6db87593f235b8e22bc92651
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 487.5 kB
- Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
20170d96f02a8fcc721e08d877227b1d17b494d9f286000db453c1b6e30d9913
|
|
| MD5 |
5a0263ce6709f6ea14a235a2a985fb37
|
|
| BLAKE2b-256 |
2b41efe4fe07941a29543087c20b9aebf79ccf21a57704b0cdf3f7e51335f8b4
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 316.6 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2436789ad5ebece1ad0edcde80caf84d3c6b5bf9394f248f69f6ace080e3052a
|
|
| MD5 |
9921a901013c69d85b34068730a22a9a
|
|
| BLAKE2b-256 |
2c06cfd1e197703ed515ba9782c595f0076840ac1ed0f57eeae6ae2843b9c08f
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 353.1 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e16a60c21486af940085688b50be4cec5ccd4a63fc2c7944c76dc482fc641ecf
|
|
| MD5 |
74937d5bda4decd713497ac5477e8f4e
|
|
| BLAKE2b-256 |
53eff69ab873de5c5aaff9c5f81786845583f8c81c20b2dfba2836765571becd
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 354.1 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e1bd057eca26ad548ee71a33274339eb6045845f06de3a3841534cd54db4d38
|
|
| MD5 |
99eb4bb66700d1b99ce1ac7f5dab9a61
|
|
| BLAKE2b-256 |
7312f960d216d0a348c043c3bc367e3eee22a5ecce0015143f783f84797ff167
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 321.2 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9410964a52a730e61ae55dd4049bd992df3aecd8567dc1260c8143526cb84953
|
|
| MD5 |
ccd1ec3e22b02fc2115170bf0c748acb
|
|
| BLAKE2b-256 |
79a1b687508c5b53eb9a62d817eb097024cc4779bca94af0d5f3bfc275e2d96c
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 310.4 kB
- Tags: CPython 3.14t, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
682eac6ba162b3dc1e07cc6a8de7691e42118c333d921b8bc6c7d4ea66e8b2fc
|
|
| MD5 |
b137806bfe375fab5d6568c8d56231c8
|
|
| BLAKE2b-256 |
3ee009df972a225e05ad7bb90f4e400e467ff8a4444ebd6e1acdd569e35737ad
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 337.0 kB
- Tags: CPython 3.14t, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51a91efc7c58e79e9cc6c0f3b79c1156b629d7c0d96063fecadd571e79d01456
|
|
| MD5 |
9cfec197319b77086aaae17a91642389
|
|
| BLAKE2b-256 |
8bdeb83008bdaff4d4851241ef06ea4f4169a055608b1462bafe90b89afdae43
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-macosx_11_0_arm64.whl
- Upload date:
- Size: 288.4 kB
- Tags: CPython 3.14t, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd4f8aa70504ffd866035a8fcc09f61f1169f7a845c1408db3f20e744e2d6ef1
|
|
| MD5 |
20bc205225b892531b8d558658cefe2a
|
|
| BLAKE2b-256 |
d4a96218300f854d6a2a0ee45a7157fdcb0b957893c943040ba16aaa66b6670d
|
File details
Details for the file dithering-0.2.0-cp314-cp314t-macosx_10_12_x86_64.whl.
File metadata
- Download URL: dithering-0.2.0-cp314-cp314t-macosx_10_12_x86_64.whl
- Upload date:
- Size: 300.4 kB
- Tags: CPython 3.14t, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2305e9b6f285c0d049595f310322eeea382c88e5c87807364a2bf4387ed21fec
|
|
| MD5 |
f5ec7616b790a079bf55730a85ed67b7
|
|
| BLAKE2b-256 |
9693f7980d0f660769d5d2a22e3f10da8428f14e6898e4ecfc49804d3a207a35
|
File details
Details for the file dithering-0.2.0-cp39-abi3-win_arm64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-win_arm64.whl
- Upload date:
- Size: 198.2 kB
- Tags: CPython 3.9+, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac8b5d48771911ae7cb1871888329bfa61985950faa1fe15da5109b9befc44ba
|
|
| MD5 |
62384504c93ef8bdf02cd7ef51906d9e
|
|
| BLAKE2b-256 |
4c7623629efc9c7300450f0628fcd144e27da4640c547db65673badbf858cb47
|
File details
Details for the file dithering-0.2.0-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 210.2 kB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1ecf5bfe56be991eba82060d437248b76cb832ff53a868558e8886e81b5381bc
|
|
| MD5 |
e729d97934bdb5cd95be33c31d649669
|
|
| BLAKE2b-256 |
d1adf39f63c804faa9bc7d80d2e075e9ccb270847a282f54aae452c26173541a
|
File details
Details for the file dithering-0.2.0-cp39-abi3-win32.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-win32.whl
- Upload date:
- Size: 198.8 kB
- Tags: CPython 3.9+, Windows x86
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f63aa9dac61d38ae21251b757751d7d62ab76684fd223d10af1fb8da64b8dad8
|
|
| MD5 |
c88338798716706f126f44fbdd97ce3f
|
|
| BLAKE2b-256 |
32c6a3e0da1bfcd96dc0038834f2d310c45e09a2c7bd7544897fb27b381497ea
|
File details
Details for the file dithering-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 536.3 kB
- Tags: CPython 3.9+, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1102467c73fa6ddc20eff5a92868c465bc35f91a707c4737e0157c739e964735
|
|
| MD5 |
7bd3914367746f1272498ceb7e641dc5
|
|
| BLAKE2b-256 |
1a5181d04fa81fff6c7e32e37e77e110142f32b3feb1b9234359c82ee00e906a
|
File details
Details for the file dithering-0.2.0-cp39-abi3-musllinux_1_2_i686.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-musllinux_1_2_i686.whl
- Upload date:
- Size: 565.5 kB
- Tags: CPython 3.9+, musllinux: musl 1.2+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bcc60151a509caa7e09966bdb2bb296d4a2f257c5e7571df58c9ca865543c47
|
|
| MD5 |
3b4fa7d014da5f5d692b24707228e2a1
|
|
| BLAKE2b-256 |
588bbaf384d3cf7fd2351141a3fa328b4ad49330a60c9f9c659a4485189f1438
|
File details
Details for the file dithering-0.2.0-cp39-abi3-musllinux_1_2_armv7l.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-musllinux_1_2_armv7l.whl
- Upload date:
- Size: 605.8 kB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7535e7b7a7a17dcbe0fa8ddaf2029ad630730810552db29e413ba232b8d7e576
|
|
| MD5 |
4e1b091a8db965b636d7c8e8aca9b526
|
|
| BLAKE2b-256 |
28bc6319de67360e6fb9cabac81de0c9c38fa5eb9144dd6852d8265dae4ce9b5
|
File details
Details for the file dithering-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-musllinux_1_2_aarch64.whl
- Upload date:
- Size: 496.9 kB
- Tags: CPython 3.9+, musllinux: musl 1.2+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2f0d7852837d7b058e0be9e43909d77a8641fe907d382f6459942a7f63291f1b
|
|
| MD5 |
db68389bd839eb4199a0b7614553b1e4
|
|
| BLAKE2b-256 |
f2a01a81235540d1ea90b03a51392932488ff4bbc8a30c2778e42a832cef998e
|
File details
Details for the file dithering-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 325.4 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
47ce308e0f5a3014563965274f00b33968c7602966831de068ef9f6922a74507
|
|
| MD5 |
df6b4df0aa580253020247caa5fb0800
|
|
| BLAKE2b-256 |
acb3dba06f29f82e955f2871dd6114174730700790b12d8f9291d87bc4da5ddd
|
File details
Details for the file dithering-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-manylinux_2_17_s390x.manylinux2014_s390x.whl
- Upload date:
- Size: 360.1 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ s390x
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0fd26958551dba0094da0d626706ee424643ae7bcd0bd35e760f3efde70563b1
|
|
| MD5 |
784f407f925ce43e9ba8b9c367962be7
|
|
| BLAKE2b-256 |
3f570087886d37d293b5ffa311e7fd163314b89267d00a5fd92cd8f45f363e09
|
File details
Details for the file dithering-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl
- Upload date:
- Size: 364.4 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ppc64le
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7601f3d902937b04be225888b06d3ea418449cbd85c5a156f8f3c60ba730fbe
|
|
| MD5 |
384b48206e7618c30cc95ad2f0325b67
|
|
| BLAKE2b-256 |
9077402cd942a5ae7c78a054fd7059446553f5d14afc0b6f5572ad9d3d833f9a
|
File details
Details for the file dithering-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
- Upload date:
- Size: 330.7 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARMv7l
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9bcfb2910e86246ee9b5e041b81bc60567b759d74c6e59b8a8b7ee0493c04484
|
|
| MD5 |
ac8750f663b774e1f0f35fc7a1fdf7d3
|
|
| BLAKE2b-256 |
802f9fcc3028aa3dbfc67c90c6676c8dda1f94fde431f6d446d14ddf23ea3079
|
File details
Details for the file dithering-0.2.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
- Upload date:
- Size: 320.6 kB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8369457d24db576ab06a604b3e5e60ce2270a60529e28659da60ab4a58dc87c4
|
|
| MD5 |
5d6d7dc64c0ee6ac2aacf9e99a8189e4
|
|
| BLAKE2b-256 |
bb1c56f2e83afebeea582dfcd4cb352ec7a727ccec5f72bcd4fcfbc094263b9b
|
File details
Details for the file dithering-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-manylinux_2_5_i686.manylinux1_i686.whl
- Upload date:
- Size: 348.7 kB
- Tags: CPython 3.9+, manylinux: glibc 2.5+ i686
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ab68efbb21e4c15eed7530e456d19c33d95c6dff1a02a493a72157298bf544e
|
|
| MD5 |
ce510e697b7ca7fd3d4202aa9d826d8d
|
|
| BLAKE2b-256 |
987b22aafb7de8c63090b9c22547762aeda193611c0dbefea553d48c9cb6a471
|
File details
Details for the file dithering-0.2.0-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 299.3 kB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
026816f119e5417d932461a2ca473f1ceaafb3f4d8b3602c428514044414b7a2
|
|
| MD5 |
4260c0758c70280c2b00f397cd48a9a6
|
|
| BLAKE2b-256 |
0ee85c9850af307999d6ed7a3d3facc14c2a7c6142cc20f93f0750bd05412acd
|
File details
Details for the file dithering-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: dithering-0.2.0-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 307.0 kB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.26 {"installer":{"name":"uv","version":"0.11.26","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
425d529e829e7f602841f55faea9418ba98eda67d04e59d0573c73db84894f63
|
|
| MD5 |
e798f0a4f63c8f5732e81c2306530468
|
|
| BLAKE2b-256 |
3c42e353dfbd439b13bde1f840d12bd3738ab71fd90c463d46891270c14f34e5
|