Skip to main content

FPCS - Feature-Preserving Compensated Sampling

License: MIT

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.

Comparison

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 NaN samples in mixed windows, marks missing windows, and treats ±Inf as 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=1 retains every input sample, including every NaN.
    • ±Inf values 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.
    • ±Inf values are treated as extrema; ratio=1 retains 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), where n = len(x), independent of sample values. Insufficient buffers are rejected before any writes. With ratio=1, buffers require len(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

  • downsample and FPCSDownsampler are always available.
  • downsample_into and downsample_batch are only available with the Cython backend (they are None when 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)

Source distribution for fpcs 1.1.0
File Size Uploaded
fpcs-1.1.0.tar.gz 257.5 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for fpcs 1.1.0
File
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}

Release history Release notifications | RSS feed

This release

1.1.0 This release

26 release files

1.0.0

26 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page