Skip to main content

Fast Python bindings for libjxl and libjpeg-turbo with GIL-free encoding/decoding and native async support.

Project description

pylibjxl

Fast Python bindings for JPEG XL (libjxl) and JPEG (libjpeg-turbo)

CI PyPI version Python versions License: BSD 3-Clause


pylibjxl provides efficient, high-performance Python bindings for libjxl and libjpeg-turbo. Built with pybind11, it features GIL-free encoding/decoding and native async support for maximum throughput.

✨ Key Features

  • 🚀 High Performance — C++ core releases the GIL during heavy computation.
  • 📦 Metadata Excellence — Full support for EXIF, XMP, and JUMBF metadata.
  • Async-First — Native asyncio integration for non-blocking I/O.
  • 🖼️ NumPy Native — Directly encode from and decode to ndarray (RGB/RGBA).
  • 🔄 Lossless JPEG Transcoding — Bit-perfect JPEG ↔ JXL roundtrips.
  • 🎯 Thread-Safe — Persistent thread pools via context managers.

🛠️ Installation

Install from PyPI

# Recommended: Using uv
uv pip install pylibjxl

# Or via standard pip
pip install pylibjxl

Install from Source

uv pip install git+https://github.com/twn39/pylibjxl.git --recursive

Quick Start

🖼️ Basic In-Memory Operations

import numpy as np
import pylibjxl

# Create a test image (Height, Width, Channels)
image = np.random.randint(0, 256, (512, 512, 3), dtype=np.uint8)

# Encode to JXL bytes
data = pylibjxl.encode(image, effort=7, distance=1.0)

# Decode back to NumPy array
decoded = pylibjxl.decode(data)

💾 File I/O & Metadata

pylibjxl handles EXIF and XMP metadata seamlessly.

# Write an image with EXIF metadata
exif_data = b"Raw EXIF bytes..."
pylibjxl.write("output.jxl", image, effort=9, exif=exif_data)

# Read image and its metadata
img, meta = pylibjxl.read("output.jxl", metadata=True)
print(f"Loaded image shape: {img.shape}")
print(f"EXIF size: {len(meta.get('exif', b''))} bytes")

🔄 Lossless JPEG Transcoding

Reduce JPEG file size by ~20% without losing a single bit of information. The resulting .jxl can be restored to the exact original .jpg.

# Convert JPEG to JXL losslessly
pylibjxl.convert_jpeg_to_jxl("input.jpg", "input.jxl")

# Restore the bit-identical original JPEG
pylibjxl.convert_jxl_to_jpeg("input.jxl", "restored.jpg")

⚡ Async Support

High-performance non-blocking I/O for web servers and data pipelines.

import asyncio

async def main():
    # Async encoding
    data = await pylibjxl.encode_async(image, distance=0.0)
    
    # Async file reading
    img = await pylibjxl.read_async("input.jxl")

asyncio.run(main())

🏗️ Batch Processing (Context Manager)

Using the JXL context manager maintains a persistent thread pool, providing a significant speedup for batch operations.

# High-performance batch conversion
with pylibjxl.JXL(effort=7) as jxl:
    for i in range(100):
        img = jxl.read(f"input_{i}.jxl")
        # Process and save as high-quality JPEG
        jxl.write_jpeg(f"output_{i}.jpg", img, quality=95)

📈 Performance & Stability

pylibjxl is engineered for high-performance production environments where throughput and responsiveness are critical.

🚀 Key Benchmarks

Tested on Apple M2 Pro (1440x960 RGB Image)

JXL Encoding (pylibjxl vs. pillow-jxl-plugin)

Both libraries are tested using the same effort parameter to ensure a fair comparison.

Effort Level pylibjxl pillow-jxl-plugin Scaling
Effort 1 (Fastest) ~15 ms ~13 ms Low latency
Effort 4 (Balanced) ~26 ms ~22 ms Optimal mix
Effort 7 (Default) ~105 ms ~95 ms Best compression

Decoding Performance

Format pylibjxl pillow-jxl-plugin / PIL Improvement
JXL Decode 9.4 ms 11.7 ms ~20% Faster
JPEG Decode 16.8 ms 18.3 ms ~8% Faster

