Skip to main content

Performant streaming to Zarr storage, on filesystem or cloud

Project description

DOI

Acquire Zarr streaming library

Build Tests Chat PyPI - Version PyPI - Downloads

This library supports chunked, compressed, multiscale streaming to Zarr, both version 2 and version 3, with OME-NGFF metadata.

This code builds targets for Python and C.

Note: Zarr Version 2 is deprecated and will be removed in a future release. We recommend using Zarr Version 3 for new projects.

Installing

Precompiled binaries

C headers and precompiled binaries are available for Windows, Mac, and Linux on our releases page.

Python

The library is available on PyPI and can be installed using pip:

pip install acquire-zarr

Building

Installing dependencies

This library has the following dependencies:

We use vcpkg to install them, as it integrates well with CMake. To install vcpkg, clone the repository and bootstrap it:

git clone https://github.com/microsoft/vcpkg.git
cd vcpkg && ./bootstrap-vcpkg.sh

and then add the vcpkg directory to your path. If you are using bash, you can do this by running the following snippet from the vcpkg/ directory:

cat >> ~/.bashrc <<EOF
export VCPKG_ROOT=${PWD}
export PATH=\$VCPKG_ROOT:\$PATH
EOF

If you're using Windows, learn how to set environment variables here. You will need to set both the VCPKG_ROOT and PATH variables in the system control panel.

On the Mac, you will also need to install OpenMP using Homebrew:

brew install libomp

Configuring

To build the library, you can use CMake:

cmake --preset=default -B /path/to/build /path/to/source

On Windows, you'll need to specify the target triplet to ensure that all dependencies are built as static libraries:

cmake --preset=default -B /path/to/build -DVCPKG_TARGET_TRIPLET=x64-windows-static /path/to/source

Aside from the usual CMake options, you can choose to disable tests by setting BUILD_TESTING to OFF:

cmake --preset=default -B /path/to/build -DBUILD_TESTING=OFF /path/to/source

To build the Python bindings, make sure pybind11 is installed. Then, you can set BUILD_PYTHON to ON:

cmake --preset=default -B /path/to/build -DBUILD_PYTHON=ON /path/to/source

Building

After configuring, you can build the library:

cmake --build /path/to/build

Installing for Python

To install the Python bindings, you can run:

pip install .

[!NOTE] It is highly recommended to use virtual environments for Python, e.g. using venv or conda. In this case, make sure pybind11 is installed in this environment, and that the environment is activated before installing the bindings.

Usage

The library provides two main interfaces. First, ZarrStream, representing an output stream to a Zarr dataset. Second, ZarrStreamSettings to configure a Zarr stream.

A typical use case for a single-array, 4-dimensional acquisition might look like this:

ZarrArraySettings array{
    .output_key =
      "my-array", // Optional: path within Zarr where data should be stored
    .data_type = ZarrDataType_uint16,
};

ZarrArraySettings_create_dimension_array(&array, 4);
array.dimensions[0] = (ZarrDimensionProperties){
    .name = "t",
    .type = ZarrDimensionType_Time,
    .array_size_px = 0,      // this is the append dimension
    .chunk_size_px = 100,    // 100 time points per chunk
    .shard_size_chunks = 10, // 10 chunks per shard
};

// ... rest of dimensions configuration ...

ZarrStreamSettings settings = (ZarrStreamSettings){
    .store_path = "my_stream.zarr",
    .version = ZarrVersion_3,
    .overwrite = true, // Optional: remove existing data at store_path if true
    .arrays = &array,
    .array_count = 1, // Number of arrays in the stream
};

ZarrStream* stream = ZarrStream_create(&settings);

// You can now safely free the dimensions array
ZarrArraySettings_destroy_dimension_array(&array);

size_t bytes_written;
ZarrStream_append(stream,
                  my_frame_data,
                  my_frame_size,
                  &bytes_written,
                  "my-array"); // if you have just one array configured, this can be NULL
assert(bytes_written == my_frame_size);

Look at acquire.zarr.h for more details.

This acquisition in Python would look like this:

import acquire_zarr as aqz
import numpy as np

