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 but has only been tested against a limited set of images. The API is not yet stable and may change between releases. Having said that, I've made it work on both low-SNR images taken with a camera in my backyard and with high-star-density images from more-complex telescopes.

Features

  • Lost-in-space solving — determines attitude from star patterns with no initial guess
  • 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
  • Zero-copy deserialization — databases serialize with rkyv for instant loading
  • Centroid extraction — detect stars from images with local background subtraction, connected-component labeling, and quadratic sub-pixel peak refinement (requires image feature)
  • Camera model — unified intrinsics struct (focal length, optical center, parity, distortion) used throughout the pipeline
  • Distortion calibration — fit SIP polynomial or radial distortion models from one or more solved images via calibrate_camera
  • 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, CalibrateResult, ExtractionResult, Centroid, RadialDistortion, PolynomialDistortion) support pickle serialization via zero-copy rkyv.

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:

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 using scripts/download_gaia_catalog.py.

Example

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

// 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.rkyv")?;

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

// 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_estimate_rad: (15.0_f32).to_radians(), // horizontal FOV
    image_width: 1024,
    image_height: 1024,
    fov_max_error_rad: Some((2.0_f32).to_radians()),
    ..Default::default()
};

let result = db.solve_from_centroids(&centroids, &solve_config);
if result.status == SolveStatus::MatchFound {
    let q = result.qicrs2cam.unwrap();
    println!("Attitude: {q}");
    println!("Matched {} stars in {:.1} ms",
        result.num_matches.unwrap(), result.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.

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 near-Earth observers, stellar aberration is dominated by Earth's orbital velocity around the Sun (~30 km/s). The surface velocity due to Earth's rotation (~0.46 km/s at the equator) and LEO orbital velocity (~7.5 km/s) are small by comparison and can usually be neglected.

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) or .csv Default; merged catalog with proper motion. Binary format 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

Roadmap (not in order)

  • Tracking mode — accept an initial attitude guess to restrict the search to nearby catalog stars, improving speed and robustness for sequential frames (e.g. star trackers solution on previous frame)
  • Deeper Gaia catalog — support fainter limiting magnitudes for narrow-FOV cameras

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.4.0.tar.gz (122.5 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.4.0-cp314-cp314-win_amd64.whl (470.9 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.4.0-cp314-cp314-manylinux_2_28_x86_64.whl (600.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.0-cp314-cp314-manylinux_2_28_aarch64.whl (576.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.0-cp314-cp314-macosx_11_0_arm64.whl (534.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.4.0-cp313-cp313-win_amd64.whl (456.3 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.4.0-cp313-cp313-manylinux_2_28_x86_64.whl (600.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.0-cp313-cp313-manylinux_2_28_aarch64.whl (575.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.0-cp313-cp313-macosx_11_0_arm64.whl (533.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.4.0-cp312-cp312-win_amd64.whl (456.6 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.4.0-cp312-cp312-manylinux_2_28_x86_64.whl (600.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.0-cp312-cp312-manylinux_2_28_aarch64.whl (576.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.0-cp312-cp312-macosx_11_0_arm64.whl (534.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.4.0-cp311-cp311-win_amd64.whl (458.5 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.4.0-cp311-cp311-manylinux_2_28_x86_64.whl (599.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.0-cp311-cp311-manylinux_2_28_aarch64.whl (576.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.0-cp311-cp311-macosx_11_0_arm64.whl (535.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.4.0-cp310-cp310-win_amd64.whl (458.5 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.4.0-cp310-cp310-manylinux_2_28_x86_64.whl (599.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.0-cp310-cp310-manylinux_2_28_aarch64.whl (576.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.0-cp310-cp310-macosx_11_0_arm64.whl (535.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for tetra3rs-0.4.0.tar.gz
Algorithm Hash digest
SHA256 cb08cbe9a96580b6ead0dc39df3bf23dcda8fe96bcd9ee20a87c28e60df26fa5
MD5 51b6b07eb6e13017f63c91566c0c852b
BLAKE2b-256 be626ec6130c614a2fa738454ccef70a2baa2feb76548e7c315ee3b2dbeb8697

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 470.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tetra3rs-0.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 45db109a7f767bf4e39ae48f506a1e25ac703d77bd1e0c05d8e6dcfa7abe878c
MD5 cf8cfc7311c2c390a58e017fde879c79
BLAKE2b-256 c4a9c7e8cd4cd2361bcf4d50dc5b129055b68ca827868f961c7f05324015b776

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5811f3c0c4d24c17b69157d2ca3d0174f5d7dd4986208b3dab5c78422c6ca527
MD5 7706906dff695b6ae7f7adf290ef8025
BLAKE2b-256 0d115f2777190e439c35fda1c914a455b3feda6c62797b2a452fd78f148acc71

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e6a0858d790181929388d018ff9580c84b3dcba54b310ae433e585fa055a72bc
MD5 d5094a35f5c7e376e19656cfac903b31
BLAKE2b-256 484ed23a476d02575d79e0fd8b190767453f6642c9c30fb97d003f8896d7b821

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3fe391fe166b7b0a89f1daca815d1112098aafa40d8f46e26900cb5f40bc951d
MD5 c7c927af8cf914e3ddefc330b596ddcd
BLAKE2b-256 2ccb10edfef03124887e52e7c054414076f09ab1506d1db361e145b7d4532751

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 456.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tetra3rs-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e478bf9901c620e988054f72b1a5552dfa94e48d6d31aec8449060a6154d8f3f
MD5 07f6a949731445b709d8164d67280612
BLAKE2b-256 69bbb455ed7a3c2a7d92fd39352b5a18cfea8fd46381a18afc20fa3beb8897ce

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0078a50e2db6d9f943e7a6d68ac3e74ed9b12e2ae29d5f1354ea54a1b81edb44
MD5 85983d65ba3f2e850bbb19b73f02854f
BLAKE2b-256 725bcec62771129f931eb61810667a4e065a37197d2831b438b24f05aa712aa0

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fd84beb0af931e51472f5e3607bb22078601e6ffd29c6777b279bcce5cb6b7e2
MD5 e7cae963b5c35fd8ac51799c00cb502c
BLAKE2b-256 3885cc3f787a864fe29501720ad574b616cadbca3df8f522782adc6e9abea238

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5cfa2d6bd39e99bbe3040e5ad67c9bc6b32629add799a195be37d9de80e9236f
MD5 42e0c1cc8e7f55d0e19a9a3dc19a91f5
BLAKE2b-256 ffd05d17b6ef16f80c0144e88ab1d42177c095d2ebd8b882969734b48812a7c6

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 456.6 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tetra3rs-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 b75104e78695777d8370f01bd9f3dcf29e78ddd575c5e4203a794945b23d53b0
MD5 cb989ba729b6017c837915e795b509d0
BLAKE2b-256 23fbf122ff904a9d66bb26bbcf4489d808a117b6bbb6f3c024626117c30d73e6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 67d967d9cecdd360ab2c4b618be7e27512e8466e5639b22a895f1b6867402a9a
MD5 0c5eb160c77c27d26ca66bfff45b3476
BLAKE2b-256 7db1cfdd7cf97e505812ddd689d9835a8a7daeb223746001c402442c5f98d6e8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a89cfad66853228570c28f7f956f1720410db62b442a3c81ce2045524105760d
MD5 d09b015ad056a0a8cccb5cd9afdde003
BLAKE2b-256 0c7c43dfaab483a81a93ab0ddd14634bb35f5d4f7691cb64308e089e33113e16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ce67d09c829f8b4a6cca93de8d595645083d60b19e8bc8c799f89f1d9e3a5835
MD5 f4a26e6fb253b964ecc85be9f5402c32
BLAKE2b-256 a82cefd8f6f686a89934723b87157c8ee6cf3bf35e74aeb699ab1e1640e67fb1

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 458.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tetra3rs-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 e1ec1803fcd28f7783763a6bb06c2ec1bf049052e461739980a61a57d9d2dde7
MD5 19d1b8268fc474eff97feb79aa42d960
BLAKE2b-256 d6ef10184859fe20f52a3017885efed167dda7b6ad65f8158668377330843776

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 119aceebf259fa0c479962e9c63ae583d929e2831551747fdaf2eb5fa5b1aecb
MD5 dfd62dc3ec221207711739c75dfeb844
BLAKE2b-256 ad28ae9b6fafb621fd60763b9fe9a3c6ea017bb7aabb8d712dac1d8d1951853a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8cfa609a8c174504dd569054fb54f5c1d3786765d88c784f227a9bcc177ef5ab
MD5 22a33983f986ac277192051150e320cb
BLAKE2b-256 495ce757ee57957e76efa082f25ebe639373f3de2152b98947219c9bbf5a2ea8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f35fd901a361a82fc4d8c4a629163ff742003c0400f8cc41760ae2a7117558dd
MD5 20208561128f54c306fd78edd63a499e
BLAKE2b-256 e31307d6c6b4324d6a2bac9ed0045754519da6c3f7313e1dd8d8ac2a4f0d60a2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 458.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for tetra3rs-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d5825abb3e14ca410bc890ad1ac87933864fe538bea5a86092370c346415cab0
MD5 ebdbaefa03084ffcb38a33bbc46f6f13
BLAKE2b-256 b0516317b1d7efda82ec3e48457424a7947fad61346d7d1cae6a8e5c44aa5229

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 37ca103932fab55527ed6922b92594ab3a304cfd4d2af72bb24582a583714315
MD5 b7094f47cef7cffb6772804d11cded2e
BLAKE2b-256 9728016c2c92a658043a51eb489fd1ed58ee1cce35af86a5b04a6aaacfc12fd4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 99eca782b8b8207c271ed361b52cfd03ea270f26960fe1b45ee64d820167cd41
MD5 3f0482714f8a8b5876321783dbabb643
BLAKE2b-256 7a9951e63506e03e1f51f8e43f4147b2343de262d757052d52ce144fc81cf579

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 05d3a83175095bbd1038eb799bdfbfec1fa0f2ffb4922863ecb2edf3ba653d94
MD5 16782258de736558748e36eddf672359
BLAKE2b-256 c21bddf91bb36020f34dcddd9eb74198b58c64ab0b0765a37724b3650fbcfab3

See more details on using hashes here.

Provenance

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