Skip to main content

Portable and blazingly fast whole slide image compression and serialization library for the Iris File Extension

Project description

Iris Codec Python API

Conda Version PyPI Version Python CI

Copyright © 2025 Iris Developers; MIT Software License

The Iris Codec Community module is a part of the Iris Digital Pathology project. This module allows for:

  • Reading and writing of Iris whole slide image (WSI) digital slide files (.iris)
  • Decoding Iris Codec-type compressed tile image data.

This module was designed to allow for extremely fast slide access using a simple API. We want to simplify access to these files for you.

Iris Codec for Python is available via the Anaconda and PyPi package managers. We prefer the Anaconda enviornment as it includes dynamic libraries. In a true package manager sense, if you choose to develop C/C++ applications with Python bindings Anaconda will allow you to dynamically link the C++ Iris-Codec in addition to Python modules.

Installation

Conda-Forge (Recommended)

Static Badge Conda Downloads Conda Platforms

We prefer the Anaconda environment as it includes optimized dynamic libraries and better dependency management for scientific computing environments, particularly for OpenSlide integration on Linux and macOS.

Quick Installation:

conda install -c conda-forge iris-codec

Or with mamba (faster):

mamba install iris-codec

Environment Setup:

# Configure conda-forge channel permanently
conda config --add channels conda-forge
conda config --set channel_priority strict

# Then install
conda install iris-codec

PyPI

PyPI - Status PyPI - Python Version PyPI - Wheel PyPI - Downloads Supported Platforms

Basic Installation:

pip install iris-codec

With Encoder Support:

# For slide encoding capabilities (requires OpenSlide)
pip install iris-codec openslide-bin

[!NOTE] Windows Limitation: The Conda-Forge encoder does not support OpenSlide on Windows as OpenSlide lacks official Windows support in Conda-Forge. We're developing native vendor format support to eliminate this dependency.

Key Features

  • High-Performance Slide Reading: Optimized C++ backend with Python bindings
  • Multiple Format Support: Read Iris files and encode from 40+ vendor formats
  • Memory Efficient: Tiles loaded on-demand with automatic memory management
  • Research-Friendly: NumPy array output, PIL/Pillow integration
  • Metadata Rich: Full access to slide properties, annotations, and associated images
  • Encoding Pipeline: Convert vendor formats (SVS, NDPI, VSI, MRXS) to optimized Iris format
  • Privacy Controls: Metadata stripping and anonymization for research workflows

Quick Start

Basic Slide Reading

from Iris import Codec

# Open and validate slide
slide_path = 'path/to/slide.iris'
result = Codec.validate_slide_path(slide_path)
if not result.success():
    raise Exception(f'Validation failed: {result.message}')

slide = Codec.open_slide(slide_path)
if not slide:
    raise Exception('Failed to open slide')

# Get slide information
result, info = slide.get_info()
if not result.success():
    raise Exception(f'Failed to read slide info: {result.message}')

print(f"Slide: {info.extent.width}x{info.extent.height}px")
print(f"Layers: {len(info.extent.layers)}")
print(f"Encoding: {info.encoding}")

Slide Encoding

from Iris import Encoder, Codec

# Convert vendor format to Iris
result = Encoder.encode_slide_file(
    source='input.dcm',
    outdir='./output/',
    desired_encoding=Codec.Encoding.TILE_ENCODING_JPEG,
    derivation=Encoder.EncoderDerivation.layer_2x,
    concurrency=8
)

if not result.success():
    raise Exception(f'Encoding failed: {result.message}')
print('Encoding completed successfully!')

API Reference

Core Reading Functions

Import the Iris Codec module and basic validation:

from Iris import Codec

# File validation (recommended before opening)
slide_path = 'path/to/slide_file.iris'
result = Codec.validate_slide_path(slide_path)
if not result.success():
    raise Exception(f'Invalid slide file: {result.message}')
print(f"Slide '{slide_path}' passed validation")

Opening Slides

Deep validation performs comprehensive checks of the internal offset chain and IFE standard compliance:

# Open slide file
slide = Codec.open_slide(slide_path)
if not slide: 
    raise Exception('Failed to open slide file')

Slide Information and Metadata

Get comprehensive slide information including dimensions, layers, and metadata:

# Get slide abstraction
result, info = slide.get_info()
if not result.success():
    raise Exception(f'Failed to read slide information: {result.message}')

