Skip to main content

Lossy time series compression: RDP/VW point reduction + quantization

Project description

Release (crates.io) Release (npm) Release (PyPI) CI CodeQL GitHub License GitHub Release

curvepress

Lossy time series compression -- RDP/VW point reduction + epsilon-derived quantization + varint packing. Designed for sharp transient signals (fracture curves, impulse tests, load cells). One Rust core; four language targets.

Architecture

raw (int64 timestamps_ns + float64 values)
  -> point reduction   (RDP / VW / RDP-N)
  -> quantization      (float64 -> uintN, bit-width from epsilon)
  -> integer packing   (delta + zigzag + LEB128 varint)
  -> byte stream

No entropy-coding stage, no external compression dependencies.

                     +-------------------------+
                     |   Rust core crate       |  <- ALL logic lives here
                     |   rdp  vw  quantize     |
                     |   varint  codec         |
                     +------------+------------+
            +--------------+------+-------+------------------+
            |              |              |                  |
      native crate   wasm-bindgen      PyO3           cbindgen + .hpp
            |              |              |                  |
         (Rust)         (WASM)        (Python)             (C++)
       crates.io     npm package     PyPI wheel       Conan package
  • Rust -- the core crate; published to crates.io.
  • WASM -- via wasm-bindgen / wasm-pack. Direct Rust->WASM, no C ABI.
  • Python -- via PyO3 + maturin. Direct Rust->CPython, no C ABI.
  • C++ -- cbindgen auto-generates include/curvepress.h from src/capi.rs. cpp/include/curvepress/curvepress.hpp wraps it with idiomatic C++20 (std::span, exceptions).

Algorithms

RDP (Ramer-Douglas-Peucker)

Recursively removes the point with the smallest perpendicular distance to the line between its neighbours, as long as that distance is below epsilon. Guarantees that every dropped point deviates at most epsilon from the piecewise-linear reconstruction.

  • Input: epsilon (maximum absolute error in the value domain)
  • Output: variable number of kept points
  • Complexity: O(n log n) average, O(n^2) worst case
  • Use when: you need a strict error bound

VW (Visvalingam-Whyatt)

Iteratively removes the point that forms the triangle with the smallest area with its two neighbours. Repeats until exactly n_out points remain.

  • Input: n_out (exact number of output points)
  • Output: exactly n_out points
  • Complexity: O(n log n)
  • Use when: you need a fixed output size (e.g. display resolution, storage budget)
  • The quantization epsilon is derived automatically from the actual max deviation of dropped points, so no epsilon needs to be specified

RDP-N

Binary-searches for the smallest epsilon that makes RDP keep at most n_out points. Combines the error-bound guarantee of RDP with a target output size.

  • Input: n_out (target maximum), epsilon (upper bound for the search)
  • Output: at most n_out points
  • Complexity: O(n log n * log(epsilon_range))
  • Use when: you want both an error bound AND a size cap

Axis normalization

Timestamps are in nanoseconds; values might be Newtons or millistrain. Without normalization the time axis completely dominates Euclidean distances. curvepress always normalizes: the time axis is scaled to match the value range before distance computation. epsilon is therefore always expressed in the value domain.

Error-bound contract

max_error <= ~1.5 * epsilon
Algo epsilon source
RDP user-supplied
VW measured max deviation of dropped points (automatic)
RDP-N measured max deviation of dropped points (automatic)

The 0.5x overhead comes from quantization (float64 -> integer grid at spacing epsilon).


API reference

All four language bindings expose the same six functions plus decompress, interpolate, and version.

compress_rdp

Compress with RDP. epsilon is the maximum absolute error in the value domain.

Language Signature
Rust compress_rdp(ts: &[i64], val: &[f64], epsilon: f64) -> Result<Vec<u8>>
Rust compress_rdp_stats(ts, val, epsilon) -> Result<(Vec<u8>, Stats)>
Python compress_rdp(timestamps, values, epsilon) -> bytes
Python compress_rdp_stats(timestamps, values, epsilon) -> tuple[bytes, Stats]
C++ compress_rdp(span<i64>, span<f64>, epsilon, Stats* = nullptr) -> vector<uint8_t>
WASM compress_rdp(BigInt64Array, Float64Array, number) -> Uint8Array

compress_vw

