Skip to main content

A Rust implementation of the Random Cut Forest algorithm for anomaly detection.

Project description

rcf3

A Rust implementation of the Random Cut Forest (RCF) algorithm for anomaly detection in streaming data.

Overview

Random Cut Forest is an ensemble-based anomaly detection algorithm that uses randomized decision trees to identify anomalies in both univariate and multivariate time series data. It's particularly effective for:

  • Anomaly Detection: Identifying unusual patterns in streaming data
  • Time Series Analysis: Detecting changes in temporal patterns and seasonality
  • Interpretability: Provides feature attribution scores to understand which dimensions contribute to anomalies

This implementation provides both Rust and Python APIs with support for advanced features like missing value imputation, neighborhood search, and time series forecasting.

Features

The crate supports several compile-time features:

std (enabled by default)

Enables use of the Rust standard library. Disable this for no_std environments:

[dependencies]
rcf3 = { version = "0.1", default-features = false }

serde (enabled by default)

Provides JSON serialization and deserialization support for Forest objects. Allows saving and loading trained models:

[dependencies]
rcf3 = { version = "0.1", features = ["serde", "std"] }

python (optional)

Builds Python bindings using PyO3, enabling use from Python. Automatically enables serde and std:

[dependencies]
rcf3 = { version = "0.1", features = ["python"] }

To use just the core algorithm without serialization:

[dependencies]
rcf3 = { version = "0.1", default-features = false, features = ["std"] }

Configuration Options

All forests are configured via RcfConfig with the following parameters:

Parameter Type Default Description
input_dim usize Required Number of base feature dimensions per observation (before shingling)
shingle_size usize 1 Temporal window size. When internal_shingling is true, the effective model dimension becomes input_dim * shingle_size
capacity usize 256 Maximum number of points stored per tree
num_trees usize 50 Number of trees in the ensemble
time_decay f64 0.0 Exponential time-decay rate applied to sampling weights. 0.0 uses the default: 0.1 / capacity
output_after usize 0 Minimum number of updates before score/attribution/etc. return non-trivial results. 0 uses the default: 1 + capacity / 4
internal_shingling bool true When true, the forest automatically manages the shingle buffer so callers pass one base observation at a time
initial_accept_fraction f64 0.125 Controls how quickly the sampler fills to capacity during warm-up

Rust API

Creating a Forest

Use the builder pattern to create a configured forest:

use rcf3::Forest;

let forest = Forest::builder(2, 1)  // 2D input, shingle size 1 (default)
    .num_trees(50)
    .capacity(256)
    .build()?;

With time series (shingling):

let forest = Forest::builder(4, 8)  // 4D input, window size 8
    .num_trees(100)
    .capacity(512)
    .time_decay(0.01)
    .build()?;

internal_shingling is true by default, so you only need to set it explicitly when turning it off.

From a config object:

use rcf3::{RcfConfig, Forest};

let config = RcfConfig::new(3)
    .with_num_trees(75)
    .with_capacity(512)
    .with_shingle_size(4);

let forest = Forest::from_config(&config)?;

Basic Operations

For online anomaly detection, the recommended order is to score first and then update. The snippets below are minimal API examples showing each operation separately.

Update the forest with a new observation:

let point = vec![1.5, 2.3];
forest.update(&point)?;

Check if the forest has warmed up:

if forest.is_ready() {
    let score = forest.score(&point)?;
    println!("Anomaly score: {}", score);
}

Get the number of observations processed:

println!("Entries seen: {}", forest.entries_seen());

Scoring Methods

Anomaly Score (RCF Score):

The primary anomaly metric. Lower scores indicate normal behavior; higher scores indicate anomalies.

let point = vec![1.5, 2.3, -0.5];
let score = forest.score(&point)?;
if score > threshold {
    println!("Anomaly detected!");
}

Displacement Score:

A displacement-based anomaly metric that measures how far a point is from the expected region:

let displacement = forest.displacement_score(&point)?;

Density Estimate:

Returns an estimate of the probability density at the given point. Higher density = normal behavior:

let density = forest.density(&point)?;

Feature Attribution

Understand which dimensions contribute to the anomaly score:

let point = vec![1.5, 2.3, 100.0];  // Third dimension is anomalous
let attribution = forest.attribution(&point)?;

for (i, attr) in attribution.iter().enumerate() {
    println!("Dimension {}: below={}, above={}", i, attr.below, attr.above);
}

Each dimension returns below and above scores indicating how much that dimension contributes to the overall anomaly.

Neighborhood Search

Find approximate near-neighbors of a query point:

let point = vec![1.5, 2.3];
let neighbors = forest.near_neighbors(&point, 10, 50)?;

for neighbor in neighbors {
    println!("Distance: {}, Score: {}", neighbor.distance, neighbor.score);
    println!("Point: {:?}", neighbor.point);
}

Parameters:

  • top_k: Maximum number of neighbors to return (default 10)
  • percentile: Percentile threshold for filtering candidates (default 50)

Missing Value Imputation

Impute missing dimensions using learned data distribution:

let point = vec![1.5, f32::NAN, 3.0];  // Missing value at index 1
let missing = vec![1];  // Indices of missing dimensions
let imputed = forest.impute(&point, &missing, 1.0)?;

println!("Imputed value at index 1: {}", imputed[1]);

Parameters:

  • point: Full-dimensional query (missing values will be ignored)
  • missing: Indices of dimensions to impute
  • centrality: Controls how deterministic the imputation is (1.0 = always pick nearest)

Time Series Forecasting

Predict future observations (requires internal_shingling = true and shingle_size > 1):

let forest = Forest::builder(4, 8)
    .build()?;

// Feed observations one at a time
for point in stream {
    forest.update(&point)?;
}

// Predict the next 5 observations
let predictions = forest.extrapolate(5)?;
// Returns a flat list of length 5 * input_dim

Serialization

Save and load trained models using JSON:

// Save to string
let json_str = forest.to_json()?;

// Save to file
forest.save_json("forest.json")?;

// Load from string
let loaded = Forest::from_json(&json_str)?;

// Load from file
let loaded = Forest::load_json("forest.json")?;

Python API

The Python API mirrors the Rust interface. Create forests, update them, and compute scores exactly like in Rust:

Creating a Forest

from rcf3 import Forest

forest = Forest(
    input_dim=2,
    shingle_size=1,
    num_trees=50,
    capacity=256,
)

With time series:

forest = Forest(
    input_dim=4,
    shingle_size=8,
    num_trees=100,
    capacity=512,
    time_decay=0.01,
    internal_shingling=True,
)

Basic Operations

# Update the forest
point = [1.5, 2.3]
forest.update(point)

# Check if ready
if forest.is_ready():
    score = forest.score(point)
    print(f"Anomaly score: {score}")

# Get the number of observations processed
print(f"Entries seen: {forest.entries_seen()}")

Scoring Methods

point = [1.5, 2.3, -0.5]

# Anomaly score
score = forest.score(point)

# Displacement score
displacement = forest.displacement_score(point)

# Density estimate
density = forest.density(point)

Feature Attribution

point = [1.5, 2.3, 100.0]
attribution = forest.attribution(point)

for i, attr in enumerate(attribution):
    print(f"Dimension {i}: below={attr['below']}, above={attr['above']}")

Neighborhood Search

point = [1.5, 2.3]
neighbors = forest.near_neighbors(point, top_k=10, percentile=50)

for neighbor in neighbors:
    print(f"Distance: {neighbor['distance']}")
    print(f"Score: {neighbor['score']}")
    print(f"Point: {neighbor['point']}")

Missing Value Imputation

point = [1.5, float('nan'), 3.0]
missing = [1]  # Index to impute
imputed = forest.impute(point, missing, centrality=1.0)