🛠️ Architecture Highlights

  • GIL-Free Execution: The C++ core releases Python's Global Interpreter Lock (GIL) during all heavy encoding and decoding tasks. This allows for true multi-core parallelism when using Python's threading or concurrent.futures.
  • Native Async Support: Unlike standard Pillow-based plugins, pylibjxl provides native asyncio bindings. This prevents event-loop blocking in high-concurrency web servers (e.g., FastAPI, Tornado).
  • Zero Memory Leaks: Extensive stability testing (500+ consecutive rounds) shows that memory usage stabilizes after initial warm-up, with no ongoing growth.
  • Optimized Memory Management:
    • Pre-allocation: Uses JxlEncoderCalculateMaxCompressedSize to allocate precise buffers, eliminating expensive runtime reallocations.
    • Runner Reuse: The JXL context manager maintains a persistent thread pool, eliminating the overhead of creating/destroying threads for every call.

[!IMPORTANT] For maximum parallel throughput in multi-threaded environments, use the free functions (pylibjxl.encode, pylibjxl.decode). For maximum serial speed in batch processing, use the JXL context manager to reuse the thread pool.


📂 API Reference

🖼️ JXL In-Memory Operations

encode(input, effort=7, distance=1.0, lossless=False, *, exif=None, xmp=None, jumbf=None) -> bytes

async encode_async(...) -> bytes

Encodes a NumPy array into JPEG XL format.

Parameter Type Default Description
input ndarray required uint8 array of shape (H, W, 3) or (H, W, 4)
effort int 7 Speed/size tradeoff [1-10]. 1=fastest, 10=best compression.
distance float 1.0 Perceptual quality [0.0-25.0]. 0.0=lossless, 1.0=visually lossless.
lossless bool False If True, enables mathematical lossless mode.
exif bytes None Optional raw EXIF metadata.
xmp bytes None Optional raw XMP (XML) metadata.
jumbf bytes None Optional raw JUMBF metadata.
# Synchronous encoding
data = pylibjxl.encode(image, effort=9, lossless=True)

# Asynchronous encoding
data = await pylibjxl.encode_async(image, distance=0.5)

decode(data, *, metadata=False) -> ndarray | tuple[ndarray, dict]

async decode_async(...) -> ndarray | tuple[ndarray, dict]

Decodes JPEG XL bytes back into a NumPy array.

Parameter Type Default Description
data bytes required JPEG XL encoded bytes.
metadata bool False If True, returns a tuple including a metadata dictionary.
# Basic decode
img = pylibjxl.decode(jxl_bytes)

# Decode with metadata
img, meta = await pylibjxl.decode_async(jxl_bytes, metadata=True)
print(f"EXIF size: {len(meta.get('exif', b''))} bytes")

💾 JXL File I/O

read(path, *, metadata=False) / async read_async(...)

Reads a .jxl file from disk and decodes it.

Parameter Type Default Description
path `str Path` required
metadata bool False Whether to return metadata alongside the image.
img = pylibjxl.read("input.jxl")
img, meta = await pylibjxl.read_async("input.jxl", metadata=True)

write(path, image, ...) / async write_async(...)

Encodes a NumPy array and writes it directly to a .jxl file.

Parameter Type Default Description
path `str Path` required
image ndarray required The image data to encode.
... Supports all parameters from encode().
pylibjxl.write("output.jxl", image, effort=7, distance=1.0)
await pylibjxl.write_async("output.jxl", image, lossless=True)

📷 JPEG Support (libjpeg-turbo)

encode_jpeg(input, quality=95) -> bytes / async encode_jpeg_async(...)

Encodes a NumPy array to JPEG bytes using high-speed libjpeg-turbo.

Parameter Type Default Description
input ndarray required uint8 array of shape (H, W, 3).
quality int 95 JPEG quality factor [1-100].
jpeg_bytes = pylibjxl.encode_jpeg(image, quality=90)

decode_jpeg(data) -> ndarray / async decode_jpeg_async(...)

Decodes JPEG bytes to a NumPy RGB array.

Parameter Type Default Description
data bytes required JPEG encoded bytes.
image = pylibjxl.decode_jpeg(jpeg_bytes)