Compress with Visvalingam-Whyatt. n_out is the exact number of kept points.

Language Signature
Rust compress_vw(ts: &[i64], val: &[f64], n_out: usize) -> Result<Vec<u8>>
Rust compress_vw_stats(ts, val, n_out) -> Result<(Vec<u8>, Stats)>
Python compress_vw(timestamps, values, n_out) -> bytes
Python compress_vw_stats(timestamps, values, n_out) -> tuple[bytes, Stats]
C++ compress_vw(span<i64>, span<f64>, n_out, Stats* = nullptr) -> vector<uint8_t>
WASM compress_vw(BigInt64Array, Float64Array, number) -> Uint8Array

compress_rdpn

Compress with RDP-N. Keeps at most n_out points; epsilon is the search upper bound.

Language Signature
Rust compress_rdpn(ts: &[i64], val: &[f64], n_out: usize, epsilon: f64) -> Result<Vec<u8>>
Rust compress_rdpn_stats(ts, val, n_out, epsilon) -> Result<(Vec<u8>, Stats)>
Python compress_rdpn(timestamps, values, n_out, epsilon) -> bytes
Python compress_rdpn_stats(timestamps, values, n_out, epsilon) -> tuple[bytes, Stats]
C++ compress_rdpn(span<i64>, span<f64>, n_out, epsilon, Stats* = nullptr) -> vector<uint8_t>
WASM compress_rdpn(BigInt64Array, Float64Array, number, number) -> Uint8Array

decompress

Decompress a byte stream produced by any compress_* function.

Language Signature
Rust decompress(data: &[u8]) -> Result<(Vec<i64>, Vec<f64>)>
Python decompress(data: bytes) -> tuple[ndarray, ndarray]
C++ decompress(span<uint8_t>) -> Decoded (Decoded.timestamps_ns, Decoded.values)
WASM decompress(Uint8Array) -> Decoded (Decoded.timestamps, Decoded.values, Decoded.len)

interpolate

Reconstruct the value at a single timestamp t by linear interpolation of the support points. Clamps (flat extrapolation) outside the data range.

Language Signature
Rust interpolate(ts: &[i64], val: &[f64], t: i64) -> Result<f64>
Python interpolate(timestamps, values, t: int) -> float
C++ interpolate(span<i64>, span<f64>, t: int64_t) -> double
WASM interpolate(BigInt64Array, Float64Array, t: bigint) -> number

Stats

Returned by the *_stats variants. Contains:

Field Type Description
n_input usize Number of input points
n_kept usize Number of points after reduction
bytes_raw usize Raw size (16 bytes per point)
bytes_compressed usize Compressed byte stream length
ratio f64 bytes_raw / bytes_compressed
max_error f64 Maximum value-domain error of dropped points
quant_bits u32 Quantization bit-width used

Installation

Python (PyPI)

pip install curvepress

Pre-built wheels for CPython 3.9–3.14 on Linux, macOS (Apple Silicon) and Windows — no Rust toolchain needed. Pulls in numpy.

JavaScript / TypeScript (npm)

npm install curvepress

A pre-built WebAssembly package, usable from bundlers (webpack/Vite/Rollup) and Node.js ≥ 18.

Rust (crates.io)

cargo add curvepress

C++ (Conan — local recipe)

curvepress is a Rust library, so it is not on ConanCenter. Build the package locally from the cloned repo (needs a Rust toolchain + a C++ compiler); the binary lands in your local Conan cache:

git clone https://github.com/fsbondtec/curvepress
cd curvepress
conan create . --version 0.1.0

Then consume it from your project:

conan install --requires=curvepress/0.1.0
find_package(curvepress CONFIG REQUIRED)
target_link_libraries(my_target PRIVATE curvepress::curvepress)

C++ from source (without Conan)

Build the Rust static library — this also generates the C header:

cargo build --release --features capi
#  -> target/release/libcurvepress.a   (curvepress.lib on Windows)
#  -> include/curvepress.h             (generated by cbindgen)

Add both header directories (include/ and cpp/include/) to your include path and link the static library plus its system dependencies:

Platform Link flags
Linux -Ltarget/release -lcurvepress -lpthread -ldl -lm
macOS -Ltarget/release -lcurvepress -framework Security -framework CoreFoundation
Windows curvepress.lib ws2_32.lib userenv.lib ntdll.lib bcrypt.lib

