HDF5 VOL connector for cloud object storage (AWS S3, Azure Blob)
Project description
ArrayMorph
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
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:
HDF5_PLUGIN_PATHis set to the directory containing the compiled shared library (lib_arraymorph.so/lib_arraymorph.dylib).HDF5_VOL_CONNECTOR=arraymorphtells 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:
- Reads cloud credentials from environment variables and constructs an AWS S3 or Azure Blob client (selected by
STORAGE_PLATFORM). - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file arraymorph-0.2.0b4.tar.gz.
File metadata
- Download URL: arraymorph-0.2.0b4.tar.gz
- Upload date:
- Size: 43.0 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bc86ecc12372f98f122b43c8a85b9e9347eb77896eafeeccd9cc68ce2ba47177
|
|
| MD5 |
34725e76326e4cacece39f22a4595f82
|
|
| BLAKE2b-256 |
e5b73393eb8808f4c332b7e8af961331bb0cd922912b8b71b850727eee7bb5fd
|
File details
Details for the file arraymorph-0.2.0b4-cp314-cp314-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adc3584809cf1e4ee96312a5df4d1cbbb49ee77a4e342c9b469b5b34f2e8e733
|
|
| MD5 |
eecaa1b66f9d170a1603fe800949deed
|
|
| BLAKE2b-256 |
21033fd39c62850a36c2509ce7bb5b86366f8f65c98f9000cc029f79c7b84597
|
File details
Details for the file arraymorph-0.2.0b4-cp314-cp314-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fc3e464eae586bc087f9331a0f73582a7d2263600d0cba5f4c090825345397b
|
|
| MD5 |
bd4e41151328095aa043872411dfe90c
|
|
| BLAKE2b-256 |
f8fa4a1680295bfc42518c66596e30ff7ef6a0f2298282ba02e9c4af7afaa82d
|
File details
Details for the file arraymorph-0.2.0b4-cp314-cp314-macosx_15_0_arm64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c969f64ba2a371b90c4c344f1c279b15b3cb66f0940e209e18f523b647271f2d
|
|
| MD5 |
741c37aa370bd9464e8a8bb261526370
|
|
| BLAKE2b-256 |
e17569653321d1b5646b0d35eb1e1ed04e9956410f9ae66e20e62992aea70f84
|
File details
Details for the file arraymorph-0.2.0b4-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d04a7bb34d29010805ca498d6a367c4ef144b453f95aa0ac818be4490f28ca90
|
|
| MD5 |
0c7ad91d68cbeec5c0ad0e6ee28d9af7
|
|
| BLAKE2b-256 |
8097abf848350895e3b36edd68ce0f74a6b2b9d89dc43418143ed1b5d4e7bb38
|
File details
Details for the file arraymorph-0.2.0b4-cp313-cp313-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e25964d770b91b885b75b1ef96bcf78a7ee8f66339b577edb7e396ebc026d116
|
|
| MD5 |
25b911b91556a1bb05691e5d51dd1dca
|
|
| BLAKE2b-256 |
8bb3a77edd1a51b8508fc77cffb7c9614fd0938d02c972ecc5edefc6f2a0283d
|
File details
Details for the file arraymorph-0.2.0b4-cp313-cp313-macosx_15_0_arm64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e45caec3253a67bb8076e43b97e60a98eb3c095707acb24f2b9e7248c573204d
|
|
| MD5 |
c3fc7948de843c3b55af34097eeddb4f
|
|
| BLAKE2b-256 |
34cc1512f7a4d515345cbcfba403c130d5520540260747dc2cef8a71c1e3df6b
|
File details
Details for the file arraymorph-0.2.0b4-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2b60163d03b25b6eb18218f529bd27c3214d840f9c02fa156b85b68c6c6f868
|
|
| MD5 |
3e791779820a76923b780b6e5417f050
|
|
| BLAKE2b-256 |
bcb5afde9e4bb7c9119aa8a7d13046468e56192425671709e5bdcdff909175ac
|
File details
Details for the file arraymorph-0.2.0b4-cp312-cp312-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c3db08368f50b876c48d524eec122833f3aca7f68348551c0dcc718d76207c5
|
|
| MD5 |
19e1e28e2e95e724345bb2cae8cafe36
|
|
| BLAKE2b-256 |
0574770e81e600dd37121fbdc97c6f6a8335c411ab190e672565567904c071fd
|
File details
Details for the file arraymorph-0.2.0b4-cp312-cp312-macosx_15_0_arm64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2154bb2e18f0c9d073d5cf48ebb8a330ccaac1df107fe68d9ee275f86ab5368f
|
|
| MD5 |
969d3479067520e0ebc5f8c297e3bea4
|
|
| BLAKE2b-256 |
732e233e046ca1a65c710524d024532bedaf2eed43cb2793a9fa10de7bfc13e3
|
File details
Details for the file arraymorph-0.2.0b4-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dd172ac0f0a0efce0d8c00139e19fca64e4ded1c08248de5011cd70f0b93efd0
|
|
| MD5 |
335af55ff93b48b9807df953d38e045b
|
|
| BLAKE2b-256 |
e3612c3fe1b699388bd4091b46e021f8c72c1676253554c030580d4e0ca9fc7d
|
File details
Details for the file arraymorph-0.2.0b4-cp311-cp311-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
69d3861f2349efa611fea791ca8827ac628f6a3fbc156cf9634fdf912d3c713e
|
|
| MD5 |
157bc1df37b6c52b63c6054b4555e6dc
|
|
| BLAKE2b-256 |
280ebcf247007b2ca6eaffcd8e61053103b6ebd3582c9b2e05993ca069b0b0cd
|
File details
Details for the file arraymorph-0.2.0b4-cp311-cp311-macosx_15_0_arm64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb8613b01fc8c3f57bb5255221171b7abfa6ce912db66937bb615fa97995789f
|
|
| MD5 |
a351db3ba8966a378ab6f69c29e1fc0d
|
|
| BLAKE2b-256 |
a428907e3dee11d613a7de2a45097430b6d7bb955e82bb0d5c3846dd9faf19d6
|
File details
Details for the file arraymorph-0.2.0b4-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b726b0da3eb20487b29b048a8c2266b0dbd24cbdd60f722ef24ef5d71ac44d81
|
|
| MD5 |
4f6b92a585c5e293552860cbfcc487d4
|
|
| BLAKE2b-256 |
2bea5c1d3f5657750027103ef95db958a57e9087e611f8e8affac04ad259fb06
|
File details
Details for the file arraymorph-0.2.0b4-cp310-cp310-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
66c47aacd55e27d13590c1f85e39658db5635a785115224b9ace6df2473c3b58
|
|
| MD5 |
19a2f666d249726c609de3c18c353a09
|
|
| BLAKE2b-256 |
5e3b58786fc00b4b61729ccb0380654d4f82fba2081d037bc0c7ebe63a4bc6c3
|
File details
Details for the file arraymorph-0.2.0b4-cp310-cp310-macosx_15_0_arm64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
549535bbb2bbf9df9ff4f846bd3db2ec343551dc5084836fa6f0e1fc9ca98c28
|
|
| MD5 |
4a388660a9cd333d74a08a3b00bf5115
|
|
| BLAKE2b-256 |
e0489e42ba213db32e93534b2af9a913c3a9221b12471ddebd98e9042537966f
|
File details
Details for the file arraymorph-0.2.0b4-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd3d05bae5f4ca49522fe4f69bd645abfe29780d1ca51429862c973889c0e8d3
|
|
| MD5 |
d5364b9d116e9d5e7481fec0aef85501
|
|
| BLAKE2b-256 |
2b87a7be8bb77a690f86652eb4f65629ab254c295e561b09c238a39e3348d9e8
|
File details
Details for the file arraymorph-0.2.0b4-cp39-cp39-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0e9cf3c7732a5696caeff16d087de1de444ff28b2c9a5cd85edc21f3bbdeab96
|
|
| MD5 |
301375f67b527e96401e57d4cba71734
|
|
| BLAKE2b-256 |
873b84c959466b9fb142e4093dce4c0db60037b38eb9c5931f3ec26f79b06634
|
File details
Details for the file arraymorph-0.2.0b4-cp39-cp39-macosx_15_0_arm64.whl.
File metadata
- Download URL: arraymorph-0.2.0b4-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf71ed8438f99df23fc4926d3274a68903628a6f2b3234186eefe9827f6fb4db
|
|
| MD5 |
d59c3054dab36c76ce430d7756f25596
|
|
| BLAKE2b-256 |
2b125aeab9e24fd2f17fd624dbede17102d2472321271fd6acc95dd73cf147af
|