Skip to main content

epaper-dithering

PyPI Python License Tests Lint Ruff mypy

Dithering algorithms optimized for e-ink/e-paper displays with limited color palettes.

Installation

# With uv
uv add epaper-dithering

# With pip
pip install epaper-dithering

Features

  • Rust Core: All dithering runs in a compiled Rust extension — fast enough for 800×480 images in ~30ms
  • Perceptually Correct: Weighted Cartesian OKLab color matching — preserves hue without the achromatic-attractor bug that plagues LCH-weighted approaches
  • 10 Dithering Algorithms: From simple ordered dithering to high-quality Jarvis-Judice-Ninke
  • 10 Color Schemes: Support for mono, 3-color, 4-color, 6-color, 7-color, and grayscale e-paper displays
  • Pre-dither Adjustments: Per-image exposure, saturation, shadows, highlights, dynamic-range compression, and gamut compression — all orthogonal knobs you can mix freely
  • Serpentine Scanning: Reduces directional artifacts in error diffusion (enabled by default)
  • DBS Refinement: Optional Direct Binary Search pass that optimizes the dithered pixels against a model of the eye (slower: ~0.3 s per 800×480 panel on a multi-core machine)
  • RGBA Support: Automatic compositing on white background for transparent images

Quick Start

from PIL import Image
from epaper_dithering import dither_image, ColorScheme, DitherMode

# Load your image
image = Image.open("photo.jpg")

# Apply dithering for a black/white/red display
dithered = dither_image(image, ColorScheme.BWR, mode=DitherMode.FLOYD_STEINBERG)

# Save result
dithered.save("output.png")

All arguments after color_scheme are keyword-only:

dither_image(
    image, palette,
    *,
    mode=DitherMode.BURKES,    # algorithm
    serpentine=True,           # alternate row scan direction
    exposure=1.0,              # linear-RGB multiplier (1.0 = no change)
    saturation=1.0,            # OKLab saturation (1.0 = no change, 0.0 = grayscale)
    shadows=0.0,               # shadow lift, S-curve lower half
    highlights=0.0,            # highlight compression, S-curve upper half
    tone="auto",               # dynamic-range compression: "auto" | 0.0–1.0
    gamut="auto",              # gamut compression: "auto" | 0.0–1.0
    dbs=None,                  # DBS refinement: None | True | DbsParams(...)
)