settings = aqz.StreamSettings(
    store_path="my_stream.zarr",
    version=aqz.ZarrVersion.V3,
    overwrite=True  # Optional: remove existing data at store_path if true
)

settings.arrays = [
    aqz.ArraySettings(
        output_key="array1",
        data_type=np.uint16,
        dimensions = [
            aqz.Dimension(
                name="t",
                type=aqz.DimensionType.TIME,
                array_size_px=0,
                chunk_size_px=100,
                shard_size_chunks=10
            ),
            aqz.Dimension(
                name="c",
                type=aqz.DimensionType.CHANNEL,
                array_size_px=3,
                chunk_size_px=1,
                shard_size_chunks=1
            ),
            aqz.Dimension(
                name="y",
                type=aqz.DimensionType.SPACE,
                array_size_px=1080,
                chunk_size_px=270,
                shard_size_chunks=2
            ),
            aqz.Dimension(
                name="x",
                type=aqz.DimensionType.SPACE,
                array_size_px=1920,
                chunk_size_px=480,
                shard_size_chunks=2
            )
        ]
    )
]

# Generate some random data: one time point, all channels, full frame
my_frame_data = np.random.randint(0, 2 ** 16, (3, 1080, 1920), dtype=np.uint16)

stream = aqz.ZarrStream(settings)
stream.append(my_frame_data)

# ... append more data as needed ...

# When done, close the stream to flush any remaining data
stream.close()

Organizing data within a Zarr container

The library allows you to stream multiple arrays to a single Zarr dataset by configuring multiple arrays. For example, a multichannel acquisition with both brightfield and fluorescence channels might look like this:

import acquire_zarr as aqz
import numpy as np

# configure the stream with two arrays
settings = aqz.StreamSettings(
    store_path="experiment.zarr",
    version=aqz.ZarrVersion.V3,
    overwrite=True,  # Remove existing data at store_path if true
    arrays=[
        aqz.ArraySettings(
            output_key="sample1/brightfield",
            data_type=np.uint16,
            dimensions=[
                aqz.Dimension(
                    name="t",
                    type=aqz.DimensionType.TIME,
                    array_size_px=0,
                    chunk_size_px=100,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="c",
                    type=aqz.DimensionType.CHANNEL,
                    array_size_px=1,
                    chunk_size_px=1,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="y",
                    type=aqz.DimensionType.SPACE,
                    array_size_px=1080,
                    chunk_size_px=270,
                    shard_size_chunks=2
                ),
                aqz.Dimension(
                    name="x",
                    type=aqz.DimensionType.SPACE,
                    array_size_px=1920,
                    chunk_size_px=480,
                    shard_size_chunks=2
                )
            ]
        ),
        aqz.ArraySettings(
            output_key="sample1/fluorescence",
            data_type=np.uint16,
            dimensions=[
                aqz.Dimension(
                    name="t",
                    type=aqz.DimensionType.TIME,
                    array_size_px=0,
                    chunk_size_px=100,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="c",
                    type=aqz.DimensionType.CHANNEL,
                    array_size_px=2,  # two fluorescence channels
                    chunk_size_px=1,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="y",
                    type=aqz.DimensionType.SPACE,
                    array_size_px=1080,
                    chunk_size_px=270,
                    shard_size_chunks=2
                ),
                aqz.Dimension(
                    name="x",
                    type=aqz.DimensionType.SPACE,
                    array_size_px=1920,
                    chunk_size_px=480,
                    shard_size_chunks=2
                )
            ]
        )
    ]
)

stream = aqz.ZarrStream(settings)

# ... append data ...
stream.append(brightfield_frame_data, key="sample1/brightfield")
stream.append(fluorescence_frame_data, key="sample1/fluorescence")

# ... append more data as needed ...

# When done, close the stream to flush any remaining data
stream.close()

The overwrite parameter controls whether existing data at the store_path is removed. When set to true, the entire directory specified by store_path will be removed if it exists. When set to false, the stream will use the existing directory if it exists, or create a new one if it doesn't.

High-content screening workflows

The library supports high-content screening (HCS) datasets following the OME-NGFF 0.5 specification. HCS data is organized into plates, wells, and fields of view, with automatic generation of appropriate metadata.

Note: HCS is not supported for Zarr V2.

