Skip to main content

Lossy time-series compression: RDP/VW point reduction + quantization (C++ core)

Project description

CI Release (PyPI) 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).

C++20 header-only library. No build step, no dependencies.

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 dependencies.

include/curvepress/
    curvepress.hpp          <- public API (C++20, header-only)
    detail/
        rdp.hpp             <- Ramer-Douglas-Peucker
        vw.hpp              <- Visvalingam-Whyatt
        radial.hpp          <- radial pre-filter
        quantize.hpp        <- float64 -> uintN
        varint.hpp          <- LEB-128 + zigzag
        codec.hpp           <- compress / decompress pipeline

Algorithms

RDP (Ramer-Douglas-Peucker)

Iteratively removes the point with the smallest perpendicular distance to the line segment between its neighbours, as long as that distance is below epsilon. 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²) worst case
  • Use when: you need a strict error bound

VW (Visvalingam-Whyatt)

Iteratively removes the point that forms the triangle with the smallest effective area with its two neighbours (Visvalingam 2016 effective-area variant). 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 (display resolution, storage budget)

RDP-N

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

  • Input: n_out (maximum), epsilon (upper bound for the binary 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 may be Newtons, millistrain, etc. 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.5× overhead comes from quantization (float64 → integer grid at spacing epsilon).


API reference

compress_rdp

// Without stats
std::vector<uint8_t> compress_rdp(
    std::span<const int64_t> timestamps_ns,
    std::span<const double>  values,
    double                   epsilon);

// With stats
std::vector<uint8_t> compress_rdp(
    std::span<const int64_t> timestamps_ns,
    std::span<const double>  values,
    double                   epsilon,
    Stats&                   stats);

compress_vw

std::vector<uint8_t> compress_vw(
    std::span<const int64_t> timestamps_ns,
    std::span<const double>  values,
    std::size_t              n_out,
    Stats&                   stats = ...); // optional overload

compress_rdpn

std::vector<uint8_t> compress_rdpn(
    std::span<const int64_t> timestamps_ns,
    std::span<const double>  values,
    std::size_t              n_out,
    double                   epsilon,
    Stats&                   stats = ...); // optional overload

decompress

Decoded decompress(std::span<const uint8_t> data);
// Decoded.timestamps_ns  std::vector<int64_t>
// Decoded.values         std::vector<double>

interpolate

Linear interpolation at a single query timestamp. Clamps outside the data range.

double interpolate(
    std::span<const int64_t> timestamps_ns,
    std::span<const double>  values,
    int64_t                  t);

radial_filter

O(n) pre-filter: drops any point whose value deviation from the last kept point is less than radius. Useful as a cheap noise remover before RDP.

std::vector<bool> radial_filter(
    std::span<const int64_t> timestamps_ns,
    std::span<const double>  values,
    double                   radius);

Stats

Returned by the stats overloads.

Field Type Description
n_input size_t Number of input points
n_kept size_t Points after reduction
bytes_raw size_t Raw size (16 bytes per point)
bytes_compressed size_t Compressed byte stream length
ratio double bytes_raw / bytes_compressed
max_error double Max value-domain error over all input points
quant_bits int Quantization bit-width used

Error handling

All functions throw on invalid input or corrupt data:

Exception Cause
std::invalid_argument NaN/Inf value, non-monotonic or duplicate timestamps, empty input
std::runtime_error Corrupt or unsupported compressed stream

Installation

C++ via Conan (recommended)

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

C++ from source (without Conan)

The library is header-only — copy or clone the include/ directory and add it to your include path:

git clone https://github.com/fsbondtec/curvepress
# CMake
add_subdirectory(curvepress)          # exposes curvepress::curvepress
# or
target_include_directories(my_target PRIVATE curvepress/include)

Requires: C++20 compiler (MSVC 19.29+, GCC 11+, Clang 14+).

Python (PyPI)

pip install curvepress

Pre-built wheels for CPython 3.9–3.13 on Linux (x86_64, aarch64), macOS (arm64) and Windows x64. Pulls in numpy.


Quick start

C++

#include <curvepress/curvepress.hpp>
#include <cstdint>
#include <vector>

std::vector<int64_t> ts  = { 0, 1'000'000, 2'000'000, /* ... */ };
std::vector<double>  val = { 0.0, 12.5, 11.9, /* ... */ };

// RDP — strict error bound
auto data = curvepress::compress_rdp(ts, val, /*epsilon=*/0.5);

// VW — exact output size
auto data = curvepress::compress_vw(ts, val, /*n_out=*/200);

// RDP-N — at most 200 points, search up to epsilon=100
auto data = curvepress::compress_rdpn(ts, val, /*n_out=*/200, /*epsilon=*/100.0);

// Decompress
auto dec = curvepress::decompress(data);
// dec.timestamps_ns  std::vector<int64_t>
// dec.values         std::vector<double>

// Interpolate at a single timestamp
double v = curvepress::interpolate(dec.timestamps_ns, dec.values, 1'500'000LL);

// With stats
curvepress::Stats stats;
auto data = curvepress::compress_rdp(ts, val, 0.5, stats);
// stats.n_kept, stats.ratio, stats.max_error, stats.quant_bits

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   # nanoseconds
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)