print(f"Imputed value: {imputed[1]}")

Time Series Forecasting

forest = Forest(
    input_dim=4,
    shingle_size=8,
    internal_shingling=True,
)

# Feed observations one at a time
for point in stream:
    forest.update(point)

# Predict next 5 observations
predictions = forest.extrapolate(5)
# Returns a list of length 5 * input_dim

Serialization

# Save to string
json_str = forest.to_json()

# Save to file
forest.save_json("forest.json")

# Load from string
loaded = Forest.from_json(json_str)

# Load from file
loaded = Forest.load_json("forest.json")

You can also use pickle for Python serialization:

import pickle

# Save
with open("forest.pkl", "wb") as f:
    pickle.dump(forest, f)

# Load
with open("forest.pkl", "rb") as f:
    forest = pickle.load(f)

Example: Detecting Anomalies in a Data Stream

Rust

use rcf3::Forest;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut forest = Forest::builder(3, 1)
        .capacity(256)
        .num_trees(50)
        .build()?;

    // Warm up the forest with many normal data points
    for i in 0..200 {
        let val = (i as f32) * 0.01;
        forest.update(&vec![1.0 + val, 2.0 + val, 3.0 + val])?;
    }

    let data = vec![
        vec![1.0, 2.0, 3.0],
        vec![1.1, 2.1, 3.1],
        vec![1.2, 2.2, 3.2],
        vec![100.0, 200.0, 300.0], // Extreme anomaly
        vec![1.3, 2.3, 3.3],
    ];

    let mut anomaly_count = 0;
    for point in data {
        // Online inference order: score first, then update.
        if forest.is_ready() {
            let score = forest.score(&point)?;
            let attribution = forest.attribution(&point)?;

            println!("Point: {:?}, Score: {}", point, score);

            // Lower threshold since we're detecting a very extreme anomaly
            if score > 0.1 {
                println!("Anomaly detected: score={}", score);
                for (i, attr) in attribution.iter().enumerate() {
                    println!("  Dimension {}: {:.2}", i, attr.above);
                }
                anomaly_count += 1;
            }
        }

        forest.update(&point)?;
    }

    println!("Total anomalies detected: {}", anomaly_count);

    Ok(())
}

Python

from rcf3 import Forest

forest = Forest(input_dim=3, capacity=256, num_trees=50)

# Warm up the forest with many normal data points
for i in range(200):
    val = i * 0.01
    forest.update([1.0 + val, 2.0 + val, 3.0 + val])

data = [
    [1.0, 2.0, 3.0],
    [1.1, 2.1, 3.1],
    [1.2, 2.2, 3.2],
    [100.0, 200.0, 300.0],  # Extreme anomaly
    [1.3, 2.3, 3.3],
]

anomaly_count = 0
for point in data:
    # Online inference order: score first, then update.
    if forest.is_ready():
        score = forest.score(point)
        attribution = forest.attribution(point)

        print(f"Point: {point}, Score: {score}")

        # Lower threshold since we're detecting a very extreme anomaly
        if score > 0.1:
            print(f"Anomaly detected: score={score}")
            for i, attr in enumerate(attribution):
                print(f"  Dimension {i}: {attr['above']:.2f}")
            anomaly_count += 1

    forest.update(point)

print(f"Total anomalies detected: {anomaly_count}")

License

Licensed under the Apache License 2.0.

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

rcf3-0.1.0.tar.gz (65.5 kB view details)

Uploaded Source

Built Distributions

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

rcf3-0.1.0-pp311-pypy311_pp73-win_amd64.whl (271.6 kB view details)

Uploaded PyPyWindows x86-64

rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl (353.5 kB view details)

Uploaded PyPymanylinux: glibc 2.28+ x86-64

rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl (336.1 kB view details)

Uploaded PyPymanylinux: glibc 2.28+ ARM64

