Skip to main content

Rust-backed acceleration for Python array.array

Project description

arrayops

Rust-backed acceleration for Python's array.array type

PyPI Python 3.8+ Rust License: MIT Code Coverage

Fast, lightweight numeric operations for Python's array.array without the overhead of NumPy. Built with Rust and PyO3 for zero-copy, memory-safe performance.

โœจ Features

  • โšก High Performance: 10-100x faster than pure Python loops using Rust-accelerated operations
  • ๐Ÿ”’ Memory Safe: Zero-copy buffer access with Rust's safety guarantees
  • ๐Ÿ“ฆ Lightweight: No dependencies beyond Rust standard library
  • ๐Ÿ”Œ Compatible: Works directly with Python's array.array - no new types
  • โœ… Fully Tested: 100% code coverage (Python and Rust)
  • ๐ŸŽฏ Type Safe: Full mypy type checking support

๐Ÿš€ Quick Start

Installation

# Install maturin if not already installed
pip install maturin

# Install in development mode
maturin develop

# Or install from source
pip install -e .

Usage

import array
import arrayops

# Create an array
data = array.array('i', [1, 2, 3, 4, 5])

# Fast sum operation
total = arrayops.sum(data)
print(total)  # 15

# In-place scaling
arrayops.scale(data, 2.0)
print(list(data))  # [2, 4, 6, 8, 10]

๐Ÿ“š Supported Types

arrayops supports all numeric array.array typecodes:

Type Code Description
Signed integers b, h, i, l int8, int16, int32, int64
Unsigned integers B, H, I, L uint8, uint16, uint32, uint64
Floats f, d float32, float64

๐Ÿ“– API Reference

sum(arr) -> int | float

Compute the sum of all elements in an array.

Parameters:

  • arr (array.array): Input array with numeric type (b, B, h, H, i, I, l, L, f, d)

Returns:

  • int for integer arrays
  • float for float arrays

Raises:

  • TypeError: If input is not an array.array or uses unsupported typecode

Example:

import array
import arrayops

# Integer array
arr = array.array('i', [1, 2, 3, 4, 5])
result = arrayops.sum(arr)  # Returns: 15 (int)

# Float array
farr = array.array('f', [1.5, 2.5, 3.5])
result = arrayops.sum(farr)  # Returns: 7.5 (float)

scale(arr, factor) -> None

Scale all elements of an array in-place by a factor.

Parameters:

  • arr (array.array): Input array with numeric type (modified in-place)
  • factor (float): Scaling factor

Returns:

  • None (modifies array in-place)

Raises:

  • TypeError: If input is not an array.array or uses unsupported typecode

Example:

import array
import arrayops

arr = array.array('i', [1, 2, 3, 4, 5])
arrayops.scale(arr, 2.0)
print(list(arr))  # [2, 4, 6, 8, 10]

# Float arrays work too
farr = array.array('f', [1.0, 2.0, 3.0])
arrayops.scale(farr, 1.5)
print(list(farr))  # [1.5, 3.0, 4.5]

๐Ÿ’ก Examples

Basic Operations

import array
import arrayops

# Create and sum an array
data = array.array('i', [10, 20, 30, 40, 50])
total = arrayops.sum(data)
print(f"Sum: {total}")  # Sum: 150

# Scale in-place (use float array for fractional factors)
data_float = array.array('f', [10.0, 20.0, 30.0, 40.0, 50.0])
arrayops.scale(data_float, 1.5)
print(list(data_float))  # [15.0, 30.0, 45.0, 60.0, 75.0]

Binary Protocol Parsing

import array
import arrayops

# Read binary data efficiently
with open('sensor_data.bin', 'rb') as f:
    data = array.array('f')  # float32
    data.fromfile(f, 10000)  # Read 10,000 floats

# Fast aggregation
total = arrayops.sum(data)
mean = total / len(data)
print(f"Average: {mean}")

ETL Pipeline

import array
import arrayops

# Process large dataset
sensor_readings = array.array('f', [10.5, 25.3, 15.8, 30.2, 20.1, 18.7, 22.4])

# Normalize to 0-1 range
min_val = min(sensor_readings)
max_val = max(sensor_readings)
range_size = max_val - min_val

