Skip to main content

HDF5 VOL connector for cloud object storage (AWS S3, Azure Blob)

Project description

ArrayMorph

Build Status License: MIT

ArrayMorph enables efficient storage and retrieval of array data from cloud object stores, supporting AWS S3 and Azure Blob Storage. It is an HDF5 Virtual Object Layer (VOL) plugin that transparently routes HDF5 file operations to cloud storage — existing h5py or HDF5 C++ code works unchanged once the plugin is loaded.

Tag: CI4AI


How-To Guides

Install ArrayMorph

pip install arraymorph

Once installed, jump straight to Configure credentials for AWS S3 or Azure below.

If you need the standalone lib_arraymorph binary, you can download a pre-built release or build from source.

Configure credentials for AWS S3

Use the Python API before opening any HDF5 files:

import arraymorph

arraymorph.configure_s3(
    bucket="my-bucket",
    access_key="MY_ACCESS_KEY",
    secret_key="MY_SECRET_KEY",
    region="us-east-1",
    use_tls=True,
)
arraymorph.enable()

Or set environment variables directly:

export STORAGE_PLATFORM=S3
export BUCKET_NAME=my-bucket
export AWS_ACCESS_KEY_ID=MY_ACCESS_KEY
export AWS_SECRET_ACCESS_KEY=MY_SECRET_KEY
export AWS_REGION=us-east-1
export HDF5_PLUGIN_PATH=$(python -c "import arraymorph; print(arraymorph.get_plugin_path())")
export HDF5_VOL_CONNECTOR=arraymorph

Configure credentials for Azure Blob Storage

import arraymorph

arraymorph.configure_azure(
    container="my-container",
    connection_string="DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net",
)
arraymorph.enable()

Or set environment variables directly:

export STORAGE_PLATFORM=Azure
export BUCKET_NAME=my-container
export AZURE_STORAGE_CONNECTION_STRING="DefaultEndpointsProtocol=https;..."
export HDF5_PLUGIN_PATH=$(python -c "import arraymorph; print(arraymorph.get_plugin_path())")
export HDF5_VOL_CONNECTOR=arraymorph

Use an S3-compatible object store (MinIO, Ceph, Garage)

Pass endpoint, addressing_style=True, and use_signed_payloads=True to match the requirements of most self-hosted S3-compatible stores:

import arraymorph

arraymorph.configure_s3(
    bucket="my-bucket",
    access_key="MY_ACCESS_KEY",
    secret_key="MY_SECRET_KEY",
    endpoint="http://localhost:9000",
    region="us-east-1",
    use_tls=False,
    addressing_style=True,
    use_signed_payloads=True,
)
arraymorph.enable()

Download a pre-built lib_arraymorph

Each GitHub release attaches standalone pre-compiled binaries of lib_arraymorph for all supported platforms:

File Platform
lib_arraymorph-linux-x86_64.so Linux x86_64
lib_arraymorph-linux-aarch64.so Linux aarch64
lib_arraymorph-macos-arm64.dylib macOS Apple Silicon

Download the file for your platform from the release assets and set HDF5_PLUGIN_PATH to the directory containing it before calling arraymorph.enable() or setting HDF5_VOL_CONNECTOR manually.

Build from source

Use this path if you want to compile lib_arraymorph yourself — for example to target a specific platform, contribute changes, or build a custom wheel.

Prerequisites

  • vcpkg — installs the AWS and Azure C++ SDKs via CMake
  • CMake and Ninja
  • uv — Python package manager

Step 1 — Clone and create a virtual environment

git clone https://github.com/ICICLE-ai/ArrayMorph.git
cd ArrayMorph
uv venv
source .venv/bin/activate

Step 2 — Install h5py

lib_arraymorph links against an HDF5 shared library at build time. Rather than requiring a separate system-wide HDF5 installation, the build system points CMake at the .so / .dylib that h5py already bundles. Install h5py first so those libraries are present:

uv pip install h5py

