Skip to main content

Fast tree distance calculations (Robinson-Foulds, Weighted RF, Kuhner-Felsenstein) for phylogenetic trees

Project description

๐ŸŒฒโšก rapidtrees

Blazingly fast pairwise phylogenetic tree distance calculations โ€” Robinsonโ€“Foulds, Weighted RF, and Kuhnerโ€“Felsenstein โ€” powered by Rust

Crates.io PyPI CI Coverage License: MIT

Overview โ€ข Installing โ€ข Usage โ€ข Python API โ€ข Snap Format โ€ข Benchmarks


๐Ÿ—บ๏ธ Overview

rapidtrees computes pairwise tree distances from BEAST/NEXUS .trees files or from precomputed .snap files and writes a labeled distance matrix. Three metrics are supported:

Metric Flag Output Description
Robinsonโ€“Foulds --metric rf integer Symmetric difference of bipartitions
Weighted RF --metric weighted float Branch-length-weighted bipartition difference
Kuhnerโ€“Felsenstein --metric kf float Euclidean distance on branch lengths

โœจ Why rapidtrees?

  • ๐Ÿฆ€ Rust core โ€” zero-overhead bitset operations with a cache-friendly memory layout
  • ๐Ÿ”€ Parallel by default โ€” powered by rayon, automatically scales across all cores
  • ๐Ÿ Python bindings โ€” drop into any Python/NumPy workflow via PyO3
  • ๐Ÿ“ฆ No Rust toolchain required โ€” pre-built wheels on PyPI for Linux, macOS, and Windows
  • ๐Ÿ—œ๏ธ Gzip output โ€” stream directly to .tsv.gz without a separate compression step

๐Ÿš€ Performance

Benchmarked on a ZIKA dataset (283 taxa ยท 4 000 trees ยท ~8 M comparisons) (non-gzipped output):

Metric Total time Throughput
Robinson-Foulds ~2.7 s ~3.0 M comparisons/sec
Weighted RF ~3.4 s ~2.3 M comparisons/sec
Kuhner-Felsenstein ~3.3 s ~2.3 M comparisons/sec

๐Ÿ”ง Installing

๐Ÿ Python (PyPI) โ€” recommended

Pre-built wheels for Linux, macOS, and Windows. No Rust toolchain needed.

pip install rapidtrees

๐Ÿฆ€ CLI (crates.io)

Install the standalone command-line binary. Requires the Rust toolchain.

cargo install rapidtrees

๐Ÿ› ๏ธ From source

Prerequisites

  • Rust toolchain โ€” for building the Rust core
  • pixi โ€” for managing Python and R dependencies

Setup

git clone https://github.com/Joon-Klaps/rapidtrees.git
cd rapidtrees
# Set up environment โ€” installs Python, R (with phangorn), and builds the package
pixi install

Development tasks

# Run Python API tests (includes R/phangorn cross-validation)
pixi run test-python

# Run Rust unit tests
pixi run test-rust

๐Ÿ’ป Usage

rapidtrees \
  (--input <path/to/file.trees> | --snap-input <path/to/file.snap>) \
  --output <path/to/output.tsv[.gz]> \
  [--burnin-trees <N>] \
  [--burnin-states <STATE>] \
  [--use-real-taxa] \
  [--metric rf|weighted|kf] \
  [-q|--quiet]
Flag Description
-i, --input <INPUT> Path to BEAST .trees (NEXUS) file
--snap-input <SNAP_INPUT> Path to .snap file (currently supports only --metric rf)
-o, --output <OUTPUT> Output path. Use .gz suffix for gzip compression; - for stdout
-t, --burnin-trees <N> Drop the first N trees (default: 0)
-s, --burnin-states <STATE> Keep only trees with STATE > STATE (default: 0)
--use-real-taxa Map numeric taxon IDs via the TRANSLATE block
--metric <rf|weighted|kf> Distance metric (default: rf)
-q, --quiet Suppress progress messages (errors still go to stderr)

The output is a square TSV matrix where both the header row and first column contain tree names formatted as <file_basename>_tree_STATE<state>. Use -o - to write to stdout for easy piping.

๐Ÿ’ก Examples

Compute RF matrix โ†’ gzipped file
rapidtrees \
  -i tests/data/hiv1.trees \
  -o out/hiv1_rf.tsv.gz \
  --metric rf