if range_size > 0:
    # Shift to start at 0
    for i in range(len(sensor_readings)):
        sensor_readings[i] -= min_val
    # Scale to 0-1
    arrayops.scale(sensor_readings, 1.0 / range_size)
    # Now all values are in [0, 1] range

# Compute statistics
total = arrayops.sum(sensor_readings)
mean = total / len(sensor_readings)

Empty Array Handling

import array
import arrayops

# Empty arrays are handled gracefully
empty = array.array('i', [])
result = arrayops.sum(empty)  # Returns 0
arrayops.scale(empty, 5.0)    # No error, array remains empty

โšก Performance

arrayops provides significant speedups over pure Python operations:

Operation Python arrayops Speedup
Sum (1M ints) ~50ms ~0.5ms 100x
Scale (1M ints) ~80ms ~1.5ms 50x
Memory overhead N/A Zero-copy โ€”

Benchmark

import array
import arrayops
import time

# Create large array (100K integers - note: use smaller for int32 to avoid overflow)
arr = array.array('i', list(range(100_000)))

# Python sum
start = time.perf_counter()
python_sum = sum(arr)
python_time = time.perf_counter() - start

# arrayops sum
start = time.perf_counter()
arrayops_sum = arrayops.sum(arr)
arrayops_time = time.perf_counter() - start

print(f"Python sum: {python_time*1000:.2f}ms")
print(f"arrayops sum: {arrayops_time*1000:.2f}ms")
print(f"Speedup: {python_time / arrayops_time:.1f}x")

๐Ÿ”„ Comparison

Feature array.array arrayops NumPy
Memory efficient โœ… โœ… โŒ
Fast operations โŒ โœ… โœ…
Multi-dimensional โŒ โŒ โœ…
Zero dependencies โœ… โœ… โŒ
C-compatible โœ… โœ… โœ…
Type safety โœ… โœ… โš ๏ธ
Use case Binary I/O Scripting/ETL Scientific computing

๐Ÿ—๏ธ Architecture

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚           Python Layer                  โ”‚
โ”‚  array.array โ†’ arrayops โ†’ _arrayops     โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”‚ Buffer Protocol
                 โ”‚ (Zero-copy)
                 โ–ผ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚         Rust Extension (PyO3)           โ”‚
โ”‚  โ€ข Typed buffer access                  โ”‚
โ”‚  โ€ข Monomorphized kernels                โ”‚
โ”‚  โ€ข SIMD-ready loops                     โ”‚
โ”‚  โ€ข Memory-safe operations               โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ› ๏ธ Development

Prerequisites

  • Python 3.8+
  • Rust 1.70+
  • maturin

Setup

# Clone the repository
git clone <repository-url>
cd arrayops

# Install development dependencies
pip install -r requirements-dev.txt

# Install package in development mode
maturin develop

Testing

# Run all tests
pytest tests/ -v

# Run tests in parallel
pytest tests/ -n 10

# Run with coverage
pytest tests/ --cov=arrayops --cov-report=html

# Run Rust tests
export PYO3_PYTHON=$(which python)
export DYLD_LIBRARY_PATH=$(python -c "import sysconfig; print(sysconfig.get_config_var('LIBDIR'))"):$DYLD_LIBRARY_PATH
cargo test --lib

# Check Rust code coverage
cargo tarpaulin --tests --lib

Code Quality

# Format Python code
ruff format .

# Lint Python code
ruff check .

# Type checking
mypy arrayops tests

Building

# Development build
maturin develop

# Release build
maturin build --release

# Build for specific Python version
PYO3_PYTHON=/path/to/python maturin build --release

๐Ÿ“Š Test Coverage

  • Python: 100% (8/8 statements)
  • Rust: 100% (109/109 lines)

All code paths are tested, including:

  • All numeric types (10 typecodes)
  • Edge cases (empty arrays, single elements)
  • Error handling (invalid types, wrong inputs)
  • Large arrays (performance tests)

๐Ÿ”ง Optional Features

Enable optional features via Cargo features:

[dependencies]
arrayops = { version = "0.1.0", features = ["parallel"] }
  • parallel: Enable parallel execution with rayon (experimental, requires Rust nightly)

๐Ÿ“ Error Handling

arrayops provides clear error messages:

import arrayops

# Wrong type
arrayops.sum([1, 2, 3])  # TypeError: Expected array.array