read_jpeg(path) / write_jpeg(path, image, quality=95)

Stand-alone JPEG file I/O operations using libjpeg-turbo.

img = pylibjxl.read_jpeg("photo.jpg")
pylibjxl.write_jpeg("output.jpg", img, quality=85)

🔄 Lossless Transcoding (JPEG ↔ JXL)

jpeg_to_jxl(data, effort=7) -> bytes / async jpeg_to_jxl_async(...)

Transcodes raw JPEG bytes into a JPEG XL container losslessly.

Parameter Type Default Description
data bytes required Original JPEG bytes.
effort int 7 Transcoding effort [1-10].
jxl_data = pylibjxl.jpeg_to_jxl(jpeg_bytes)

jxl_to_jpeg(data) -> bytes / async jxl_to_jpeg_async(...)

Restores the original JPEG bytes from a transcoded JXL file.

Parameter Type Default Description
data bytes required Transcoded JPEG XL bytes.
original_jpeg = pylibjxl.jxl_to_jpeg(jxl_data)

convert_jpeg_to_jxl(in_path, out_path) / convert_jxl_to_jpeg(...)

File-to-file versions of the above transcoding operations.

pylibjxl.convert_jpeg_to_jxl("input.jpg", "output.jxl")
pylibjxl.convert_jxl_to_jpeg("output.jxl", "restored.jpg")

🏗️ Context Managers

JXL(effort=7, distance=1.0, lossless=False)

AsyncJXL(...)

Sync and Async context managers that maintain a persistent thread pool.

Parameter Type Default Description
effort int 7 Default effort for operations.
distance float 1.0 Default distance for operations.
lossless bool False Default lossless mode.
with pylibjxl.JXL(effort=7) as jxl:
    # Uses persistent threads for all methods
    img = jxl.read("input.jxl")
    jxl.write("output.jxl", img, distance=0.5)

ℹ️ System Information

Function Return Type Description
version() dict Returns library version (major, minor, patch).
decoder_version() int Returns libjxl decoder version integer.
encoder_version() int Returns libjxl encoder version integer.
print(f"pylibjxl version: {pylibjxl.version()}")

📜 License