On macOS the bundled libraries land in .venv/lib/python*/site-packages/h5py/.dylibs/; on Linux in .venv/lib/python*/site-packages/h5py.libs/.

Step 3 — Configure and build the shared library

export HDF5_DIR=$(.venv/bin/python -c "import h5py,os; d=os.path.dirname(h5py.__file__); print(os.path.join(d,'.dylibs') if os.path.exists(os.path.join(d,'.dylibs')) else os.path.join(os.path.dirname(d),'h5py.libs'))")

cmake -B lib/build -S lib \
    -DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT:-~/.vcpkg}/scripts/buildsystems/vcpkg.cmake \
    -DCMAKE_BUILD_TYPE=Release \
    -G Ninja

cmake --build lib/build

This produces lib/build/lib_arraymorph.dylib on macOS or lib/build/lib_arraymorph.so on Linux.

Optional — Python package

If you also want to use the Python API, install the package in editable mode:

HDF5_DIR=$HDF5_DIR \
CMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT:-~/.vcpkg}/scripts/buildsystems/vcpkg.cmake \
uv pip install -e .

Or build a redistributable wheel:

HDF5_DIR=$HDF5_DIR \
CMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT:-~/.vcpkg}/scripts/buildsystems/vcpkg.cmake \
uv build --wheel --no-build-isolation

The wheel is written to dist/. Install it in any environment with:

pip install dist/arraymorph-*.whl

Tutorials

Write and read a chunked array on AWS S3

This tutorial walks through writing a 2-D NumPy array to a cloud HDF5 file and reading a slice of it back.

Prerequisites

  • An AWS account with an S3 bucket, or an S3-compatible object store
  • ArrayMorph installed (pip install arraymorph)

Step 1 — Configure and enable ArrayMorph

import arraymorph

arraymorph.configure_s3(
    bucket="my-bucket",
    access_key="MY_ACCESS_KEY",
    secret_key="MY_SECRET_KEY",
    region="us-east-1",
    use_tls=True,
)
arraymorph.enable()

arraymorph.enable() sets HDF5_PLUGIN_PATH and HDF5_VOL_CONNECTOR in the current process. Any h5py.File(...) call made after this point is routed through ArrayMorph.

Step 2 — Write array data

import h5py
import numpy as np

data = np.fromfunction(lambda i, j: i + j, (100, 100), dtype="i4")

with h5py.File("demo.h5", "w") as f:
    f.create_dataset("values", data=data, chunks=(10, 10))

Each 10×10 chunk is stored as a separate object in your S3 bucket.

Step 3 — Read a slice back

import h5py

with h5py.File("demo.h5", "r") as f:
    dset = f["values"]
    print(dset.dtype)           # int32
    print(dset[5:15, 5:15])     # fetches only the chunks that overlap this slice

Only the chunks that overlap the requested hyperslab are fetched from cloud storage — no full-file download occurs.


Explanation

How ArrayMorph works

ArrayMorph is implemented as an HDF5 Virtual Object Layer (VOL) connector. The VOL is an abstraction layer inside the HDF5 library that separates the public API from the storage implementation. By providing a plugin that registers itself as a VOL connector, ArrayMorph intercepts every HDF5 file operation before it reaches the native POSIX layer.

When arraymorph.enable() is called:

  1. HDF5_PLUGIN_PATH is set to the directory containing the compiled shared library (lib_arraymorph.so / lib_arraymorph.dylib).
  2. HDF5_VOL_CONNECTOR=arraymorph tells HDF5 to load and activate that plugin for all subsequent file operations.

From this point, a call like h5py.File("demo.h5", "w") does not touch the local filesystem. Instead, the VOL connector:

  1. Reads cloud credentials from environment variables and constructs an AWS S3 or Azure Blob client (selected by STORAGE_PLATFORM).
  2. On dataset read/write, translates the HDF5 hyperslab selection into a list of chunks and dispatches asynchronous get/put requests against the object store — one object per chunk.

Chunked storage model