# Unsupported typecode
arr = array.array('c', b'abc')
arrayops.sum(arr)  # TypeError: Unsupported typecode: 'c'

๐Ÿ—บ๏ธ Roadmap

  • Core operations (sum, scale)
  • Full test coverage
  • Type stubs for mypy
  • Additional operations (map, filter, reduce)
  • Parallel execution support (rayon)
  • SIMD auto-vectorization
  • NumPy array interop
  • Memoryview support

๐Ÿค Contributing

Contributions are welcome! Please:

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass (100% coverage maintained)
  5. Run code quality checks (ruff format, ruff check, mypy)
  6. Submit a pull request

See docs/design.md for architecture details.

๐Ÿ“„ License

MIT License - see LICENSE file for details.

๐Ÿ™ Acknowledgments

  • Built with PyO3 for Python-Rust interop
  • Built with maturin for packaging
  • Inspired by the need for fast array operations without NumPy overhead

๐Ÿ“ž Support

  • Issues: Report bugs or request features on GitHub
  • Documentation: See docs/design.md for detailed architecture
  • Questions: Open a discussion on GitHub

Made with โค๏ธ and Rust

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

arrayops-0.1.3.tar.gz (43.0 kB view details)

Uploaded Source

Built Distributions

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

arrayops-0.1.3-cp314-cp314-win_arm64.whl (113.0 kB view details)

Uploaded CPython 3.14Windows ARM64

arrayops-0.1.3-cp314-cp314-win_amd64.whl (116.4 kB view details)

Uploaded CPython 3.14Windows x86-64