# Reading in beast 0.003s
# Read in 162 taxons for 21 trees
# Creating tree bit snapshots 0.002s
# Determining distances using RF for 210 combinations
# Determining distances using RF 0.000s
# Writing to output 0.000s
Apply burn-in by tree count
rapidtrees \
  -i tests/data/hiv1.trees \
  -o out/hiv1_rf.tsv \
  -t 2

# Reading in beast 0.003s
# Read in 162 taxons for 19 trees
# Creating tree bit snapshots 0.001s
# Determining distances using RF for 171 combinations
# Determining distances using RF 0.000s
# Writing to output 0.000s
Compute RF matrix directly from a snapshot file
rapidtrees \
  --snap-input out/hiv1.snap \
  -o out/hiv1_rf_from_snap.tsv.gz \
  --metric rf

# Read snap with 21 trees and 2193 bipartitions in 0.001s
# Determined distances using RF in 0.000s
# Writing to out/hiv1_rf_from_snap.tsv.gz in 0.000s

๐Ÿ Python API

rapidtrees exposes four functions from its Rust core. All accept a Python iterator of newick strings, keeping memory constant regardless of tree count.

Function Returns
pairwise_rf_from_newick_iter (names, bytes) โ€” RF matrix as flat uint32 bytes, row-major
pairwise_rf_with_snapshots_from_newick_iter (names, bytes, leaf_names, n_bip, bytes, bytes) โ€” RF matrix + presence matrix + clade bitmasks
pairwise_wrf_from_newick_iter (names, list[float]) โ€” Weighted RF, flat row-major
pairwise_wrf_with_snapshots_from_newick_iter (names, bytes, leaf_names, n_bip, bytes, bytes) โ€” wRF matrix + branch-length matrix + clade bitmasks
pairwise_kf_from_newick_iter (names, list[float]) โ€” Kuhner-Felsenstein, flat row-major
pairwise_kf_with_snapshots_from_newick_iter (names, bytes, leaf_names, n_bip, bytes, bytes) โ€” KF matrix + branch-length matrix + clade bitmasks
import rapidtrees as rtd
import numpy as np

trees = [
    "(A:0.1,(B:0.1,C:0.1):0.1);",
    "(A:0.1,(C:0.1,B:0.1):0.1);",
    "((A:0.1,B:0.1):0.1,C:0.1);",
]
names = ["t1", "t2", "t3"]

tree_names, rf_bytes = rtd.pairwise_rf_from_newick_iter(
    names, iter(trees), [{}], [0, 0, 0]
)
rf = np.frombuffer(rf_bytes, dtype=np.uint32).reshape(len(tree_names), -1)

For BEAST .trees files, translate maps, the snapshot API, and multi-file usage see docs/python-api.md.


๐Ÿ“ฆ Snap Format

rapidtrees can export tree snapshots to a compressed binary .snap file for downstream analyses (ESS computation, ASDSF, convergence diagnostics) on HPC clusters without re-parsing the original .trees files. The CLI can also compute RF distance matrices directly from .snap files via --snap-input.

What is a snapshot?

A tree snapshot is a compact bitset representation of a phylogenetic tree. Each bipartition (split) is encoded as a bitset over leaf indices. The full set of snapshots for a tree collection captures everything needed for RF-family distance computations and convergence diagnostics โ€” without storing the original Newick strings.

Note: Snapshots are not human-readable and are not intended for general interchange. They are an internal format optimized for fast distance calculations and cannot be convert to it's original newick-style format.

File layout