HDF5 datasets are divided into fixed-size chunks (e.g. chunks=(64, 64) for a 2-D dataset). ArrayMorph stores each chunk as an independent object in the bucket. The object key encodes the dataset path and chunk coordinates, so a partial read only fetches the chunks that overlap the requested slice. For large chunks, ArrayMorph can issue byte-range requests to retrieve only the needed bytes within a chunk object.

Async I/O

Both the S3 and Azure backends use asynchronous operations dispatched to a thread pool. This allows ArrayMorph to fetch multiple chunks in parallel, which is important for workloads that access many chunks per read (e.g. strided access patterns in machine learning data loaders).

Compatibility

Because the interception happens at the VOL layer, no changes to application code are required. Any program that opens HDF5 files with h5py or the HDF5 C++ API will automatically use ArrayMorph once the plugin is loaded.


References

Python API

arraymorph.enable() -> None

Sets HDF5_PLUGIN_PATH and HDF5_VOL_CONNECTOR in the current process environment. Must be called before any h5py.File(...) call.

arraymorph.get_plugin_path() -> str

Returns the directory containing the compiled VOL plugin. Useful when you need to set HDF5_PLUGIN_PATH manually.

arraymorph.configure_s3(bucket, access_key, secret_key, endpoint=None, region="us-east-2", use_tls=False, addressing_style=False, use_signed_payloads=False) -> None

Configures the S3 client. All parameters are written to environment variables consumed by the C++ plugin at file-open time.

Parameter Environment variable Default Description
bucket BUCKET_NAME S3 bucket name
access_key AWS_ACCESS_KEY_ID Access key ID
secret_key AWS_SECRET_ACCESS_KEY Secret access key
endpoint AWS_ENDPOINT_URL_S3 AWS default Custom endpoint for S3-compatible stores
region AWS_REGION us-east-2 SigV4 signing region
use_tls AWS_USE_TLS false Use HTTPS when True
addressing_style AWS_S3_ADDRESSING_STYLE virtual path when True; required for most non-AWS stores
use_signed_payloads AWS_SIGNED_PAYLOADS false Include request body in SigV4 signature

arraymorph.configure_azure(container, connection_string=None) -> None

Configures the Azure Blob client.

Parameter Environment variable Default Description
container BUCKET_NAME Azure container name
connection_string AZURE_STORAGE_CONNECTION_STRING From env Azure Storage connection string

Environment variables

All configuration can be applied via environment variables without using the Python API. This is useful when running HDF5 C++ programs directly.

Variable Description
HDF5_PLUGIN_PATH Directory containing lib_arraymorph.so / .dylib
HDF5_VOL_CONNECTOR Must be arraymorph to activate the plugin
STORAGE_PLATFORM S3 (default) or Azure
BUCKET_NAME Bucket or container name
AWS_ACCESS_KEY_ID S3 access key
AWS_SECRET_ACCESS_KEY S3 secret key
AWS_REGION SigV4 signing region
AWS_ENDPOINT_URL_S3 Custom S3-compatible endpoint URL
AWS_USE_TLS true / false
AWS_S3_ADDRESSING_STYLE path or virtual
AWS_SIGNED_PAYLOADS true / false
AZURE_STORAGE_CONNECTION_STRING Azure connection string

External references


Acknowledgements

This project is supported by the National Science Foundation (NSF) funded AI institute for Intelligent Cyberinfrastructure with Computational Learning in the Environment (ICICLE) (OAC 2112606).

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

arraymorph-0.2.0b3.tar.gz (43.1 kB view details)

Uploaded Source

Built Distributions

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

arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_aarch64.whl (8.8 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

arraymorph-0.2.0b3-cp314-cp314-macosx_15_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.14macOS 15.0+ ARM64

arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_aarch64.whl (8.8 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

arraymorph-0.2.0b3-cp313-cp313-macosx_15_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.13macOS 15.0+ ARM64

arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_aarch64.whl (8.8 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

arraymorph-0.2.0b3-cp312-cp312-macosx_15_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.12macOS 15.0+ ARM64

arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_aarch64.whl (8.8 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

arraymorph-0.2.0b3-cp311-cp311-macosx_15_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.11macOS 15.0+ ARM64

arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_x86_64.whl (8.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_aarch64.whl (8.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

arraymorph-0.2.0b3-cp310-cp310-macosx_15_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.10macOS 15.0+ ARM64

arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_aarch64.whl (8.6 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

arraymorph-0.2.0b3-cp39-cp39-macosx_15_0_arm64.whl (5.5 MB view details)

Uploaded CPython 3.9macOS 15.0+ ARM64

File details

Details for the file arraymorph-0.2.0b3.tar.gz.

File metadata

  • Download URL: arraymorph-0.2.0b3.tar.gz
  • Upload date:
  • Size: 43.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3.tar.gz
Algorithm Hash digest
SHA256 5eea21b99cac84182e79fb6b1da9d47cf3578ca10c62c55522a15ed4b0ef628a
MD5 bc3ddc72fdccdf98aa329fd4ef12cbbb
BLAKE2b-256 8906f44ded3a9af0bcf6ba008f191507ee256b4ded0e66a95ef127c50f4273b0

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1ca5b24eca6a5dc7c7710ef277c68b3a2a0eed0f6bc03ce165d07a72fb2e4286
MD5 ee7eb89bda1d96ae932a3be33645407d
BLAKE2b-256 14f62103151c0b5179e726344e4cf9aba31f59cb2fe09cf74a192b24cdeb1c29

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.14, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 986727b3faf5ec4a38c320b6ed291d66f6bdfc10698cfb8a5fb2d506f1e5c79c
MD5 6f59449ef2fc86fc47a41e00d2286d72
BLAKE2b-256 5174cdb903fb54ee7e8874e3cf499d5e41e8199407b990eb51d701fd50985571

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp314-cp314-macosx_15_0_arm64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp314-cp314-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.14, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp314-cp314-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 c97780b67edeb5f0b6402b27a351769bdf2abb7c0122420d5ba52909794a7ec4
MD5 e166b0831b0f32bff27256936c56a95b
BLAKE2b-256 e7e061897a1d1fea62125e1bf5249709f2b8b5a367f62df699891f6493249676

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c9402e83052cd07feb032b919cf2c91e447fa38bb3a590b8ad2acd9ef83e916f
MD5 3b1aa2dc1bd84a3264ab8112fe80dd2b
BLAKE2b-256 8177d001a4e16fb930e48a2e42f85e04077a05e6e888e7516a1f59c126f15966

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 784eb9c4407893c816dc8f28869099034af92d08043312ad5b09d7d0471bd6ab
MD5 bef76a84b6859cdf20560e9c7008b876
BLAKE2b-256 bdca156e68a358d3e9b5e7931c287345d7518141b4c798fad66158779569003e

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp313-cp313-macosx_15_0_arm64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp313-cp313-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.13, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp313-cp313-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 a510f0805f6c0821e47dbce68f9b8ef93a00604231d1ed6c12756dc4f68b21cb
MD5 b343840e7d064bdf0e72135aaa909130
BLAKE2b-256 49b89ee8eaf7210f7270f5432230f903c474c9ff063b326fa556f93258492c1d

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 30aae61465a1ecc7f00be3b77575fbf2aba8e6574aae964bae2b6104d9d0a3f4
MD5 74d60f3cc9c91501dd1466bb770b3039
BLAKE2b-256 4619ab3453b6d46c36e781bf3b666a40fbe0d0a80990f4437d46b3fd857acc74

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 579c90e2a55673abc6c836e2e84425009403aacbeb4445a48bf3936640f6fc61
MD5 f6289afa5c9444565e3e0193b6661826
BLAKE2b-256 def9dac7f5aa171e12f683fc1e0f3bbc6d672afc9f2d81870812279ce860de33

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp312-cp312-macosx_15_0_arm64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp312-cp312-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.12, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp312-cp312-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 920b3cc36fd603a38c3c4a7d738630e2c4e7141812d9464b598eddef1ebaabb5
MD5 d46b6324d60cb9fb5ccacb620dea950d
BLAKE2b-256 efe4f8be971fc1cc4dc5f8add3d10330ebc3095cab1943806d5c67210e9a4562

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ba3384761fd8c934135e2d0550309ec368ca6de927a34be23440e6dc1ca0edd7
MD5 cce9587731e30ca2d7e9727269d7aa5b
BLAKE2b-256 6326fdc51b571a7b8003ced54b58ef882b51cdb563bd33fa24ad21ed6144c23c

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4d0547bcb5cb582960f0795878583445e9f1707546439f8e67e2aafe6d289181
MD5 6355c39cf5c9e837b2b8849670ea8f85
BLAKE2b-256 867e393ff177019150775ed00e31d9d7837794bb43311b64e6b4a5c3041d6b73

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp311-cp311-macosx_15_0_arm64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp311-cp311-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.11, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp311-cp311-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 aa3fddaf20f2cd20fe496a135ab8f18f34cf3cc165bfae09fbd4e0e977c35dbb
MD5 fade29ce8369d1b3dda440720c57bf6c
BLAKE2b-256 b7c4b86b9ba152163411a43fd41017e2912e09ba41e023b3fc950886ed716f43

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.9 MB
  • Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f11af74cb898d507565b6a41ceca320cf71fc1278ecc58b0ae1ee117ff4886ee
MD5 bb93c15b8b2b6320b1bd2b373b8351e8
BLAKE2b-256 bafa5a18574f0335fc9363654417e178ac3b8b626e152bb4facbb60a65d59e84

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.10, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 90c324dbf51b01167209cef0813541e27a65ab0ba3b09c33a9395adcbf509de2
MD5 176a141add33c720e590de2522015277
BLAKE2b-256 6178db9ff0b0e26c3f7f92cc89747dd763bae62563395b7f6d8bcecd413c0444

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp310-cp310-macosx_15_0_arm64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp310-cp310-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.10, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp310-cp310-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 50cdb7bc6e1694177d7e15ad026d095c0fa47a69b5a3139a986fb0725a27688a
MD5 d59e8d03899ae8eec82c79048d77180a
BLAKE2b-256 886d4f1f84475540ce7ea5d502677f7ea8237bc1d050108e563bfc29075597b4

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 8.8 MB
  • Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62f0c8f9b9acdb1097617e0e07bf91d3bd057cd6cd2cb30bd4e3f1ae591b2dfe
MD5 fbc1b8143a9a831b44c5f6ed95ed7d82
BLAKE2b-256 2737f92ec4550dadf9900bd4417b100b3144fb3bac62a60c99b468fc926f8b7a

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 8.6 MB
  • Tags: CPython 3.9, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 504719fd9675d51f4d17281d5cf9a5f027cf7f5895c98dd54c434b35e8e0fa50
MD5 c9bb16b9de83120462c1e0addd3015ee
BLAKE2b-256 2f8b5a524633d8ea06b0805e32425daa72cc5e568f6def0704d06a00d89cb5f0

See more details on using hashes here.

File details

Details for the file arraymorph-0.2.0b3-cp39-cp39-macosx_15_0_arm64.whl.

File metadata

  • Download URL: arraymorph-0.2.0b3-cp39-cp39-macosx_15_0_arm64.whl
  • Upload date:
  • Size: 5.5 MB
  • Tags: CPython 3.9, macOS 15.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.10.6 {"installer":{"name":"uv","version":"0.10.6","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for arraymorph-0.2.0b3-cp39-cp39-macosx_15_0_arm64.whl
Algorithm Hash digest
SHA256 50335338ae17487124b7c954bcb57ee79521c8c82b84e57ae2cc7cbea081bb34
MD5 bb18cfba1e99a3ca373aabfeeff985c7
BLAKE2b-256 2e8c2448d326800c5805083faab82ef57bb8b68146f2ef72d20a44d871ae9b00

See more details on using hashes here.

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