Here's an example of creating an HCS dataset in Python:

import acquire_zarr as aqz
import numpy as np

# Configure field of view arrays
fov1_array = aqz.ArraySettings(
    output_key="fov1",  # Relative to the well: plate/A/1/fov1
    data_type=np.uint16,
    dimensions=[
        aqz.Dimension(
            name="t",
            type=aqz.DimensionType.TIME,
            array_size_px=0,
            chunk_size_px=10,
            shard_size_chunks=1
        ),
        aqz.Dimension(
            name="c",
            type=aqz.DimensionType.CHANNEL,
            array_size_px=3,
            chunk_size_px=1,
            shard_size_chunks=1
        ),
        aqz.Dimension(
            name="y",
            type=aqz.DimensionType.SPACE,
            array_size_px=512,
            chunk_size_px=256,
            shard_size_chunks=2
        ),
        aqz.Dimension(
            name="x",
            type=aqz.DimensionType.SPACE,
            array_size_px=512,
            chunk_size_px=256,
            shard_size_chunks=2
        )
    ]
)

# Create acquisition metadata
acquisition = aqz.Acquisition(
    id=0,
    name="Measurement_01",
    start_time=1343731272000,  # Unix timestamp in milliseconds
    end_time=1343737645000
)

# Configure wells with fields of view
well_a1 = aqz.Well(
    row_name="A",
    column_name="1",
    images=[
        aqz.FieldOfView(
            path="fov1",
            acquisition_id=0,
            array_settings=fov1_array
        )
    ]
)

# Configure the plate
plate = aqz.Plate(
    path="experiment_plate",
    name="My HCS Experiment",
    row_names=["A", "B", "C", "D", "E", "F", "G", "H"],
    column_names=["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"],
    wells=[well_a1],  # Add more wells as needed
    acquisitions=[acquisition]
)

# Create stream with HCS configuration
settings = aqz.StreamSettings(
    store_path="hcs_experiment.zarr",
    version=aqz.ZarrVersion.V3,
    overwrite=True,
    hcs_plates=[plate]
)

stream = aqz.ZarrStream(settings)

# Write data to specific field of view
frame_data = np.random.randint(0, 2**16, (3, 512, 512), dtype=np.uint16)
stream.append(frame_data, key="experiment_plate/A/1/fov1")

# Close when done
stream.close()

You can also combine HCS plates with flat arrays in the same dataset:

# Add a labels array alongside HCS data
labels_array = aqz.ArraySettings(
    output_key="experiment_plate/A/1/labels",
    data_type=np.uint8,
    dimensions=[
        aqz.Dimension(
            name="y",
            type=aqz.DimensionType.SPACE,
            array_size_px=512,
            chunk_size_px=256,
            shard_size_chunks=2
        ),
        aqz.Dimension(
            name="x",
            type=aqz.DimensionType.SPACE,
            array_size_px=512,
            chunk_size_px=256,
            shard_size_chunks=2
        )
    ]
)

settings = aqz.StreamSettings(
    store_path="mixed_experiment.zarr",
    version=aqz.ZarrVersion.V3,
    overwrite=True,
    arrays=[labels_array],  # Flat arrays
    hcs_plates=[plate]      # HCS structure
)

stream = aqz.ZarrStream(settings)

# Write to both HCS and flat arrays
stream.append(frame_data, key="experiment_plate/A/1/fov1")
labels_data = np.zeros((512, 512), dtype=np.uint8)
stream.append(labels_data, key="experiment_plate/A/1/labels")

stream.close()

In C, the equivalent HCS workflow would look like this:

#include "acquire.zarr.h"

// Create array settings for field of view
ZarrArraySettings fov_array = {
    .output_key = "fov1",  // Relative to well: plate/A/1/fov1
    .data_type = ZarrDataType_uint16,
};