# Basic slide properties
extent = info.extent
print(f"Slide: {extent.width}x{extent.height}px")
print(f"Encoding: {info.encoding}")
print(f"Format: {info.format}")

# Layer information
print(f"Layers: {len(extent.layers)}")
for i, layer in enumerate(extent.layers):
    print(f"  Layer {i}: {layer.x_tiles}x{layer.y_tiles} tiles, {layer.scale}x scale, {layer.downsample}x downsample")

# Metadata access
metadata = info.metadata
print(f"Codec Version: {metadata.codec_version.major}.{metadata.codec_version.minor}.{metadata.codec_version.build}")
print(f"Microns Per Pixel: {metadata.microns_per_pixel}")
print(f"Magnification: {metadata.magnification}")

# Slide attributes
print("Slide attributes:")
for key in metadata.attributes:
    value = metadata.attributes[key]
    print(f"  {key}: {value}")

Reading Tile Data

Read individual tiles as NumPy arrays for analysis:

import numpy as np
from PIL import Image

# Read a specific tile
layer_index = 0  # Lowest resolution layer
tile_index = 0   # First tile

# Get tile as NumPy array (RGBA format)
tile_array = slide.read_slide_tile(layer_index, tile_index)
print(f"Tile shape: {tile_array.shape}")  # Should be (256, 256, 4)
print(f"Tile dtype: {tile_array.dtype}")  # Should be uint8

# Convert to PIL Image for display/processing
tile_image = Image.fromarray(tile_array)
tile_image.show()

# Access raw pixel data
red_channel = tile_array[:, :, 0]
alpha_channel = tile_array[:, :, 3]

Creating Composite Images

Generate overview images by stitching tiles together:

from PIL import Image

def create_layer_composite(slide, layer_index=0):
    """Create a composite image from all tiles in a layer"""
    
    # Get layer information
    result, info = slide.get_info()
    if not result.success():
        raise Exception(f'Failed to read slide info: {result.message}')
    
    layer = info.extent.layers[layer_index]
    scale = int(layer.scale)
    
    # Create composite image
    composite_width = info.extent.width // scale
    composite_height = info.extent.height // scale
    composite = Image.new('RGBA', (composite_width, composite_height))
    
    # Stitch tiles together
    tile_size = 256  # Iris tiles are always 256x256
    for y in range(layer.y_tiles):
        for x in range(layer.x_tiles):
            tile_index = y * layer.x_tiles + x
            tile_array = slide.read_slide_tile(layer_index, tile_index)
            tile_image = Image.fromarray(tile_array)
            
            # Paste tile into composite
            paste_x = x * tile_size
            paste_y = y * tile_size
            composite.paste(tile_image, (paste_x, paste_y))
    
    return composite

# Create and display low-resolution overview
overview = create_layer_composite(slide, layer_index=0)
overview.show()

[!CAUTION] Memory Warning: Despite Iris's fast read speeds, creating composite images of high-resolution layers requires substantial memory and processing time. PIL.Image creates full in-memory images rather than tiled representations. Limit composite creation to layer 0 or 1 for practical performance.

Associated Images and Thumbnails

Access embedded thumbnails and associated images:

from PIL import Image

# Get slide info first
result, info = slide.get_info()
if not result.success():
    raise Exception(f'Failed to read slide information: {result.message}')

# List available associated images
print("Available associated images:")
for image_name in info.metadata.associated_images:
    print(f"  - {image_name}")

# Read and display thumbnail if available
if 'thumbnail' in info.metadata.associated_images:
    thumbnail_array = slide.read_associated_image('thumbnail')
    thumbnail_image = Image.fromarray(thumbnail_array)
    thumbnail_image.show()
    print(f"Thumbnail size: {thumbnail_image.size}")

# Read other associated images
if 'label' in info.metadata.associated_images:
    label_array = slide.read_associated_image('label')
    label_image = Image.fromarray(label_array)
    label_image.show()

Advanced Reading Patterns

Efficient patterns for large-scale analysis:

Encoding API

The Python module includes comprehensive encoding capabilities for converting vendor WSI formats to optimized Iris files.

Basic Encoding

from Iris import Encoder, Codec

# Simple encoding with default settings
result = Encoder.encode_slide_file(
    source='path/to/input.dcm',  # SVS, NDPI, VSI, MRXS, DCM, etc.
    outdir='./output/'           # Output directory
)