A .snap file is a gzip-compressed binary stream with the following sections in order:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  HEADER                                              โ”‚
โ”‚  4 bytes  magic        "SNAP" (0x534E4150)          โ”‚
โ”‚  1 byte   version      format version (currently 2) โ”‚
โ”‚  8 bytes  n_trees      u64 LE โ€” number of trees     โ”‚
โ”‚  8 bytes  n_taxa       u64 LE โ€” number of leaf taxa โ”‚
โ”‚  8 bytes  n_bip        u64 LE โ€” number of unique    โ”‚
โ”‚                         bipartitions across all treesโ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  TAXA NAMES                                          โ”‚
โ”‚  For each of n_taxa:                                 โ”‚
โ”‚    4 bytes  length     u32 LE โ€” byte length of name โ”‚
โ”‚    N bytes  name       UTF-8 string                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  TREE NAMES                                          โ”‚
โ”‚  For each of n_trees:                                โ”‚
โ”‚    4 bytes  length     u32 LE โ€” byte length of name โ”‚
โ”‚    N bytes  name       UTF-8 string                  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  PRESENCE MATRIX                                     โ”‚
โ”‚  n_trees ร— n_bip bytes, row-major uint8             โ”‚
โ”‚  presence[i][j] = 1 if bipartition j is in tree i  โ”‚
โ”‚                   0 otherwise                        โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Bipartition column order is deterministic: columns are sorted in ascending Bitset order (lexicographic over u64 words, i.e. by leaf-index bit pattern), so the same tree set always produces the same column indices regardless of parse order.

What the presence matrix gives you

The presence matrix is sufficient for all major convergence diagnostics:

Diagnostic What you need
Pseudo ESS presence.mean(axis=0) per chain
ASDSF Per-chain split frequencies
Frรฉchet ESS RF distances via XOR of rows
WRF / KF distances Branch lengths โ€” use pairwise_wrf_with_snapshots_from_newick_iter or pairwise_kf_with_snapshots_from_newick_iter

Note: sum(presence[i] XOR presence[j]) == RF(tree_i, tree_j) exactly.

Presence matrix from Python

Snap files are written and read by the CLI only. From Python, use pairwise_rf_with_snapshots_from_newick_iter to obtain the same presence matrix in memory without writing a file โ€” see the Python API section above.

import rapidtrees as rtd
import numpy as np

import math

tree_names, rf_bytes, leaf_names, n_bip, pres_bytes, bip_clade_bytes = (
    rtd.pairwise_rf_with_snapshots_from_newick_iter(
        names, iter(newicks), translate_maps, map_indices
    )
)
n = len(tree_names)
presence = np.frombuffer(pres_bytes, dtype=np.uint8).reshape(n, n_bip).copy()

# Global split frequencies (for Pseudo ESS / ASDSF)
global_freq = presence.mean(axis=0)

# RF distance between any two trees โ€” no recomputation needed
rf_01 = int((presence[0].astype(int) ^ presence[1].astype(int)).sum())

# Named presence matrix โ€” decode clade bitmasks for column labels
bytes_per_bip = math.ceil(len(leaf_names) / 8)
bip_arr  = np.frombuffer(bip_clade_bytes, dtype=np.uint8).reshape(n_bip, bytes_per_bip)
bip_bool = np.unpackbits(bip_arr, axis=1, bitorder="little")[:, :len(leaf_names)]
col_labels = ["|".join(leaf_names[i] for i in np.where(bip_bool[j])[0]) for j in range(n_bip)]
import pandas as pd
df = pd.DataFrame(presence, index=tree_names, columns=col_labels)

โฑ๏ธ Benchmarks

Benchmarks were run on a MacBook Pro M1. Trees are parsed once and bitset snapshots are reused across all pairwise comparisons. Parallelism is provided by rayon โ€” no manual thread management needed.

Show full benchmark table

Output of cargo bench --bench memory_time_benchmark