Supported Color Schemes

  • MONO - Black and white (1-bit)
  • BWR - Black, white, red (3-color)
  • BWY - Black, white, yellow (3-color)
  • BWRY - Black, white, yellow, red (4-color)
  • BWGBRY - Black, white, yellow, red, blue, green (6-color Spectra)
  • GRAYSCALE_4 - 4-level grayscale (2-bit)
  • SEVEN_COLOR - 7-color Spectra/ACeP (BWGBRY + orange)
  • BWGBRY_SPLIT - Spectra 6, split left/right plane packing (dual-CS panels)
  • GRAYSCALE_16 - 16-level grayscale (4-bit, e.g. Waveshare 6" HD)
  • GRAYSCALE_8 - 8-level grayscale (3-bit, e.g. Inkplate 10). Library-local value 9 — NOT a firmware wire value; never send it to a device as color_scheme.

Dithering Algorithms

Algorithm Quality Speed Best For
NONE Lowest Fastest Testing, simple graphics
ORDERED Low Very Fast Patterns, textures
SIERRA_LITE Medium Fast Quick results
BURKES Good Medium General purpose (default)
FLOYD_STEINBERG Good Medium Popular standard
SIERRA High Medium Balanced quality
ATKINSON Good Medium High contrast, artistic
STUCKI Very High Slow Maximum quality
JARVIS_JUDICE_NINKE Highest Slowest Smooth gradients
DIZZY Good Medium Error diffusion with pseudo-random traversal — no directional structure. Ignores serpentine. Algorithm by Liam Appelbe

Usage Examples

Basic Usage

from PIL import Image
from epaper_dithering import dither_image, ColorScheme, DitherMode

img = Image.open("photo.jpg")

result = dither_image(img, ColorScheme.BWR, mode=DitherMode.FLOYD_STEINBERG)
result.save("dithered.png")

All Color Schemes

# Black and white only
dithered = dither_image(img, ColorScheme.MONO)

# Black, white, and red (common for e-paper tags)
dithered = dither_image(img, ColorScheme.BWR)

# Grayscale (4 levels)
dithered = dither_image(img, ColorScheme.GRAYSCALE_4)

# 6-color display (Spectra)
dithered = dither_image(img, ColorScheme.BWGBRY)

Advanced Options

Serpentine Scanning

By default, error diffusion algorithms use serpentine scanning (alternating scan direction per row) to reduce directional artifacts and "worm" patterns. You can disable this for raster scanning:

# Default: serpentine scanning (recommended for best quality)
result = dither_image(img, ColorScheme.BWR, mode=DitherMode.FLOYD_STEINBERG, serpentine=True)

# Disable serpentine for raster scanning (left-to-right only)
result = dither_image(img, ColorScheme.BWR, mode=DitherMode.FLOYD_STEINBERG, serpentine=False)

Note: The serpentine parameter only affects error diffusion algorithms (Floyd-Steinberg, Burkes, Atkinson, Sierra, Sierra Lite, Stucki, Jarvis-Judice-Ninke). It has no effect on NONE and ORDERED modes.

Tone Compression (Dynamic Range)

E-paper displays can't reproduce the full luminance range of digital images. Pure white on a display is much darker than (255, 255, 255), and pure black is lighter than (0, 0, 0). Without tone compression, dithering tries to represent unreachable brightness levels, causing large accumulated errors and noisy output.

Tone compression remaps image luminance to the display's actual range before dithering. Based on fast_compress_dynamic_range() from esp32-photoframe by aitjcize. It is off by default (tone=0.0) and only applies when using measured ColorPalette instances:

  • 0.0 / "off" (default): Disable tone compression.
  • "auto": Analyze the image histogram and remap its actual luminance range to the display range. Maximizes contrast by stretching only the used range.
  • 0.0-1.0: Fixed linear compression strength. 1.0 maps the full [0,1] range to the display range.
from epaper_dithering import dither_image, SPECTRA_7_3_6COLOR, DitherMode

# Default: tone compression off
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.FLOYD_STEINBERG)

# Auto tone compression
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.FLOYD_STEINBERG, tone="auto")

# Fixed linear compression
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.FLOYD_STEINBERG, tone=1.0)

# Disable tone compression explicitly
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.FLOYD_STEINBERG, tone="off")

Note: tone has no effect when using theoretical ColorScheme palettes (e.g., ColorScheme.BWR), since their black/white values already span the full range.

Gamut Compression

Some images contain highly saturated colors that a limited palette simply cannot reproduce (e.g. vivid purple on a BWGBRY display). Without gamut compression, the ditherer tries to mix palette colors to approximate the hue — often producing muddy results. Gamut compression pre-blends out-of-gamut pixels toward the nearest palette color before dithering, giving error diffusion a better starting point.

# Default: gamut compression off
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.BURKES)

# Auto gamut compression
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.BURKES, gamut="auto")

# Fixed strength (0.7–0.9 recommended for very saturated images)
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.BURKES, gamut=0.8)

# Disable
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.BURKES, gamut="off")

Note: gamut also has no effect for theoretical ColorScheme palettes.

DBS Refinement

Direct Binary Search (DBS) runs after dithering and improves the result directly: it repeatedly changes pixels to other inks, or swaps them with neighbours, whenever that lowers the error as perceived through a model of the eye — sharp for brightness, blurrier for colour, scaled to your viewing distance and panel resolution. It typically cuts visible tone and colour error noticeably, at the cost of runtime (about 0.3 s per 800×480 panel on a multi-core machine, versus ~30 ms for plain dithering). The dither call releases the GIL, so other threads keep running meanwhile.

from epaper_dithering import DbsParams

# Default viewing geometry: 40 cm from a ~127 ppi panel (7.3" 800×480)
result = dither_image(img, SPECTRA_7_3_6COLOR, dbs=True)

# Match your setup: a wall-mounted 13.3" panel viewed from 1.5 m
result = dither_image(img, SPECTRA_7_3_6COLOR, dbs=DbsParams(viewing_distance_cm=150, ppi=150))

max_passes (default 10) caps the number of refinement passes; most of the improvement happens in the first few. Pixels pinned to exact display colors (see below) are never changed by DBS.