if not result.success():
    raise Exception(f'Encoding failed: {result.message}')
print('Encoding completed successfully!')

Advanced Encoding Options

from Iris import Encoder, Codec, iris_core

# Comprehensive encoding configuration
result = Encoder.encode_slide_file(
    source='input.dcm',                                    # DICOM with byte-stream preservation
    outdir='./encoded/',                                   # Output directory
    desired_encoding=Codec.Encoding.TILE_ENCODING_AVIF,   # Modern AVIF compression
    desired_byte_format=iris_core.Format.FORMAT_R8G8B8,   # RGB format
    derivation=Encoder.EncoderDerivation.layer_4x,        # 4x downsampling pyramid
    strip_metadata=True,                                   # Remove patient identifiers
    anonymize=True,                                        # Additional anonymization
    concurrency=8                                          # Use 8 threads
)

if not result.success():
    raise Exception(f'Advanced encoding failed: {result.message}')

Encoding Options Reference

Compression Formats:

  • TILE_ENCODING_JPEG (default): High compatibility, excellent compression
  • TILE_ENCODING_AVIF: Modern format, superior compression at higher quality

Pyramid Derivation:

  • layer_2x: Generate 2x downsampled layers (recommended for most use cases)
  • layer_4x: Generate 4x downsampled layers (good for very large slides)
  • use_source: Use existing pyramid structure from source file

Byte Formats:

  • FORMAT_R8G8B8: Standard RGB (3 bytes per pixel)
  • FORMAT_R8G8B8A8: RGBA with alpha channel (4 bytes per pixel)
  • FORMAT_B8G8R8: BGR format for specific applications
  • FORMAT_B8G8R8A8: BGRA format

Privacy Options:

  • strip_metadata=True: Remove patient identifiers and PHI

Progress Monitoring

The encoder automatically displays progress during encoding operations:

# The encode_slide_file function includes built-in progress display
result = Encoder.encode_slide_file(
    source='large_slide.dcm',
    outdir='./output/',
    concurrency=8
)

# Output shows real-time progress:
# [████████████████████████████████████████] 100.0% ETA: 00:00
# Iris Encoder completed successfully
# Slide written to ./output/large_slide.iris

Integration Examples

Channel-Separated Data with PyTorch

Iris provides read_slide_tile_channels which returns data in [4,256,256] format with separate channel arrays, useful for advanced image processing:

import numpy as np
import torch
from Iris import Codec

def create_channel_separated_dataset(slide_path, layer_index=0):
    """Demonstrate channel-separated tile reading with PyTorch tensors"""
    
    slide = Codec.open_slide(slide_path)
    if not slide:
        raise Exception(f'Failed to open slide: {slide_path}')
    
    result, info = slide.get_info()
    if not result.success():
        raise Exception('Failed to read slide info')
    
    layer = info.extent.layers[layer_index]
    print(f"Processing layer {layer_index}: {layer.x_tiles}x{layer.y_tiles} tiles")
    
    # Read first tile using channel-separated format
    tile_channels = slide.read_slide_tile_channels(layer_index, tile_index=0)
    print(f"Channel-separated shape: {tile_channels.shape}")  # Should be [4, 256, 256]
    
    # Convert to PyTorch tensor
    tensor = torch.from_numpy(tile_channels).float()
    
    # Access individual channels
    red_channel = tensor[0]      # Red channel [256, 256]
    green_channel = tensor[1]    # Green channel [256, 256] 
    blue_channel = tensor[2]     # Blue channel [256, 256]
    alpha_channel = tensor[3]    # Alpha channel [256, 256]
    
    print(f"Red channel shape: {red_channel.shape}")
    print(f"Alpha channel mean: {alpha_channel.mean():.2f}")
    
    # Example: Create a custom RGB combination
    # Emphasize red channel, reduce blue
    enhanced_rgb = torch.stack([
        red_channel * 1.2,      # Enhance red
        green_channel,          # Keep green
        blue_channel * 0.8      # Reduce blue
    ], dim=0)
    
    return enhanced_rgb, tensor

# Usage example
enhanced_rgb, original_tensor = create_channel_separated_dataset('slide.iris', layer_index=1)
print(f"Enhanced RGB shape: {enhanced_rgb.shape}")  # [3, 256, 256]
print(f"Original RGBA shape: {original_tensor.shape}")  # [4, 256, 256]

