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 Docs

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

This code builds targets for Python and C.

For complete documentation, please visit the Acquire documentation site.

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

Local Development Quickstart

The included justfile provides recipes for common development tasks. Install uv, if you don't have it already, and then Install just with your package manager of choice (e.g. brew install just).

# setup everything and install python bindings (using python 3.13, optional)
just install -p 3.13
# run python tests
just test

Run just without arguments to see all available recipes:

Available recipes:
    clean          # Clean build artifacts (keeps vcpkg)
    clean-all      # Clean everything including vcpkg
    cmake-build    # Requires cmake installed (e.g., `brew install cmake` or `uv tool install cmake`)
    install *args  # (args are passed to uv sync, e.g.: `just install -p 3.12`)
    setup-vcpkg    # Setup vcpkg (clone and bootstrap if needed)
    test *args     # (args are passed to pytest, e.g.: `just test -k test_function`)
    test-cpp *args # (args are passed to ctest, e.g.: `just test-cpp -R unit`)
    update-vcpkg   # Update vcpkg to latest
    uv-sync *args  # Run uv sync (includes testing dependencies)

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",
    .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",
    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",
                kind=aqz.DimensionType.TIME,
                array_size_px=0,
                chunk_size_px=100,
                shard_size_chunks=10
            ),
            aqz.Dimension(
                name="c",
                kind=aqz.DimensionType.CHANNEL,
                array_size_px=3,
                chunk_size_px=1,
                shard_size_chunks=1
            ),
            aqz.Dimension(
                name="y",
                kind=aqz.DimensionType.SPACE,
                array_size_px=1080,
                chunk_size_px=270,
                shard_size_chunks=2
            ),
            aqz.Dimension(
                name="x",
                kind=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",
    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",
                    kind=aqz.DimensionType.TIME,
                    array_size_px=0,
                    chunk_size_px=100,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="c",
                    kind=aqz.DimensionType.CHANNEL,
                    array_size_px=1,
                    chunk_size_px=1,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="y",
                    kind=aqz.DimensionType.SPACE,
                    array_size_px=1080,
                    chunk_size_px=270,
                    shard_size_chunks=2
                ),
                aqz.Dimension(
                    name="x",
                    kind=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",
                    kind=aqz.DimensionType.TIME,
                    array_size_px=0,
                    chunk_size_px=100,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="c",
                    kind=aqz.DimensionType.CHANNEL,
                    array_size_px=2,  # two fluorescence channels
                    chunk_size_px=1,
                    shard_size_chunks=1
                ),
                aqz.Dimension(
                    name="y",
                    kind=aqz.DimensionType.SPACE,
                    array_size_px=1080,
                    chunk_size_px=270,
                    shard_size_chunks=2
                ),
                aqz.Dimension(
                    name="x",
                    kind=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.

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

import acquire_zarr as aqz
import numpy as np

# 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", # Relative to the well: plate/A/1/fov1
            acquisition_id=0,
            array_settings=aqz.ArraySettings(
                output_key=None, # must be None for an FOV array; path is specified as a member of FieldOfView 
                data_type=np.uint16,
                dimensions=[
                    aqz.Dimension(
                        name="t",
                        kind=aqz.DimensionType.TIME,
                        array_size_px=0,
                        chunk_size_px=10,
                        shard_size_chunks=1
                    ),
                    aqz.Dimension(
                        name="c",
                        kind=aqz.DimensionType.CHANNEL,
                        array_size_px=3,
                        chunk_size_px=1,
                        shard_size_chunks=1
                    ),
                    aqz.Dimension(
                        name="y",
                        kind=aqz.DimensionType.SPACE,
                        array_size_px=512,
                        chunk_size_px=256,
                        shard_size_chunks=2
                    ),
                    aqz.Dimension(
                        name="x",
                        kind=aqz.DimensionType.SPACE,
                        array_size_px=512,
                        chunk_size_px=256,
                        shard_size_chunks=2
                    )
                ]
            )
        )
    ]
)

# 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",
    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",
            kind=aqz.DimensionType.SPACE,
            array_size_px=512,
            chunk_size_px=256,
            shard_size_chunks=2
        ),
        aqz.Dimension(
            name="x",
            kind=aqz.DimensionType.SPACE,
            array_size_px=512,
            chunk_size_px=256,
            shard_size_chunks=2
        )
    ]
)

