Lossy time-series compression: RDP/VW point reduction + quantization (C++ core)
Project description
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_outpoints - 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_outpoints - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e159f30f1b0090947a20be5480c29ec69d975c427b62cdb78465c57c5327daae
|
|
| MD5 |
d494896af8b59fe4108ee663ef1b8c85
|
|
| BLAKE2b-256 |
ec5bc9dac26d5a62134face3ede8a61ff84dcc4f6391c8b52e800c5bde8cb9a5
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d872cb9135a706e8b0cd3f47d64d09361a36bf51542120a3c116644c2887ffd0
|
|
| MD5 |
cc0d9497d8b7881bdfd711bc72e2e3ed
|
|
| BLAKE2b-256 |
4b604e19df4321a7f254d0cc78577d578309838f8c3283da3b5a7745491894e5
|
File details
Details for the file curvepress-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.13, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ae2f0f0705aac071f5b0c327a09e400560898feb33362b0248364cb9ad6791d8
|
|
| MD5 |
642fbd7dbdedfee9a4e392c9d17934af
|
|
| BLAKE2b-256 |
e6b8daca48aec22572bb67849bd04ead36e6ff085eca0a13158e0674b08e42b2
|
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
- Download URL: curvepress-0.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 127.4 kB
- Tags: CPython 3.13, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
771d81fa655b556bba71e5af328c70b11297005c48ee0023a96b352bc0d1b9af
|
|
| MD5 |
9c4af4f3db260c5a007fe16836b8dfda
|
|
| BLAKE2b-256 |
45b96fa9a0ffbe06723a1c31a49a494b7bfc16228e7da7de7e4c8778cab534da
|
File details
Details for the file curvepress-0.2.0-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 107.1 kB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a467b943d99bae203d1310e379891ca45f55f0e5e2ca38372796f62e60fc0fc
|
|
| MD5 |
3c80a5d2536574bf8ae1499c6865abf0
|
|
| BLAKE2b-256 |
747e15aef03340dcd0e051490221a3b9cbdb522df9421839317273e852ac9818
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da7947fd9704ded0c04582a5157954c87222d1451bb078b8c8d55e7b90589fe5
|
|
| MD5 |
fcfd83c6940ab3777db3a1af32d2fb64
|
|
| BLAKE2b-256 |
ee6246e66f85e46cf1af8e09f474659afad1c1385b1904ef4806023036c1199c
|
File details
Details for the file curvepress-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.12, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46cace8203a9cb04be4c265e1b8608c9daf4fe73e8f22666cb6af814a42e2303
|
|
| MD5 |
adf9a905aca16c895337a880e96a9ffc
|
|
| BLAKE2b-256 |
66ee54effb729f61e86937ba407cd15690ac6cc61ffcf4b449fa00ba925ef6f7
|
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
- Download URL: curvepress-0.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 127.4 kB
- Tags: CPython 3.12, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7fd5b35b7632bbce26e3ea5fd459eed62287db5c21189965c663f97a0dd3857b
|
|
| MD5 |
605916ef5bfb89094c5ca06df6db2a30
|
|
| BLAKE2b-256 |
2fb9c0be925531c3d0a5b1b1b956d4e802b73ea040bf68469b66d237347a485d
|
File details
Details for the file curvepress-0.2.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 107.1 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
df9f99ef1dcb8997a90daa5aa1e7125c77efaa7f2f574de118e220bb7797ab76
|
|
| MD5 |
d9c0953ce654ba86d6cd8e61f194637e
|
|
| BLAKE2b-256 |
bcb142030dd614b1d341c4b89b7f73b0bee9ccbcf1c500691b5867c90214ec23
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
106863a758c2ac64e1b64c52b764b691da6ea6dd8aa0e5ee2f49ea4f6d11e8cb
|
|
| MD5 |
dd69deb7a0876d4f349f2dd5cbd9f18e
|
|
| BLAKE2b-256 |
81cf51683a457304ce3ddc547588944db902ef1994827651d579d42b44d8a2ee
|
File details
Details for the file curvepress-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.11, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4b1ec70e17161a5266a3f99c7418677155752436facc45ffeddf81ccfd199fe7
|
|
| MD5 |
3794a545404118427d1572f0c65e3f63
|
|
| BLAKE2b-256 |
e6ab1ecf7fba6c49f8ff68304df45aea0d1c86eef702f316ac8fd1aff453dd01
|
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
- Download URL: curvepress-0.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 126.3 kB
- Tags: CPython 3.11, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
515788e6a4062abd6de37a023a1d4123da2050701006c10ea7f8acc0a4698d54
|
|
| MD5 |
da1ee86384857201e4f92079c80f3641
|
|
| BLAKE2b-256 |
0e47d5cb8738485e16a61904c1f65bde62d63df921144fa57f7e150361da91f0
|
File details
Details for the file curvepress-0.2.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 105.4 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a7a49ecf55bb404494e29cebbb01b256703662d191e4c57fcb9bd9a5714d592
|
|
| MD5 |
433a07258e13f09319a69dfc93730829
|
|
| BLAKE2b-256 |
c7f4f69f7d21a851c0f449472fed295a68b0a88207523c0f88eb71b34cae4f3d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
784f779c265abda3ec591cb583431cbb59cd022bd356b1b3256610a805affb1b
|
|
| MD5 |
664df481dbea67881313848bfbcbf53a
|
|
| BLAKE2b-256 |
ef88c701169656eacffce6d28dee1bc275952bb6357b0cf3882742fc378232a2
|
File details
Details for the file curvepress-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.10, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7891c4f8079a8519b02f97158c6dac9c6e85848db0e0c133557e023eea4b1fd7
|
|
| MD5 |
af088a94930ecc7dd5cf03c2281d5763
|
|
| BLAKE2b-256 |
1e30fa38676ed15602276db7d0384f46de86e33aa7ebcdbbc882f45b7a828707
|
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
- Download URL: curvepress-0.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 125.6 kB
- Tags: CPython 3.10, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7bd27d6c68cf1d964f91b0771bab027cc4437cd04279866abc06f26386c9a01c
|
|
| MD5 |
52036d270be8d8b49da63ba6b39634c1
|
|
| BLAKE2b-256 |
66d6c875e225b38c0374b8940f85989b5604d0e28cff4cb491f197611ec49197
|
File details
Details for the file curvepress-0.2.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 104.0 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d33f353c9e8d760eb8c14c0b31631a7d15baf4b6ee082be6ca2713aa3b727ea5
|
|
| MD5 |
2b17635a185336b212bef75e96f85d94
|
|
| BLAKE2b-256 |
f0faf468eeeacd7f7b21c79f6d9a6e4937249729a5980745b8c6b05376995e02
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
083f95320b64425c3e0f84d81ef930bbd93b96135efeb48aa87e9dbf96de868c
|
|
| MD5 |
3bb2b994b9933f6eebd61cf7ecce6e10
|
|
| BLAKE2b-256 |
b7b59834123e2fc2ba2bdf1313d4f2a9ae7896a39d374ee1375875d44fd18132
|
File details
Details for the file curvepress-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
- Upload date:
- Size: 1.2 MB
- Tags: CPython 3.9, musllinux: musl 1.2+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc64b42ab750f4e9151c4fd38f83dea4234ec60241ac9604b72dc7b94f8f7ecc
|
|
| MD5 |
184999fd4a5bea12bb3a0985dca34590
|
|
| BLAKE2b-256 |
51eb95fb7b6c520f290011ba1e71643c4aee7aec117181192cbe07442ea2fb74
|
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
- Download URL: curvepress-0.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
- Upload date:
- Size: 126.0 kB
- Tags: CPython 3.9, manylinux: glibc 2.24+ x86-64, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
538b06cd908dc5ef0628a69686da9afe9f91a88e62ed51d13e73cdd1f4892f15
|
|
| MD5 |
286aaba8287bb756448bc04dcd5c37fe
|
|
| BLAKE2b-256 |
adf9c6bf0ffce2eaaa1429b09871a7cfbcc2a9075b0699a5b7fa5ce747bf0336
|
File details
Details for the file curvepress-0.2.0-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: curvepress-0.2.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 104.1 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0292f779d4cf52a8e1ef003336c2f184df4f79df8fea66b69f522ac5509b5a56
|
|
| MD5 |
f105f4ca904d383d13dbd0939e2ee7f6
|
|
| BLAKE2b-256 |
19fab64907cb7b39beb37d5052c24bf3b0484d6d84b3d2ed64bf9f6136007a79
|