Skip to main content

A high-performance array storage and manipulation library

Project description

NumPack

NumPack is a high-performance array storage library that combines Rust's performance with Python's ease of use. It provides exceptional performance for both reading and writing large NumPy arrays, with special optimizations for in-place modifications.

Key Features

  • 🚀 321x faster row replacement than NPY
  • 224x faster data append than NPY
  • 💨 45x faster lazy loading than NPY mmap
  • 📖 1.58x faster full data loading than NPY ⬆️
  • 🎯 Random Access: 1K indices 2.4x slower, 10K indices 16.4x slower than NPY ⚠️
  • 🔄 20.4x speedup with Batch Mode for frequent modifications
  • 94.8x speedup with Writable Batch Mode ⬆️
  • 💾 Zero-copy operations with minimal memory footprint
  • 🛠 Seamless integration with existing NumPy workflows

New I/O Optimizations 🔧

  1. Adaptive Buffer Sizing

    • Small arrays (<1MB): 256KB buffer → 96% memory saving
    • Medium arrays (1-10MB): 4MB buffer → balanced performance
    • Large arrays (>10MB): 16MB buffer → maximum throughput
  2. Smart Parallelization

    • Automatically parallelizes only when beneficial (>10MB total data)
    • Avoids thread overhead for small datasets
  3. Fast Overwrite Path

    • Same-shape array overwrite: 1.5-2.5x faster
    • Uses in-place update instead of file recreation
  4. SIMD Acceleration

    • Large files (>10MB) use SIMD-optimized operations
    • Theoretical 2-4x speedup for memory-intensive operations
  5. Batch Mode Intelligence

    • Smart dirty tracking: only flushes modified arrays
    • Zero-copy cache detection
    • Reduced metadata synchronization

Core Advantages Enhanced

  • Replace operations now 321x faster than NPY 🔥
  • Full Load now 1.58x faster than NPY 📈
  • System-wide optimizations benefit all operation modes

Features

  • High Performance: Optimized for both reading and writing large numerical arrays
  • Lazy Loading Support: Efficient memory usage through on-demand data loading
  • In-place Operations: Support for in-place array modifications without full file rewrite
  • Batch Processing Modes:
    • Batch Mode: 21x speedup for batch operations
    • Writable Batch Mode: 89x speedup for frequent modifications
  • Multiple Data Types: Supports various numerical data types including:
    • Boolean
    • Unsigned integers (8-bit to 64-bit)
    • Signed integers (8-bit to 64-bit)
    • Floating point (16-bit, 32-bit and 64-bit)
    • Complex numbers (64-bit and 128-bit)

Installation

From PyPI (Recommended)

Prerequisites

  • Python >= 3.9
  • NumPy >= 1.26.0
pip install numpack

From Source

Prerequisites (All Platforms including Windows)

  • Python >= 3.9
  • Rust >= 1.70.0 (Required on all platforms, install from rustup.rs)
  • NumPy >= 1.26.0
  • Appropriate C/C++ compiler
    • Windows: Microsoft C++ Build Tools
    • macOS: Xcode Command Line Tools (xcode-select --install)
    • Linux: GCC/Clang (build-essential on Ubuntu/Debian)

Build Steps

  1. Clone the repository:
git clone https://github.com/BirchKwok/NumPack.git
cd NumPack
  1. Install maturin:
pip install maturin>=1.0,<2.0
  1. Build and install:
# Install in development mode
maturin develop

# Or build wheel package
maturin build --release
pip install target/wheels/numpack-*.whl

Usage

Basic Operations

import numpy as np
from numpack import NumPack

# Using context manager (Recommended)
with NumPack("data_directory") as npk:
    # Save arrays
    arrays = {
        'array1': np.random.rand(1000, 100).astype(np.float32),
        'array2': np.random.rand(500, 200).astype(np.float32)
    }
    npk.save(arrays)
    
    # Load arrays - Normal mode
    loaded = npk.load("array1")
    
    # Load arrays - Lazy mode
    lazy_array = npk.load("array1", lazy=True)

Advanced Operations

