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.8.0.tar.gz (167.9 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.8.0-cp314-cp314-win_amd64.whl (492.9 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.8.0-cp314-cp314-manylinux_2_28_x86_64.whl (613.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.8.0-cp314-cp314-manylinux_2_28_aarch64.whl (591.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.8.0-cp314-cp314-macosx_11_0_arm64.whl (549.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.8.0-cp313-cp313-win_amd64.whl (478.0 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.8.0-cp313-cp313-manylinux_2_28_x86_64.whl (613.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.8.0-cp313-cp313-manylinux_2_28_aarch64.whl (591.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.8.0-cp313-cp313-macosx_11_0_arm64.whl (548.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.8.0-cp312-cp312-win_amd64.whl (478.0 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.8.0-cp312-cp312-manylinux_2_28_x86_64.whl (613.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.8.0-cp312-cp312-manylinux_2_28_aarch64.whl (591.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.8.0-cp312-cp312-macosx_11_0_arm64.whl (548.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.8.0-cp311-cp311-win_amd64.whl (480.2 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.8.0-cp311-cp311-manylinux_2_28_x86_64.whl (612.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.8.0-cp311-cp311-manylinux_2_28_aarch64.whl (592.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.8.0-cp311-cp311-macosx_11_0_arm64.whl (549.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.8.0-cp310-cp310-win_amd64.whl (480.1 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.8.0-cp310-cp310-manylinux_2_28_x86_64.whl (612.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.8.0-cp310-cp310-manylinux_2_28_aarch64.whl (592.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.8.0-cp310-cp310-macosx_11_0_arm64.whl (549.7 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for tetra3rs-0.8.0.tar.gz
Algorithm Hash digest
SHA256 93652940905cf6002eac6eb88742e43f80d4a35980c4dc1a5840afc67382c095
MD5 04e2eab61fa74c21d4b8a40ed4b76d68
BLAKE2b-256 3210e8bc6a1a3ce2aafcbd808240f71dfafd8e9704a2dc4ed376d02b0741602f

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.8.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 492.9 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.8.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7af0d97a73cf4642c5c3c6e7848bbbddc069f802872026c25afb3b3c6275c324
MD5 662bb0b452542b46375fa27a58a55e7d
BLAKE2b-256 8df8ba1c1c053a61ffabada1c305ba1b00f3389e9e8d309c7deecb40adc4e4c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f93da505a80c4ad306f01911da661b8c9da3a00d3e84c4638a982ee26f44c961
MD5 be1ba85288de2aecfe9a9412a32e1510
BLAKE2b-256 b83d4b4f96894ad1b1313a963e63a91d88da589c89183d2c52174610085a6e6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e7bd8aae11408d93f3f45f3ecf213b8195a765dd2b24522af262005f96690f91
MD5 9b6c51f12fbd2ccdbefe70bde686e79c
BLAKE2b-256 7d6898e796c840d459cd6bf933d134a525e33bde3880906ccff3389839c2d829

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3b80245e6b5ca4a1a104da26abf3abac80896178723c00e9ce58633c5094cb9e
MD5 65d366f1770218279afeac3d2ee569f6
BLAKE2b-256 be97bb14324a2046d629c99b955755bfe4b1db0c6a4eb443779fc48f1a7b3e57

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.8.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 478.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.8.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 702a743115e49c79731952340ad857f1f0fe9f1899a819626c9613fbc40770ff
MD5 8313ec0d6ddd716f4c1164ebb9b63322
BLAKE2b-256 8d0b7674facaea246d3f6bb5d1e39756bc721428d7ee2fdf06fc6cf23473b589

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bb83e1d04b403370a82d5946881a64c908aa261afeaa15caa1af300eb761144b
MD5 a1e14a10f552de911739122464e0da29
BLAKE2b-256 0828deef7d5e8027f20ca401c05bddc9522ba36334a0724bc3e0609093c55403

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8c188424c6259fec57da95b1d88fb5dc2b8f360b2603228239f6f0232d4e762c
MD5 88f54d63849b9921994d638a1dab8583
BLAKE2b-256 8ade24744ce53a72420d359d600277a419bef600ae1f84b32d5324e9e59029b3

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e507f924e366b2ca0f7d33d9f683c36bbc2ebe41279b77e899528d86aaa83c4d
MD5 8cc27627c983bd01b5eeb505f2c0f474
BLAKE2b-256 31661bdd5ec45399a873521d1b7b3bcfeaece5956e066ebfbebb9a64834a90fe

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.8.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 478.0 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.8.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 15535c43476cf5cd09fbf76edcb11eaf202fccfc92c4ef9b519c2bd7c2c4dbf9
MD5 455d5183abd4c8c9d9819d2e854a45eb
BLAKE2b-256 bdb4fa650aca91bcee6bb9a67a2e6fc25d4b6f94af1782ccfc10041582ff3994

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 bac660d05736ca6dd602206f6740907e0cac1b0d5dd743a41542359c1ccc828f
MD5 b8b042123cc7eb138686138997bda0d4
BLAKE2b-256 485b21a39a415be1ee2ad8bbf4df73f87eab40d5d5dd303302c13844df556029

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6773ba3de4840c1927f2280e083df7ea85c2ea28482cad1111b32c4c78e33bfe
MD5 9b27f3169d40f8cb980dfa9237c4a579
BLAKE2b-256 e4b7155d0425ffad95a9122bb6d8348f2b1f93045b364acae0c1d8b04f4c4e4c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88b047a012aa918047c365a7353132089aba5edb9f56724c0942430e408a82f2
MD5 1917ec1b1a320222bb42004838020381
BLAKE2b-256 9c7d1609a37cfa6f18e428babbf547f6cbd0248765be90a062a58647201e5cf3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.8.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 480.2 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.8.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ff264cd1d3ff241ccd7cc68f66f3b86f5e00df923fa01ebb38787df96c957051
MD5 e6fd5a19749c568b722a5b521af9d99f
BLAKE2b-256 8b3b4746cee1a39085b5ca2bfbf624859a8a1f8478ee9e91e900b579b825387b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5fe5c6f5bf80d31d5ac34a54c43d9d9ae0314ce0e1ad5000669370d5c5e63b89
MD5 01f85019f41d5f9a1f88574d7033a766
BLAKE2b-256 337e005761d9b7e0258fecd28a05982e8a34979cee940f1d8c1a181a08645dd6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3d69985290de93d2cccac965a9fce40eb87e48e123b2392bf2fa61386d54aa7e
MD5 235a5634024866aa836b9f6012921d29
BLAKE2b-256 cd5e495df7235cf59036449f0e32eae0502ca6aa3f4002455e26eff4f1b98871

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f5d26ae7210b82c7b7253d5eb872df4e05d2b33389a0c8540407d1f1d01e348c
MD5 9cb0547deeec1e91c2e644b466bb6329
BLAKE2b-256 e58689480a0dc932b9a918c72dcd635bf9eb24bb1560ffc9bdd3750becad15f6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.8.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 480.1 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.8.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 90e20d4654bc011b74fc514fe917ba8d7a5e606adf00a4c690ea7b41ba76b795
MD5 5cfed20863d6a8ea10445da62d24217c
BLAKE2b-256 47a248fc21352b049377e7cf70e7bb621eafd7dbcbecad018529f8e7a8e141f2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d7fa2b85299af515fa736004fcdfff0ad86ebe0f6119d85bcc15489cb17b087
MD5 415a6a477228b440923fcf7ee1494a7e
BLAKE2b-256 259090fd8c24410c46729ff40836e92479af3b939b0666a69b8afd49b3fa01b8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bbe1b65f51b3331fc999b076af26501bafbea423fc5472737d32b2d83724159d
MD5 2ae8c2dfd37eeaed0e9a5d3df167582d
BLAKE2b-256 6c550b2b8ec08f876aabf2f4ff02af63649da10f48c057840420c55c8c28bc9c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.8.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1f6a211678d1637324993e58024c1bc6b23e1d8c2302788cdb58839890afbfed
MD5 47143fc61ca7dd37420657b07691e997
BLAKE2b-256 b024e2bcd1801f85a4827b0df98d677cc08115db4e1cf8b6839d9d3853d8d5ed

See more details on using hashes here.

Provenance

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