This channel-separated format is particularly useful for:

  • Custom color space transformations
  • Advanced image augmentations
  • Channel-specific analysis (e.g., studying alpha transparency patterns)
  • Memory-efficient processing when you only need specific channels

For additional support and examples, visit the Iris-Codec GitHub repository.

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

iris_codec-2025.3.1.tar.gz (104.7 kB view details)

Uploaded Source

Built Distributions

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

iris_codec-2025.3.1-cp313-cp313-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.13Windows x86-64

iris_codec-2025.3.1-cp313-cp313-musllinux_1_2_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_aarch64.whl (8.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

iris_codec-2025.3.1-cp313-cp313-macosx_15_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

iris_codec-2025.3.1-cp313-cp313-macosx_13_0_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.13macOS 13.0+ x86-64

iris_codec-2025.3.1-cp312-cp312-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.12Windows x86-64

iris_codec-2025.3.1-cp312-cp312-musllinux_1_2_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_aarch64.whl (8.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

iris_codec-2025.3.1-cp312-cp312-macosx_15_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

iris_codec-2025.3.1-cp312-cp312-macosx_13_0_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.12macOS 13.0+ x86-64

iris_codec-2025.3.1-cp311-cp311-win_amd64.whl (10.3 MB view details)

Uploaded CPython 3.11Windows x86-64

iris_codec-2025.3.1-cp311-cp311-musllinux_1_2_aarch64.whl (9.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_aarch64.whl (8.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

iris_codec-2025.3.1-cp311-cp311-macosx_15_0_arm64.whl (6.5 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

iris_codec-2025.3.1-cp311-cp311-macosx_13_0_x86_64.whl (8.0 MB view details)

Uploaded CPython 3.11macOS 13.0+ x86-64

File details

Details for the file iris_codec-2025.3.1.tar.gz.

File metadata

  • Download URL: iris_codec-2025.3.1.tar.gz
  • Upload date:
  • Size: 104.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for iris_codec-2025.3.1.tar.gz
Algorithm Hash digest
SHA256 222f470fbd5202835c70cf34655cead7f424eadd554cf0bf062f4f0db5454fae
MD5 244db4dd46a06e7c9956fe8edcae398c
BLAKE2b-256 01a8687e10f4ae3c5d609b5f07baaa44f4a4e393165557d10b1bf9e514311bb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1.tar.gz:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 87a44acdeb965d9ad5f1431911265ffc70307650502f9afe6d4a8c0b848d8834
MD5 7dd2b5a57ac04354acdf3daeb2f0ca30
BLAKE2b-256 4ddb3ca30982f1fd062e578b40067f9e32a548d413e4ce9bea662d6184fd4f19

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp313-cp313-win_amd64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 104de251c4b6d45796444eb641022d29b3d5b9bf84bee1d412c8d3162f356739
MD5 7ed9e73d3c84ed744a557d211fcf4fe0
BLAKE2b-256 f0b76fa96949b052a7dba450f9df859727ec0f995576999b2b3a6e15ccd52162

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 451d0982f9fb4f8a8e56577621761a18f200d467944e37a8a812f80e933b599e
MD5 580daffa42db1e00f962c7174e8536d1
BLAKE2b-256 a35cecec98d12f82a7b87b26b98f755f8afeaf43a517613a0539fbef47388dd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 7c665a0be201487b091a139f426e63ba0adcdc14e5c3888821bb16c91c25dae6
MD5 5ff8623eb63e63f6385219af9ac66ec2
BLAKE2b-256 111a6e524f95d51e42cdb94e1b89f26b2369ca5f3e6e7d110a8f3f9d7015fe90

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp313-cp313-manylinux_2_34_aarch64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f7ee21d277682df79ff70cfd75b3bcecd860f2e7e27f9ac74e00885704d1859d
MD5 565c45ee5299b4b84ca9b5c8d68064e8
BLAKE2b-256 9bfa8373746a97dbaa973aed103f7283d2d136a6f93b70e1214020e6c29bbca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp313-cp313-macosx_15_0_arm64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp313-cp313-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp313-cp313-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 42202fc68c9ce86ead7bce6857efadc902286a6e97e946a4d4e72001cd98f8ee
MD5 7093274bf63fed8d3bdecdc5314eff2c
BLAKE2b-256 96d34d5c8d97c32adca513d0cf549cee98e60b1d484ab06fe787f7b0597a86c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp313-cp313-macosx_13_0_x86_64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4f890c3fe872354241721cd39b21cbfb7eec60a96081ed122ce8c2412b4ff4f3
MD5 8638b823fcdebad584bab819df8e2cbb
BLAKE2b-256 6fdec482109d3894400ce7061e078c36f42f96413389d62d9197c777533e755f

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp312-cp312-win_amd64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7a8378dcec4d076bba18dd032859e986194a85f69b70e507f0683d92ec345bdd
MD5 08d8dd040440d146f494a18c1dabe8c3
BLAKE2b-256 216c3b34f479e90508a8791badd270c7629ef7237cf752f84a11c801a2a881fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 8af8ba9eb4c8676831ac7675dd60a570e67b60af771a8d11b686ade72663a325
MD5 69e2609a40aea270ea305a95cd880d6f
BLAKE2b-256 3c83d4af4fb1545de55883caa77467ca4bc43f18eb1dfdc628f87d1e75d74a8e

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 53e83108d165c09673ccf9de24151dc0292698c05809b7dd393db4110178bbf7
MD5 d8c9e80cc0af4b49c1b7179190677bd3
BLAKE2b-256 35ad8dec205667a18b2fab18453feeb019d6826fc4ce9fdcf44869449e3d49df

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp312-cp312-manylinux_2_34_aarch64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0c719592ec595f386f772d555790c3f7532fa308a0ade8934843d27d0d10b84a
MD5 91d0419bd525d6a022f4a5d3b2f46084
BLAKE2b-256 3e1652af3e8d44309b40dda043ea8afb1747f3333407a34a0c713d4d166faaa0

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp312-cp312-macosx_15_0_arm64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp312-cp312-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp312-cp312-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 4722b5fcdedef458cd9162787583f34fe526cf874b7c1ed2e93c2d8e07450234
MD5 b53a6d5d24c46d7e0ada40b9e9d4bfb1
BLAKE2b-256 dacffaaf5ac17c8b5f6327688b20183ade6c6086cb58befd0a19d194246573c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp312-cp312-macosx_13_0_x86_64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1686484dbbc1368a19c5364bbd1789f2e24e8c261043bc60c00234165b45d59b
MD5 db86f344404b850a8b3be954b11e7e7a
BLAKE2b-256 07d846b0da37f03ea2b076cc5ad6c9bb73296bef9e93651dd2b715fa0c60e0aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp311-cp311-win_amd64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bd0084e0445265055153a8df5f3ca9cc016f7ad959340b53b55e2b7265d2350a
MD5 3e2b362dd9c8020f2342ce5e7657d4b3
BLAKE2b-256 9c6adcc561fb04d300ca350c4e5ecef95e2c4b90145f0394c40f0ad570467960

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 480989682a1564a58985cc8041e6b9ee426376dd1eb439e8b47553d94d72d729
MD5 288acad47a9945c1b1d237d570038e58
BLAKE2b-256 a35b7f335d84412434efe253e8dae6ff0cf774493714dbaea3a420c0f9194481

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 82d7c9e5ed26a4695bebf5211d4caa70bca5f414690c10130f444b92b1d6a30b
MD5 539a7bbb9c533e9fc744160845286c1b
BLAKE2b-256 1ee7f30b1f10465cbeca8d003d17e867ca9d912fad200f0cf676a66f7e4f97ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp311-cp311-manylinux_2_34_aarch64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 0534f61e869715d840dbd4bf371e9410da2aae82977a38836a35cd8da194140e
MD5 f475227219ba6b669f8cea7bc298e4e7
BLAKE2b-256 d71926dcf376df80261f1d1a7a4a48cc90154d03353fa62624e7f51f458cc763

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp311-cp311-macosx_15_0_arm64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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

File details

Details for the file iris_codec-2025.3.1-cp311-cp311-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for iris_codec-2025.3.1-cp311-cp311-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 23613658fe6e303f8092f296282b3abf4f22219aac7433e3aa5fedc3857380e7
MD5 8720def5251c7ff963cdf0232699b91a
BLAKE2b-256 2bca3f4f8c228413ef2c2da99749906907a14f4114e46ab93df82ebe45f3cae1

See more details on using hashes here.

Provenance

The following attestation bundles were made for iris_codec-2025.3.1-cp311-cp311-macosx_13_0_x86_64.whl:

Publisher: distribute-pypi.yml on IrisDigitalPathology/Iris-Codec

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