Skip to main content

tetra3rs

Crates.io PyPI docs.rs Docs License Status

A fast, robust lost-in-space star plate solver written in Rust.

Given a set of star centroids extracted from a camera image, tetra3rs identifies the stars against a catalog and returns the camera's pointing direction as a quaternion — no prior attitude estimate required. The goal is to make this fast and robust enough for use in embedded systems such as star trackers on satellites.

Documentation: For tutorials, concept guides, and Python API reference, see the tetra3rs documentation. For Rust API docs, see docs.rs.

[!IMPORTANT] Status: Alpha — The core solver is based on well-vetted algorithms and has been validated against both real low-SNR images taken with a camera in my backyard and high-star-density images from more-complex telescopes (plus synthetic SkyView and NASA TESS multi-sector data). The API is not yet stable and may change between releases. See CHANGELOG.md for breaking changes per release.

Features

  • Lost-in-space solving — determines attitude from star patterns with no initial guess
  • Tracking mode — when an attitude hint is available (e.g. the previous frame's solution), skip the 4-star pattern-hash phase and match centroids directly against catalog stars near the hinted boresight. Succeeds with as few as 3 stars, robust to sparse/low-SNR fields, with automatic fallback to lost-in-space if the hint is stale
  • Fast — geometric hashing of 4-star patterns with breadth-first (brightest-first) search
  • Robust — statistical verification via binomial false-positive probability
  • Multiscale — supports a range of field-of-view scales in a single database
  • Proper motion — propagates catalog star positions to any observation epoch
  • Compact binary databases — databases serialize with postcard in a portable, lightweight format with no offset-size limit, so wide-FOV-range multiscale databases of any size load cleanly
  • Centroid extraction — detect stars from in-memory pixel data with local background subtraction, connected-component labeling, and quadratic sub-pixel peak refinement. Accepts an already-decoded image::DynamicImage or a raw &[f32] pixel buffer (requires the image feature)
  • Camera model — unified intrinsics struct (focal length, optical center, parity, distortion) used throughout the pipeline
  • Distortion calibration — fit either a SIP polynomial or a standard camera-intrinsics model (free optical center, focal scale, and full Brown-Conrady k1, k2, k3, p1, p2 — the same parameter set as OpenCV's calibrateCamera) from one or more solved images via calibrate_camera, with alternating per-image WCS refinement and global sigma-clipped LS fit. Handles mosaic cameras (e.g. TESS) where the optical axis sits far off the detector
  • WCS output — solve results include FITS-standard WCS fields (CD matrix, CRVAL) and pixel↔sky coordinate conversion methods
  • Stellar aberration — optional correction for the ~20" apparent shift in star positions caused by the observer's barycentric velocity, with a built-in convenience function for Earth's barycentric velocity

Installation

Rust

The crate is published on crates.io as tetra3:

cargo add tetra3

Python

Binary wheels are available on PyPI for Linux (x86_64, ARM64), macOS (ARM64), and Windows (x86_64):

pip install tetra3rs

To build from source (requires a Rust toolchain):

pip install .

[!NOTE] All Python objects (SolverDatabase, CameraModel, SolveResult, SolveFailure, CalibrateResult, ExtractionResult, Centroid, RadialDistortion, PolynomialDistortion) support pickle serialization via postcard.

Quick start

Star catalog

tetra3rs uses a merged Gaia DR3 + Hipparcos catalog. The merged catalog uses Gaia for most stars and fills in the brightest stars (G < 4) from Hipparcos where Gaia saturates.

Python: The catalog is bundled in the gaia-catalog package (installed automatically with tetra3rs). No manual download needed — just call generate_from_gaia() with no arguments.

Rust: Download the pre-built binary catalog (G < 10, ~17 MB):

mkdir -p data
curl -o data/gaia_merged.bin "https://storage.googleapis.com/tetra3rs-testvecs/gaia_merged.bin"

Or generate your own with a custom magnitude limit. Two scripts live in scripts/:

  • download_gaia_catalog.py — ESA Gaia Archive TAP server. Canonical Gaia source, but the server enforces a hard 3,000,000-row output limit per async job for anonymous users, so bulk queries top out at G ≈ 11.5.
  • download_gaia_flatiron.py — Flatiron Institute's flathub service. Serves the full Gaia DR3 catalog without the faint-end cap; use this if you need G > 11.5. flathub is not on PyPI — install it from the upstream repo.

Both produce byte-compatible output and share the Hipparcos bright-star merge. See the Star Catalog docs page for setup, CLI flags, and the on-disk format.

Example

use tetra3::{GenerateDatabaseConfig, SolverDatabase, SolveConfig, Centroid};

// Generate a database from the Gaia catalog
let config = GenerateDatabaseConfig {
    max_fov_deg: 20.0,
    epoch_proper_motion_year: Some(2025.0),
    ..Default::default()
};
let db = SolverDatabase::generate_from_gaia("data/gaia_merged.bin", &config)?;

// Save the database to disk for fast loading later
db.save_to_file("data/my_database.bin")?;

// ... or load a previously saved database
let db = SolverDatabase::load_from_file("data/my_database.bin")?;

// Solve from image centroids (pixel coordinates, origin at image center)
let centroids = vec![
    Centroid { x: 100.0, y: 200.0, mass: Some(50.0), cov: None },
    Centroid { x: -50.0, y: -10.0, mass: Some(45.0), cov: None },
    // ...
];

let solve_config = SolveConfig {
    fov_max_error_rad: Some((2.0_f32).to_radians()),
    // 15° horizontal FOV estimate, 1024×1024 image
    ..SolveConfig::new((15.0_f32).to_radians(), 1024, 1024)
};

// The solve returns Result<Solution, SolveFailure>; a Solution's
// fields are all guaranteed present.
if let Ok(solution) = db.solve_from_centroids(&centroids, &solve_config) {
    println!("Attitude: {}", solution.qicrs2cam);
    println!("Matched {} stars in {:.1} ms",
        solution.num_matches, solution.solve_time_ms);
}

Algorithm overview

  1. Pattern generation — select combinations of 4 bright centroids; compute 6 pairwise angular separations and normalize into 5 edge ratios (a geometric invariant)
  2. Hash lookup — quantize the edge ratios into a key and probe a precomputed hash table for matching catalog patterns
  3. Attitude estimation — solve Wahba's problem via SVD to find the rotation from catalog (ICRS) to camera frame
  4. Verification — project nearby catalog stars into the camera frame, count matches, and accept only if the false-positive probability (binomial CDF) is below threshold
  5. Refinement — re-estimate the rotation using all matched star pairs via iterative SVD passes
  6. WCS fit — constrained 3-DOF tangent-plane refinement (rotation angle θ + CRVAL offset) with sigma-clipping, producing FITS-standard WCS output (CD matrix, CRVAL)

Parity flip detection

Some imaging systems produce mirror-reflected images (e.g. FITS files with CDELT1 < 0, or optics with an odd number of reflections). In these cases the initial rotation estimate yields a reflection (determinant < 0) rather than a proper rotation. The solver detects this by checking the determinant of the rotation matrix; when negative, it negates the x-coordinates of all centroid vectors and recomputes the rotation.

The SolveResult includes a parity_flip flag (bool / True/False in Python) indicating whether this correction was applied. This is critical for pixel↔sky coordinate conversions: when parity_flip is True, the mapping between pixel x-coordinates and camera-frame x must include a sign flip.

Tracking mode

When you already have a rough attitude estimate — typically the previous frame's solution in a video-rate star tracker, a propagated gyro estimate, or a coarse attitude sensor — you can skip the lost-in-space pattern-hash phase entirely by passing an attitude_hint:

Rust:

use tetra3::SolveConfig;

// Reuse the camera model from the previous solve so the refined focal length carries over.
let config = SolveConfig {
    attitude_hint: Some(prev_solution.qicrs2cam),
    hint_uncertainty_rad: 1.0_f32.to_radians(),
    ..SolveConfig::with_camera_model(prev_solution.camera_model.clone())
};
let result = db.solve_from_centroids(&centroids, &config);

Python:

# `attitude_hint` accepts either a 4-element [w, x, y, z] quaternion
# (Hamilton, scalar-first) or a 3×3 rotation matrix.
result = db.solve_from_centroids(
    centroids,
    fov_estimate_deg=15.0,
    image_shape=(1024, 1024),
    camera_model=prev_result.camera_model,
    attitude_hint=prev_result.quaternion,  # or .rotation_matrix_icrs_to_camera
    hint_uncertainty_deg=1.0,
)

The solver projects catalog stars near the hinted boresight, nearest-neighbor matches them to centroids, and runs the same Wahba SVD + verification + WCS refine path as lost-in-space. Tracking succeeds with as few as 3 matched stars (lost-in-space needs 4) and is robust to pattern-hash failures from sparse / low-SNR fields. On failure it falls back to lost-in-space automatically — set strict_hint=True (strict_hint: true in Rust) to opt out of the fallback.

See docs/concepts/tracking.md for details on hint uncertainty, quaternion convention, and limitations.

Stellar aberration correction

Stellar aberration is the apparent displacement of star positions caused by the finite speed of light combined with the observer's velocity — analogous to how rain appears to fall at an angle when you're moving. For Earth-based observers, this shifts apparent star positions by up to ~20" (v/c ≈ 10⁻⁴ rad). Without correction, the solved attitude is biased by up to ~20".

To correct for aberration, pass the observer's barycentric velocity (ICRS, km/s) via SolveConfig::observer_velocity_km_s. The solver applies a first-order correction (s' = s + β − s(s·β)) to all catalog star vectors before matching and refinement, producing an unbiased attitude.

The convenience function earth_barycentric_velocity() provides an approximate Earth velocity using a circular-orbit model (~0.5 km/s accuracy, sufficient for the ~20" effect):

[!NOTE] Enabling aberration correction shifts the entire solved pointing by up to ~20", not just the within-field residuals. This is the physically correct result — without it, the reported attitude is biased by the observer's velocity. Most plate solvers (e.g. astrometry.net) do not account for aberration, so comparing results may show a systematic offset of up to ~20" when this correction is enabled.

[!NOTE] For a near-Earth observer, Earth's orbital motion around the Sun (~30 km/s) dominates stellar aberration, producing ~20″ shifts. Earth's surface-rotation contribution (~0.46 km/s at the equator) is only ~0.3″ and can usually be neglected. LEO orbital velocity (~7.5 km/s) is ~25% of Earth's orbital velocity and produces ~5″ additional direction error — not negligible for star trackers on LEO spacecraft. Pass the observer's full barycentric velocity (Earth-around-Sun + spacecraft-around-Earth + ground-based surface rotation, as appropriate) to get an unbiased attitude.

Rust:

use tetra3::{earth_barycentric_velocity, SolveConfig};

// days since J2000.0 (2000 Jan 1 12:00 TT)
let v = earth_barycentric_velocity(9321.0);

let config = SolveConfig {
    observer_velocity_km_s: Some(v),
    ..SolveConfig::new((10.0_f32).to_radians(), 1024, 1024)
};

Python:

from datetime import datetime
import tetra3rs

v = tetra3rs.earth_barycentric_velocity(datetime(2025, 7, 10))
result = db.solve_from_centroids(
    centroids,
    fov_estimate_deg=10.0,
    image_shape=img.shape,
    observer_velocity_km_s=v,
)

Catalog support

Catalog Format Notes
Gaia DR3 + Hipparcos .bin (binary, magic GDR3) Default; merged catalog with proper motion. Bundled in gaia-catalog PyPI package
Hipparcos only hip2.dat Legacy; requires hipparcos feature flag

Tests

Unit tests run with the default feature set:

cargo test

Integration tests require the image feature and test data files. Test data is automatically downloaded from Google Cloud Storage on first run and cached in data/:

cargo test --features image

SkyView integration test

Solves 10 synthetic star field images (10° FOV) generated from NASA's SkyView virtual observatory, which composites archival survey data into FITS images at any sky position. These use simple CDELT WCS (orthogonal, uniform pixel scale). Each image is solved and the resulting RA/Dec/Roll is compared against the FITS header WCS.

cargo test --test skyview_solve_test --features image -- --nocapture

TESS integration test

Solves Full Frame Images (~12° FOV) from NASA's TESS (Transiting Exoplanet Survey Satellite), a space telescope that images large swaths of sky to detect exoplanets via stellar transits. TESS images have significant optical distortion and use CD-matrix WCS with SIP polynomial corrections. The science region is trimmed from the raw 2136×2078 frame to 2048×2048 before centroid extraction.

The test suite includes:

  • 3-image basic solve — solves each image and verifies the boresight is within 30' of the FITS WCS solution.
  • 3-image distortion fit — fits a 4th-order polynomial distortion model from each solved image, re-solves, and verifies the center pixel RA/Dec is within 1' of the FITS WCS solution.
  • 10-image multi-image calibration — solves 10 images from the same CCD (Camera 1, CCD 1) across different sectors with 4 tiered solve+calibrate passes (progressively tighter match radius and higher polynomial order). After calibration, all 10 images achieve RMSE < 9" and center pixel agreement with FITS WCS < 3".
cargo test --test tess_solve_test --features image -- --nocapture

Credits

This project is based upon the tetra3 / cedar-solve algorithms.

  • cedar-solve — Steven Rosenthal's Python plate solver, which this implementation closely follows for the star quad generation and matching. (excellent work!)
  • tetra3 — the original Python implementation by Gustav Pettersson at ESA
  • Paper: G. Pettersson, "Tetra3: a fast and robust star identification algorithm," ESA GNC Conference, 2023

License

MIT License. See LICENSE for details.

This project is a derivative of tetra3 and cedar-solve, both licensed under Apache 2.0 (which in turn derive from Tetra by brownj4, MIT licensed). The upstream license notices are included in the LICENSE file.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tetra3rs-0.10.0.tar.gz (206.6 kB view details)

Uploaded Source

Built Distributions

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

tetra3rs-0.10.0-cp314-cp314-win_amd64.whl (505.4 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_x86_64.whl (619.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_aarch64.whl (597.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.10.0-cp314-cp314-macosx_11_0_arm64.whl (554.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.10.0-cp313-cp313-win_amd64.whl (491.1 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_x86_64.whl (619.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_aarch64.whl (597.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.10.0-cp313-cp313-macosx_11_0_arm64.whl (554.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.10.0-cp312-cp312-win_amd64.whl (491.1 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl (620.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl (597.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.10.0-cp312-cp312-macosx_11_0_arm64.whl (554.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.10.0-cp311-cp311-win_amd64.whl (494.8 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl (621.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl (600.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.10.0-cp311-cp311-macosx_11_0_arm64.whl (558.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.10.0-cp310-cp310-win_amd64.whl (495.0 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl (621.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl (600.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.10.0-cp310-cp310-macosx_11_0_arm64.whl (558.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file tetra3rs-0.10.0.tar.gz.

File metadata

  • Download URL: tetra3rs-0.10.0.tar.gz
  • Upload date:
  • Size: 206.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.10.0.tar.gz
Algorithm Hash digest
SHA256 c21f52b0349fd967ad00bc11bffc5aa229b83bd908fde173be3ca1be27761ab4
MD5 6748221bd8fbe605490e5469da80aad7
BLAKE2b-256 6d5a9b0072129b67e39fd8935963cc84a9fbdbc0f7f1577a622461b105003f91

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0.tar.gz:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.10.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 505.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.10.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 fe6357bb00992b1b4268fa68d6c9e9ab0be787b63f84024edf81b1db544aa098
MD5 47e263a363919073f48fb519bbe52863
BLAKE2b-256 39d5f0136e06356818ee8b3370a2fe9b2abd9985c5f23f88383946d9ff828f6b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 73ae847f9328b2b60b0a266a18b5420ff08e1375d8a9fe45da5d080135ebdd01
MD5 a3e09d4f93f9f69dcde1c9e11afca569
BLAKE2b-256 319350d816f06acec1a99a3cfa2446c352cb5878feb1cc44284b93939305871c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 12c5ba34eac533ab2b58c0be64f04f621ab95834ca800426f371bfae7c32f175
MD5 6d85eb9d485308310de04b74227ef628
BLAKE2b-256 60155d59199132e9208221674946c6460f73a2b9e79e6ab49aa9cf8ac3d9d5ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b9f4e09500e2c216885d3458b12b48f94cbca6ae7307529dc5e5f18c77c36935
MD5 22e83f970cf16b3464289ad84078209b
BLAKE2b-256 0bb4874ef2fd92140b157f720a81d216b7074b66e816c91c9a150ab0c40f5079

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.10.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 491.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.10.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 dc81f6faacb8449ba89e0790aa61c1d1436f472ee30a41145f3c533131ca4a43
MD5 30116f8656e2310d8984f44f7a3c1139
BLAKE2b-256 37caee7fe42c59a6e7c947371031271bb0fbb82ca773ce7df8e2acdaf4eb5fb2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4290481e729e9e9eab9cee68cc2b00acd1772d85f352ac33339f009b42939a34
MD5 34fd77636895c074e9348d52d753fcbc
BLAKE2b-256 609d32ac7dd221f7969d72972b99329509774def28fa8ec0afffda867cac273e

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e68f2af9139a75f1af947c897beef7cda6f90aa6c7806169bf1c60eaab8ae02c
MD5 eb199b5801453ef74eafca19986ce0c6
BLAKE2b-256 c12080466b41c318dfeac60fa54710edcd8d1b7029d0b5f0f9d67643ca6e6e93

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 61787a4bfb85edcb703167faf6211d4a789bb1befa36065e3cb59a4f6605509b
MD5 2c2e58cf723bb147c614daa59fe612fe
BLAKE2b-256 d34ed6474f3d5bb4b8fc0f040f971fbd4088c734d7629840f28545a3171000e6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.10.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 491.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.10.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 05fb0e258d9e257e1a35d47d4b6abc453867614cd609d3f1bab0dc3530343af3
MD5 510ff24374cf7d278c5abf6edcdf3970
BLAKE2b-256 7e924d523d6e26347bd1a57e744facf224daedf184fe968be70dd75e7f97bf05

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7a73fd5a5d70922b2317ad5a58d6b8ffdc731e0038c5b58f2ecf174efbb972a0
MD5 4a59bf78e318c7a65c8e6370c60159ca
BLAKE2b-256 d957634828c26339c0fd758df36706dbf5a551b879313159606320feab3e6837

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 abb3d050ac6bc30dabbbc8cf18674161abc99679878d4fcd057354dfb6b4495f
MD5 c5e42beadc37b640420a030fc73e84a5
BLAKE2b-256 c5b83e90be72b502317ef12b0c11bf4243cd4a30fa2535d2762cb735254b2cbd

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4b3281b6361fc9207721c3130389a6151f9e62ba966f42c7931cdcd4ab3d4f5
MD5 937c4554adbff60c7cddb19b8e665c8a
BLAKE2b-256 61a8979045a00ff28b80bf02a15ffd47032581cfade28ad8694fce5735dd2b24

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.10.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 494.8 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.10.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d0ae9fc0d1c0f4f830f6dcde888ed114b32ce381bc3347d2d3a2f7dc17b868fb
MD5 03941265f0efb5de8010a86b2f4212a6
BLAKE2b-256 879f9441de96020760844f4b46873385528cc5dd988838e4ed8ba0d736ec9234

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98ceb383faaa9db654b41e54c2b446fdf24ec9846c9b0c5c856b91fd56c709a7
MD5 790aec3ceb29cf903f60296a01d0a03e
BLAKE2b-256 aaa390021e35eafd88b374c750c2577d73227e26b4eabb2d3b6410fcc2d614c1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 73b256b813da31bfb1cb59779b80c90029eea708a57f08dc2ab3de12ccd57a0c
MD5 474a3f4c17737ffc2e757ecb2a43734e
BLAKE2b-256 542cd7795d9def2812e3aa8d77fbd620fdd948cf6d41e07839bdfc40110485b9

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 732e329b1e75186dd17c8cb42e3a1438cc3a1afad1a965ebf40dd049026652a1
MD5 93694d95b7f4b1fe520fc8b972e348e5
BLAKE2b-256 8dcb7fbff18d2ea1b670a7f51ed965358be74c89d80dbcae7649d173b7dd2ccc

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.10.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 495.0 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.10.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c5576f607c993a05bf8996aaf883cb52e35726a0d94367685b44c2bf45e5954c
MD5 d5b5acfbea859b9a1e26ee0dd8f3a603
BLAKE2b-256 22528b685d8e85e7b1d4bbf66c6c278f20c9206cb12300aed79269f4394182d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 090a7541658ba3f440934b7cd764ced267f65ef591492e40469c20235c2deb1a
MD5 1cae9a7c688ba8a3ecdd4ef35fd0b9ad
BLAKE2b-256 ff69087a53ec3791e91d5c0bc5d12bacdb5127aaba49cc7dc1eda63023da7be2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 adcc9ecca00fbe3d04a72f6d9dd420a59f7588c1fa9ebacb4c3e37fbe7c562c5
MD5 454bfbf5d06081b35115f1ad78e58c25
BLAKE2b-256 f322108f5efe3470b7c632f7fd4247346182029c62fa93beda46a0be85895b19

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

File details

Details for the file tetra3rs-0.10.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.10.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d8125b6804cab9223aa8f5dd04bd0e3b2ee7fd63e230cbfb5405e01fd665752a
MD5 27530fb3c409cef578aba2e952d84465
BLAKE2b-256 f066bded964c65a4554243f4c826c058d3269d35060e2ec93ebdd308f2e3f3b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.10.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

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

Release history Release notifications | RSS feed

0.13.0

21 files

0.12.0

21 files

0.11.0

21 files

This release

0.10.0 This release

21 files

0.9.0

21 files

0.8.0

21 files

0.7.4

21 files

0.7.3

9 files

0.7.2

21 files

0.7.1

21 files

0.7.0

21 files

0.6.1

21 files

0.6.0

21 files

0.5.1

21 files

0.4.1

21 files

0.4.0

21 files

0.3.2

21 files

0.3.1

21 files

0.3.0

17 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