Or build via the bundled CMake project, which exposes the curvepress::curvepress target:

cmake -S cpp -B cpp/build -DCMAKE_BUILD_TYPE=Release
cmake --build cpp/build --config Release

Quick start

Rust

use curvepress::{compress_rdp, compress_vw, compress_rdpn, decompress, interpolate};

// RDP: strict error bound
let data = compress_rdp(&timestamps_ns, &values, 1.0)?;

// VW: exact output size
let data = compress_vw(&timestamps_ns, &values, 200)?;

// RDP-N: at most 200 points, search up to epsilon=100.0
let data = compress_rdpn(&timestamps_ns, &values, 200, 100.0)?;

// Decompress
let (ts_out, val_out) = decompress(&data)?;

// Interpolate at a single timestamp
let v = interpolate(&ts_out, &val_out, 5_000_000_000_i64)?;

C++ (CMake)

find_package(curvepress REQUIRED)
target_link_libraries(my_target PRIVATE curvepress::curvepress)
#include <curvepress/curvepress.hpp>

// RDP
auto data = curvepress::compress_rdp(ts, val, 1.0);

// VW
auto data = curvepress::compress_vw(ts, val, 200);

// RDP-N
auto data = curvepress::compress_rdpn(ts, val, 200, 100.0);

// Decompress
auto dec = curvepress::decompress(data);
// dec.timestamps_ns, dec.values