# With stats
data, stats = compress_rdp_stats(ts, val, epsilon=0.5)
print(stats)  # dict: n_input, n_kept, bytes_raw, bytes_compressed, ratio, max_error, quant_bits

Building & testing

C++ tests (GTest via Conan)

# 1. Get GTest into the local Conan cache
conan install --requires="gtest/1.16.0" --build=missing `
    -g CMakeDeps -g CMakeToolchain --output-folder C:\path\to\deps

# 2. Configure
cmake -S . -B build -DCURVEPRESS_BUILD_TESTS=ON `
    -DCMAKE_PREFIX_PATH="C:\path\to\deps" -DCMAKE_BUILD_TYPE=Release

# 3. Build
cmake --build build --config Release

# 4. Run
ctest --test-dir build -C Release --output-on-failure

Python wheel (development install)

pip install scikit-build-core pybind11 numpy
pip install --no-build-isolation -e .
pytest tests/python/ -v

Conan package + test_package

conan create . --build=missing

Benchmark (fracture-curve data, 100 k points)

Algo Ratio max_error
RDP epsilon=0.5 ~18× ≤ 0.75
VW n=1000 ~23× informative

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.2.0.tar.gz (24.2 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.2.0-cp313-cp313-win_amd64.whl (309.2 kB view details)

Uploaded CPython 3.13Windows x86-64

curvepress-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

curvepress-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (127.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

curvepress-0.2.0-cp313-cp313-macosx_11_0_arm64.whl (107.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

curvepress-0.2.0-cp312-cp312-win_amd64.whl (309.2 kB view details)

Uploaded CPython 3.12Windows x86-64

curvepress-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

curvepress-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (127.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

curvepress-0.2.0-cp312-cp312-macosx_11_0_arm64.whl (107.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

curvepress-0.2.0-cp311-cp311-win_amd64.whl (306.5 kB view details)

Uploaded CPython 3.11Windows x86-64

curvepress-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

curvepress-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (126.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

curvepress-0.2.0-cp311-cp311-macosx_11_0_arm64.whl (105.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

curvepress-0.2.0-cp310-cp310-win_amd64.whl (305.4 kB view details)

Uploaded CPython 3.10Windows x86-64

curvepress-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

curvepress-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (125.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

curvepress-0.2.0-cp310-cp310-macosx_11_0_arm64.whl (104.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

curvepress-0.2.0-cp39-cp39-win_amd64.whl (307.1 kB view details)

Uploaded CPython 3.9Windows x86-64

curvepress-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

curvepress-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (126.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

curvepress-0.2.0-cp39-cp39-macosx_11_0_arm64.whl (104.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for curvepress-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e159f30f1b0090947a20be5480c29ec69d975c427b62cdb78465c57c5327daae
MD5 d494896af8b59fe4108ee663ef1b8c85
BLAKE2b-256 ec5bc9dac26d5a62134face3ede8a61ff84dcc4f6391c8b52e800c5bde8cb9a5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: curvepress-0.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 309.2 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.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d872cb9135a706e8b0cd3f47d64d09361a36bf51542120a3c116644c2887ffd0
MD5 cc0d9497d8b7881bdfd711bc72e2e3ed
BLAKE2b-256 4b604e19df4321a7f254d0cc78577d578309838f8c3283da3b5a7745491894e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ae2f0f0705aac071f5b0c327a09e400560898feb33362b0248364cb9ad6791d8
MD5 642fbd7dbdedfee9a4e392c9d17934af
BLAKE2b-256 e6b8daca48aec22572bb67849bd04ead36e6ff085eca0a13158e0674b08e42b2

See more details on using hashes here.

File details

Details for the file curvepress-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 771d81fa655b556bba71e5af328c70b11297005c48ee0023a96b352bc0d1b9af
MD5 9c4af4f3db260c5a007fe16836b8dfda
BLAKE2b-256 45b96fa9a0ffbe06723a1c31a49a494b7bfc16228e7da7de7e4c8778cab534da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5a467b943d99bae203d1310e379891ca45f55f0e5e2ca38372796f62e60fc0fc
MD5 3c80a5d2536574bf8ae1499c6865abf0
BLAKE2b-256 747e15aef03340dcd0e051490221a3b9cbdb522df9421839317273e852ac9818

See more details on using hashes here.

File details

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

File metadata

  • Download URL: curvepress-0.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 309.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.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 da7947fd9704ded0c04582a5157954c87222d1451bb078b8c8d55e7b90589fe5
MD5 fcfd83c6940ab3777db3a1af32d2fb64
BLAKE2b-256 ee6246e66f85e46cf1af8e09f474659afad1c1385b1904ef4806023036c1199c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 46cace8203a9cb04be4c265e1b8608c9daf4fe73e8f22666cb6af814a42e2303
MD5 adf9a905aca16c895337a880e96a9ffc
BLAKE2b-256 66ee54effb729f61e86937ba407cd15690ac6cc61ffcf4b449fa00ba925ef6f7

See more details on using hashes here.

File details

Details for the file curvepress-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7fd5b35b7632bbce26e3ea5fd459eed62287db5c21189965c663f97a0dd3857b
MD5 605916ef5bfb89094c5ca06df6db2a30
BLAKE2b-256 2fb9c0be925531c3d0a5b1b1b956d4e802b73ea040bf68469b66d237347a485d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 df9f99ef1dcb8997a90daa5aa1e7125c77efaa7f2f574de118e220bb7797ab76
MD5 d9c0953ce654ba86d6cd8e61f194637e
BLAKE2b-256 bcb142030dd614b1d341c4b89b7f73b0bee9ccbcf1c500691b5867c90214ec23

See more details on using hashes here.

File details

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

File metadata

  • Download URL: curvepress-0.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 306.5 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.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 106863a758c2ac64e1b64c52b764b691da6ea6dd8aa0e5ee2f49ea4f6d11e8cb
MD5 dd69deb7a0876d4f349f2dd5cbd9f18e
BLAKE2b-256 81cf51683a457304ce3ddc547588944db902ef1994827651d579d42b44d8a2ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4b1ec70e17161a5266a3f99c7418677155752436facc45ffeddf81ccfd199fe7
MD5 3794a545404118427d1572f0c65e3f63
BLAKE2b-256 e6ab1ecf7fba6c49f8ff68304df45aea0d1c86eef702f316ac8fd1aff453dd01

See more details on using hashes here.

File details

Details for the file curvepress-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 515788e6a4062abd6de37a023a1d4123da2050701006c10ea7f8acc0a4698d54
MD5 da1ee86384857201e4f92079c80f3641
BLAKE2b-256 0e47d5cb8738485e16a61904c1f65bde62d63df921144fa57f7e150361da91f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a7a49ecf55bb404494e29cebbb01b256703662d191e4c57fcb9bd9a5714d592
MD5 433a07258e13f09319a69dfc93730829
BLAKE2b-256 c7f4f69f7d21a851c0f449472fed295a68b0a88207523c0f88eb71b34cae4f3d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: curvepress-0.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 305.4 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.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 784f779c265abda3ec591cb583431cbb59cd022bd356b1b3256610a805affb1b
MD5 664df481dbea67881313848bfbcbf53a
BLAKE2b-256 ef88c701169656eacffce6d28dee1bc275952bb6357b0cf3882742fc378232a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7891c4f8079a8519b02f97158c6dac9c6e85848db0e0c133557e023eea4b1fd7
MD5 af088a94930ecc7dd5cf03c2281d5763
BLAKE2b-256 1e30fa38676ed15602276db7d0384f46de86e33aa7ebcdbbc882f45b7a828707

See more details on using hashes here.

File details

Details for the file curvepress-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7bd27d6c68cf1d964f91b0771bab027cc4437cd04279866abc06f26386c9a01c
MD5 52036d270be8d8b49da63ba6b39634c1
BLAKE2b-256 66d6c875e225b38c0374b8940f85989b5604d0e28cff4cb491f197611ec49197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d33f353c9e8d760eb8c14c0b31631a7d15baf4b6ee082be6ca2713aa3b727ea5
MD5 2b17635a185336b212bef75e96f85d94
BLAKE2b-256 f0faf468eeeacd7f7b21c79f6d9a6e4937249729a5980745b8c6b05376995e02

See more details on using hashes here.

File details

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

File metadata

  • Download URL: curvepress-0.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 307.1 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.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 083f95320b64425c3e0f84d81ef930bbd93b96135efeb48aa87e9dbf96de868c
MD5 3bb2b994b9933f6eebd61cf7ecce6e10
BLAKE2b-256 b7b59834123e2fc2ba2bdf1313d4f2a9ae7896a39d374ee1375875d44fd18132

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for curvepress-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dc64b42ab750f4e9151c4fd38f83dea4234ec60241ac9604b72dc7b94f8f7ecc
MD5 184999fd4a5bea12bb3a0985dca34590
BLAKE2b-256 51eb95fb7b6c520f290011ba1e71643c4aee7aec117181192cbe07442ea2fb74

See more details on using hashes here.

File details

Details for the file curvepress-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for curvepress-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 538b06cd908dc5ef0628a69686da9afe9f91a88e62ed51d13e73cdd1f4892f15
MD5 286aaba8287bb756448bc04dcd5c37fe
BLAKE2b-256 adf9c6bf0ffce2eaaa1429b09871a7cfbcc2a9075b0699a5b7fa5ce747bf0336

See more details on using hashes here.

File details

Details for the file curvepress-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for curvepress-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0292f779d4cf52a8e1ef003336c2f184df4f79df8fea66b69f522ac5509b5a56
MD5 f105f4ca904d383d13dbd0939e2ee7f6
BLAKE2b-256 19fab64907cb7b39beb37d5052c24bf3b0484d6d84b3d2ed64bf9f6136007a79

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