DitherMode.NONE performs direct nearest-color mapping without error diffusion or ordered dithering. It is intended for already-quantized graphics, not continuous-tone photos: because there is no error diffusion, on limited palettes (especially BWR) a continuous-tone image or a large flat mid-tone area can map to an unexpected ink — for example, a solid mid-gray region can render as solid red. Use an error-diffusion mode (e.g. FLOYD_STEINBERG, BURKES) for photographic input. For built-in measured palettes, pure canonical display colors such as (255, 0, 0) map directly to the corresponding firmware palette index even though matching uses measured display RGB values.

For built-in measured palettes, exact canonical display colors are also protected in ordered and error-diffusion modes when pre-processing is off: an image made entirely of display colors is returned as a direct palette-index map, and exact display-color pixels inside a mixed image keep their canonical index instead of being rematched to the measured RGB palette. Pre-processing runs before that exact-pixel check, so explicit tone="auto"/gamut="auto" or other adjustments may intentionally alter those pixels first.

Per-Image Tonal Adjustments

exposure, saturation, shadows, and highlights let you tweak the image before tone/gamut compression. Each is independent — set just the ones you want. All default to identity (no effect).

# Brighten and boost saturation for vivid output
result = dither_image(img, SPECTRA_7_3_6COLOR, exposure=1.3, saturation=1.4)

# Lift shadows on a dark image
result = dither_image(img, SPECTRA_7_3_6COLOR, shadows=0.5)

# Compress highlights on an overexposed image
result = dither_image(img, SPECTRA_7_3_6COLOR, highlights=0.7)

# Combine for a "vivid photo" look
result = dither_image(img, SPECTRA_7_3_6COLOR, exposure=1.1, saturation=1.3, shadows=0.3, highlights=0.5)

Pipeline order: exposure → saturation → shadows/highlights → tone → gamut → dither.

RGBA Images

Images with transparency (RGBA mode) are automatically composited on a white background, matching the typical appearance of e-paper displays:

# RGBA images are handled automatically
rgba_img = Image.open("transparent.png")  # Has alpha channel
result = dither_image(rgba_img, ColorScheme.BWR)
# Transparent areas become white

Measured Display Colors

For the most accurate dithering, use measured RGB values from your specific e-paper display instead of theoretical pure RGB colors.

Why Measure?

E-paper displays use reflective technology, making colors 30-87% darker than pure RGB:

  • Pure RGB White: (255, 255, 255) → Real display: ~(180-200, 180-200, 180-200)
  • Pure RGB Red: (255, 0, 0) → Real display: ~(115-125, 10-20, 0-10)

Using measured values ensures dithered images match your display's actual appearance.

Using Pre-defined Measured Palettes

The library includes measured palettes for common displays:

from epaper_dithering import dither_image, SPECTRA_7_3_6COLOR, DitherMode

# Use measured palette for Spectra 7.3" 6-color display
result = dither_image(img, SPECTRA_7_3_6COLOR, mode=DitherMode.FLOYD_STEINBERG)

Available measured palettes:

  • SPECTRA_7_3_6COLOR - 7.3" Spectra™ 6-color (BWGBRY), v1 measurement
  • SPECTRA_7_3_6COLOR_V2 - 7.3" Spectra™ 6-color (BWGBRY), v2 measurement (recommended)
  • MONO_4_26 - 4.26" Monochrome
  • BWRY_4_2 - 4.2" BWRY
  • BWRY_3_97 - 3.97" BWRY
  • SOLUM_BWR - Solum BWR
  • HANSHOW_BWR - Hanshow BWR
  • HANSHOW_BWY - Hanshow BWY

See CALIBRATION.md for measuring your specific display.

Creating Custom Measured Palettes

Measure your display and create a custom palette:

from epaper_dithering import dither_image, ColorPalette, DitherMode

# Your measured RGB values
my_display = ColorPalette(
    colors={
        "black": (5, 5, 5),  # Measured from your display
        "white": (185, 190, 180),  # Much darker than (255,255,255)
        "red": (120, 15, 5),  # Much darker than (255,0,0)
    },
    accent="red",
)

# Use it directly
result = dither_image(img, my_display, mode=DitherMode.FLOYD_STEINBERG)