BSD 3-Clause License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylibjxl-0.2.1.tar.gz (58.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pylibjxl-0.2.1-cp314-cp314-win_amd64.whl (1.9 MB view details)

Uploaded CPython 3.14Windows x86-64

pylibjxl-0.2.1-cp314-cp314-win32.whl (1.5 MB view details)

Uploaded CPython 3.14Windows x86

pylibjxl-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pylibjxl-0.2.1-cp314-cp314-macosx_14_0_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.14macOS 14.0+ x86-64

pylibjxl-0.2.1-cp314-cp314-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.14macOS 14.0+ ARM64

pylibjxl-0.2.1-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

pylibjxl-0.2.1-cp313-cp313-win32.whl (1.5 MB view details)

Uploaded CPython 3.13Windows x86

pylibjxl-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pylibjxl-0.2.1-cp313-cp313-macosx_14_0_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 14.0+ x86-64

pylibjxl-0.2.1-cp313-cp313-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 14.0+ ARM64

pylibjxl-0.2.1-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

pylibjxl-0.2.1-cp312-cp312-win32.whl (1.5 MB view details)

Uploaded CPython 3.12Windows x86

pylibjxl-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pylibjxl-0.2.1-cp312-cp312-macosx_14_0_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 14.0+ x86-64

pylibjxl-0.2.1-cp312-cp312-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 14.0+ ARM64

pylibjxl-0.2.1-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

pylibjxl-0.2.1-cp311-cp311-win32.whl (1.5 MB view details)

Uploaded CPython 3.11Windows x86

pylibjxl-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (2.7 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.27+ x86-64manylinux: glibc 2.28+ x86-64

pylibjxl-0.2.1-cp311-cp311-macosx_14_0_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 14.0+ x86-64

pylibjxl-0.2.1-cp311-cp311-macosx_14_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 14.0+ ARM64

File details

Details for the file pylibjxl-0.2.1.tar.gz.

File metadata

  • Download URL: pylibjxl-0.2.1.tar.gz
  • Upload date:
  • Size: 58.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b71ffbdb87c7ceb77b02e2fbf61813ed2b844a3821e1d4ef653b0a6130bc086d
MD5 be07922527e51eaa6f0291311e7dc3ce
BLAKE2b-256 fda55578e0f76add434b4932733817546aa1439f5a11148fd26b097a4c761f41

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1.tar.gz:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.9 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 82a701be3119d67521c8c52155d21b9064cf81b92c7cc7747b8cbd00260dbdb3
MD5 2a2a7045524ab689a2cb6ae7c076b944
BLAKE2b-256 bfcc258a9390f00fe0d3ea4e569c6fe990becb493b2517dc6624534068944c46

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp314-cp314-win_amd64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp314-cp314-win32.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp314-cp314-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 f25d0e6b0a9f2709dcf60d72cbcf4f1f621875e146bf650269111e1f3db7b061
MD5 2b87da2ed7c4ba31329f0d30ba06f482
BLAKE2b-256 c7854498454996d448caab52c79e177dba3fbde7a5ff75ae13cbc6bfca5179d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp314-cp314-win32.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d181003e03421af9ba159d079d2d2c2cb9e15abefc2e99fda91142b7e9dc70a9
MD5 b65dfe4f76cd0a35c78273e9a4a87d7c
BLAKE2b-256 db0fa35aa2de4699957fc3ee4f00c6e9116352bb998e2fa82975630ea1249596

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp314-cp314-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp314-cp314-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp314-cp314-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 01f441e112ed93d373052ad7f12cd433a27715f2a6eef47d78dacd42f63a749d
MD5 4af977816825902c9065a9bedcc7a684
BLAKE2b-256 1e56b5bc439da4cc1146612914586c1ad25b253f2bfbb98747cfe2cfc09d7b9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp314-cp314-macosx_14_0_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp314-cp314-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp314-cp314-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 080251760de0cc0eec4e70d9a2e0d905e5a13369942a3b9c19d4a289c0dc41db
MD5 a54a1d2190d46584da78727fffb862d3
BLAKE2b-256 ab6fc5cb81ba3415e613dd2a78e646ee6e4bae0eeec0e84b55acfacb196f551f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp314-cp314-macosx_14_0_arm64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ed59655664a21f924ee7f5fb93a03a4133b1180d6984b06978af40d38711532c
MD5 981792c14b800dc2ecc24cd273652dd5
BLAKE2b-256 bd9ea533c76c785f1a6c4898c2cd2e6ad4d435a5af37c43da8fa62a079bb2def

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp313-cp313-win_amd64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp313-cp313-win32.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 9892489bb77e39bab91f0d6a579e3227fb2546bce161fed6b5413547a213a6df
MD5 427e842850c45820d13fd09ba3a583a8
BLAKE2b-256 91b98007e5fb3cd9e38515ae9b74843eb7188271904f4233d92dac4c20ca57a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp313-cp313-win32.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55bac5a685423b85394850bfac0cc0787fb7e6ba46658fa277ea6f98d340742c
MD5 90dce2dfdbd630346067eed4bb2c7e5c
BLAKE2b-256 dae448fc959044bd612dfe3fe901523d693f98e6674719a5a466f37efb82a4dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp313-cp313-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp313-cp313-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 f3f384ae5055c8fa13a5eafe6fdf9a347c001afcd6ae32447a53494dc9ad9450
MD5 ec57344f9816b248d4e4bf0d67066ef1
BLAKE2b-256 c0c4f5d1c16b8d0276b8e64397cfb587c50e3c07182defd68c43f8e1ea1cac40

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp313-cp313-macosx_14_0_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp313-cp313-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp313-cp313-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 7f1b6f56adb92511628ab4016dc02a226071cd951ff206024f36172d1351e371
MD5 745911d3c361a4413283d29d78ae77d1
BLAKE2b-256 602759192ce90af06ae4f8e4a6cf5851ea174f90afd08adcee33cfb74198100e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp313-cp313-macosx_14_0_arm64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 51cd0a75647c79cdc6a200521d2b7a3c359a2610a2b8abe717ece1883108a7cd
MD5 d684d8d389044508ee31eb627693e4bb
BLAKE2b-256 3e90a297507f9602be65c599dd78881e22959e4ea12142c33ee8cbcf0df32e0c

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp312-cp312-win_amd64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp312-cp312-win32.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 8b60a12bcd5cd1a9254b7233bcc4a1376fe18f0f20bb69f71aa837a6a595c86b
MD5 4109d9b8cbbe50be67f3a8e32acb943e
BLAKE2b-256 a04b55d7fb1d47426d0243434fe0413888dfaf83bd9f3457440cd65c4f89992b

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp312-cp312-win32.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b7fed0951b74c6c59fe7f5391a21179bcf437fbca9a15f3c79095878ab8ce940
MD5 70a96208a8b1d5e137242e616aaf8422
BLAKE2b-256 0d36cce75053741d873d0521f106d6f24aff6729ba920169301924425c427313

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp312-cp312-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp312-cp312-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 fe566b798bb1afd17b6f055e0afb8347e18d92b67b79f19892caaabada8cf25a
MD5 7c9c753b2fa71e7a44c53b2575306945
BLAKE2b-256 5c84ec615aa35bc9926e7efde8ea53438eb758c1d2e7035df788e20a231cc063

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp312-cp312-macosx_14_0_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp312-cp312-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp312-cp312-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 711f15a0e8ee71dc9dea41d66ff27cc42df89fcfad2d2c6d876a469d1384c622
MD5 37e1ba5976cb7125235c2255fde3b85a
BLAKE2b-256 6ee56f6d8eb846914842818fbc031c6802b42e7272f9468d20ab26c5b3a1a4b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp312-cp312-macosx_14_0_arm64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 abd7d979ebdbccd9ae2905111ef5526638e4fb40f0bcba1344958116d5635bd7
MD5 8ff0c4f41795bd788b90f170e2b759ae
BLAKE2b-256 acb0c42be100a1aa42728a1f86a581bc03d6f3b1b3b54f0016b8c8b9c9e4db0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp311-cp311-win_amd64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp311-cp311-win32.whl.

File metadata

  • Download URL: pylibjxl-0.2.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pylibjxl-0.2.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 af2ab233d7ca6d706fcca71404b488add2e35ac7e25d587be5572707248aacb1
MD5 f20ed190aae4e75a739703e508514a13
BLAKE2b-256 65dc8cf0e5fc2f6fc45b151a6028af9e5d6ef7a081354e14c216ad5e6966a565

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp311-cp311-win32.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55e1a01b93cd80aa0d075d62067e65de8449a542a0c1aa0ab06e46260a1983b1
MD5 dbd10ad5abfc68151aa9a27d94063d14
BLAKE2b-256 9fc72cc8c7a62e03ff44bc48c3d5f860f4ef327c272e033698541ab9a2d34b3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp311-cp311-macosx_14_0_x86_64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp311-cp311-macosx_14_0_x86_64.whl
Algorithm Hash digest
SHA256 6e71cb0236e4d12209e151eb430df5afd52afa0146c661cfc270c9d32eba5e15
MD5 22b9b82d6f3f409d614804b65f7caf57
BLAKE2b-256 6ce5d2322297b3ffe889a4815cccd4f262fcc567eef90fbeec99149dd8d0e3bc

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp311-cp311-macosx_14_0_x86_64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pylibjxl-0.2.1-cp311-cp311-macosx_14_0_arm64.whl.

File metadata

File hashes

Hashes for pylibjxl-0.2.1-cp311-cp311-macosx_14_0_arm64.whl
Algorithm Hash digest
SHA256 0c0b1fd0d0ec19f0ba92d0b34e2022bb1e6991579036a2f53d494095aca6becc
MD5 0e37f188dd0420e9390abb0131f7d2f5
BLAKE2b-256 80c3dd687bcaade396ec1589cd8827c3ecda5dae305d16e4f286b7685e18dceb

See more details on using hashes here.

Provenance

The following attestation bundles were made for pylibjxl-0.2.1-cp311-cp311-macosx_14_0_arm64.whl:

Publisher: build.yml on twn39/pylibjxl

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page