ZarrArraySettings_create_dimension_array(&fov_array, 4);
fov_array.dimensions[0] = (ZarrDimensionProperties){
    .name = "t",
    .type = ZarrDimensionType_Time,
    .array_size_px = 0,
    .chunk_size_px = 10,
    .shard_size_chunks = 1,
};
fov_array.dimensions[1] = (ZarrDimensionProperties){
    .name = "c", 
    .type = ZarrDimensionType_Channel,
    .array_size_px = 3,
    .chunk_size_px = 1,
    .shard_size_chunks = 1,
};
fov_array.dimensions[2] = (ZarrDimensionProperties){
    .name = "y",
    .type = ZarrDimensionType_Space,
    .array_size_px = 512,
    .chunk_size_px = 256,
    .shard_size_chunks = 2,
};
fov_array.dimensions[3] = (ZarrDimensionProperties){
    .name = "x",
    .type = ZarrDimensionType_Space,
    .array_size_px = 512,
    .chunk_size_px = 256,
    .shard_size_chunks = 2,
};

// Create well with field of view
ZarrHCSWell well = {
    .row_name = "A",
    .column_name = "1",
};

ZarrHCSWell_create_image_array(&well, 1);
well.images[0] = (ZarrHCSFieldOfView){
    .path = "fov1",
    .acquisition_id = 0,
    .has_acquisition_id = true,
    .array_settings = &fov_array,
};

// Create plate
ZarrHCSPlate plate = {
    .path = "experiment_plate",
    .name = "My HCS Experiment",
};

// Set up row and column names
ZarrHCSPlate_create_row_name_array(&plate, 8);
const char* row_names[] = {"A", "B", "C", "D", "E", "F", "G", "H"};
for (int i = 0; i < 8; i++) {
    plate.row_names[i] = row_names[i];
}

ZarrHCSPlate_create_column_name_array(&plate, 12);
const char* col_names[] = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"};
for (int i = 0; i < 12; i++) {
    plate.column_names[i] = col_names[i];
}

// Add wells and acquisitions
ZarrHCSPlate_create_well_array(&plate, 1);
plate.wells[0] = well;

ZarrHCSPlate_create_acquisition_array(&plate, 1);
plate.acquisitions[0] = (ZarrHCSAcquisition){
    .id = 0,
    .name = "Measurement_01",
    .start_time = 1343731272000,
    .has_start_time = true,
    .end_time = 1343737645000,
    .has_end_time = true,
};

// Create HCS settings
ZarrHCSSettings hcs_settings = {
    .plates = &plate,
    .plate_count = 1,
};

// Configure stream
ZarrStreamSettings settings = {
    .store_path = "hcs_experiment.zarr",
    .version = ZarrVersion_3,
    .overwrite = true,
    .arrays = NULL,
    .array_count = 0,
    .hcs_settings = &hcs_settings,
};

ZarrStream* stream = ZarrStream_create(&settings);

// Write data
uint16_t* frame_data = /* your image data */;
size_t frame_size = 3 * 512 * 512 * sizeof(uint16_t);
size_t bytes_written;

ZarrStream_append(stream, frame_data, frame_size, &bytes_written, "experiment_plate/A/1/fov1");

// Cleanup
ZarrStream_destroy(stream);
ZarrHCSPlate_destroy_well_array(&plate);
ZarrArraySettings_destroy_dimension_array(&fov_array);

The resulting dataset will include proper OME-NGFF metadata for plates and wells.

S3

The library supports writing directly to S3-compatible storage. We authenticate with S3 through environment variables or an AWS credentials file. If you are using environment variables, set the following:

  • AWS_ACCESS_KEY_ID: Your AWS access key
  • AWS_SECRET_ACCESS_KEY: Your AWS secret key
  • AWS_SESSION_TOKEN: Optional session token for temporary credentials

These must be set in the environment where your application runs.

Important Note: You should ensure these environment variables are set before running your application or importing the library or Python module. They will not be available if set after the library is loaded. Configuration requires specifying the endpoint, bucket name, and region:

// ensure your environment is set up for S3 access before running your program
#include <acquire.zarr.h>

ZarrStreamSettings settings = { /* ... */ };

// Configure S3 storage
ZarrS3Settings s3_settings = {
    .endpoint = "https://s3.amazonaws.com",
    .bucket_name = "my-zarr-data",
    .region = "us-east-1"
};

settings.s3_settings = &s3_settings;

In Python, S3 configuration looks like:

# ensure your environment is set up for S3 access before importing acquire_zarr
import acquire_zarr as aqz

