FPCS - Feature-Preserving Compensated Sampling
FPCS is a high-performance time series downsampling algorithm designed to preserve critical visual features (peaks and valleys) while significantly reducing data size. It is particularly well-suited for real-time visualization and streaming data applications.
Implementation based on the Feature-Preserving Compensated Sampling for Time Series Visualization publication.
Why FPCS?
Unlike simple decimation or even some advanced algorithms like LTTB, FPCS selects sampling-window extrema and compensates across adjacent windows, helping preserve prominent peaks and valleys while allowing smaller local extrema to be dropped.
Visual Comparison (FPCS vs LTTB)
FPCS helps retain prominent peaks and valleys at high downsampling ratios, whereas LTTB may miss sharp spikes in noisy datasets, as illustrated below.
Key Features
- High Performance: Cython-optimized core is competitive with optimized LTTB (see benchmarks below).
- Streaming data: Supports incremental processing via
FPCSDownsampler. - Feature preserving: Selects window extrema with compensation for features that would otherwise be lost between windows.
- Robust: Ignores
NaNsamples in mixed windows, marks missing windows, and treats±Infas extrema. - Batched processing: Efficiently downsample multiple series at once.
Installation
# Install from PyPI
pip install fpcs
Requirements
- Python >= 3.11
- NumPy
Optional (for the Cython extension)
- C compiler and Python headers
- Cython (the package falls back to the pure Python backend if Cython isn't available)
# Install from source (local checkout)
pip install .
# For development (includes Cython, pytest, benchmarks)
pip install -e ".[dev]"
Usage
Batch Downsampling
Processing existing datasets:
import numpy as np
from fpcs import downsample
# Generate 1M points
x = np.arange(1_000_000, dtype=np.float64)
y = np.sin(x * 0.01) + np.random.randn(1_000_000) * 0.5
# Downsample by a factor of 100
x_ds, y_ds = downsample(x, y, ratio=100)
print(f"Original: {len(x)} points | Downsampled: {len(x_ds)} points")
For ratio > 1, fixed windows span ratio consecutive input samples,
including NaNs. Windows containing non-NaN samples ignore NaNs when selecting
extrema using FPCS compensation. An all-NaN window, including a partial final
window, retains its first NaN as a gap marker. Any pending extremum is emitted
before that marker, and compensation resets. ±Inf values remain valid extrema.
The first and last input samples are always retained, even if they are NaN.
Gaps inside mixed windows are deliberately hidden, connecting across missing
samples. With ratio=1, every input point is retained.
Depending on window alignment, an interior gap of up to 2 * ratio - 2
consecutive NaNs can disappear entirely. Windows count samples, not elapsed
time, so a hidden gap can span arbitrarily long intervals with irregular
timestamps. To preserve gaps in a line plot, downsample contiguous non-NaN
runs separately and retain NaN separators between them. The output bound
then applies to each run separately; the total also includes the separators.
Output size is at most min(n, 2 * ceil(n / ratio) + 2), where n = len(x).
The ratio controls window size rather than an exact output count. For a
conservative budget of target >= 4 points, use
ratio = max(1, math.ceil(n / ((target - 2) // 2))) (after import math).
Streaming data
Processing data in real-time:
from fpcs import FPCSDownsampler
downsampler = FPCSDownsampler(ratio=10)
# Simulate a stream
for xi, yi in zip(stream_x, stream_y):
# .add() yields retained points immediately
for rx, ry in downsampler.add(xi, yi):
update_plot(rx, ry)
# Flush any remaining points at the end of the stream
for rx, ry in downsampler.flush():
update_plot(rx, ry)
To match batch processing with the same input precision, flush only at the end.
Each flush finishes a segment and resets window and compensation state.
The bound min(n, 2 * ceil(n / ratio) + 2) applies separately to each segment,
where n counts samples since the previous flush (or stream start). Across
multiple segments, sum their individual bounds. Frequent flushing changes
compression and can change gap visibility.
API Reference
downsample(x, y, ratio)
The main entry point for batch processing.
- Parameters:
x(Array-like): The x-coordinates (e.g., timestamps).y(Array-like): The y-coordinates.ratio(int): The sampling window size (R). Must be >= 1.
- Returns:
(np.ndarray, np.ndarray): A tuple of(x_downsampled, y_downsampled).
- Notes:
- The first and last input points are retained, even if NaN.
- Windows count all input samples, including NaNs. Mixed windows ignore NaNs; all-NaN windows retain their first sample and reset compensation.
- Output is bounded by
min(n, 2 * ceil(n / ratio) + 2). ratio=1retains every input sample, including everyNaN.±Infvalues are treated as extrema.- Integer inputs are supported; all Cython batch APIs convert them to float64.
Integers outside
[-2**53, 2**53]may round, losing exact values. Python batch and streaming retain integer comparisons, so selected extrema can differ between backends for large integers. For large integer timestamps, subtract an integer origin before converting to float64 to preserve plotting resolution; subtracting after conversion cannot recover lost precision.
FPCSDownsampler
Class for streaming/incremental downsampling.
__init__(ratio: int)
Initialize the downsampler.
ratio: Sampling window size. Must be >= 1.
add(x: float, y: float) -> Iterator[tuple[float, float]]
Add a single point to the downsampler.
- Yields: Tuples of
(x, y)for any points retained during this step. - Notes:
- Streaming uses the same fixed windows and NaN rules as batch processing.
- Call
flush()to emit remaining points at the end of the stream. ±Infvalues are treated as extrema;ratio=1retains every point.
flush() -> Iterator[tuple[float, float]]
Flush any remaining points from the internal buffer (e.g., at the end of a stream).
- Yields: Tuples of
(x, y)for remaining points. - Finishes the partial window, pending extremum, and global endpoint. Calling again without new data yields nothing. New data starts a fresh window.
reset()
Resets all window, compensation, and endpoint state to initial conditions.
Advanced / Optimization API
These functions are available when the Cython extension is successfully
compiled. You can check the active backend with get_backend().
downsample_into(x, y, ratio, out_x, out_y) -> int
Downsample into pre-allocated output buffers to reduce memory allocation overhead.
- Parameters:
x,y: Input arrays (integer inputs are supported and converted to float64).out_x,out_y: Output buffers (contiguous float64, must be large enough and must not overlap the inputs or each other).
- Returns: Number of points written; the output matches
downsample. - Notes: The required safe capacity is
min(n, 2 * ceil(n / ratio) + 2), wheren = len(x), independent of sample values. Insufficient buffers are rejected before any writes. Withratio=1, buffers requirelen(x)slots.
downsample_batch(x_arrays, y_arrays, ratio) -> List[tuple]
Efficiently process a list of time series. Reduces Python overhead compared to a loop.
Backend Availability
downsampleandFPCSDownsamplerare always available.downsample_intoanddownsample_batchare only available with the Cython backend (they areNonewhen using pure Python).- Use
get_backend()to check which backend is active ("cython"or"python").
Performance
Comparison between FPCS (Python/Cython) and a C implementation of the LTTB
algorithm, using the current implementation on a dense signal of 1,000,000
float64 points from TestBenchmarks.benchmark_data in test_fpcs.py (seed 42).
The algorithm comparison uses ratio=100 for FPCS and 12,500 output points
for LTTB; the ratio-scaling table uses each listed ratio.
Measured on Linux with Python 3.11.13, NumPy 1.26.4, Cython 3.1.2, and LTTBC 0.2.4, after warmup with at least 20 measured rounds per case, pinned to one CPU. All time columns are in milliseconds; OPS is calls per second. Timings vary with hardware and host load.
Algorithm comparison
| Name (time in ms) | Min | Max | Mean | StdDev | OPS |
|---|---|---|---|---|---|
| Cython FPCS | 1.4334 | 2.5953 | 1.4537 | 0.1106 | 687.9136 |
| LTTB (C impl) | 2.4700 | 2.9949 | 2.4894 | 0.0400 | 401.7101 |
| Pure Python | 448.6423 | 463.1361 | 453.8052 | 3.3927 | 2.2036 |
Ratio scaling (Cython)
| Ratio | Mean Time (ms) | StdDev |
|---|---|---|
| 10 | 3.66 | 0.04 |
| 50 | 1.85 | 0.10 |
| 100 | 1.46 | 0.13 |
| 500 | 1.05 | 0.01 |
License
This project is licensed under the MIT Licence - see the LICENSE file for details.
Metadata
Release files for fpcs 1.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fpcs-1.1.0.tar.gz | 257.5 kB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| fpcs-1.1.0-cp314-cp314t-win_amd64.whl | CPython 3.14 | CPython 3.14 free-threading | Windows x86-64 | Details |
| fpcs-1.1.0-cp314-cp314t-win32.whl | CPython 3.14 | CPython 3.14 free-threading | Windows x86-32 | Details |
| fpcs-1.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux musl 1.2+ x86-64 | Details |
| fpcs-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 free-threading | Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 | Details |
| fpcs-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 free-threading | macOS 11.0+ ARM64 | Details |
| fpcs-1.1.0-cp314-cp314-win_amd64.whl | CPython 3.14 | CPython 3.14 | Windows x86-64 | Details |
| fpcs-1.1.0-cp314-cp314-win32.whl | CPython 3.14 | CPython 3.14 | Windows x86-32 | Details |
| fpcs-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux musl 1.2+ x86-64 | Details |
| fpcs-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.14 | CPython 3.14 | Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| fpcs-1.1.0-cp314-cp314-macosx_11_0_arm64.whl | CPython 3.14 | CPython 3.14 | macOS 11.0+ ARM64 | Details |
| fpcs-1.1.0-cp313-cp313-win_amd64.whl | CPython 3.13 | CPython 3.13 | Windows x86-64 | Details |
| fpcs-1.1.0-cp313-cp313-win32.whl | CPython 3.13 | CPython 3.13 | Windows x86-32 | Details |
| fpcs-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux musl 1.2+ x86-64 | Details |
| fpcs-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.13 | CPython 3.13 | Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 | Details |
| fpcs-1.1.0-cp313-cp313-macosx_11_0_arm64.whl | CPython 3.13 | CPython 3.13 | macOS 11.0+ ARM64 | Details |
| fpcs-1.1.0-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| fpcs-1.1.0-cp312-cp312-win32.whl | CPython 3.12 | CPython 3.12 | Windows x86-32 | Details |
| fpcs-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux musl 1.2+ x86-64 | Details |
| fpcs-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 | Details |
| fpcs-1.1.0-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
| fpcs-1.1.0-cp311-cp311-win_amd64.whl | CPython 3.11 | CPython 3.11 | Windows x86-64 | Details |
| fpcs-1.1.0-cp311-cp311-win32.whl | CPython 3.11 | CPython 3.11 | Windows x86-32 | Details |
| fpcs-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux musl 1.2+ x86-64 | Details |
| fpcs-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.11 | CPython 3.11 | Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 | Details |
| fpcs-1.1.0-cp311-cp311-macosx_11_0_arm64.whl | CPython 3.11 | CPython 3.11 | macOS 11.0+ ARM64 | Details |
Total release size: 10.7 MB
Release files / fpcs-1.1.0.tar.gz
| Download URL | fpcs-1.1.0.tar.gz |
|---|---|
| Size | 257.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c82e2d1b4026eaa530bee63fbb823f07f0059c37c8389b178a010cf7e222dadb
|
|
BLAKE2b-256 checksum How to use checksums |
401c6951a4e64056b20f838e735ca6f6d4f628d07543e717939af4e930d1f0fd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314t-win_amd64.whl
| Download URL | fpcs-1.1.0-cp314-cp314t-win_amd64.whl |
|---|---|
| Size | 100.6 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6d762a1c80f742b40367a61c2a4af9a3a6b89bb2080337c91da3ccad4fdb838b
|
|
BLAKE2b-256 checksum How to use checksums |
821960f6ecf51420f9ace9b5a8335aec6fb142b84054c7d2e0dd7bf013092eda
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314t-win32.whl
| Download URL | fpcs-1.1.0-cp314-cp314t-win32.whl |
|---|---|
| Size | 87.8 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Windows x86-32 |
|
SHA-256 checksum How to use checksums |
2bf798775ceb546d68af083b6f7e8eb375dd2b37fe71de168b0bcec25ca4af33
|
|
BLAKE2b-256 checksum How to use checksums |
819e2839f12a7cbe2b1d4159ac3d7e93f33bc837716fc2e005621c62b9123e8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
| Download URL | fpcs-1.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 801.5 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
3f5d59249eb237d780b049a89e0d36e14c5d6a900f7ec9f43c3b293fab23c549
|
|
BLAKE2b-256 checksum How to use checksums |
d186c853b2c28ee006cc0f06485e1ab031c05dfb153d1766236064f91a001486
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fpcs-1.1.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 804.6 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
9717ec53fe535298cd8f30aaf6dc770ff2ee731e5eca420da58f97f714430e3d
|
|
BLAKE2b-256 checksum How to use checksums |
6ba299a27c87c65294e08e5832df3ce5f7a097f1f86972f00d6990aa27d1d248
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl
| Download URL | fpcs-1.1.0-cp314-cp314t-macosx_11_0_arm64.whl |
|---|---|
| Size | 302.1 kB |
| Tags | CPython 3.14 CPython 3.14 free-threading macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
98a8e6b1daf38ab0f4130fbe4db25a91874e9a65ee1d752731f2120282aaef98
|
|
BLAKE2b-256 checksum How to use checksums |
8fd6def16b19270cf328cf28254330c06e08a71ab253e2a9dfa3c4ce73917b9f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314-win_amd64.whl
| Download URL | fpcs-1.1.0-cp314-cp314-win_amd64.whl |
|---|---|
| Size | 94.3 kB |
| Tags | CPython 3.14 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
941d45c3e3288a0febe0828f34ec08e97d523daa2b8da4d1021460139cec9e95
|
|
BLAKE2b-256 checksum How to use checksums |
91d4a8ad1ba06d8b93cb5f9b82d24fd7fa7cc78e7ac868a1455c054d7fd4fb27
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314-win32.whl
| Download URL | fpcs-1.1.0-cp314-cp314-win32.whl |
|---|---|
| Size | 81.9 kB |
| Tags | CPython 3.14 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
59290b3b7df2366e9bf089319af3fffb25d4c9c1ebdfa9073c88a97049b00aa1
|
|
BLAKE2b-256 checksum How to use checksums |
ab74bfb579da8b843a64e2fe20116a9fd42b074e02fcfaf90b1041871695a164
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
| Download URL | fpcs-1.1.0-cp314-cp314-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 796.1 kB |
| Tags | CPython 3.14 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
1b790e9a870efffbd9dddad9e19b8f4e1724872b9cb1406dafffb435e6aa52a5
|
|
BLAKE2b-256 checksum How to use checksums |
46dbcaff984e76b9c60a3532d98fd3fe8ca79e658f708befa5be00e8d624ee71
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fpcs-1.1.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 794.3 kB |
| Tags | CPython 3.14 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
1d1427813e4867e92ab3e5c28a6e477d60aa1dc8e46fadee33567474cac0189d
|
|
BLAKE2b-256 checksum How to use checksums |
42a610a065eb40c4ab9faf9fa87499873f4794515739d2761eaff48e3e03a560
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp314-cp314-macosx_11_0_arm64.whl
| Download URL | fpcs-1.1.0-cp314-cp314-macosx_11_0_arm64.whl |
|---|---|
| Size | 296.3 kB |
| Tags | CPython 3.14 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
e26a0e89c4ce4e11d6de038961ef57f9918b4e5dacc70e30e6a2187f4a8137ab
|
|
BLAKE2b-256 checksum How to use checksums |
05cc1c82371de5011ce6288a80c38cdd42b2ce28a1b61c822c1b92eaaa021afb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp313-cp313-win_amd64.whl
| Download URL | fpcs-1.1.0-cp313-cp313-win_amd64.whl |
|---|---|
| Size | 92.4 kB |
| Tags | CPython 3.13 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
1d7ef8eb371b69dcb4c0f0a1d7e50611eb961c3d55c44a0a0cec6027e50b34f0
|
|
BLAKE2b-256 checksum How to use checksums |
ee4b3e579a32d289f78f9fa7f78961ae75a54a64c976a57bfc6d463f98ccb943
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp313-cp313-win32.whl
| Download URL | fpcs-1.1.0-cp313-cp313-win32.whl |
|---|---|
| Size | 79.9 kB |
| Tags | CPython 3.13 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
202104bf799469e5e0c1f739d50e8826c249459a06cac6e55ceb36511fb5e4a7
|
|
BLAKE2b-256 checksum How to use checksums |
30a8afbfd0ef46582cf5af1e41a3ea5109d46f91cb80c48e56083009c6cea3d8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
| Download URL | fpcs-1.1.0-cp313-cp313-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 800.1 kB |
| Tags | CPython 3.13 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
fc7814b123476b7137e6a1e7f8e8d6777ded9058cd581893be816a471fa35530
|
|
BLAKE2b-256 checksum How to use checksums |
5a447746f55e0ae45d2c721cbdb51ef67063351365d5ef738f2b6331d70b5321
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fpcs-1.1.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 799.7 kB |
| Tags | CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
6dc370e0d84277a0a35d28daf526fca3636dea943d6959e0126d030ec16461ed
|
|
BLAKE2b-256 checksum How to use checksums |
86219150a5154743284bd34131ca23619deb5402d2efe1b8213a63e4652e77da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
| Download URL | fpcs-1.1.0-cp313-cp313-macosx_11_0_arm64.whl |
|---|---|
| Size | 295.7 kB |
| Tags | CPython 3.13 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
694fc8b0711cc7760cdc87ab13fcad5d77a6d054a05221e1ab371f3d3836f411
|
|
BLAKE2b-256 checksum How to use checksums |
8313178a0f4a256ec3529c71b649a7f6ce682646cce6b9b4a2b9a43e1f485f0a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp312-cp312-win_amd64.whl
| Download URL | fpcs-1.1.0-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 92.7 kB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
60ea72c702e24030ac90e4f53dab02d9b699f2819bc89913d0aa147707b05705
|
|
BLAKE2b-256 checksum How to use checksums |
372744c5cbeaf50a2a119e3098b85ae8c3e32224cd523768f4ab1dacbf479041
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp312-cp312-win32.whl
| Download URL | fpcs-1.1.0-cp312-cp312-win32.whl |
|---|---|
| Size | 80.0 kB |
| Tags | CPython 3.12 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
ff1f5f2e1f5b23b9c75150ae6f116a4e13d8081f8ec11613720c60d42a1d4269
|
|
BLAKE2b-256 checksum How to use checksums |
ffee8a6dcc1535e295eb8cee05d8a0e13d5675d8354031156b3b7d9bca0e3189
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
| Download URL | fpcs-1.1.0-cp312-cp312-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 804.7 kB |
| Tags | CPython 3.12 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
f54b9bad388bb27393a27c55c3cf8bddc4ecc3a73310974e19a8e74a4fd55fe3
|
|
BLAKE2b-256 checksum How to use checksums |
3ea0127dbfcfd50ca5ab0c76bd39b73abb4c3c0c4a70d7a62859846c2f12e3b0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fpcs-1.1.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 804.2 kB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
3a00f14e602d03a48c1aab2ae1f595f0152359ec40c0d8b25357303e896f3c91
|
|
BLAKE2b-256 checksum How to use checksums |
e62996e1f86731f3f73ad356203049f1f8ac8b30f82633a2ccf5c6ab2e8b5ac0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | fpcs-1.1.0-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 295.8 kB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
403ae094951848bc68852b5c2b01ddeb62ce6f13a8f025230c0443ac2afdf230
|
|
BLAKE2b-256 checksum How to use checksums |
6a1e3f8ca3ea8eb9d88f72b0220c2fdfbd18446f79031a827079de8901343eb2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp311-cp311-win_amd64.whl
| Download URL | fpcs-1.1.0-cp311-cp311-win_amd64.whl |
|---|---|
| Size | 94.4 kB |
| Tags | CPython 3.11 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
0a78846a04d5fe366774b0c62ae50076060816921da31caa76f122a00e252e84
|
|
BLAKE2b-256 checksum How to use checksums |
ecd23bbdf19570325249762e841ab3ec6162b39df36b92ad7a10cb654897d4f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp311-cp311-win32.whl
| Download URL | fpcs-1.1.0-cp311-cp311-win32.whl |
|---|---|
| Size | 80.7 kB |
| Tags | CPython 3.11 Windows x86-32 |
|
SHA-256 checksum How to use checksums |
433415e593ed3cde28cf79f28475ce12c7512dd8975db820ccf44335230aede3
|
|
BLAKE2b-256 checksum How to use checksums |
ac71d1cf6554c7ccaf03e0e895d3adc213317f29313378c5d47a0a4dc5bfdf16
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
| Download URL | fpcs-1.1.0-cp311-cp311-musllinux_1_2_x86_64.whl |
|---|---|
| Size | 825.7 kB |
| Tags | CPython 3.11 Linux musl 1.2+ x86-64 |
|
SHA-256 checksum How to use checksums |
0a6505032d53c89f31e0ffa5a853eae06c6d7892867f545a4389eac466f73318
|
|
BLAKE2b-256 checksum How to use checksums |
7fa89f9645837d0c120f00e819da2195c2a81bdf276caa7354206738a4ba1ae5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | fpcs-1.1.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 821.5 kB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
8eb1fd69db408fd40adbf34cdf2a282c9f5fd1ae35606f67bc6cf3dba24fc8d4
|
|
BLAKE2b-256 checksum How to use checksums |
3e9876cc8d82652e584c333a51da80de9415e00e0b85bc8af77152ca204f5213
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / fpcs-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
| Download URL | fpcs-1.1.0-cp311-cp311-macosx_11_0_arm64.whl |
|---|---|
| Size | 294.2 kB |
| Tags | CPython 3.11 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
2ba81dd77bdea2215f5881e3cae8cf949829c3714ff23639d125feaba36d3553
|
|
BLAKE2b-256 checksum How to use checksums |
64c0aa9e428bb6d70aceeb284b22d8b13bf4659a2e1f48f40a673b0b0484eb60
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.9.28 {"installer":{"name":"uv","version":"0.9.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|