arrayops-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl (218.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl (205.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp314-cp314-macosx_11_0_arm64.whl (190.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

arrayops-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl (194.9 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

arrayops-0.1.3-cp313-cp313-win_arm64.whl (113.0 kB view details)

Uploaded CPython 3.13Windows ARM64

arrayops-0.1.3-cp313-cp313-win_amd64.whl (116.4 kB view details)

Uploaded CPython 3.13Windows x86-64

arrayops-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl (218.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl (205.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp313-cp313-macosx_11_0_arm64.whl (190.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

arrayops-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl (194.9 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

arrayops-0.1.3-cp312-cp312-win_arm64.whl (112.8 kB view details)

Uploaded CPython 3.12Windows ARM64

arrayops-0.1.3-cp312-cp312-win_amd64.whl (116.0 kB view details)

Uploaded CPython 3.12Windows x86-64

arrayops-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl (217.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl (205.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp312-cp312-macosx_11_0_arm64.whl (189.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

arrayops-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl (194.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

arrayops-0.1.3-cp311-cp311-win_arm64.whl (112.0 kB view details)

Uploaded CPython 3.11Windows ARM64

arrayops-0.1.3-cp311-cp311-win_amd64.whl (115.3 kB view details)

Uploaded CPython 3.11Windows x86-64

arrayops-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl (217.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp311-cp311-manylinux_2_28_aarch64.whl (205.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp311-cp311-macosx_11_0_arm64.whl (190.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

arrayops-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl (194.7 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

arrayops-0.1.3-cp310-cp310-win_amd64.whl (115.3 kB view details)

Uploaded CPython 3.10Windows x86-64

arrayops-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl (217.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp310-cp310-manylinux_2_28_aarch64.whl (205.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp310-cp310-macosx_11_0_arm64.whl (190.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

arrayops-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl (194.7 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

arrayops-0.1.3-cp39-cp39-win_amd64.whl (115.3 kB view details)

Uploaded CPython 3.9Windows x86-64

arrayops-0.1.3-cp39-cp39-manylinux_2_28_x86_64.whl (217.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp39-cp39-manylinux_2_28_aarch64.whl (205.6 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp39-cp39-macosx_11_0_arm64.whl (190.2 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

arrayops-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl (194.7 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

arrayops-0.1.3-cp38-cp38-win_amd64.whl (115.1 kB view details)

Uploaded CPython 3.8Windows x86-64

arrayops-0.1.3-cp38-cp38-manylinux_2_28_x86_64.whl (217.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

arrayops-0.1.3-cp38-cp38-manylinux_2_28_aarch64.whl (205.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

arrayops-0.1.3-cp38-cp38-macosx_11_0_arm64.whl (190.0 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

arrayops-0.1.3-cp38-cp38-macosx_10_12_x86_64.whl (194.5 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

Details for the file arrayops-0.1.3.tar.gz.

File metadata

  • Download URL: arrayops-0.1.3.tar.gz
  • Upload date:
  • Size: 43.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3.tar.gz
Algorithm Hash digest
SHA256 d3b5c4979d5c7163164bb4e0389534b01b1ea4a2943c54074d4172ab9502faf8
MD5 5b5f292af4d2626264ffd091eb351a51
BLAKE2b-256 1d301eaf9c656314f09c25774a76cd7ec408b2f0289d23f2e2d1a87bfe35e734

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 113.0 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 ba1e9c4d5d6563807b18fff6a3c75cf9dc60f86f4c23e194977764fa21753f01
MD5 47afb72e30bfc844ad8d24245cf897de
BLAKE2b-256 b464df45f3066e391e778e8e0e9e2102ec184a87af132fb51decbfcadbd066e6

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 116.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a39e43f9fbc4f8a90d17f48329bd244dc47295032b0ef2803dfe205deba58b58
MD5 80edd8f4c5aafb2fb9f9562c9674f0e7
BLAKE2b-256 1a57c8847f3d8c7fda6ff9dc6fdd7d123e3a501b2868302b654815efbaabadcd

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5d5db045b8e10bda8da533fe7387bc41c9cd780c7bd74f71bd5a6cf319c23621
MD5 e94071daea7babc6f53db7c3b402be66
BLAKE2b-256 8884621e332a0eb3a0c9880ec0f9165df4efa15ba87167f1c1f9396be8cfaadc

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 022569281a96d93fec437fb35dac0490cd241ee9a210cfcee151fc55ea77e836
MD5 945d8beafa2370d496c3c98da786fbfe
BLAKE2b-256 5869e8da8516682d13cd21990606b5fc0b1646407ae28725db9aff5cb9302866

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86996302e7067c3070a634fe9dfd5a295aed37e866fefc6f0eaa4b8b990c5664
MD5 29d9e8dac620d76763546dd9dd2fada2
BLAKE2b-256 447a8566f025c2c5df0ac48e8106c50ee3894228228f5c9b45a1a23ad9891bce

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ae94be830ce926f170fa57b5682927143c993e68b0c60fda97405ec60912cac2
MD5 e7fa73b2693b581ebdd4f6a39b1e41b0
BLAKE2b-256 0efe959009e6c71eb2a0b35b840e7969422f1f722a618f56a11f721ade3276d2

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 113.0 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 90f8fabad01c449b46c4b9a8035daa74e55f208019b0ce252d23c06cd946cabe
MD5 c267bea267ffe1374de7654707396227
BLAKE2b-256 800f84d471e4ebd3a20a5bab3037bae8f604c148cc2dfc59a833999a7f936cbd

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 116.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d415c951ddfd357598816f2c4a1c3b130891121762cae41cc09c440949398291
MD5 f3293322f82b5ddbb68f4d5730acdfd9
BLAKE2b-256 ac6d06950148c503ae0611448cdd74b6ca230a2cc367d395f8265119c4f3b083

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4558101a035b9d615d943e15068d31b98084adff66e6748deb554bb419a8ef33
MD5 5f6324cebf993011e069662319dbcdbd
BLAKE2b-256 155700f07f834737812c5135cf861856b3d08c2af2be5633c1ab1f6a828ec97e

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fcc6a53b482b90e8aa2061185471d494a76634a0225dbd81b3d57d64dac4c217
MD5 5b598b59965f1b01dd3789b52862e841
BLAKE2b-256 f6e8bbba78cdc530ebe7a6f0188d3e437524aa0072dc7929f751cf7569502daf

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c2f9e07b68ff60e72b9b429f472188eb10c65ea8de7d1586331a5cb5da79e66a
MD5 e94f98655fe95907804c60b425222bed
BLAKE2b-256 3f1d82bbd060290547098e0468f3781bb0bbf26a3b01be09c80f9f50a0a354e4

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6f32ba8ce0feff0fffcdeb77836c615d60edb48f35fe9a6d9eb9accaf5708019
MD5 8019ba41a0602da748a56898e1b26988
BLAKE2b-256 76e0320599667536d08981a3c5378f4655cb1f3b5dff047152638422a562fcdb

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 112.8 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 8be62e5d904deabe5793eae8db356357ca2b4945eb014cf8e2a385f2016daebd
MD5 8dd5b507a5adf6ceaeb9a7085d35ac40
BLAKE2b-256 41b4a76581d2cc2b347dc4a88b511d94927c2887595cd851b5a145bc2c12a0f0

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 116.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c3a2476704786a475e20e82c4f95c4d1510eca412c51a6700fe270022cdb0b29
MD5 2bfb11c6ee23f722a59437d154b3ce8e
BLAKE2b-256 3e495fa68ca41137a6babcec1074cfbe8da78451485edfbdaa2c2e3ac5a06156

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3e64d6506df0eaca230a0d38e80561dc5a7e2e7e17aa479ae3e573dad1d80d9a
MD5 f2e7abbfbe7cae44a0e8343ec2b8bb78
BLAKE2b-256 88f4f024e69c9a701ba4030cda80d88dcba1270bfaca50a8247de6322f320fad

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eefacc7c00922347080481c7d21571bae34c2539f7d2a2bee9f47abf1c88d28d
MD5 102d11f30322c56a7b4a667be4943ddf
BLAKE2b-256 dc1869e8ee1057bc6893cea4cfaa3572a942ecbe55441405d7de1ad5d26fd135

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05b54e2105adbe37718d792ea8543f4d62acb7763095b67fb58b747f6e472674
MD5 0db09961e9b2d137dd4c2461eb1dec9c
BLAKE2b-256 07c77156e5a190b36235c7cf22b11c71006d4537b55203a9baf24cbc8218df00

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e77d99f841849ce42656918cef35ee3bd5e5a0d2bd5ddb808b6c01c572822066
MD5 0186dd6dfe12d751e18c6ca580d2aaac
BLAKE2b-256 7ba9949c4ba3c97b78a87d44e465c2e1bc761d09512573767825b04966a8f8bb

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 112.0 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 8d2b6e52855072e64ae1a45c94cc0b4404c14b73fe956e7dc7db32f903ffbef9
MD5 eaac92ac6dbd061061687d77e99c907b
BLAKE2b-256 23ec281c7f066ed8126e694900af50281a05ef8949f97ccb8b33b12c8c078543

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 115.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 3aa4c936d245db9f88842eff32e9841580a25b4801a7ffe95e1f68a94b4d8495
MD5 f472234bebcc26ba1425fb13d2ca8803
BLAKE2b-256 78193afa3dd6af03829ee4472241dadf003ca28166e06bd66e8abd8a281caa3f

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ad3eb2be1db87655e6e1e6d3ebec7335a169c15aa106d549c8c8a7fcd2b61582
MD5 5caf3a8f20c95bc41d1a37da4570abe7
BLAKE2b-256 cc77d7b664f67129e41c5ac7fd5a49f2fb939126c16203d72c813011ea279eac

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e38dafc6daae4ed4575b65a96931bd4ab7445bb567d42efd9b1fee4b7ef5c4b3
MD5 798cf2001fa2e02f5d557b04d35bc0bd
BLAKE2b-256 a7e59b74ce6ad221af7b0b280434750325cb4b1083c4226facf44b8ca6c80022

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14a21789be11ff52f04bf97a05a54dfffb33769f47702c7d50aaf89b5e6533df
MD5 540f4002efd3195ecf458b9b964bcfa4
BLAKE2b-256 e0b722e0cd8dd845f3bbd5c89d21352a97070d148a60f1885a4842a09333c9fd

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f375c0b7b3386e1da8aed4284e85caec3e2f76fbbe94b859f744da88efcddf47
MD5 f1de51d6483abeb8ea844b473319e76a
BLAKE2b-256 7ac0be19bc54a4786ad6d757fb75d45681af2f8831415988da8000b645579de4

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 115.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 326652172553a6306c2d1eaaf4e0bc5cad82fcbd38f0feed3d7175f8d6b2c2af
MD5 b0b10091ab5231949faeed234822ba51
BLAKE2b-256 58e368e5fbd2c6701f4580ee98c3cfc198face357fb734ddf7dcc530e52fe86b

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 689944d94be69e1716052e39198cb709ddf593548bf03d950a0377624b09a88c
MD5 1c1c995999fba2af45b889ee6328d1bd
BLAKE2b-256 fa903d3d82b4038062d15d88973c396204b06a9f42dff6dff3a807e61dbe318c

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 49c5a2f49372c4bd3e2e9ff6e7a0a54ae7a4e342246250f338dbdb08d56faeb9
MD5 43beee84f3b4767c3bde5e03755d6bd8
BLAKE2b-256 169bf455a6ab50af74e68a233e107c84eb6adb66bb65a591362caa3c99a5e2b2

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 527b6ade704260f46d867496d1421915e7e31d1cb560e502ac65e37aa0448065
MD5 440ac09b3dac2b18698c17c3b01ade57
BLAKE2b-256 4275dcf44ea0e63b48e661ba3a3d082a3f7f5d8a809feeafd1aa978ba5bd27cf

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c632988b5f57cbc15a2c69b321cbcbaae2e391cef701d491b97fe073e80310ae
MD5 77788f9fb5d8aa9ee4ede78bf7ec05ea
BLAKE2b-256 77163c9512c48a8caf1eda19447a4ef4492a0c8682bef1ef295d3b00451f75bd

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 115.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 a1958ead960701314245fa2bb3dfc624742c809ffef98c8bfbd5d9359524a263
MD5 5f4fcd940b1a35d289cfb4165f0bb1ba
BLAKE2b-256 eaef1cd0ee9c79689b129e761781587f14a89bf6ff9a582f7b7a0017db109e5a

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5143fab4fea0b50a7d4fa2ea9f73aff8563f17454c62d0ca0bd63f44063c9579
MD5 933c705ddd77392d0fede384ad4e9faf
BLAKE2b-256 36abf60b8bb4702e32d446457a7c0414e8c620eeee5cd972c4ae5783983247ed

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2d650d90f404f97a570276539fccb746c550322eda16bd7ea5710779b95a65e9
MD5 95ff5454d22f76be7324148d6ee6994d
BLAKE2b-256 ddef60edac5f4c5e7f7061e527dc5fb86ab1835ef31a43a1a8758beac7254e95

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8542c48b36fb11d683023a92202a48a1520d6ec8cd65467b435d5ae8d29154c3
MD5 4c2fbd24df94bebd7a2d61b44962ada1
BLAKE2b-256 481cee74da045d8ca764073404cf38a9cfe3d55de041dc2b4d180c16b003c06c

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2d20523f9de08004644432c43d9f3fd7ca0230d67cc2de2c7d8785fe3db8cea8
MD5 917bf559b8b6e1b1c92f03ad93a234d6
BLAKE2b-256 5178238392914ef221537bf0e648d2b4085ee68bd7324b56e909be7312503892

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: arrayops-0.1.3-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 115.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for arrayops-0.1.3-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 1db31d0ee97a52b10e52646b3f09ef75a2dda438248d2fd377895cd26f4693c4
MD5 168c651c92f3a08e7dca973582c822c7
BLAKE2b-256 0cca08fa3f3c4e993b2d55706e05718ffd7687b8ebde741391ba5d1e203097b4

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 1a02ac41b883643939a2d14fdf184551ec28b1d08fb505f4b95a11434b6dcfde
MD5 e406ff3fde664d3927e200282bf7f076
BLAKE2b-256 8b3730e0b2ae80773c779fc6a0f7b765bde8ad02e89fcf120aa6dc19efb6fc72

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 09db4d4c04f22377cf62faab971b4e1a8a20e8a6f134a94210401dc911ce94b5
MD5 124e347118b7c527ad57e88244ee4b81
BLAKE2b-256 fbaea306f4269361338a0b3198dc789a9d477bcc4b809c9d2e1e063ecfc58a1d

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 69213c03ec9a98d7bedf43cf303ab71ad924fc0e6d7373e008b5b1d6922168b4
MD5 18731b789b6fb777e53d0f192da20538
BLAKE2b-256 d2ed40e556be6cd1fdc52e7a1d958725fb8b26f06bf33db8154f68fcc0b18f08

See more details on using hashes here.

File details

Details for the file arrayops-0.1.3-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for arrayops-0.1.3-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d8830d37eda968c331bbc215267cd086d4e40a3dc164ca5f2beea2f6f424f32b
MD5 42ce7c0d9f9e945b52636abf342a41ef
BLAKE2b-256 9b14310f7029684780b6019e1ef053dec0cdb97b50be1a342b51edeb7fe5461a

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