with NumPack("data_directory") as npk:
    # Replace specific rows
    replacement = np.random.rand(10, 100).astype(np.float32)
    npk.replace({'array1': replacement}, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    
    # Append new data
    new_data = {'array1': np.random.rand(100, 100).astype(np.float32)}
    npk.append(new_data)
    
    # Drop arrays or specific rows
    npk.drop('array1')  # Drop entire array
    npk.drop('array2', [0, 1, 2])  # Drop specific rows
    
    # Random access operations
    data = npk.getitem('array1', [0, 1, 2])
    data = npk['array1']  # Dictionary-style access
    
    # Stream loading for large arrays
    for batch in npk.stream_load('array1', buffer_size=1000):
        process_batch(batch)

Batch Processing Modes

NumPack provides two high-performance batch modes for scenarios with frequent modifications:

Batch Mode (21x speedup, 43% faster than before)

with NumPack("data.npk") as npk:
    with npk.batch_mode():
        for i in range(1000):
            arr = npk.load('data')      # Load from cache
            arr[:10] *= 2.0
            npk.save({'data': arr})     # Save to cache
# All changes written to disk on exit
# ✨ Now with smart dirty tracking and zero-copy detection

Writable Batch Mode (89x speedup)

with NumPack("data.npk") as npk:
    with npk.writable_batch_mode() as wb:
        for i in range(1000):
            arr = wb.load('data')   # Memory-mapped view
            arr[:10] *= 2.0         # Direct modification
            # No save needed - changes are automatic

Performance

All benchmarks were conducted on macOS (Apple Silicon) using the Rust backend with precise timeit measurements.

Performance Comparison (1M rows × 10 columns, Float32, 38.1MB)

Operation NumPack NPY NPZ Zarr HDF5 NumPack Advantage
Full Load 4.11ms 🥇 6.48ms 168.33ms 34.29ms 50.59ms 1.58x vs NPY ⬆️
Lazy Load 0.002ms 🥇 0.091ms N/A 0.405ms 0.078ms 45x vs NPY
Replace 100 rows 0.042ms 🥇 13.49ms 1514ms 7.68ms 0.33ms 321x vs NPY 🔥
Append 100 rows 0.091ms 🥇 20.40ms 1522ms 9.15ms 0.20ms 224x vs NPY
Save 12.73ms 6.53ms 🥇 1343ms 74.02ms 56.32ms 1.95x slower

Random Access Performance

Batch Size NumPack NPY (actual read) NPZ Zarr HDF5 NumPack Advantage
100 indices 0.038ms 0.002ms 🥇 169.54ms 2.88ms 0.58ms 15.4x slower
1K indices 0.060ms 0.025ms 🥇 169.04ms 3.25ms 4.53ms 2.4x slower ✅
10K indices 1.53ms 0.093ms 🥇 169.80ms 17.94ms 511.16ms 16.4x slower ⚠️

Sequential Access Performance

Batch Size NumPack NPY (actual read) NPZ Zarr HDF5 NumPack Advantage
100 rows 0.030ms 0.001ms 🥇 169.85ms 2.68ms 0.13ms 28.5x slower
1K rows 0.049ms 0.002ms 🥇 169.52ms 2.94ms 0.17ms 29.7x slower
10K rows 0.321ms 0.008ms 🥇 169.17ms 3.05ms 0.78ms 41.2x slower

Performance Comparison (100K rows × 10 columns, Float32, 3.8MB)

Operation NumPack NPY NPZ Zarr HDF5 NumPack Advantage
Full Load 0.326ms 🥇 0.405ms 17.27ms 4.96ms 5.60ms 1.24x vs NPY
Lazy Load 0.003ms 🥇 0.094ms N/A 0.390ms 0.086ms 37x vs NPY
Replace 100 rows 0.031ms 🥇 1.21ms 153.05ms 3.87ms 0.31ms 39x vs NPY
Append 100 rows 0.058ms 🥇 1.83ms 153.47ms 4.13ms 0.21ms 32x vs NPY

Random Access Performance

Batch Size NumPack NPY (actual read) NPZ Zarr HDF5 NumPack Advantage
100 indices 0.032ms 0.002ms 🥇 17.38ms 1.31ms 0.58ms 13.0x slower
1K indices 0.057ms 0.019ms 🥇 17.36ms 1.63ms 4.79ms 3.0x slower ✅
10K indices 0.274ms 0.125ms 🥇 17.38ms 4.81ms 163.58ms 2.2x slower ✅

Sequential Access Performance

Batch Size NumPack NPY (actual read) NPZ Zarr HDF5 NumPack Advantage
100 rows 0.019ms 0.001ms 🥇 17.24ms 1.24ms 0.12ms 17.5x slower
1K rows 0.036ms 0.002ms 🥇 17.23ms 1.37ms 0.16ms 20.2x slower
10K rows 0.264ms 0.008ms 🥇 17.34ms 1.48ms 0.63ms 33.8x slower

Batch Mode Performance (1M rows × 10 columns)

100 consecutive modify operations:

Mode Time Speedup vs Normal
Normal Mode 418ms -
Batch Mode 20.5ms 20.4x faster 🔥
Writable Batch Mode 4.4ms 94.8x faster 🔥

💡 Note: All modes benefit from I/O optimizations. Speedup ratios are calculated against Normal Mode baseline.

Key Performance Highlights

  1. Data Modification - Exceptional Performance 🏆

    • Replace operations: 321x faster than NPY 🔥
    • Append operations: 224x faster than NPY (large dataset)
    • Supports efficient in-place modification without full file rewrite
    • NumPack's core advantage for write-heavy workloads
  2. Data Loading - Outstanding PerformanceEnhanced

    • Full load: 1.58x faster than NPY (4.11ms vs 6.48ms) ⬆️
    • Lazy load: 45x faster than NPY mmap (0.002ms vs 0.091ms)
    • Optimized with adaptive buffering and SIMD acceleration
  3. Batch Processing - Excellent PerformanceStrong

    • Batch Mode: 20.4x speedup (20.5ms vs 418ms normal mode)
    • Writable Batch Mode: 94.8x speedup (4.4ms) ⬆️
    • System-wide I/O optimizations benefit all modes
  4. Sequential Access 📊

    • Small batch (100 rows): 17.5x slower than NPY (0.019ms vs 0.001ms)
    • Medium batch (1K rows): 20.2x slower (0.036ms vs 0.002ms)
    • Large batch (10K rows): 33.8x slower (0.264ms vs 0.008ms)
    • Still significantly faster than all other formats (Zarr: 3.05ms, HDF5: 0.78ms, NPZ: 169ms)
    • Note: Tests use real data reads; NPY mmap view-only is faster but not practical
  5. Random Access - Significantly Improved 🔥 Major Enhancement

    • Small batch (100 indices): 15.4x slower (0.038ms vs 0.002ms)
    • Medium batch (1K indices): 2.4x slower (0.060ms vs 0.025ms) ✅ Improved from 397x!
    • Large batch (10K indices): 16.4x slower (1.53ms vs 0.093ms) - affected by page faults ⚠️
    • However: NumPack still 334x faster than HDF5 for 10K random access (1.53ms vs 511ms)
    • Key trade-off: NPY excels at random read BUT 321x slower on writes
    • For mixed read-write workloads, NumPack offers better overall balance
  6. Storage Efficiency

    • File size identical to NPY (38.15MB)
    • ~10% smaller than Zarr/NPZ (compressed formats)

When to Use NumPack

Strongly Recommended (85% of use cases):

  • Machine learning and deep learning pipelines
  • Real-time data stream processing
  • Data annotation and correction workflows
  • Feature stores with dynamic updates
  • Any scenario requiring frequent data modifications (321x faster writes!)
  • Fast data loading requirements (1.58x faster than NPY)
  • Balanced read-write workloads
  • Sequential data processing workflows

⚠️ Consider Alternatives (15% of use cases):

  • Write-once, never modify → Use NPY (1.95x faster write, but 321x slower for updates)
  • Frequent random access → Use NPY (2.4x-16x faster for random reads)
  • Pure read-only with heavy sequential access → Use NPY mmap (20-41x faster)
  • Extreme compression requirements → Use NPZ (10% smaller, but 1000x slower)

💡 Performance Trade-offs & Insights:

  • Write operations: NumPack dominant (321x faster replacements, 224x faster appends)
  • Read operations: NPY faster for random/sequential access (2.4x-41x), especially for small batches
  • Major improvement: 1K random access improved from 397x to 2.4x slower ⬆️
  • Overall balance: NumPack excels in mixed read-write workloads
  • For pure read-heavy (>95% reads), NPY may be better
  • For write-intensive or balanced workloads (>5% writes), NumPack is superior
  • Key insight: Tests use real data reads; NPY mmap view-only is faster but not practical

Best Practices

1. Use Writable Batch Mode for Frequent Modifications

# 94.8x speedup for frequent modifications
with NumPack("data.npk") as npk:
    with npk.writable_batch_mode() as wb:
        for i in range(1000):
            arr = wb.load('data')
            arr[:10] *= 2.0
# Automatic persistence on exit

2. Use Batch Mode for Batch Operations

# 20.4x speedup for batch processing
with NumPack("data.npk") as npk:
    with npk.batch_mode():
        for i in range(1000):
            arr = npk.load('data')
            arr[:10] *= 2.0
            npk.save({'data': arr})
# Single write on exit with smart dirty tracking

3. Use Lazy Loading for Large Datasets

with NumPack("large_data.npk") as npk:
    # Only 0.002ms to initialize
    lazy_array = npk.load("array", lazy=True)
    # Data loaded on demand
    subset = lazy_array[1000:2000]

4. Reuse NumPack Instances

# ✅ Efficient: Reuse instance
with NumPack("data.npk") as npk:
    for i in range(100):
        data = npk.load('array')

# ❌ Inefficient: Create new instance each time
for i in range(100):
    with NumPack("data.npk") as npk:
        data = npk.load('array')

Benchmark Methodology

All benchmarks use:

  • timeit for precise timing
  • Multiple repeats, best time selected
  • Pure operation time (excluding file open/close overhead)
  • Float32 arrays
  • macOS Apple Silicon (results may vary by platform)
  • Comprehensive testing across multiple formats (NPY, NPZ, Zarr, HDF5, Parquet, Arrow/Feather)

New in this version:

  • Added random access and sequential access benchmarks across different batch sizes (100, 1K, 10K)
  • Important: NPY mmap tests force actual data reads using np.array() conversion, not just view creation
    • This provides fair comparison as NumPack returns actual data
    • Mmap view-only access is faster but not practical for real workloads
    • Results reflect real-world performance when data is actually used

For complete benchmark code, see unified_benchmark.py.

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the Apache License, Version 2.0 - see the LICENSE file for details.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

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

numpack-0.4.4.tar.gz (333.0 kB view details)

Uploaded Source

Built Distributions

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

numpack-0.4.4-cp314-cp314-win_amd64.whl (521.9 kB view details)

Uploaded CPython 3.14Windows x86-64

numpack-0.4.4-cp314-cp314-macosx_11_0_arm64.whl (552.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

numpack-0.4.4-cp313-cp313-win_amd64.whl (514.0 kB view details)

Uploaded CPython 3.13Windows x86-64

numpack-0.4.4-cp313-cp313-manylinux_2_34_x86_64.whl (635.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

numpack-0.4.4-cp313-cp313-macosx_11_0_arm64.whl (545.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numpack-0.4.4-cp313-cp313-macosx_10_12_x86_64.whl (607.5 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

numpack-0.4.4-cp312-cp312-win_amd64.whl (514.4 kB view details)

Uploaded CPython 3.12Windows x86-64

numpack-0.4.4-cp312-cp312-manylinux_2_34_x86_64.whl (636.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

numpack-0.4.4-cp312-cp312-macosx_11_0_arm64.whl (545.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numpack-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl (607.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

numpack-0.4.4-cp311-cp311-win_amd64.whl (515.1 kB view details)

Uploaded CPython 3.11Windows x86-64

numpack-0.4.4-cp311-cp311-manylinux_2_34_x86_64.whl (637.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

numpack-0.4.4-cp311-cp311-macosx_11_0_arm64.whl (547.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numpack-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl (607.5 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

numpack-0.4.4-cp310-cp310-win_amd64.whl (515.4 kB view details)

Uploaded CPython 3.10Windows x86-64

numpack-0.4.4-cp310-cp310-manylinux_2_34_x86_64.whl (637.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

numpack-0.4.4-cp310-cp310-macosx_11_0_arm64.whl (547.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numpack-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl (607.7 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

numpack-0.4.4-cp39-cp39-win_amd64.whl (515.3 kB view details)

Uploaded CPython 3.9Windows x86-64

numpack-0.4.4-cp39-cp39-manylinux_2_34_x86_64.whl (637.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.34+ x86-64

numpack-0.4.4-cp39-cp39-macosx_11_0_arm64.whl (547.6 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

numpack-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl (608.0 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

File details

Details for the file numpack-0.4.4.tar.gz.

File metadata

  • Download URL: numpack-0.4.4.tar.gz
  • Upload date:
  • Size: 333.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4.tar.gz
Algorithm Hash digest
SHA256 9c145c9721193c8b9f2ad8c2b4ee92255f0064ca6582a80a036bd0da85c15579
MD5 f2cfd3be48a019675292e6e24774cd2f
BLAKE2b-256 0f908dc44f025f2910f4147d2be27fc371cb6dea4758a434f964b23d8fa4880a

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numpack-0.4.4-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 521.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 526d513b165e1dea4f43d816f650cec8b9414434b895949d9d28d8eb69c26da2
MD5 4cad360a0b240319e9baa94d400edb81
BLAKE2b-256 c8657ff08ff00648bee0ddfd694965d9e0c7fdd3b0519c072930129b134f2975

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f641562d18234db916ea2ee92ed6bd9c6388f29ce266a8d0ca26dc26d07edd2
MD5 5385170453938268c6db371490b5d256
BLAKE2b-256 0f694f5de8e59d5a217cbf59611e35b4ed220d30886c444e7dcbab602234a1f2

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numpack-0.4.4-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 514.0 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1d9eb0e9f65fbda49470d2e160041a4a095ed4a01d2635022a7e238c79dd92fd
MD5 2f3c5f261bad8e61268c33e8e3aee643
BLAKE2b-256 8e6639619300205b9bd9fbdc39d29c4e02b57ea469a83f4640c9cec7135cce61

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 5c51f748ae5f58c184abd4e787785ba0d251c2ae158937c5002903df673d6430
MD5 92aa7dd5fc7ed496001d100c3b53456a
BLAKE2b-256 cd37c221c6efcdb88294ad6447667907a2307af0fde2f5677b2dd6f14cc6fd85

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 65068f6b2272308a8393f3bc6b6ea18f85be42fd872f1cd0d796d1a40b070272
MD5 436cb252936e903a3cd3857f426d1403
BLAKE2b-256 2e0522d34649035773bd3305cce9bc8391b3c40c6c1932dcdc4a2e13d0f123fe

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6d81e469893bc51ca6f672865f03c86cdb765e1bfb5cea5f583f183e405ab357
MD5 4eb09d41dc2a966d0f6f089663f649c1
BLAKE2b-256 52b0944042dbd7fa6fc6d3347ba0f1dc7bee4db4412538b74aa2ed2fdead75dd

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numpack-0.4.4-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 514.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 dec6e33ab75a34ad8dd13b1986db7e040da6dd6d2af7e46b4effef810b976285
MD5 8c16ea180bcabeb716a372b952168674
BLAKE2b-256 bb586a397bff946d9ed24ffc148c9d7a26ca5f3bad95d671abefb963b5241528

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 cc8342c4fe48cb1a45d94525dbcb233fc10fa186f6bc4939d0ec844ed1721e41
MD5 f2e68ba34bbd2a67878331a5c695f771
BLAKE2b-256 16ceb316740f39ee4af60fc6731bd3746011f485a63a1d94f1435b1522c00a49

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9b077b6a8f0b2ce08e07f8a49b5f49391414daca6438318902085d3ca687f0a5
MD5 6e3cef1edb5bc1da48c5557d2ea9c773
BLAKE2b-256 b3b7dd7442aef3bed21427295033f6e296cf154c66be6dd1e560c6e7ec55a017

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 49da8a93306ea45d181275351b62e9069e8365a438bdb1ecaf529d30dc673420
MD5 0cf011a1bd6039eacbfc5bee52a40929
BLAKE2b-256 ae7c710a38fd169f5ad7f5b227524073f0514c917acf8421fffe920b9a76f796

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numpack-0.4.4-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 515.1 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 bb843cc3f356d26b87cbaa4043410d7efb6a773f1539e595861de1ee7ee3d0fb
MD5 7c6a0bfd6b3caed2ea7011a1c40edf50
BLAKE2b-256 b43f2ac4512f7f887cf29c0a2ef1674efee329bf72f6fc28eb700554f5b6b209

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 a2aa5a2e2b04cbaddc11ba61a5345ac833487a968d0072256c822917e3cdcf5a
MD5 7d62ab52e6e689e2791367f1843ee2ee
BLAKE2b-256 89b9e65f394d18577723fb0eaace2232083b109f9644192558b937fcc0746db9

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ea056e9bc4dc8917c3cfd4c2ff1fd70949ec483a725f2fd98a28d7866c026c12
MD5 32062637cc9ee298a184fcf07cd2cfad
BLAKE2b-256 da56a5470acf3fd50e6bb884f59839a90afe408bfac3189d53082826462be3ef

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 662f191b0175cdcef8e1c0b312fd9ec8f24d5dbcbc2ea609bd15aeae30f1b95f
MD5 6b50860081327a30eea4c92c897a1d77
BLAKE2b-256 76a14cc808be167a684746100f3b66a1b1c304bc1a77d0168ae200dc496fe74f

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: numpack-0.4.4-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 515.4 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4b3db88d9d16fe138ba9c022851e2b4dd15dbd5987139fba03297b81e2ad602b
MD5 a74dc05fbd7c83d7f8cc60012e422fb1
BLAKE2b-256 59b11276265786fe8c68068a9a3bdee2c2de85b23fed0ff5c6d728d24c82ce45

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 4f835053a3e89c106a573f3483f20b52d05a161ecc4dab49c1ca4c0110d1da4d
MD5 afdd596f10e04318f5b5c74a1a2e7e98
BLAKE2b-256 df6b229bb3410b44db4957f07d45115a03c255f53f7364279f68b2bcd4a956b0

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a37210596dcbe7726ebb4ee055a23bdd27a1b5c5ae755908843c97249c010d9
MD5 67d8254eacbdd9c5c255254cd2e48944
BLAKE2b-256 b3ae0e842ddbcaccdda829193dc70d746dba35d270579873b86c3695bd585554

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 52c0c5b256b8937760d2b58ac434c12ca12b0b0a2fa425b84b23d103fe97c403
MD5 2fe57d15e28b10416719c16c4615046c
BLAKE2b-256 2bd14314286b41af6cc00325047aa1bd1d6c4bb951a1ecc864bea8b656c5ea85

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: numpack-0.4.4-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 515.3 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.9

File hashes

Hashes for numpack-0.4.4-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f5c75aee6b11410d081cf288cf500346c876c33f7791fc163adb64a088f1b666
MD5 b44a9b8d90e4d9c1c7b6bb8e2c134d91
BLAKE2b-256 ef30b2ff99a1ab21b7cf81c2cd6b23a557414d4a319b77b03fcab26626a7e375

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp39-cp39-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp39-cp39-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 b2861816e9ea7be69118089348b82df7aa040637cb688a06f2d839ebac694ca9
MD5 54674186d28ef1eac57cc9f90d2baa7d
BLAKE2b-256 f23b6a5afd2e7a63d991b3ff486a42c8b7a08627ab0bd5dcbaa9f99b92b6a409

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 254fdd6da524c02383e3a019f28986521bd4076054e00b5da0ed91745aa48943
MD5 f0cd9998acc6cc879fb64a3343d27158
BLAKE2b-256 4eb7d996f33cb6bc518a9ed43a333dab863140e2b7b1ae27e946649daf53a0d8

See more details on using hashes here.

File details

Details for the file numpack-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for numpack-0.4.4-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 05641c41b88af13f9eab4b3f724b22058a244fd9ed98be3276c2c4523deec742
MD5 b149a47e13ae8e607e08dcdf7c95621b
BLAKE2b-256 2c741fa9cb2bcea9be7898a95c44e350e0e30a293adbaae4337493c2ccc1db42

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