settings = aqz.StreamSettings()
# ...

# Configure S3 storage
s3_settings = aqz.S3Settings(
    endpoint="s3.amazonaws.com",
    bucket_name="my-zarr-data",
    region="us-east-1"
)

# Apply S3 settings to your stream configuration
settings.s3 = s3_settings

Anaconda GLIBCXX issue

If you encounter the error GLIBCXX_3.4.30 not found when working with the library in Python, it may be due to a mismatch between the version of libstdc++ that ships with Anaconda and the one used by acquire-zarr. This usually manifests like so:

ImportError: /home/eggbert/anaconda3/envs/myenv/lib/python3.10/site-packages/acquire_zarr/../../../lib/libstdc++.so.6: version `GLIBCXX_3.4.30` not found (required by /home/eggbert/anaconda3/envs/myenv/lib/python3.10/site-packages/acquire_zarr/../../../lib/libacquire_zarr.so)

To resolve this, you can install the libstdcxx-ng package from conda-forge:

conda install -c conda-forge libstdcxx-ng

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

acquire_zarr-0.6.0.tar.gz (193.5 kB view details)

Uploaded Source

Built Distributions

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

acquire_zarr-0.6.0-cp313-cp313-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.13Windows x86-64

acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

acquire_zarr-0.6.0-cp313-cp313-macosx_15_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.13macOS 15.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp313-cp313-macosx_13_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.13macOS 13.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp312-cp312-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.12Windows x86-64

acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

acquire_zarr-0.6.0-cp312-cp312-macosx_15_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.12macOS 15.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp312-cp312-macosx_13_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.12macOS 13.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp311-cp311-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.11Windows x86-64

acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

acquire_zarr-0.6.0-cp311-cp311-macosx_15_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.11macOS 15.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp311-cp311-macosx_13_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.11macOS 13.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp310-cp310-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.10Windows x86-64

acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

acquire_zarr-0.6.0-cp310-cp310-macosx_15_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 15.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp310-cp310-macosx_13_0_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 13.0+ x86-64

acquire_zarr-0.6.0-cp39-cp39-win_amd64.whl (2.8 MB view details)

Uploaded CPython 3.9Windows x86-64

acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

acquire_zarr-0.6.0-cp39-cp39-macosx_15_0_universal2.whl (3.6 MB view details)

Uploaded CPython 3.9macOS 15.0+ universal2 (ARM64, x86-64)

acquire_zarr-0.6.0-cp39-cp39-macosx_13_0_x86_64.whl (3.6 MB view details)

Uploaded CPython 3.9macOS 13.0+ x86-64

File details

Details for the file acquire_zarr-0.6.0.tar.gz.

File metadata

  • Download URL: acquire_zarr-0.6.0.tar.gz
  • Upload date:
  • Size: 193.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for acquire_zarr-0.6.0.tar.gz