rcf3-0.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl (322.9 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

rcf3-0.1.0-cp314-cp314t-win_arm64.whl (252.4 kB view details)

Uploaded CPython 3.14tWindows ARM64

rcf3-0.1.0-cp314-cp314t-win_amd64.whl (268.5 kB view details)

Uploaded CPython 3.14tWindows x86-64

rcf3-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl (564.0 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

rcf3-0.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl (412.1 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ riscv64

rcf3-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl (511.3 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

rcf3-0.1.0-cp314-cp314t-manylinux_2_34_riscv64.whl (344.0 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.34+ riscv64

rcf3-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl (352.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64

rcf3-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl (334.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ ARM64

rcf3-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl (321.3 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

rcf3-0.1.0-cp311-abi3-win_arm64.whl (256.1 kB view details)

Uploaded CPython 3.11+Windows ARM64

rcf3-0.1.0-cp311-abi3-win_amd64.whl (271.8 kB view details)

Uploaded CPython 3.11+Windows x86-64

rcf3-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl (565.7 kB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ x86-64

rcf3-0.1.0-cp311-abi3-musllinux_1_2_riscv64.whl (413.7 kB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ riscv64

rcf3-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl (512.7 kB view details)

Uploaded CPython 3.11+musllinux: musl 1.2+ ARM64

rcf3-0.1.0-cp311-abi3-manylinux_2_34_riscv64.whl (345.4 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.34+ riscv64

rcf3-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl (353.7 kB view details)

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

rcf3-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl (336.3 kB view details)

Uploaded CPython 3.11+manylinux: glibc 2.28+ ARM64

rcf3-0.1.0-cp311-abi3-macosx_11_0_arm64.whl (323.1 kB view details)

Uploaded CPython 3.11+macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: rcf3-0.1.0.tar.gz
  • Upload date:
  • Size: 65.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7ace20ab3098df2cc21083bec15b117236831d91d3c81385a3775fa910190947
MD5 001ac75ec20ce9deaf516d9e33bdbdac
BLAKE2b-256 00b36c6e727b734eecddb23ddd0d065fc1a9bd12dfaf551683ee94e64dcedc9a

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-pp311-pypy311_pp73-win_amd64.whl.

File metadata

  • Download URL: rcf3-0.1.0-pp311-pypy311_pp73-win_amd64.whl
  • Upload date:
  • Size: 271.6 kB
  • Tags: PyPy, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-pp311-pypy311_pp73-win_amd64.whl
Algorithm Hash digest
SHA256 c5833197a4d73b8b86296cb248f82bdc4f8543a991969f4bf1680d5c3887daee
MD5 cd2cb9e0eda3a02bbb1329c65e76e641
BLAKE2b-256 7300ba3ea246800927ffa4ea2b8d0bdf86c6314f1c112e544d3febc75c167739

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 353.5 kB
  • Tags: PyPy, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 51aa431074230e7336b9d92a20c9f9cf70467aecaf7da0eee00f84ad8fca3e43
MD5 aa0f9fc73a67acb8c57704ae71f514ca
BLAKE2b-256 37cf131e2724e3193c71e4e4eaf040850b3a7aaf78cab7fd979046dd6e20bea0

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 336.1 kB
  • Tags: PyPy, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54d151948f8273a8fa374e9491ff53d48734f94ab9747edcd0da4a92e68caf07
MD5 851486177f8c6d8859eefb81d6eda606
BLAKE2b-256 b367bc614cbdf598fbfa40f0719d5c52a7ecc639e1cd318560991c17800cc71c

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rcf3-0.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 322.9 kB
  • Tags: PyPy, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 01ba5acbf48caf8bcc04b38fa51df38279fdf56725eadd5adc9f451128b56da9
MD5 26dc442d6c15b02bc3d1e10a6bd7e9b8
BLAKE2b-256 52927757335ecab5dcc60c5949dafb88ce613ff38a584e0e0db73c336d568a80

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-win_arm64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-win_arm64.whl
  • Upload date:
  • Size: 252.4 kB
  • Tags: CPython 3.14t, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-win_arm64.whl
Algorithm Hash digest
SHA256 a4ed7d129694275f3679369ffdd2927892f300ed6b31ceaad09507c77bbdbc55
MD5 36113161acada3dbb9611e3b629b86b9
BLAKE2b-256 cb2d23a715ba8ea3bf644a67d1b88f0b7cb6069dd67ad05d53cc2feb9b6cd0fa

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 268.5 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 85d1abe9731bdb35a2d7f53fa8b88575734c249623bb00c08ab23bc911af7725
MD5 764506162cd12b02eab0d2c72a5d4903
BLAKE2b-256 85c72d3885e44dab9515567f18a7076b34897d0d78da6333c82d619be21996f0

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 564.0 kB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92ee949b35580a3bf46b23ce3f156545108933b067254e9ff9615454e6d47cdb
MD5 1aef171114ffc30cd0e36dc5220303e8
BLAKE2b-256 6973505824689a1bd452628d841ef38afc5adbb478cbdb5f6581f6257d633b96

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl
  • Upload date:
  • Size: 412.1 kB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ riscv64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 3c303acc5b677ee2040001173e0c1097e73fa5fefb4d3f19efde887412cd89ac
MD5 0fca8aaafab461aabb2f6185336efdd2
BLAKE2b-256 90006422146f7d23da04812d22df1047cab61cd27dee3aebedea9d400e9a20c9

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 511.3 kB
  • Tags: CPython 3.14t, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 dabf71257a3197fa81b94ec32c6b2904ceb764896c96bcfe9c1857f81837a29b
MD5 817eed21eb76de960fac3cac09e7e723
BLAKE2b-256 41d48058e05ecdf6782e616dd17076261fb19dcc5d1c992d2d65455be434c6c0

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-manylinux_2_34_riscv64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-manylinux_2_34_riscv64.whl
  • Upload date:
  • Size: 344.0 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.34+ riscv64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-manylinux_2_34_riscv64.whl
Algorithm Hash digest
SHA256 922a8751992132ee069e2a7c729ee709968b997c97bdf5796c5684fb34155ab9
MD5 1ff63d0305f5e1cb615641a26b7d55ca
BLAKE2b-256 6d4479f353d0e3d8b397e9eb20920956b991065cd2578c6fbe85b184f88f82e0

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 352.1 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d19ef662078ff94cde6e8490e80bc5edb73a25587bf5693476acbd3708ed7b78
MD5 790e29dbe1eb80ab240a26445ea6851f
BLAKE2b-256 eaa3b14586dc09c1408e2d68a06ea538efbeae0e58bcb95a785933a576116c48

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 334.9 kB
  • Tags: CPython 3.14t, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0f3ff047daf1299d0bd58aca3f437e4a3109844ca7025d89a30fa4ceb16a892b
MD5 1d029f2b7eb0eb82f358e99077f060a2
BLAKE2b-256 264173e5440508d219c645924dd2ca5b9d004a8dc70e21adf8d6f1f2e8325c37

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 321.3 kB
  • Tags: CPython 3.14t, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 68ca2efdce50605c453747c90653e76b7dc77bd6dba24328bdc95fc985debede
MD5 fcb6b772ce952a8f8162e45b89340116
BLAKE2b-256 89158b9a6e91873b58aee0c3816b7aee2c41927347ab96f23b22212d492105f5

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-win_arm64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-win_arm64.whl
  • Upload date:
  • Size: 256.1 kB
  • Tags: CPython 3.11+, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-win_arm64.whl
Algorithm Hash digest
SHA256 deb906ec960bdfbfa4148a50be42f722be58501a2cc4e0a8abf73a167438bbee
MD5 c99baa61f52d95140c17cbf4a11c1ac8
BLAKE2b-256 6ae47b1362c00251cfe3c078a76b895560304a6299dd3533302a47698a47dc85

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-win_amd64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-win_amd64.whl
  • Upload date:
  • Size: 271.8 kB
  • Tags: CPython 3.11+, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 cfbbc881526ae03167abab172dece671970ea7d6cbf5749e149b83533873f014
MD5 68104c02dbf0f94309c41ad6a5900c9d
BLAKE2b-256 09b297516b8fa052160390399d05de810f341bccc8f85521988cfbd0ba0ea6b2

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
  • Upload date:
  • Size: 565.7 kB
  • Tags: CPython 3.11+, musllinux: musl 1.2+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 76fc897d49c9be0810ac0cd2751559297837c4d34b73efa723bb918948d751d0
MD5 e0ea749f788a0154e5f85e003cd092bb
BLAKE2b-256 ea1e525a2076e89298c38b1793fc44222733fa33019aef13e5035006bd567f1f

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-musllinux_1_2_riscv64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-musllinux_1_2_riscv64.whl
  • Upload date:
  • Size: 413.7 kB
  • Tags: CPython 3.11+, musllinux: musl 1.2+ riscv64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 43b4c4b1bb29332de48e8b2319432f4adf904d77af5b3ac9a7de1815ad9fdcce
MD5 8a8d40a98e2a62018fc9449866679f0e
BLAKE2b-256 6b1b6384b032229d8611e5cef469ea6e784e3ace29e8af1eab525e05482e7b29

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl
  • Upload date:
  • Size: 512.7 kB
  • Tags: CPython 3.11+, musllinux: musl 1.2+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4f40928df96959e597f6159f12c1bce835a568fa61fa0bce3e0e077d4aa58b10
MD5 6e0841aa87682360672dcd09f650e49c
BLAKE2b-256 e7144c6d5055a0e34c1f2b503eabf3e119e110159f1a75097b589d264db60ec6

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-manylinux_2_34_riscv64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-manylinux_2_34_riscv64.whl
  • Upload date:
  • Size: 345.4 kB
  • Tags: CPython 3.11+, manylinux: glibc 2.34+ riscv64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-manylinux_2_34_riscv64.whl
Algorithm Hash digest
SHA256 9808e57812f058675967b2f3fe37d2f6695c87a9f9101620c03dec665254917a
MD5 382672a34c5f6cdd71970eeb57311aa7
BLAKE2b-256 f40dab12d03d402abfc146caf366f60bd86427420cb342d037d29afe9e48059f

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl
  • Upload date:
  • Size: 353.7 kB
  • Tags: CPython 3.11+, manylinux: glibc 2.28+ x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4fbca9654ffe3a4d0cc50c8a8ac85227c87cd1f875cf69d52aac18e86957e9ae
MD5 fe097c9de44559fee3555fd611ebbeaa
BLAKE2b-256 df68f387d57c41eb79b72328b543f23113155e1f3af8a7e55624947c4650d613

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl
  • Upload date:
  • Size: 336.3 kB
  • Tags: CPython 3.11+, manylinux: glibc 2.28+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2b2e5d6dfcfd9cc13eb7014b3bc0ec0ad6953848f0ac73d34dd5689b95b18408
MD5 f9a367d1787c7348f8d965839ea4fcb6
BLAKE2b-256 728482c5ef3630e27b805641bfb25fc8a7daba70b15d306cabba5cd5f511bb36

See more details on using hashes here.

File details

Details for the file rcf3-0.1.0-cp311-abi3-macosx_11_0_arm64.whl.

File metadata

  • Download URL: rcf3-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 323.1 kB
  • Tags: CPython 3.11+, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","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}

File hashes

Hashes for rcf3-0.1.0-cp311-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 51ac8b37c1b1de992dfbe2a5e8ffb44cdd22a23af585d8b7d52781140041affa
MD5 b99c98a526e250f4db621214d9e11545
BLAKE2b-256 21e8ab89c2f5a8851659b0d45353ed56e84f0ff33627d8efaecfe2d5ee118764

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