settings = aqz.StreamSettings(
    store_path="mixed_experiment.zarr",
    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 = {
    .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", // Relative to well: plate/A/1/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",
    .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 Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

acquire_zarr-0.7.0-cp314-cp314-win_amd64.whl (2.9 MB view details)

Uploaded CPython 3.14Windows x86-64

acquire_zarr-0.7.0-cp314-cp314-manylinux_2_28_x86_64.whl (4.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

acquire_zarr-0.7.0-cp314-cp314-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

acquire_zarr-0.7.0-cp314-cp314-macosx_15_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

acquire_zarr-0.7.0-cp314-cp314-macosx_15_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

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

Uploaded CPython 3.13Windows x86-64

acquire_zarr-0.7.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.7.0-cp313-cp313-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

acquire_zarr-0.7.0-cp313-cp313-macosx_15_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

acquire_zarr-0.7.0-cp313-cp313-macosx_15_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

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

Uploaded CPython 3.12Windows x86-64

acquire_zarr-0.7.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.7.0-cp312-cp312-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

acquire_zarr-0.7.0-cp312-cp312-macosx_15_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

acquire_zarr-0.7.0-cp312-cp312-macosx_15_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

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

Uploaded CPython 3.11Windows x86-64

acquire_zarr-0.7.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.7.0-cp311-cp311-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

acquire_zarr-0.7.0-cp311-cp311-macosx_15_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

acquire_zarr-0.7.0-cp311-cp311-macosx_15_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

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

Uploaded CPython 3.10Windows x86-64

acquire_zarr-0.7.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.7.0-cp310-cp310-manylinux_2_28_aarch64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

acquire_zarr-0.7.0-cp310-cp310-macosx_15_0_x86_64.whl (3.5 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

acquire_zarr-0.7.0-cp310-cp310-macosx_15_0_arm64.whl (3.6 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

Details for the file acquire_zarr-0.7.0-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 fb89698791b4d2cebd826416ce6a475f09124309458f6cea0ad62b032757394b
MD5 28ba3942bb628387f25b7dbbc88ab68a
BLAKE2b-256 0c5235b3eadaa297722bccc295b5081bc5033ebe8216481fbdbe1fbb6f3980b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp314-cp314-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.7.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0913c7b4984c2d968b084477021c85b4d33dd7f048108910f178c53f8bbe85d1
MD5 dbc3a97757c733288efdef3f5f8b712f
BLAKE2b-256 40b476bda761f735b51b3478dfb33200cd97827006dfdee20c38cd0ed5587afd

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp314-cp314-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.7.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8f7a9a1a401e80182adf31912c4b6a6dbc876de7783e5c6aef7eeaf3d7374d4b
MD5 e2eb78f673a402622492c19eff9593df
BLAKE2b-256 a71832621ff33f126a4083c42420c8878b58e72318597fdbacf32d7896580d38

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp314-cp314-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.7.0-cp314-cp314-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 18a2c42db79896dfe1d901026c77f34300b2640bcecbcd021c6d603934a228ee
MD5 afed00bab218e030127d46ab68d1102b
BLAKE2b-256 8c4c53da58cddcfd643461849bd79cd9670b6998c55a43ce087f1c9b60bf04d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp314-cp314-macosx_15_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.7.0-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 af1db21446aeb083e697076b6dc6ea2309539a239a98c4b9e401ca44f797146e
MD5 dc31e59e7e5973e16959cdc0e8a21f60
BLAKE2b-256 0c629f5636dd0fe4abb5ea5776a45463fe7f9440d7cde08f800219404a797690

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp314-cp314-macosx_15_0_arm64.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.7.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 478764348e86412d8679a9d9f00bd6402c70f98188dcc32dc0bfb9044523410b
MD5 876c4952e5be70306c13dafb05e9711c
BLAKE2b-256 d4665df2f8de3a0abe4b6d17a4d3f25181df7e9d58af1ebdb6d3100f3226dedf

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ea1f79821218651d0af9b8cb5e0b4fe0ea999571cdd74b6fa56a48baa8b1c618
MD5 59e58d3fcc05c742d687658eb171bdb3
BLAKE2b-256 16a2517855233bf7484efaafa0c03352cf977572d7c941123695c89cb73bbd80

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1928eb508806d9373684a139761271cd267c956bc87df78cdb49c1edc2f42aa8
MD5 bc88ea914a3e3969eb7e5735b66ef62b
BLAKE2b-256 26ae7a9d6bf076a4a2564ba50d29cd88788247687cc024e5b379526e2b7a982f

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp313-cp313-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 2ef7176d397a02bb72d1318b5f3c22472addc8db06cfe3ed71d492ac323a525e
MD5 a8836c894d2de2e6a5f5d7ae2da7c065
BLAKE2b-256 4ddb1b8506b36aa08678ae51865d5b6bf341e03902cfcbd3c7c6c3c5c05d8412

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp313-cp313-macosx_15_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.7.0-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a7baab88d2bccecfe9bacdbe09576a40727a09da167e15b8245d8e6bd460c8b5
MD5 8bd9be3e30c6d7d482171e62a6b9b1bc
BLAKE2b-256 d5db0967b7327745afb78bc5b496c352ae408f5825d14f1b7f57c70f1a2472d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp313-cp313-macosx_15_0_arm64.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.7.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f5e48479c2510b7b6dce0b4219c3d6ad5a4209f9676dc173263c773125d62045
MD5 f4629119bf5830f40dd042c3c29852e2
BLAKE2b-256 70217207d36831c416b3804d5c308bc4fe17976fece116065c9157643cf05d54

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 573d0edeb7437db872126f0b4f447eb7eadbc4ef3ea5466f3d71ca2dc9c37e70
MD5 e71148dddf19dba8d38f402d79eca896
BLAKE2b-256 fa11dcdc0b0d1d4a0d66f84b0bbaba41087b89faa673311923deb52144c73a0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 340d32ed5f26c65f7dae123dec1c86a353a7825c8a5094147df177ed126f6bbf
MD5 d524ed79ebdd46912f0d427da6013ba8
BLAKE2b-256 26c32e20adab568a9c310a286da7e001b9c04c63a63e61e5a1c96942d91dea01

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp312-cp312-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 3e232d579bd7c5e6fb7af2cb70f452e962f5514b82baf250742e11cf168986a5
MD5 6b1a66e91115ceb043ed10faeb6abf68
BLAKE2b-256 5f28e4117969bb34b62f455fe8190eef4783dd97e5bf40b97a77a40d4feed574

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp312-cp312-macosx_15_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.7.0-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 f4e9628d91e33a2263f97fb12d9906666689414ff7bb59b17e349d59092e5f79
MD5 03324f1e88e8a2487107f8880acdf985
BLAKE2b-256 f460d86df50a525d2c7e92a1b2196820f09dadee265074d6835cc7d775d2ffaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp312-cp312-macosx_15_0_arm64.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.7.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8bdbbc25b2fcaa097b1c3d2c11f7d29d2d3da1e04c449f1a9f86ba96204a9a4f
MD5 963f680d4ff59163c780b73b02eaf2c1
BLAKE2b-256 dd19ab1555cb974b8a1a42f0051fc609920768dbcc8e89811462e2b2508775da

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eb02bcb10da842706ed552c6ca10132c8c9af3ea0033cabfd3474b3a49830ba2
MD5 00b3d197491c062034ae83f76de5842f
BLAKE2b-256 434190d4ee0e5d09c8199b09ebe8a5d43c635a9578746930691e32f87c3100dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 933bb2cb6f30a5f82b1b40de50ef7e47742fd3afd3e7edd0114afd4a74b25738
MD5 81cc191eda888ba27c6c7317c2ea68b2
BLAKE2b-256 70a7c03cb0783df39779ad86edc0b43442a5efdc8e75bd7bce6a3fc9e4f82760

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp311-cp311-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 42025902bf11e46ca29d7b95ee609c9316586ae88e084aca3bfc15a83ca86cb5
MD5 5739817a050460905fc071b99cad153c
BLAKE2b-256 a37d2f8d3c759dbe9dc4098179a49eb72adbbfa7ef5d38d95373002a0c953866

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp311-cp311-macosx_15_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.7.0-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 1aece5cc9d87ee482dbcc3db3b8cd3305c1a753a7d731547570a0bc5030904cf
MD5 b8da5276621f886e80f3f8b46bfed184
BLAKE2b-256 056db6723986e2736077cbe8d259bd06bf1fa126885dd893c8cfc461967f2adc

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp311-cp311-macosx_15_0_arm64.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.7.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 592bb089cee0a9c7d81147ce6e50769e4947e3e104a24cf1180d279f87e66e7b
MD5 65221dc0aa596121ec6f8d0720197c9f
BLAKE2b-256 b63865651ad4f19895b299eb24e310b74d74ea07294790fc29f217c454b3a6c9

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73ce0ca6efa4004e1c373de42faa8a4cf652b57375bbb16cf3d76337495455f0
MD5 92dc1982746064a69ac4c35711eead29
BLAKE2b-256 82f5a855303585f837a8c0964ef78382f1d0c8b035c2856a6e78b50462068521

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a12524b98bc0bb7df563a0f071c48fe1eaec97939c52548c0a0327db4cf75a67
MD5 e2abee8a189611fc126a1174454c6b99
BLAKE2b-256 4c82381ee7e5ca556658789f731ba31a6b5f5084fd021a3f20de0b95150026bb

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.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.7.0-cp310-cp310-macosx_15_0_x86_64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 bce124a7b5fc0c2262be4edab9a338d9143e94c9a87781116532304dba867d18
MD5 1ff521f0e4aea387d95225b7197d7480
BLAKE2b-256 2d47c8ef2df9b5ebe85b209e0ffb3bddae806b93d5c4fce1ca7a0df30a9ed44b

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp310-cp310-macosx_15_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.7.0-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.7.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 9cf22cbd4d9aa61776f1793502ce28df44232903b406df9f673bb77464412ce0
MD5 2f300d832cb30151054fff0ca6df3146
BLAKE2b-256 272a67e005d128a4b54c72ccbcccd1e07747490fa223ec59959cfdb6c153f611

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.7.0-cp310-cp310-macosx_15_0_arm64.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