Algorithm Hash digest
SHA256 e531524cc72cbbdf44aa68cc54677654f4c4ca47620e4d02b87a2805aceb81b6
MD5 0b1e92f980c6e0f3d4f333dba640e6ec
BLAKE2b-256 e351c0a10b76016c68e641bfa1f5a63102cecce1bc42c11d7694602061924dec

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0.tar.gz:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2286cb27de72979b95bdb1ba9e4a0342dce572c9846bf2a276e36a286574bf52
MD5 f33a6207fc6ab8d9d7712a4ae52ef3b9
BLAKE2b-256 62da5d30ac1e06e8c6ef5d85cf38a62fe545b65e638185f5609b12866a26b283

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp313-cp313-win_amd64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 acfbbd1f96baf02076fb81b94f4cd9ad7514d2bb40b12387a7666754aa31e907
MD5 43326e8881b33abac0aac5d9c2176244
BLAKE2b-256 3a9f71348226c890fca9fbbfab0b99f9b932d4b25c6a31ecb69dbdda72985823

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b04def27496469487a039d9a7fdf477b96f5b759611b41cbf7b175daf64a35a
MD5 c494bff83a74ea59b8cc8cf80616e9f5
BLAKE2b-256 e0c9c73c3ffb1d889654320d749ffed5eb65a8bead1bd3353c35c7d30728bab7

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp313-cp313-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp313-cp313-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 5548c55e22f91197e47b4c3f9bdab0fe586e10d53b5791ea76c7a4d2ff478b05
MD5 9378fec0d877b1d9d93de6682aa692a7
BLAKE2b-256 7cff97ef21d613204e39029a1a757d6bbb18b60bbd97a3264e23735b7e261b83

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp313-cp313-macosx_15_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp313-cp313-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp313-cp313-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 748247fee45fa9b9933922ab66b823cc7bd6ef44dd489bfdeefcd54aeebcbb48
MD5 2a3c677bea6a8d910d082ca60e872ebb
BLAKE2b-256 36d8d9101b4c12098242588cbcc6ac9bdfe65f74c26164074ab21f0f914593b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp313-cp313-macosx_13_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b3164ba12de3d2419440d59777622b99497d4c25dc6fdb2ae9770389c79657b9
MD5 e96e7af302793e512086f9961e318f0f
BLAKE2b-256 39cc58cadf341736ed955a9edfaf17d811f4afcab4ecad4c77321ab2105de321

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp312-cp312-win_amd64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3fe151537f9e1ff3345cf037f34e808960be7e44c9800a9bfbdb44fae32cbd36
MD5 2f4ffb9fb95be6fe09810148a501cb11
BLAKE2b-256 48d2496362141073cb506cf69f22b6055e54e59eaaec8f4f75802f8090573e3c

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1f33bf8ff3d07a6e8725410c648db367614cf1fc7a962c0f41cfe8bd77be5510
MD5 b1a9eb3dccbdae78312af18ac74fa5b5
BLAKE2b-256 0b6ffd3fb0235056c291b6473d7633078a5958ac0cc39a95ab7c2b3a99f599a6

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp312-cp312-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp312-cp312-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 d92bd1684fd0019c7d4c6ff1b9f25bb0ed480f1961bd1d2120884359c34a85ce
MD5 a6549ec5e3f165748176682315d9fcfa
BLAKE2b-256 e45354abb1abf534a7abbca640263d78e220b2666f1e8393e14353c52ed3d34e

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp312-cp312-macosx_15_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp312-cp312-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp312-cp312-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 1a9007137192ae04e9f02cd34ae804539860be17a7e242d4f57e7be57cca738b
MD5 da9db8c6c962bae480d7fa62c9bb9bd7
BLAKE2b-256 6d5d6f2eb87a69074485c68c11b57497ccad9e2ca1059f131c5c5f4a0995b727

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp312-cp312-macosx_13_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9d66530150dc461f27af68a3726a6b942967c402be4df50c29b232756459725b
MD5 944f352a64293e4c0227c5c354091456
BLAKE2b-256 c86b9f1ca98c3fe55a705dd4ac5f0e86d77524eee8174ad10b341e48724e06d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp311-cp311-win_amd64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ccdc0b1a01531b9762b75eb72e6862f3d66c98d27bbae9d9b0d1517fa6b8e57f
MD5 e96ac936ee38a928858e08de53c6dd21
BLAKE2b-256 c4306c95f35117c7118106ddc2d9e32d880db2705c3d943132ac244014e6faf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c8677bd705770c42faaeedabed6470bd23d982f240e882642a636937154e26ec
MD5 f897169cd3cff2493486157899cd7991
BLAKE2b-256 d115c38a28c7e65e4f9c216ab4c8dafa8f36e467ac6e8ed891f60e7c0f5e57d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp311-cp311-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp311-cp311-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 a48a3ac79e58d4e9cb29861fc06882ef8d080056c7fd9cc6968b174fbfe5a567
MD5 35352aa0958180522c791a5dbb95f520
BLAKE2b-256 0a83509fe2cf8da5abb51d66076ced247510d1b0580e8e96d7fd61ffc050e47e

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp311-cp311-macosx_15_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp311-cp311-macosx_13_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp311-cp311-macosx_13_0_universal2.whl
Algorithm Hash digest
SHA256 e0de443d0ea272df3ed88dd0fbd1af0dffa84c688e62bdd43493bf47d1908ff9
MD5 d65d4634f61374178b218c1c305d7be0
BLAKE2b-256 949caf9597efb64bcde30c141a1c77ad509bf8896edcf72f9c2d18f3ea099cad

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp311-cp311-macosx_13_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 9528c85d72b6fa68daad4fc179e59eeb13a23a3a40884e5a1f3b33aa4465b3bd
MD5 a3dae8f1a6c1cea0e613049801955921
BLAKE2b-256 70ac31558a6b82e31c40063428f2edf8b8ec846c9a1aa47cb1d1f4d3b94ebe51

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp310-cp310-win_amd64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7261f39fda6a1d1fedffc4aa0d468b9124f7fff784030ce797bec0e3c3984ce9
MD5 6550981fdb2d7841f6ddc4c028358289
BLAKE2b-256 34eda02dda158b5c795c7f68908166b55cb2e434b639b0683db7aea439b84ab7

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3c2ec5f95f5a157e9feabca1a1a7483f36d230c059bdd77c61255b861955e166
MD5 6513798b46d0778137dabfa8eeabb8cd
BLAKE2b-256 bbc840720f54d08bebdd2746482fc92462c8121cde42a0ee167787294de8b5bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp310-cp310-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp310-cp310-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 1133efd4f4cbbaac0146d11862aea4f67430512992d3344bd8ba9355ac7fd951
MD5 4cce59ce939134f1ce9a95f47c3719d8
BLAKE2b-256 1fdcc49a9b03f46be08e3e368f00b2edec3d2485c9ce14d53c7ee1c6f317355d

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp310-cp310-macosx_15_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp310-cp310-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp310-cp310-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 7bd050e2013881dcd984daad0c29206282fadc9401ee0315f6c02ad34e4bf482
MD5 252eabc916f8aba300d8c4e975c35d7d
BLAKE2b-256 73aa38647edfbe043209cf18d3e39657f6fa754e62fb9191f3b3817354641fc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp310-cp310-macosx_13_0_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: acquire_zarr-0.6.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 2.8 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for acquire_zarr-0.6.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b7ed3adc78e6ed3343c58274dd9abfe94c882265766963c01f41a30a38084910
MD5 76aa504d765c6a7e6e899ff2e9cbaf2c
BLAKE2b-256 495b53efdb8f73bf299adc8f41d9c279e8c59010a5ccf6c049e4f98cede7a636

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp39-cp39-win_amd64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 55e93970bab142eb81f2be3ce446182a63514600532c3f8a1157419f669dd787
MD5 c6dcb3418f003dd783a8c27993cd0ad7
BLAKE2b-256 e19665d647008c239a4260dbd8816c1fbd5a6600c692b3f31af2e5c7d1f1f971

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d01c8cf7639bea3a35b52887083a1030419af01700728f5c5c71286811913236
MD5 a82659fa1816ea481bb9f86017b51d2d
BLAKE2b-256 0025a6812e4eae897cd7a999f1d3d8020682fdd8c7e679d8d33021a8eeb6f6ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp39-cp39-manylinux_2_28_aarch64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp39-cp39-macosx_15_0_universal2.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp39-cp39-macosx_15_0_universal2.whl
Algorithm Hash digest
SHA256 d96c220b92423720c67834a1ad0257dea5911308622bbeaa17244b414b3d0c90
MD5 67290a87a16f01a94112c973a937c995
BLAKE2b-256 d5bf6609cb447f723e4dd705a587c1f379d604187fe65a458b913436c089fa00

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp39-cp39-macosx_15_0_universal2.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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

File details

Details for the file acquire_zarr-0.6.0-cp39-cp39-macosx_13_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.6.0-cp39-cp39-macosx_13_0_x86_64.whl
Algorithm Hash digest
SHA256 fe01f0fabf3b72d831271fcd6316ec0ab5572030d32d345ea03cdcdf1a5f8acb
MD5 9a044c2521cba7bd6f3bb8cc5ee82f72
BLAKE2b-256 793391b4dd2f3ec238c7723813e62285abcc9fc8a424d8bd6657f037b0e9babb

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.6.0-cp39-cp39-macosx_13_0_x86_64.whl:

Publisher: release.yml on acquire-project/acquire-zarr

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