Taxa (N) Trees (T) Combinations Est. Memory Actual Memory Wall Time CPU Time
10 100 5.0K 13.96 KB 17.87 KB 172.29 ยตs 733.00 ยตs
10 1000 500.0K 139.65 KB 168.95 KB 5.94 ms 12.99 ms
10 10000 50.0M 1.36 MB 1.64 MB 717.43 ms 1.36 s
10 100000 5.0B 13.64 MB 16.40 MB 3.53 min 4.04 min
100 100 5.0K 133.59 KB 136.09 KB 244.42 ยตs 1.75 ms
100 1000 500.0K 1.30 MB 1.21 MB 17.49 ms 50.99 ms
100 10000 50.0M 13.05 MB 11.95 MB 1.08 s 4.81 s
100 100000 5.0B 130.46 MB 119.41 MB 4.29 min 9.86 min
500 100 5.0K 706.84 KB 713.93 KB 2.02 ms 3.08 ms
500 1000 500.0K 6.90 MB 5.89 MB 27.77 ms 216.87 ms
500 10000 50.0M 69.03 MB 57.84 MB 2.82 s 21.30 s
500 100000 5.0B 690.27 MB 577.28 MB 7.44 min 37.13 min
1000 100 5.0K 1.50 MB 1.51 MB 873.75 ยตs 5.63 ms
1000 1000 500.0K 15.03 MB 11.86 MB 51.22 ms 420.94 ms
1000 10000 50.0M 150.32 MB 115.30 MB 5.12 s 42.92 s
1000 100000 5.0B 1.47 GB 1.12 GB 11.26 min 74.74 min
2000 100 5.0K 3.50 MB 3.51 MB 1.14 ms 9.92 ms
2000 1000 500.0K 35.01 MB 24.15 MB 93.73 ms 838.01 ms
2000 10000 50.0M 350.06 MB 230.59 MB 9.42 s 1.38 min
2000 100000 5.0B 3.42 GB 2.24 GB 18.57 min 141.11 min
5000 100 5.0K 14.30 MB 12.43 MB 61.36 ms 83.85 ms
5000 1000 500.0K 143.02 MB 63.97 MB 224.40 ms 2.09 s
5000 10000 50.0M 1.40 GB 579.40 MB 22.45 s 3.44 min

Note: Weighted RF and KF produce floating-point matrices; RF produces integer matrices.


๐Ÿ” Troubleshooting

  • No trees parsed? Verify the input is a valid NEXUS .trees file and adjust --burnin-* settings.
  • Piping to other tools? Use -q to suppress timing messages on stdout.
  • Gzipped output not working? Ensure the output filename ends with .gz.

โš–๏ธ License

rapidtrees is provided under the MIT License.

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

rapidtrees-0.7.1.tar.gz (152.0 kB view details)

Uploaded Source

Built Distributions

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

rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (544.4 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (478.8 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (473.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp314-cp314-win_amd64.whl (306.5 kB view details)

Uploaded CPython 3.14Windows x86-64

rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (537.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (473.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp314-cp314-macosx_11_0_arm64.whl (427.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rapidtrees-0.7.1-cp314-cp314-macosx_10_12_x86_64.whl (434.5 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

rapidtrees-0.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (473.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp313-cp313-win_amd64.whl (307.4 kB view details)

Uploaded CPython 3.13Windows x86-64

rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (537.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (474.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp313-cp313-macosx_11_0_arm64.whl (426.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rapidtrees-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl (435.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

rapidtrees-0.7.1-cp312-cp312-win_amd64.whl (307.9 kB view details)

Uploaded CPython 3.12Windows x86-64

rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (537.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (474.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp312-cp312-macosx_11_0_arm64.whl (427.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rapidtrees-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl (435.8 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

rapidtrees-0.7.1-cp311-cp311-win_amd64.whl (308.8 kB view details)

Uploaded CPython 3.11Windows x86-64

rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (543.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (481.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

rapidtrees-0.7.1-cp311-cp311-macosx_11_0_arm64.whl (429.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rapidtrees-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl (437.4 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

rapidtrees-0.7.1-cp310-cp310-win_amd64.whl (308.6 kB view details)

Uploaded CPython 3.10Windows x86-64

rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (542.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (480.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file rapidtrees-0.7.1.tar.gz.

File metadata

  • Download URL: rapidtrees-0.7.1.tar.gz
  • Upload date:
  • Size: 152.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtrees-0.7.1.tar.gz
Algorithm Hash digest
SHA256 91bb38d1bf826646bab809ebba9954aa49a42992b63182c5022972a9235b250a
MD5 05d83a49ba6e1474db5c2db42a8086e9
BLAKE2b-256 b9ba844378700e9b448cf087c0205f8fbb0456a5e780d110bbc7db7f53fd9de0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1.tar.gz:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 adcaf3d0cfa18a99dddc9d6b97520e26cdb7eed92a61886396dd0c52c30aefda
MD5 620e3177247ed9df21995a8c4ebdc269
BLAKE2b-256 4d2951d881a85f4fb12295fac732ef000276d179114e1dfd23e5b6eb61df9118

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9d56edcefc1dc72ea88240a9cccfbd2bf968d09f2f0e44a780c6e08c205b3753
MD5 b3a484fcc5c371c8479ba0a5df6542fe
BLAKE2b-256 ded8401dc7ce17ee5336a0e49abdc442b4af4e753d1e70ebc75ecf9d56415935

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 23e2cdaa4c00388f46a1991199ff4c9683812c0d99024f1753bb6b945fdb224a
MD5 f6d44805aff10c22c1739fe33f619f40
BLAKE2b-256 ec54aa9efe6ee99fe733f5826752ae7b3ba570d06d0a955386e94a9f95f4aa9d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: rapidtrees-0.7.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 306.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtrees-0.7.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 c03535f6f9fa1e0b7242c5bf8ed706a3197a9c5fd19a7136c68b16b2c3a6db7e
MD5 53544c4a28b237b99f0422fc948ba214
BLAKE2b-256 36c72ccde870240401fa9ea63ca0620b245b6e80e863c25e2b5fada4b2dd52d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp314-cp314-win_amd64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abfd8c1b9889293b6612088676064add31e1228731c95b4441890dc9a35dbab4
MD5 ee8de4b378b9b08aea322130456ec8a7
BLAKE2b-256 6db1bde63862aba20fc9c44ca469f434a848271d5df6001e38ddff0b0afa1099

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ea358eca5bae327ff1068a9005ddfbef8ddfd0f85b03e8d1ff04a992c3751751
MD5 f6cc8c6a76677018fcb6945bf84a358b
BLAKE2b-256 cb1deb7052ebb60010fdd09e9375115c8e4134c82ad9041b74acfe8d5b484128

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b8cd0fad894c0bc9ea91a43d8060a0706213603f470e5ee991fa398d4c682ec4
MD5 168818eaa34b792d6190e0c57e07ad64
BLAKE2b-256 5c5b78b5af0ac2107d652b6d0aeb538d47a4585e96fac8f71dd627cb5f57e040

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 64ae1b5c4df5447b55a3802c6edfc2057e4340ef8af1e62e70afd48dc2196d7d
MD5 e17f5909d8ec0d89ba73bb3a229e483e
BLAKE2b-256 406d3bf5dbb7f21f629e199674a4aaf94c954d686dd9d7c627c3de4e5e15ec81

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 2d337e5ec1cd87f97e5f84788f1ea13d03dc5aef60a5ee9acf76e78ff3ddb228
MD5 537d468bd580df1cb63d2fbb9806a853
BLAKE2b-256 774bbdfb105f9d74e22a9d4943fc495695eaedeebae8f865a497990cb435ce62

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: rapidtrees-0.7.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 307.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtrees-0.7.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 92149652b1ebca6d97ac7602d356fc8377266cd5ac28fa0fa711a02223ab9d65
MD5 b7ab4a476605e0ffbfbd68c86fc76fb2
BLAKE2b-256 6d4dbbf67cecb5d0701d3b42708725e69ee58a484242ef2bfe579d41b15c1993

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp313-cp313-win_amd64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b48f8c44c9c738ff70a658da6c2051402bbd7d1471f4353e3ad845a4bc7761c0
MD5 b39b4dde09211f2f8babaabacda7bd7c
BLAKE2b-256 d570d3a2389f96c5ba012e7cc9d1511bddfc845b1617de9a7a439f0953596233

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 af3df5cd34e3b6a15a130af8a2f8f6dba4af0d0de2080a15c8ed77db68cada80
MD5 2cc3403a360508377dbf1542b7cb54fd
BLAKE2b-256 e46a4d5cd5bbce552e9037143cf260d3ab125cabf17d24852d1599b1ddeb1256

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 020babf178047f9e730c15314177eabb474f28f1790e8ecc30b08bdf6f4f09c7
MD5 5776fc18ac4ad094c40ba3bfbce02e6d
BLAKE2b-256 979db547ccbca8b2bba3e11cf936cc60cc90b0598243a7a510bcd063ec994fcd

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 723b3f1439bc1b8edb0f4a27d8abd90bb8abd91345344045e54e5d1c57319ac1
MD5 e65c7f12eee67d962d827cffee16065a
BLAKE2b-256 52dea3ff88841d935c47049b93ff1b1b89ffa132bc32a4dc490c612107087083

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: rapidtrees-0.7.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 307.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtrees-0.7.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 83dc4fa956d7b1f556deb9ab5e2ecb1cefb4b007d4bb15a3ac5aa3d4b9c8bae8
MD5 2e326b30e98fa7730f3f6bf2f1987ea5
BLAKE2b-256 797477def8a9518219936720244ebca4f8ef115fa0c2f47b5ccea91b75f10981

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp312-cp312-win_amd64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 247f035f8be4b579118bc2c09fbb7d81e5c30f0c550274a71d6f2285a4b734c8
MD5 6b5ece2ba853872a9fc0637213101e54
BLAKE2b-256 bdde434450445885b1472ba66d4c0e163477be5c7cc6e1235fef09f728570bef

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 7070c836af88928e8f968a0ee34b5153f9079ebee2924169cf44efc868ab5173
MD5 7b0e4c0c69fb93ce69ba0d4fefe8fbfa
BLAKE2b-256 6863e40128b71f9b5510b359b62f1c0d0a1b739cbcc9996a6021f386ef75a24f

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0fe46b29c1e8caf9be04fadf320a6bd10822b5fb6800bc7fa4bfc655b60fe058
MD5 767705e29c4ce230b8acb89d3e0936f3
BLAKE2b-256 4e7d087460c6abdd96de6292d1c58573a0c6394642f0abb09bc8a39a996b2ce9

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c90641f7d65cc409904512e205de758e7baa158f30a57051ef8d390932d69607
MD5 398528bd78ce35f81ddfe3f2962af8e6
BLAKE2b-256 3642ae73153fd996c95b048c8a7a06f1877c9a7e2ffbe442d91ca8e96b946113

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: rapidtrees-0.7.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 308.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtrees-0.7.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d231f64231acaebebfb91c89b24c09e00639681b83289aa57e2cd368855cb944
MD5 7a61f93ed6229ffc0c555e6ba35608e4
BLAKE2b-256 39d4546c386d3f9540d70bc987b3cfa5d90dd70ccc42e25a4f388e2f58292035

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp311-cp311-win_amd64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 faf111cb77722cda873999cdcfedcd3f7d85dcc8f7944ecfeec45a5e3bf5c974
MD5 ebf47ac773902962b1481cfede17160d
BLAKE2b-256 f2dad1407e1397e84c4c417f4554cd4c134799bfb00caae2aee7515a0aca012b

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 271f485cfc4caa514f6b44f00988b0a52c7184abf667b9df80378ecbbd9597c0
MD5 1478765108e1b4ca98fa2d07fcff901e
BLAKE2b-256 94c3d37238e0b263fee8d83985529ce39133ab4fbf7bc18376a3c3815e63f738

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 14c2678e042aa1bb6fb7bc2bbd4b3c015e8d981ad749aad968c4d115a0f29fcd
MD5 ef774efd72819fe0aae7228f2996d31a
BLAKE2b-256 e3470b83bb7555ae426769802a80e420653324dbdbc69192fa9aebb596e82253

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3b6cc311fa265cc99056d38e3b212f8678c9e40d10a1c401a175f2df765990a6
MD5 7053bf6f98b293670e76a84b76ef1f6e
BLAKE2b-256 e52288323458de91a9b6c6fc31008b22e93b5493372341d71f5558501a2a03fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: rapidtrees-0.7.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 308.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for rapidtrees-0.7.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 07260040559911fb6da674ac036677453f6522d639abf986a2dc479bf07ffcd1
MD5 5e61df645b07b50bf8db233cef088edf
BLAKE2b-256 0e7341d9f01a572dda4fa45eee6cc7de37eec335d02794050dc05e67121f6eef

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp310-cp310-win_amd64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d468a8876bd8ddbb22bbc3ac5986c4b7700d6435fbd0de2e7ebb12335d45564d
MD5 af2eaf107699fefc5a2aefd0de52d9e8
BLAKE2b-256 b6b2965750b1266189bfacde85f9f08956320591da724f5ea42cffd7bc46c2b5

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5fe3d70b2d74e979e52fe2f0cf6d22e668d8be360ab505f125fa61d134a7b273
MD5 cb866d8217cb319ae28e0931abadf7be
BLAKE2b-256 c51a20c5921eeeba463e5f30f54a74d06badb9664451bcd2e3cc6044b4e845a0

See more details on using hashes here.

Provenance

The following attestation bundles were made for rapidtrees-0.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish-pypi.yml on Joon-Klaps/rapidtrees

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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