Built-in measured palettes store the canonical firmware ColorScheme they are based on. Custom measured palettes may omit it; in that case direct mapping and exact-color bypass use the custom measured RGB values.

Measurement Quick Start

  1. Display full-screen color patches on your e-paper
  2. Photograph in consistent lighting (avoid shadows/reflections)
  3. Sample RGB values from center using photo editor
  4. Average 5+ samples per color
  5. Create ColorPalette with measured values

See docs/CALIBRATION.md for detailed measurement procedures, including camera calibration, colorimeter usage, and validation techniques.

Development

# Install dependencies (requires Rust toolchain: https://rustup.rs)
uv sync --all-extras

# Build and install the Rust extension (required before running tests)
uv run maturin develop --release

# Run tests
uv run pytest tests/ -v

# Run tests with coverage
uv run pytest tests/ --cov=src/epaper_dithering

# Lint
uv run ruff check src/ tests/

# Type check
uv run mypy src/epaper_dithering

Credits

Measured color calibration techniques and reference measurements inspired by:

  • esp32-photoframe by aitjcize - Measured palette methodology, dynamic range compression algorithm, and reference values for Waveshare 7.3" displays

Metadata

Release files for epaper-dithering 6.1.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 epaper-dithering 6.1.0
File Size Uploaded
epaper_dithering-6.1.0.tar.gz 99.7 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for epaper-dithering 6.1.0
File
epaper_dithering-6.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux musl 1.2+ x86-64 Details
epaper_dithering-6.1.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux musl 1.2+ ARM64 Details
epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ ARMv7l Details
epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ ARM64 Details
epaper_dithering-6.1.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.15 CPython 3.15 Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 Details
epaper_dithering-6.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64 Details
epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l Details
epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
epaper_dithering-6.1.0-cp314-cp314-win_amd64.whl CPython 3.14 CPython 3.14 Windows x86-64 Details
epaper_dithering-6.1.0-cp314-cp314-musllinux_1_2_x86_64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ x86-64 Details
epaper_dithering-6.1.0-cp314-cp314-musllinux_1_2_aarch64.whl CPython 3.14 CPython 3.14 Linux musl 1.2+ ARM64 Details
epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARMv7l Details
epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
epaper_dithering-6.1.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 11.0+ ARM64 Details
epaper_dithering-6.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
epaper_dithering-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
epaper_dithering-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ ARM64 Details
epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARMv7l Details
epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
epaper_dithering-6.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details
epaper_dithering-6.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
epaper_dithering-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
epaper_dithering-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ ARM64 Details
epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARMv7l Details
epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
epaper_dithering-6.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64, macOS 10.12+ x86-64, macOS 10.12+ universal2 (ARM64, x86-64) Details
epaper_dithering-6.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
epaper_dithering-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
epaper_dithering-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ ARM64 Details
epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARMv7l Details
epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
epaper_dithering-6.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details

Total release size: 19.9 MB

Release files / epaper_dithering-6.1.0.tar.gz

Download URL epaper_dithering-6.1.0.tar.gz
Size 99.7 kB
Tags Source
SHA-256 checksum
How to use checksums
e2757fa9e161965e7324e77d7481254ec59a271d344fe94f9e73b676bfc9b541
BLAKE2b-256 checksum
How to use checksums
3ce0037aa946ec7fe0742336eb8b92b8942e1a69682d9941e7841110984620d0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl

Download URL epaper_dithering-6.1.0-pp311-pypy311_pp73-musllinux_1_2_x86_64.whl
Size 632.7 kB
Tags Linux musl 1.2+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
5bdf156543147ec76460d090fe0bfc5f43b8932926562a3042ebf36b09bea9c6
BLAKE2b-256 checksum
How to use checksums
2e9faacb7ba244221dcf34582060e90f9bbe82d482f7770ffdbf002b6c792726
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl

Download URL epaper_dithering-6.1.0-pp311-pypy311_pp73-musllinux_1_2_aarch64.whl
Size 599.9 kB
Tags Linux musl 1.2+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
bed43fb3f560a226b6c8b8b59bd6f94152c9c855948b5c35e5fb8a39d5764f49
BLAKE2b-256 checksum
How to use checksums
9fcc8b93d4a84692c77fa34a3389e64b600f25784a79f8f81de7f401f97bcd8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 429.2 kB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
a9e876b54ddea359b6954d21c4e880e017e3fbe72815e1a032fbb487348b94db
BLAKE2b-256 checksum
How to use checksums
54b1103e5b447c09c3e0f357ef92f0195271a4bb942dbccabd72b05352089fb5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 423.5 kB
Tags Linux glibc 2.17+ ARMv7l PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
f4e730811d2287fefcaee31976449691f1854a92df64ae23ce09a6e9182f0ab5
BLAKE2b-256 checksum
How to use checksums
a363fcc0fe9262ae7bebe4533f38ceb96e2e195e17d5211e577b0f827eb89860
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL epaper_dithering-6.1.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 422.1 kB
Tags Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
9d4435afb65fed610fe41ad79a7ea2edac917e83bde5e3c1680c2d63c971e0d0
BLAKE2b-256 checksum
How to use checksums
404f087d4b31259f2fad0f89f72c455cb227967753501cae5cdd10ab896e935c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 424.9 kB
Tags CPython 3.15 CPython 3.15 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
03f61d95c87a39d8acd67ae57dc97751065d27626f91d4ae73f2a497c3ca1070
BLAKE2b-256 checksum
How to use checksums
ca9cd2bf88e96949056ce7763dfde10c5da49c99b2bf2a3d2317b1e9afec0998
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 426.0 kB
Tags CPython 3.15 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
9da326255ed8fc9bd98f4f74d13b265ca20112a597005ac31fff2883a6d303a5
BLAKE2b-256 checksum
How to use checksums
b1b4c2a20352ca421117170a5102f9b721d9eb10a4d60c9d8c638d9a610343f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Size 627.3 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
b35f8a74508f0aa6d30e50cccdf67dd8625354c3112202e01d7054532705083a
BLAKE2b-256 checksum
How to use checksums
0b583262c37d7c9b5668b59aba2fc911bbfa2d4d5ee4c6b4d336a32c335c7281
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Size 593.3 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
f6cdca487dce18aaafbb55be908a8b8fe970fa68f9e85518ed39622c70a0060f
BLAKE2b-256 checksum
How to use checksums
a59ed1f678c1d109a21d7075179bdea95102aa741f4adca3a003b8e2eb864a80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 424.9 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7dcd8192c03e656a6c5bcff2505a6bae83ff79acbe3077b639145abf4d90c328
BLAKE2b-256 checksum
How to use checksums
0a4182466af1abc125c155a167558fca95874009fb2a93bb3a669923b6abb9f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 417.6 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
50a86207330a3ebd874b7e71d0e38a9cd43d507dd75aba9362644d508588cb92
BLAKE2b-256 checksum
How to use checksums
7972a909700918defb342f1b1a4934686a5fd27da64664b95ee42ff56626f4aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 416.4 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
55cadc18fe32749ea76615a0afbba7b4f6fe6943b31850652b0f137fd77d7800
BLAKE2b-256 checksum
How to use checksums
1b07af0e4690fce9c7be9349b29dce29d27b58f608e2fb68a31eb158ea6ab4af
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-win_amd64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-win_amd64.whl
Size 259.2 kB
Tags CPython 3.14 Windows x86-64
SHA-256 checksum
How to use checksums
f9233d32f3af76ff7924e64227457d968d1c891cd047deea6adf65f1ab1da4be
BLAKE2b-256 checksum
How to use checksums
149b4fed4d154d19c9eaaf39f628f954e94c2b1ff6c3d374553a777d4523cac0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-musllinux_1_2_x86_64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Size 629.1 kB
Tags CPython 3.14 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
189e6f8d912014bc1ef74d2f3f880bda2765157df5b606261a37fffd61bf81f5
BLAKE2b-256 checksum
How to use checksums
9f75ddbacf2db0790f8a0bb40cfb17ee3247c69a7165c1a22f3a2355838bb09b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-musllinux_1_2_aarch64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
Size 595.6 kB
Tags CPython 3.14 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
4369f2b828c5da010cb21a3207ce0c437075833cf2ba4ea8655e1a303943899a
BLAKE2b-256 checksum
How to use checksums
b8086625d4cde66e0a1a48b4fb659fc4eabf4931c75770702d3da4a3db54615a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 426.2 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
781065d19217370b93c99d2d5fd586075fa2b528344a7c0fb38c2d07a299f93d
BLAKE2b-256 checksum
How to use checksums
8908a7651798f20262c1aa93abbe6cdd2e77dae9dc805fdb87f36d9848c9a05b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 419.7 kB
Tags CPython 3.14 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
f2dba32c19b6052bc6a8228a6826daf5e88d34177f2564e8259489829b6bea53
BLAKE2b-256 checksum
How to use checksums
39993b88f63f72c9ee09cf5977406aa9baaa2c1a18b4f6ccfc555e3e031bc959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 419.0 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2ae45a778f497187b974508fced2579415bf01324dcbd654489f5821379112c9
BLAKE2b-256 checksum
How to use checksums
3d91e76e37783a5f04de5a8b1000a974693042d179062df0bfac3088d61bd69f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL epaper_dithering-6.1.0-cp314-cp314-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 727.9 kB
Tags CPython 3.14 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7fd826dd142827f21e1a5b70fb3b77886dae981ff0dba24a5162ab6c939476eb
BLAKE2b-256 checksum
How to use checksums
dcec68d877115b1eef268a06d8df2e134b240ee36227fedf7d60825bae8bf3dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-win_amd64.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-win_amd64.whl
Size 259.3 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
da88e9d30c11688ac9db5bd7b0b40d4fc7b355c76480aa1b38bd42d49b914518
BLAKE2b-256 checksum
How to use checksums
055045f3a511291711de150c7f13a1172fc6785d646e784ca5bb83f2fcb4f07e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Size 629.6 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
acb1d054772304967860ec547b0e1cabff0068c3690803a88a185a8d8ffe2bf3
BLAKE2b-256 checksum
How to use checksums
bb6e123c73867e109ad272d667a57bb2b15c70f5030b982a978805c143223e74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Size 597.0 kB
Tags CPython 3.13 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
2259a285f538283379d1d4a35001a1f17a388e0fee3e35715a3e7b5adfa404b5
BLAKE2b-256 checksum
How to use checksums
7e37ba3e94f3807d939859ce18c2d9abc7b22d2e03f73dfe48e70db871f5c6aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 426.3 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
b80cb7c8ab55ac04e924b27cb6aec71904d5c2de93796d6f528fc0101acc0677
BLAKE2b-256 checksum
How to use checksums
b2d25185547ddb51b2e0736468df2533989241b8e654714f7e23dc06b7d49dc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 420.2 kB
Tags CPython 3.13 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
1f532e2e08bff7f60d1eac5cadbf6a890d2577131add639431b877ead46f5c4c
BLAKE2b-256 checksum
How to use checksums
3c78082caa889beac89b84d5430c57d7e936ad9fc75c468553e3191f8752de2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 420.2 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
36a7f9da6620d10d05ccca533fe944bb3e1fa7e950fe00e1052a55dbe00c85bd
BLAKE2b-256 checksum
How to use checksums
e67be7954999f4023ea85da2c50826194d0bcb8c587a67c30b93aca4f081924f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL epaper_dithering-6.1.0-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 728.1 kB
Tags CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
16bda52af7da4070589c17736aac448cb0996d93d0e281c728af9a2860d7e076
BLAKE2b-256 checksum
How to use checksums
31dd1b80b0cbdaefedd7018827ddd546fd956a5f760171567c7f31e899b5cad5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-win_amd64.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-win_amd64.whl
Size 259.9 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
996b56c4606c91f4c0f608b145c28eccf66bc9ffc427c363b430e2475c1c6ddc
BLAKE2b-256 checksum
How to use checksums
55fcb38c5cc782f9923ce68cf1fc711d4953e74801d11eb9b22fbd43cbf7b719
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Size 630.1 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f0b4db0c0a25a679490d452feba50ce39b0998a67b6f727c1628379111acd8b4
BLAKE2b-256 checksum
How to use checksums
5ee294d3ee4ed0679acca5b1fd87f7210908fd33d4db4845f1487733893dda49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Size 597.7 kB
Tags CPython 3.12 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
8778f92b5e6ca18cb8f933755d2b2b136617977df9665d50ed6cafd4193ab701
BLAKE2b-256 checksum
How to use checksums
12b4e6d8d1c730a02d63954e28bb1e809aa346258eb7327a3a95928359f6e7ff
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 426.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
584690ddb3f6f35db38d469eeebe7304e63ec8b03dd2a22ad22f3f73840c7568
BLAKE2b-256 checksum
How to use checksums
c38a94b9fffc97d3793a357705cebf8e93cd887319c588c3f577b6a5c68ee488
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 420.5 kB
Tags CPython 3.12 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
e98e5524418f801274aa35bffd546d40b79e3124d1ce5e1bf78add48aab91424
BLAKE2b-256 checksum
How to use checksums
be86d9f004c9aa8719b157ff862d75ea397239888c3895e4b388eb28dd656e96
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 420.4 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
2f442f877f29f2f84fffb31042791b117328387361c926ada3279d068aaf82ec
BLAKE2b-256 checksum
How to use checksums
e23cc1028092a46ef641d8656832f4f53716a1ca93eeadc2ce162f9218e25e6d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL epaper_dithering-6.1.0-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 729.2 kB
Tags CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5cd365eb39089f8294e96c0e25d7fd1888ce310a34934a22b3271365e0fea288
BLAKE2b-256 checksum
How to use checksums
c89d550e364ff819ae349ab5b31092f0dceb868effcaf1929eabbcd0d54c366d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-win_amd64.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-win_amd64.whl
Size 261.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
21c86aefd82a13f0ac594b62be0f7707754889526a915aa0f5db86700c882f74
BLAKE2b-256 checksum
How to use checksums
11ddd44ecf3c3295274aaf4250932e4beb6064b7cd00fd82bd33bddd3b38dfc9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Size 630.9 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
54c1e99bd57faacb0cab91e027cff6e1aa4cb7ef0f2bf237ac496ee9dcae9871
BLAKE2b-256 checksum
How to use checksums
fdfb8d1143202898d23cb79daaf8f90f4901ed1190c88fcd773d19a1b272b792
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Size 598.9 kB
Tags CPython 3.11 Linux musl 1.2+ ARM64
SHA-256 checksum
How to use checksums
dd8a872ed9b815fb52071e06684311854b361b7e8ca3e0e8abcb21274262d0d5
BLAKE2b-256 checksum
How to use checksums
3bbe5c8bcccd9046964c7a55c6963607d6c532638ef4e2c2c329ec6e2ff97c57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 428.0 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dd7fbbbbef4d80548c280df6ba8fe5ad6d876fbc70efc1535f3883a54b8a05b3
BLAKE2b-256 checksum
How to use checksums
ec4c8007b74e3893dba853f2b226bf7f33dae724dda2aa3c0ac7d99a241762d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl
Size 421.4 kB
Tags CPython 3.11 Linux glibc 2.17+ ARMv7l
SHA-256 checksum
How to use checksums
06b61d9201399c7d114e4d378db4124b1344dc20e8bda737491897758536c50a
BLAKE2b-256 checksum
How to use checksums
8494c9e5f9eafc1ad1c753c14088d4d759f4d58d52ba9e1976683a4bd0650d31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 421.3 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
37ecde6b3bbdc55005ad4c86439c92e8dbcf301422a2df41bf2b2b260cbb498c
BLAKE2b-256 checksum
How to use checksums
62af33c1042bc7cfdecd568e4feef5fd949c0f26c693ed5df8db64116292f628
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release files / epaper_dithering-6.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL epaper_dithering-6.1.0-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 731.3 kB
Tags CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a6158b4ef5c10b36e14ebc7d0e137cc25bd911220512dad0008a47270d8153df
BLAKE2b-256 checksum
How to use checksums
f2be10248bb35f646ddb67dc4b68e7c0b1525dad99259878b4938c58ac55cad7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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 Oct 7, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

6.1.0 This release

41 release files

6.0.0

41 release files

5.0.7

41 release files

5.0.6

43 release files

5.0.5

37 release files

5.0.4

30 release files

5.0.1

30 release files

5.0.0

23 release files

4.0.0

23 release files

0.6.4

2 release files

0.6.3

1 release file

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.1.0

2 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