Skip to main content

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)

Docker

Build and run the tests in a container:

docker build -t acquire-zarr .
docker run --rm 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",
    .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()

Understanding the output hierarchy

The Zarr hierarchy produced by a stream depends on output_key and downsampling_method:

output_key downsampling_method Result at store_path
"" (empty) None Simple array at store_path/
"myarray" None Simple array at store_path/myarray/
"" (empty) set (e.g. MEAN) OME-NGFF multiscales group at store_path/, array at store_path/0/
"myarray" set (e.g. MEAN) OME-NGFF multiscales group at store_path/myarray/, array at store_path/myarray/0/

When downsampling_method is set, an OME-NGFF multiscales group is created at store_path/output_key/ (or at store_path/ if output_key is empty), containing the full-resolution array at level 0 plus additional downsampled levels. The number of levels is determined automatically from the chunk and array sizes. You can cap the pyramid depth with max_levels (0 means no limit, which is the default).

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.

Writing custom metadata

Custom metadata can be written to any array in the stream using ZarrStream_write_custom_metadata (C) or stream.write_custom_metadata (Python). Metadata is written under the attributes key of the target array's zarr.json file, which is the standard location for user-defined metadata in Zarr v3.

The function takes three parameters:

  • array_key: The key of the array to write metadata to, matching the output_key set when configuring the array (see the array configuration examples above). If NULL (C) or None (Python) and the stream has only one array, that array is targeted automatically. Required when the stream has multiple arrays.
  • metadata_key: An optional key under attributes to nest the metadata under. If NULL/None or empty, metadata is written directly under attributes.
  • metadata: A JSON-formatted string containing the metadata to write.

[!NOTE] The ome key under attributes is reserved for OME-NGFF metadata and cannot be used as a metadata_key. Passing "ome" or, if no metadata key is provided, if any child of the metadata object has a key of "ome", the function will return an error.

In C:

// Write directly under 'attributes'
ZarrStream_write_custom_metadata(stream,
                                 "my-array",   // array_key
                                 NULL,          // metadata_key: write under 'attributes'
                                 "{\"device\": \"motor-1\", \"position\": 42}");

// Write under 'attributes/device'
ZarrStream_write_custom_metadata(stream,
                                 "my-array",
                                 "device",
                                 "{\"name\": \"motor-1\", \"position\": 42}");

In Python:

import json

# Write as a dict directly under 'attributes'
stream.write_custom_metadata(
    {"device": "motor-1", "position": 42},
    array_key="my-array"
)

# Write as a string directly under 'attributes'
stream.write_custom_metadata(
    json.dumps({"device": "motor-1", "position": 42}),
    array_key="my-array"
)

# Write under 'attributes/device'
stream.write_custom_metadata(
    {"name": "motor-1", "position": 42},
    array_key="my-array",
    metadata_key="device"
)

Metadata can be written at any point while the stream is active and will be flushed to disk when the stream is closed.

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

Threading

The stream's thread pool size is controlled by max_threads (ZarrStreamSettings.max_threads in C/C++, StreamSettings.max_threads in Python). Leaving it at its default of 0 means "not explicitly set": the stream will use the ZARR_MAX_THREADS environment variable if it's set to a positive integer, or otherwise auto-detect based on hardware concurrency.

  • ZARR_MAX_THREADS is ignored if max_threads is explicitly set to a nonzero value.
  • An invalid ZARR_MAX_THREADS value (non-numeric, zero, or negative) is ignored, with a warning logged, and auto-detection is used instead.

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

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.9.0-cp314-cp314-win_amd64.whl (3.1 MB view details)

Uploaded CPython 3.14Windows x86-64

acquire_zarr-0.9.0-cp314-cp314-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

acquire_zarr-0.9.0-cp314-cp314-manylinux_2_28_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

acquire_zarr-0.9.0-cp314-cp314-macosx_15_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.14macOS 15.0+ x86-64

acquire_zarr-0.9.0-cp314-cp314-macosx_15_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

acquire_zarr-0.9.0-cp313-cp313-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.13Windows x86-64

acquire_zarr-0.9.0-cp313-cp313-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

acquire_zarr-0.9.0-cp313-cp313-manylinux_2_28_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

acquire_zarr-0.9.0-cp313-cp313-macosx_15_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.13macOS 15.0+ x86-64

acquire_zarr-0.9.0-cp313-cp313-macosx_15_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

acquire_zarr-0.9.0-cp312-cp312-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.12Windows x86-64

acquire_zarr-0.9.0-cp312-cp312-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

acquire_zarr-0.9.0-cp312-cp312-manylinux_2_28_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

acquire_zarr-0.9.0-cp312-cp312-macosx_15_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.12macOS 15.0+ x86-64

acquire_zarr-0.9.0-cp312-cp312-macosx_15_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

acquire_zarr-0.9.0-cp311-cp311-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.11Windows x86-64