// Interpolate
double v = curvepress::interpolate(dec.timestamps_ns, dec.values, 5'000'000'000LL);

Python

import numpy as np
from curvepress import compress_rdp, compress_vw, compress_rdpn, decompress, interpolate

ts  = np.arange(10_000, dtype=np.int64) * 1_000_000   # ns
val = np.sin(np.arange(10_000) * 0.01) * 100.0

# RDP
data = compress_rdp(ts, val, epsilon=0.5)

# VW
data = compress_vw(ts, val, n_out=200)

# RDP-N
data = compress_rdpn(ts, val, n_out=200, epsilon=100.0)

# Decompress
ts_out, val_out = decompress(data)
print(f"Kept {len(ts_out)} of {len(ts)} points")

# Interpolate
v = interpolate(ts_out, val_out, t=5_000_000)

WASM (JavaScript/TypeScript)

import { compress_rdp, compress_vw, compress_rdpn, decompress, interpolate } from 'curvepress';

const ts  = new BigInt64Array(n);   // fill with ns timestamps
const val = new Float64Array(n);    // fill with values

// RDP
const data = compress_rdp(ts, val, 1.0);

// VW
const data = compress_vw(ts, val, 200);

// RDP-N
const data = compress_rdpn(ts, val, 200, 100.0);

// Decompress
const dec = decompress(data);
console.log(`Kept ${dec.len} of ${n} points`);

// Interpolate
const v = interpolate(dec.timestamps, dec.values, 5_000_000_000n);

Benchmark (fracture-curve data, 100 k points)

Algo Ratio Throughput max_error
RDP epsilon=0.5 ~18x ~120 MB/s <=0.75
VW n=1000 ~23x ~80 MB/s informative

(Run cargo bench on your hardware for accurate numbers.)


Building

# Rust tests
cargo test

# C++ (requires Catch2 v3)
cargo build --release --features capi
cmake -S cpp -B cpp/build && cmake --build cpp/build && ctest --test-dir cpp/build

# Python wheel (requires maturin)
maturin develop --features python
pytest tests/python/ -v

# WASM (requires wasm-pack)
wasm-pack build --target nodejs --out-dir pkg --features wasm
node tests/wasm/test_wasm.mjs

License

MIT

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

curvepress-0.1.0.tar.gz (46.9 kB view details)

Uploaded Source

Built Distributions

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

curvepress-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (530.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

curvepress-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl (495.8 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

curvepress-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

curvepress-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (320.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

curvepress-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (288.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

curvepress-0.1.0-cp313-cp313-win_amd64.whl (179.8 kB view details)

Uploaded CPython 3.13Windows x86-64

curvepress-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (529.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

curvepress-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl (495.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

curvepress-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (326.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

curvepress-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (319.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

curvepress-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (287.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

curvepress-0.1.0-cp312-cp312-win_amd64.whl (180.2 kB view details)

Uploaded CPython 3.12Windows x86-64

curvepress-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (529.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

curvepress-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (494.9 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

curvepress-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

curvepress-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (319.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

curvepress-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (287.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

curvepress-0.1.0-cp311-cp311-win_amd64.whl (182.8 kB view details)

Uploaded CPython 3.11Windows x86-64

curvepress-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (534.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

curvepress-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (499.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

curvepress-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

curvepress-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (323.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

curvepress-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (293.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

curvepress-0.1.0-cp310-cp310-win_amd64.whl (183.0 kB view details)

Uploaded CPython 3.10Windows x86-64

curvepress-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (534.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

curvepress-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (500.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

curvepress-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (332.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

curvepress-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (324.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

curvepress-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (293.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

curvepress-0.1.0-cp39-cp39-win_amd64.whl (186.0 kB view details)

Uploaded CPython 3.9Windows x86-64

curvepress-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl (537.9 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

curvepress-0.1.0-cp39-cp39-musllinux_1_2_aarch64.whl (503.8 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

curvepress-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (336.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

curvepress-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (328.9 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64

File details

Details for the file curvepress-0.1.0.tar.gz.

File metadata

  • Download URL: curvepress-0.1.0.tar.gz
  • Upload date:
  • Size: 46.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curvepress-0.1.0.tar.gz
Algorithm Hash digest
SHA256 37735fb8b0a2a8bd6fae9925014a7d0e3cb1450f12c39c3b5134eaf7c5a00f55
MD5 4dca7142e8de0b6d456c6f251d2fbe82
BLAKE2b-256 8ddfa4affc2085973e3ecb9ccd39f1dd8bd4aaa1292a71fb2574b5e814787aef

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 536d1647a84f21df5446acb68b142788a04df605d2af9607f6fbfb00bd8463aa
MD5 1b979ceb5435b53164d0bce932a3c637
BLAKE2b-256 51cc1f7742798e4132c26fab5ffa481bafc76f9740095348beda81fef7965671

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bec6e903adeee587cabdef933037669cfdf0c613ffc1fbe093d5138d02b63be5
MD5 42ccdfb47d1e8e7c775ae9b3b690c233
BLAKE2b-256 c36f82019344fecea15b44863f4ee9dbd6bf1838de4547b95066eb0ec96dab50

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d4c885f70362620a10bd602fb5a5ff23b0c065ce559aaaa30fefb282fda9cfc6
MD5 16ba7d22ce357419ede4edde8da516fa
BLAKE2b-256 f4b99e40d8cb409e1dd786c0ba6dc22cf1faaaad1850ec24ddc2f0426b233ce8

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7852c2738a273c08429977b1a7759f5b0f41a1a2927c904dab34e3dddc83ec7e
MD5 05a380a443a9c60acba6a2e8690d81e5
BLAKE2b-256 32c4a00daf2fb0fec1f72d5d78479126e2fdd0be040751f50e56f0820301b1cc

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da773dbafd4161502101c3f444e891225b5f8823bba730891914975b15871a9e
MD5 d82ff5049afa9297274503814ed4dfd3
BLAKE2b-256 bf1b1ca24e4020834050677f2f8579d91438d49fc338b8f7ccab32ceec0deb63

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: curvepress-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 179.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curvepress-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 2dbe9cdc56212974eb307f110675bc833a3965918d660eac4cd96b83ec08ee7c
MD5 90e191258e5fc3ae0a43ba90260af5f0
BLAKE2b-256 37c3e4d9445bbcdb578477e173e07f017c946e8f4cec4c1e087f16e9584cd61f

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 566acdef05dcaea2531d27a63a6e36d207ad5bf32a4600ff6683d0888858ed40
MD5 cc2f237c036c0145c42a446b0c90160f
BLAKE2b-256 0737ea3bb29ef789fc978eb49dce92f17014bb4f8a8c84c82d652e4b57648417

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 29a286de26150fd8f5686fa830c2512730cd6ccb7e782db4fb6b64038a1aad75
MD5 2c1d85eabc7ef4ef4da6b40a0c7f1620
BLAKE2b-256 8bd5830c109047640a86df3c77c04a228bcea98df9820a9bcfa824977bc6541f

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f77dd51f8cd26900af6e5393332c8f5fdddc846b2b7be1d4fabd074ac3feeefe
MD5 1df79f2fea77c4955c116e188a7f0616
BLAKE2b-256 3cd922ca4cc353fdce9497c3e8f5eafc4b4af806b4244f2f273cc90340db0eb0

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 419cda5cd36261819a9c16201e949e8f8536aafd0d01f56cbb821b7d2878c9b3
MD5 8ef094b2ef5726a1f0dea2e39e708f2f
BLAKE2b-256 43bb71d9d32ce130784f9a7694b127b10d485beaa21be3173c51dbb3bc58057a

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f67e736af40dfcb05924b517fad3621c841d7fd1e5722b20a730c3ba9d0a845e
MD5 e7c7ec5bac63e025b656af1e3ea42a4b
BLAKE2b-256 3e57ae0e7d3dfe0c073f1d88ae91bfb14b8fa30c7dcd2a9ed67670a6d762d434

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: curvepress-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 180.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curvepress-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2d300a469318388e5d870e3428c279666f69c2c97ac72b17d20e6cd87edd83e3
MD5 94c458f86d92bdb7936b1aec87ee33d5
BLAKE2b-256 debb11885aaedaea1e984569da63728d8e16dc2635361f71048c7e6458a6c034

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9ed3bd9f328c1838e79f6cbaa6c040dca9f326a5746b0b5a0f7ce0b0295e6e8f
MD5 7e43a073dcb72a9ce9305506b75edf5b
BLAKE2b-256 cb15646f80bc3aac950639225760ac3b56b2b22a90305c3b9655260e1cffedd3

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 95a6428d10923e1f5de65b0331dce611eceb7f576cb0c7cb51073026f9a3b568
MD5 9f3c90fd1fe5db1c49946c5b45535b03
BLAKE2b-256 8d707e21c9942ee9e80a2fcb52a7133b12dca3d248acb8baeb486d3cf51be79f

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 007b45179e410c03498bc38f69119452ae03be38dc0cfd8fa0fed6d18af3eb73
MD5 e8353a3deeb1849788fb8d0baa2b6221
BLAKE2b-256 3993a47b7e04634e6b75328e4407dc8dcfddf45745d0b30a20e5d78f0e6d0258

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d821b5e40202766430ee4653524eab65afc774028bb680bdfff36317fbf0db3e
MD5 d4786149c94a7b5c6e824601a65ebdf2
BLAKE2b-256 73a896f6c651b893bed4a9f89e5069d3df895d23698b2ac9c42bb2e1a56bcb1f

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b64d4d8d0fc8fa07ad48e48ca7934f1c943c005edf4a41c5c9e125821382c32
MD5 d9f82175affbcc60f0061c4f897d336f
BLAKE2b-256 d3c35c50c24643722c87ab2ba9c8527e2f0fd2b0ed415641dc5d61a15443555b

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: curvepress-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 182.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curvepress-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 cfda37fbb3e64b8355de5b4e3cb5a98e2d70cd5ec773c9b52d52587d5ad7375d
MD5 f5e2da9ce7f0f261f17628bd6171a243
BLAKE2b-256 893e5110cf58b3f3d8591e66ec5fccaf34c53ac4a0c7f02a29b212931fea08ec

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bdf57aea5b1213ebc5a38b66ddd80785cdb5313ba329aa0cc909d21395bba9b4
MD5 001a2859926c41ad3ffcd888201affbf
BLAKE2b-256 4c1fe66982ec76b5ac63230aab27218423b074006c093f2cc0c84511f0566489

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 2abb6acf91c07bf92b6521505a245d217d9e97c4d582759523dca700a33f7d74
MD5 7e3acd951ee97e442c2555d62a73c0ae
BLAKE2b-256 d2894073c412ca04d58c2a13993417bfc9af30674dd072fb8310af86eaa6b780

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31d0674509f398243e61a1cbb9c0de9bf1a720cb3e8d90f6c41c541c45604084
MD5 8b2286ab55cc32f2fe2f463cdf6f84cd
BLAKE2b-256 e815c79638e4998de113f81e2420c3cf4eb6cc512b94b9d0cf7912165f288890

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 f1fa8540dde18cad5a4f2ce5abf8eb8d11261c73a1c4a4f7b386e6e7759f66a6
MD5 6d511a2b675e2a710253a21692279f36
BLAKE2b-256 42654c048d24d134692b045ddbe5262b0578cc63ca6f9feb682a6ada55276083

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a15d10e04d73b85a51a1f01a5a4da652b97cf6113924c0f8ce1078625db4a80f
MD5 578dcc2337c2f622cddc325000f578a1
BLAKE2b-256 acb03677d1f73e312860c29d9040f9edffeb206d5926240723987ca99709ff79

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: curvepress-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 183.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curvepress-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b1fd55db80119b31eeabe0b66afc50517d379b813b25d01416d436709512ac1e
MD5 3970092cfc2cca7d88235336dbfb01ae
BLAKE2b-256 cb5c6d768ede5bb54fcfb46c34e3d5f8cd73a68d552dd306f45a0560d7ed1133

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ea8e5bc82948ed9e403bbe6ce4035e721438db852405bceed8cd46628afbaa80
MD5 57fd2625f7c06a92735821ec518a14b3
BLAKE2b-256 7299cee838757725d8736c47bf1dc82dcecbeae31eddea065054ca056dd8c931

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 97b7cd29b95deb958f95ab35fb4c5d9a86cca0f6902ee8eb0e22009b73159bd8
MD5 7faea35640d6e4b5e1de0ca5ce2bab13
BLAKE2b-256 6728beadb0ef21e41988f7759dcb9433fc7b0ae90dc6e292f4eacc6f4bcdfc8f

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ee021750b46d921a6c7d92f2812a0610de00eff6305bfa51eb348e34b84d4c7d
MD5 d60a710685fb68516b8e3d2bd3a67d81
BLAKE2b-256 280dbbeed4ee36ae584ccaa02da38640d7c50cbfdc635cf34bc4e63157368613

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 049884f3c4a70e795ab5a84a8c5bf1e674577d6c0903ccabcae3b7e5ef41435c
MD5 d0adf6a3c983f3df4cb659fd2784074f
BLAKE2b-256 9a42ccc8c2de9dc3eecccb6dabba755ff3ee005e867dda261713e80e6e6b7f0b

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3c192156802e4258ebecfba18e0833409204708a1889d17d1140516de87fca06
MD5 cd3757ecd837da461f333d52c4b825ca
BLAKE2b-256 c0040969a64b898ead499b091cffae70f95d47c3bc8224dbd1afa467a3049d12

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: curvepress-0.1.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 186.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for curvepress-0.1.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 73b3dfc9eebe005a1cbce5dea9be42bd1a2ce6b49c7d125a5910123c3fcbb382
MD5 f46230dad9ed98ebfe90c02cd60aa667
BLAKE2b-256 5023370cc56cd06f82dc0ed7db7fd8341a35e39e64147f98a666919a8fcab0ac

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b49600c2e2a1fee5c25a9ef66d7003e979ae4e3f36e8d7d6ecdbf28b27cbaad7
MD5 b1ba06bb45d3c6592f5de3b34d873f39
BLAKE2b-256 cfbd5f95f635a4467f05488ff33dae0f21aab1e1b989df964034f77917ac7c90

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 da0d872c77ef1f2bb1566d1a237d4b3f0e54a3858c78f26ed18c44f8bfba3742
MD5 8df48f29b305aedf7be7db01282dafe3
BLAKE2b-256 c9f0241178bdb9654b8f8a4bfa1a0238c3cb199cff2a16f4e6a827eb5d038537

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9ab9533908629b64ec2b972d099d4190d20727f33ee6f5584e354d70fb58b32f
MD5 39179d71e3bf829521f8d54899115c18
BLAKE2b-256 9c0bc4b5db26cf83ffc4aa6dce22bb815351ae91130590ae23ddbf269e0aa3e5

See more details on using hashes here.

File details

Details for the file curvepress-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for curvepress-0.1.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 3ee761aee0da91c054aa409b2c0b086e53ff093a789baae4adebf4345d6d67ed
MD5 e2a5c0ab00bfe20b980b9b0dd9c52b22
BLAKE2b-256 05e5b439d132314348e717783cf56d01f8e9126b942a4d4ead7348816cfa3e41

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