Skip to main content

Fast star plate solver written in Rust

Project description

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.

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

tetra3rs-0.9.0.tar.gz (196.1 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.9.0-cp314-cp314-win_amd64.whl (503.0 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.9.0-cp314-cp314-manylinux_2_28_x86_64.whl (624.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.9.0-cp314-cp314-manylinux_2_28_aarch64.whl (604.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.9.0-cp314-cp314-macosx_11_0_arm64.whl (559.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.9.0-cp313-cp313-win_amd64.whl (488.0 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.9.0-cp313-cp313-manylinux_2_28_x86_64.whl (624.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.9.0-cp313-cp313-manylinux_2_28_aarch64.whl (603.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.9.0-cp313-cp313-macosx_11_0_arm64.whl (559.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.9.0-cp312-cp312-win_amd64.whl (488.1 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.9.0-cp312-cp312-manylinux_2_28_x86_64.whl (624.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.9.0-cp312-cp312-manylinux_2_28_aarch64.whl (604.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.9.0-cp312-cp312-macosx_11_0_arm64.whl (559.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.9.0-cp311-cp311-win_amd64.whl (489.7 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.9.0-cp311-cp311-manylinux_2_28_x86_64.whl (624.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.9.0-cp311-cp311-manylinux_2_28_aarch64.whl (604.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.9.0-cp311-cp311-macosx_11_0_arm64.whl (560.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.9.0-cp310-cp310-win_amd64.whl (489.6 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.9.0-cp310-cp310-manylinux_2_28_x86_64.whl (624.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.9.0-cp310-cp310-manylinux_2_28_aarch64.whl (604.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.9.0-cp310-cp310-macosx_11_0_arm64.whl (560.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for tetra3rs-0.9.0.tar.gz
Algorithm Hash digest
SHA256 019a3e7236f43c7dc27573621b9e1f4da07d63376e312a804b1aa366bddcc5c7
MD5 a888ae47361175359c006badd3db1623
BLAKE2b-256 961afaec4170bb54199f695f468e7c4d607b827b82abcbd67e224e7be14d6a95

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.9.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 503.0 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 tetra3rs-0.9.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 0bb05e14f60af758cb923c44c041942703a2a9ac3e313e8c4f458a0729aad901
MD5 5fa58968043e546da7a2b1cb802d240a
BLAKE2b-256 95d6d9426842f4164e2b2099af5e827e446c728a2cb2428c511734b05fdbf431

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 342530a7ce1f64dc23b106d2ec21519bf374f412c3bacc56bf58d35e0a2075b5
MD5 5ef6988fa8446a4736d6cab816c3f31a
BLAKE2b-256 bc94eef162c572161d20e500eb0a699684fc7b64c878ee2ff90807454a2621d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1b8c386b177330e802e66a82c47d221496da6d1a2dff1d7433f34795380e3300
MD5 ae27ba3004723779c3648603150a5c9b
BLAKE2b-256 3a76850f38ae16ad17353a06dc9eb0dd2791be6b4ba6b0f4bba51986b8c43e63

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c9521439d99fffed375635a4a235e34bf4e61929bf32d45661ff7a431774391b
MD5 7dbfd20b6938b68606d0eb6a9d2da126
BLAKE2b-256 58e1b153ee7a056ee3123608f12479bebe9d6dc326a7c33e3eddb5ff346c8e38

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.9.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 488.0 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 tetra3rs-0.9.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ea74ad059ea16ef19704c08a444ce54838ec383cbf6384e14ee842b17d1aa3b5
MD5 5725df33ec873910d6a8b24ec31d7836
BLAKE2b-256 97a6f2dbc854f5912b9dfa52a09bc4519faa312f3a241c3df34ca64be5a52b94

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 12e8ae61bfb4ca3323696836f82c2ce14507fb6231d2fae2b7b29f45a7ba7589
MD5 c36af320ff2b0df619e66d414a507567
BLAKE2b-256 daffabee9f99133e1eae36d5b2cc3e6841dfd2620925146e49fe37f6249ff796

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2e9d68d479fed91432a5bf1e8424c19e49a3e0f3e2ec18f8ce3a6f8361d7576d
MD5 5c70a3f69606b844400368a946122580
BLAKE2b-256 30e7fe27859142e5da6d23e17ec1f3a1b7a392c5577b2ae02f62c1ccff677f44

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6022d283bbe0244c53543466ca03251b2556184f43413c81bb7fd7b1515988a9
MD5 dc41887dd7270aab4d37bc1421997ee8
BLAKE2b-256 cd617f1d99ba4cd6dfa19ad3b473f1cf2552f1868c8d3650972e71784b4329ac

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.9.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 488.1 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 tetra3rs-0.9.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e71be058788682ce9d51bf6da1a72aa61f01944264280d702c59309e548b02b2
MD5 dc3912f6643543024e23bf30510e3231
BLAKE2b-256 7207704c3187e09d11d22385bf51607c3592d9ed68ab22b290fc0ffb3eef7eed

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b533090b516f87413ee0cc0b7de0bf8d77be7a19b5f30c284371641e6a5da562
MD5 2fdbe80023052c76c4e8d0630634832c
BLAKE2b-256 26a8af1270bf40865ea185ba4f9fa2bdf8a5288dace5771176f1cfcd7f552e59

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3713842c515ebbc24216f973589ce1e3b5427a3fec83e2a12267e74241d36b59
MD5 d79197e0479c174fdc3afcf51dae23d8
BLAKE2b-256 de9398b701609927ce0a79cb08380f7b799347b16caf612d9f90c807b48615c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7287d2450ea942bb00627b095de0ae9318478555213aed45bcaf6b33bbbf32a5
MD5 8091704ca54edddd156c1acfd5292b31
BLAKE2b-256 f3320709fbfe5a42c3e0652b999c30d76611e4cfee709645829c4e8982aa0845

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.9.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 489.7 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 tetra3rs-0.9.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1c61a153a71cf3f86dc57a7ececfe522391fc2e38d94301a5ee1cb3f1eb318f3
MD5 eaa98a3bb88328ef704e1d8244a3e046
BLAKE2b-256 66d7b81e7f4316e0fd0fe86c7dfc15fec1df6ff5b99edea522d2d7f251afe9ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d4613070b508ae792987a6dc807d3811f42299644f5d47435ad5a2ab06d1bc2e
MD5 065ff5e8e4de0bf759b7b22443893723
BLAKE2b-256 662c3706bc92d37dfc918d0fe260e9c79cc44749bbb99c31fb19fe1c86926d32

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b726c347a19268273e4888529f97acf342bddc7a989c4974f9033845a93bbd9e
MD5 b15004f58df9a321a72b9ee2a8a36894
BLAKE2b-256 e0ae311e685e125a8af8eccb0f685f5b8ec1b86909986217e7f035e268647c56

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0b275c4d29f27d3b92c211b79a79520344da8f84acc432de31f402fa5f7175dd
MD5 d24cda026333e1d4efc0502b5cace8f5
BLAKE2b-256 b05cbb073742171853d999dd63ff9d37be8b164d7317a015ea39f06189df4171

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.9.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 489.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 tetra3rs-0.9.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e5702c72cecf6ea6f94b91cdbb9308acc867fd6ccc84dda01054ce01873a0e85
MD5 f20a855feca3a5a398a6a62ed09643f1
BLAKE2b-256 cacab70a8e6fa4fd4efcb0ab31f654e054c80ef31372497002efc14fa6c57012

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ae984e24a18c4492206db5ea2e385b6595b40652ceecffee26427b72666911d6
MD5 c25e8b7c3ea8457440f3ae06627d8e75
BLAKE2b-256 98f92e89e1f21dd68e50a1e719588d30b884938255bc7f3a3b9c875b33f47f11

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4763a875683ce95ffec0cf50ee9ab3f438f9cba7d3f5ba9708dab48eb407ce3b
MD5 c5d55b7d32211ef0650c09ed2c033c90
BLAKE2b-256 7ff1305f42aea2295630774bf9395ebf7dcafaaacaf8c2c956c721642b9b65fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.9.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.9.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e740a7f98d2efe906dc393da4f4255314f7b2ee8a4770ac8063b1e5f8ca1f814
MD5 803371c659217a080af4cf7dd99f1e13
BLAKE2b-256 5ee742738d92c84c534f85f403f3eaf917b717b7a9d7ad91f5f256e38e6790de

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.9.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.

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