acquire_zarr-0.9.0-cp311-cp311-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

acquire_zarr-0.9.0-cp311-cp311-manylinux_2_28_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

acquire_zarr-0.9.0-cp311-cp311-macosx_15_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.11macOS 15.0+ x86-64

acquire_zarr-0.9.0-cp311-cp311-macosx_15_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

acquire_zarr-0.9.0-cp310-cp310-win_amd64.whl (3.0 MB view details)

Uploaded CPython 3.10Windows x86-64

acquire_zarr-0.9.0-cp310-cp310-manylinux_2_28_x86_64.whl (4.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

acquire_zarr-0.9.0-cp310-cp310-manylinux_2_28_aarch64.whl (5.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

acquire_zarr-0.9.0-cp310-cp310-macosx_15_0_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10macOS 15.0+ x86-64

acquire_zarr-0.9.0-cp310-cp310-macosx_15_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

File details

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6dd7e8d7bbba51bd8f2aef5eb577a3bd811c8cde17c304e4b4a209127f72de4f
MD5 f62adfb8a0f805e572ee966adb371cbf
BLAKE2b-256 020151d960e3327452cc3a7b88fce9ab863f0034e2a2c1b15a5bbb7783e4bc4f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87004e21297029c4418ec7c6af7a111aa5ef95f3723cfa70538852671a00f952
MD5 9a2110dcd8b5cd6d71d72e280c536714
BLAKE2b-256 290e413f114d5941cedc6509256fc65f63c205cc700f6b6534018ecd91dbc5b4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c61aa4128dd74d65bbfd2c7e5ecff47be4247f78cab6b7aa689cab2a9c5ea52e
MD5 45b4f3437d6bc6d70f6b82cd813a7dcc
BLAKE2b-256 c553d7572ecba9fe7df9c1cc3628d9ead8aef1c016a0b698dad12b9d9bd1908f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp314-cp314-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 4c30ad395426c570790b9390194e4b534e56e9b1771cfa5272a0a71bb33eb441
MD5 b08b10775d247bf92bb71852113b82b8
BLAKE2b-256 4f9c7e5bbeade07ae40aea480b5362b35cac4d2ce06bd797ee6bab3d4c1c00ef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 8a5b4dd53b292fd4d4e9748b7fdfe05dc1c53727dc8decef0de9d3193e5e264e
MD5 b92d86f7c9d7efff2117e7890eeef3c8
BLAKE2b-256 a433887f7f3f2e068b6626064aa9d2a45a850f73b6c7ee2bbc6a1df3408d5da2

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.9.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.9.0-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 88699c79f762810dc1377ca88c78a3a893913d8abb097a5fd3d8705e634c47a2
MD5 6faf442a58ec89a4ab59d0bdcf10c814
BLAKE2b-256 305bb7cbce5a70c2e4f4195e9afb71a10e4cf30a1a0446b4ddd5b709224329a3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b07642bf675203adccebe6c2e72c5c93c7a812c05e8781f80328974ada382d6b
MD5 fcea075bf68f92967131b2c840009615
BLAKE2b-256 e9f6fd91e1780ddceae18980493ddd5093de6c6c9f6125967cd325a11a0eeb1e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 90a70a37e08bcf84ac1617b89e5f5deec04714652e35dd22d7f37cda720b178d
MD5 7a2e0ac881a0721e1c3821aab0567dd6
BLAKE2b-256 e53790bb861cd6b3a7e28734119b2db999fae7fe9691cb9c8a353c608ce77a79

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp313-cp313-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 ba81b5a26f18c690e6226d43a61d59914515616832d4f65df38771c1a929b9f1
MD5 5f38d8b6bc4694671bbc446922a18c79
BLAKE2b-256 9a18725dab46c8fbb4c2bcbd31388be4e7659cf39ae194cf889fc969f7aa27bd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a6e75a3d41f9c7f6b3eef8217c75a0e26d9ae636acbd1422d2fe9ee413c0aee6
MD5 3edebb837be2ca50ca01e4ea46cb5c6e
BLAKE2b-256 6d769f22b78eccd4f1e9003138aea2590ea4b02824d8fa96fea6eb4d2d0bf801

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.9.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.9.0-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ad31dce9122bab8aa8580c946ecf6a986fd0bd3b70e1baeb2281d55d1d08f3d1
MD5 e71fd45b6db14a9aca2f7caba1646072
BLAKE2b-256 d8bc34542007bd85d3cba958b77260d1fd03c8adea40958557bf83a6c504e199

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 69331a922b0dc2ae28fae378000f876c983735e84710885b2aa197e07a534654
MD5 495fb11bec8d4b4607a78e77df29666e
BLAKE2b-256 a18b94a25e61abb85d4ab9c8243c1c81e7121d8d1222bd0e9e1bb44ef484ad98

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f47548c80f8c819ec52cc43cd453a9437222d6c609ec5312b7f6ca70c3530d5c
MD5 01e2c21b7a75e41c31236625c764c390
BLAKE2b-256 2cb705f9f99ed50db2cbc0ee00d140ac9cf4a57d44596e44773acc7d249674b5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp312-cp312-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 f4dee2ddc41c9236de1bb64ace651890934b7d4a018c02daeddf4f2d719c42a5
MD5 911c2de6408f322f1cfa5afba818ad0b
BLAKE2b-256 e21509d2e37f700a543bd0a990ca63e14b5d4852e2c83f0a7c773665cd70a016

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c1aa3f6a0507a257e777e0015cdc4576808b6099e2568c2e9a08cbc2df24188a
MD5 150805a7b5cc0df58a5943ac7e19ec28
BLAKE2b-256 a644a62c7c11269669655acfe145e59f0cbec4a3ee6e0713230eec870ef29294

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.9.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.9.0-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b4abbd011f6c49a40571b9e6adf46c38cfbdc3926ded676db3c3bb15a512c970
MD5 3c53f6d259d1aefeabd92e4ad0fe71aa
BLAKE2b-256 f643ca173342d60cb8339359913dd0395431d689e974510e1595be57fa931355

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 58bde417e64e1297fea8d9b3a38c4047d2aecc0df83d33a3dbfdc0434a884bf8
MD5 7f3f292f59c5fc8cd0a4811858c11130
BLAKE2b-256 0aa36debcdc804f0319f775b803433fb388b11c37f5b30e879c4a3dea7cba2b6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b124bb048398f39e0aa4e64fa94d7d7b94bd6ab8d2cee2b35c55253def3bdc8e
MD5 9a5c17e7c9666635d4d8d81daaa15c22
BLAKE2b-256 c9ce198ceb9fcf9cf38c3266a6f29bf4456a5ddd46aff8510799e40a6e61247f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp311-cp311-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 de1b4608878bafb415abd18e6544a1135e4475f27273231671eed8015d09438d
MD5 44c33edfaaed430ac4b006b3c2aa2cad
BLAKE2b-256 e624bfef0f48a0afe56615635ef23d7abf31901149a4b2ca6d299cbac84ef03b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 d3d37136ebaf75d5539f1060274b2b4dbfc88890aa9b5768b5073842b648cddb
MD5 da5e7d4fd09eacf9f44f3df643bacf25
BLAKE2b-256 674f55db916a8d854647178cf379b587b66ad187783541f4e0ab511331941c68

See more details on using hashes here.

Provenance

The following attestation bundles were made for acquire_zarr-0.9.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.9.0-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ed003d1d033056b603fe516e53c689d8cb7f0006334cb73e99a0e37ee8add7e6
MD5 58a3a494ade343e6d27637f4bc50aa2b
BLAKE2b-256 99f0182f88b89aa1414eac6db344be9927388c81787074aceb037ce5e3486957

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb7d491d4455aa5756b442b768b51ab41c460a955157c2dcc6068b70a1ff1029
MD5 67e0ed7545da46ce61cfe2378be29010
BLAKE2b-256 bc8612255e120a89ff6808fa6991d3ab44e3a336e2aa8383d2e3b1c79ff82abd

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 edc6b4780c30ab724c7f461cf4ebf102cf01058f2a832b2f3041998ebdbc092e
MD5 069a357058d7d651e27d94a3b7480181
BLAKE2b-256 c271abf103922220649c48dedb6982fb2e928d98ce7165dd7fdc851116427953

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp310-cp310-macosx_15_0_x86_64.whl
Algorithm Hash digest
SHA256 cbb7d67c78c3cee084534108dc7c0ec2fef1812df36de03734ff6cbd6f922651
MD5 f6659ebc2d2b0ec155c25aded404f2d4
BLAKE2b-256 ab0a764d59578b668a25ffd79e60236dc74d9f44d84db472533ba51d9bd2eba4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for acquire_zarr-0.9.0-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 e65bce574831db1ec848065ab5f6a96c72f1bc3197bae57f624d3c187354b0ee
MD5 2f8e8587495b2c3907759e9c4808135c
BLAKE2b-256 7482051e9e0cd84bd4b78deab1d23f72472bb9bdabbe61b65449e24204a7177a

See more details on using hashes here.

Provenance

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

Release history Release notifications | RSS feed

This release

0.9.0 This release

25 files

0.8.1

25 files

0.8.0

25 files

0.7.0

25 files

0.6.0

26 files

0.5.2

26 files

0.5.1

26 files

0.5.0

26 files

0.4.0

21 files

0.3.1

21 files

0.3.0

21 files

0.2.4

21 files

0.2.3

16 files

0.2.2

16 files

0.2.1

16 files

0.2.0

16 files

0.1.0

16 files

0.0.5

16 files

0.0.2

16 files

0.0.1

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page