Skip to main content

Fast star plate solver written in Rust

Project description

tetra3rs

Crates.io PyPI docs.rs 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.

[!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 Hipparcos catalog 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

Obtaining the Hipparcos catalog

Download hip2.dat from the Hipparcos, the New Reduction (I/311) and place it at data/hip2.dat.

mkdir -p data
curl -o data/hip2.dat.gz "http://cdsarc.u-strasbg.fr/ftp/I/311/hip2.dat.gz"
gunzip data/hip2.dat.gz

[!NOTE] The Hipparcos catalog is also downloaded automatically when running the integration tests (cargo test --features image).

Example

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

// Generate a database from the Hipparcos catalog
let config = GenerateDatabaseConfig {
    max_fov_deg: 20.0,
    epoch_proper_motion_year: Some(2025.0),
    ..Default::default()
};
let db = SolverDatabase::generate_from_hipparcos("data/hip2.dat", &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 File Notes
Hipparcos data/hip2.dat Default; includes proper motion
Gaia data/gaia_bright_stars.csv Requires --features gaia (incomplete)

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)
  • Gaia catalog support — complete the Gaia bright star catalog import (--features gaia)
  • Tycho-2 catalog support — import the Tycho-2 catalog (~2.5 million stars, fills the gap between Hipparcos and Gaia)

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.3.1.tar.gz (121.2 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.3.1-cp314-cp314-win_amd64.whl (479.1 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.3.1-cp314-cp314-manylinux_2_28_x86_64.whl (603.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.1-cp314-cp314-manylinux_2_28_aarch64.whl (574.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.1-cp314-cp314-macosx_11_0_arm64.whl (535.7 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.3.1-cp313-cp313-win_amd64.whl (463.7 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.3.1-cp313-cp313-manylinux_2_28_x86_64.whl (603.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.1-cp313-cp313-manylinux_2_28_aarch64.whl (574.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (535.4 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.3.1-cp312-cp312-win_amd64.whl (464.0 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.3.1-cp312-cp312-manylinux_2_28_x86_64.whl (604.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.1-cp312-cp312-manylinux_2_28_aarch64.whl (574.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (535.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.3.1-cp311-cp311-win_amd64.whl (466.1 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.3.1-cp311-cp311-manylinux_2_28_x86_64.whl (603.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.1-cp311-cp311-manylinux_2_28_aarch64.whl (574.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (536.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.3.1-cp310-cp310-win_amd64.whl (466.1 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.3.1-cp310-cp310-manylinux_2_28_x86_64.whl (603.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.1-cp310-cp310-manylinux_2_28_aarch64.whl (574.8 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.1-cp310-cp310-macosx_11_0_arm64.whl (537.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for tetra3rs-0.3.1.tar.gz
Algorithm Hash digest
SHA256 1c5183400cfe2b4830f074517154c96f566de8ddb76d885f63e48114f9624f64
MD5 b601ad9c42530f5e43f69d3ef0313655
BLAKE2b-256 95f762bf5633eb32ca00cf570c07a8d583628862aab20f96753f5c59c3d716fa

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 479.1 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.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 4a6d4284e987ae6974352ed07d5b51df44d63c25cc3319908800d89b6347bcd7
MD5 ac0f63937bd5bc5fb72c1aee7eeea8fb
BLAKE2b-256 7ddca255c19c7398674c9823acfb203a965a07f70c3a52af60e4cac7b76a0eb1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9519248a9dfd616081ed8bb8d2c963b5b09d6d5c083c5f660274711b7027ee1c
MD5 85b867ff34fe6cd8160cd34d60f60b34
BLAKE2b-256 f21fb0ade33de806cc656b8d108b754305f6b33bea554752f451ff730db5e511

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9b8733b5123c647176e9d5c18f77baa5c21a844f7ee4c49440de4ea7e210d07d
MD5 965aa2b7e0b5cbc6f04f6142f2304ae2
BLAKE2b-256 256daf42215b0cc2a0d8e9d6de640dec47693b77f7333b5989307ed7ba877aae

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5016777d041c52c9ad6e7ab336414dfa2c42479c3a1be0dec30ed6bd6f955f21
MD5 c4951c27c67c1a8a8c598452d382b83a
BLAKE2b-256 085b9dc9368e1123dd2a6f906f94c9f6103d9641a6a6ddb50c6f9efd51ed081b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 463.7 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.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 35ed9d8cd0549ac4bf74013d2f77cb28654c9b0fdf8cd678f37fffda67a0f2df
MD5 abde82c0ed955c3017d76059c7247912
BLAKE2b-256 f3f627c56a3ef746a3802a54b0a6f820619fa375c57fadb47b53aa2c2f71729b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8b88ae4af55f3a56d8889fe71b6ccdfe36a4ba4dfa078d7278b8efd35c000847
MD5 14c60897e70248773e3d7faa7bb2dbea
BLAKE2b-256 b600923fab58843d36ca1e0fc77b97b036ebaee388770c999407445cee487f83

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 87a722aa3e49c24ca4d63062b95f6eb59d0fea353a445d6d869bd334a94ca394
MD5 da58659c3bc2aa643d8afa27e7fe06a4
BLAKE2b-256 92a629a5c933bd39044b51d4043bedcd40b4152bbd8775e603fbbd80edbb7f90

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6bd7a0a4b8a16da50ed4a541d02c759adb739adc518e4d3f88647fc0822201f
MD5 8d8854bed69db7d7a7bda89ef7f56cc6
BLAKE2b-256 cfa3f47bd6eea4dd6dc817e01bcb8234b19f3fefb489681849c3dfa36a74b419

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 464.0 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.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 841c700b1ef07481e84eb113e7ab84f80b0519ed53429abad17b929b071adb2b
MD5 270250f680bcd7a1269a36f2055a60f8
BLAKE2b-256 c1151fa0a72b36008d1fc01ed03fa6636ff3a8f5674ab89d62ebbce3a480ac3e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8dc67450183d23c4bacbd0326b2a8800bc5942253eb6ed77ea0f6fc5ad5729c8
MD5 9f5e284ea8bd0555b309558099dcb828
BLAKE2b-256 560341d5308608717781754afd3a88987320745b0f85489de2ca6732ca603440

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ca7df9a87dda96e06308bc03f84ae3afcff7ef6cdf01d91506e3a61976a10947
MD5 e64223e754d77695b4ac502522ca4674
BLAKE2b-256 4fc892012a40feb0cb6c6907a94f7b99dbb043a14e71bf214b583cfa0fbe7bef

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3086640753b54bd83c49f9b1291e85fd4433a1c75c74038abd450d41ad47fe7a
MD5 70782a0f677c9a5ef57ac082bf8b15d5
BLAKE2b-256 73504843f7856799a6edf1365d45b5a29a98fb9e0708157166a660c5b5a61795

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 466.1 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.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eefc1a32718b3ed13d75dd32654b487d6873352ef497e717ddf4cb6b8f8a4128
MD5 8a36213e53a0b61074c1c9a8fc1839b3
BLAKE2b-256 01576d8f5ee85de744e24fb38cda705769b383ec8011f4f0f42073a8016cc78d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 39b235c402076a99c5501c4f2e10686acc76752d3d42116eb4eec857a520451f
MD5 c99cd79c97cc50dd168fad3c4414d6bd
BLAKE2b-256 23a7de1f9e6091559a552a42d5cf77ad1d2bd174ac24f45f02c083e055889ae8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e3ea1ca9b83769ae30b7c53055ede6e985b40ee5f16a5e01a4113769966ead07
MD5 bd5516352cc667279b2ff746e53d5392
BLAKE2b-256 80c1530273d7551d94bc93fc9c3bd9e49435919d5bdd8701ae7a11ca91107300

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b49c60cb162a5012e2997bf9e57a839b2c786c17923aa184398c2ccf57341c2c
MD5 320fea6f58e3cab5ff9face7d621cd31
BLAKE2b-256 336650428561d45b871bd533dfb794e24f2cf3ad3cab55e574453535c25977ea

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 466.1 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.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 11b816d9d757a1a0895e16cfb3beaf7119472951146098a2fdf0ac42cf95b13a
MD5 0d0b045f78c7f50e33d8b27793d808a0
BLAKE2b-256 221f4e221f2290c8b40605d002a2fc75e19c8e4eb14f443f74e544d42a7b6a70

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62cf202b18eedf7d5339d29386e0508c2089c1cecdf47b943c6da779f6c5d9d7
MD5 a7a9f05172d0c9261a1bc0c99986b648
BLAKE2b-256 89c6f5a06f9a62489bd6b31040cb24bb06e5c714aa32a35c9e93f6b64c24501f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b9e6f91d2f7a9cbce2ed7de1988a14351e24669253334e6d1f9e24b819176f51
MD5 2eb0bf4b0c9eead618a8f7a03bcadf46
BLAKE2b-256 73ddc64b7b199894e37faf8a756a64504e7dd4d52475cf857e51b5c27c510c4d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31605d2fa3e117022962e080b5dec5bae89b1bcbdd822a98b252419d02147011
MD5 9e0d9202dc0485dd6cb30e66a76ede7a
BLAKE2b-256 ae3c8eec0768d2c0e7e9a528fc87bc94318312c9868448b0058488b499ac5057

See more details on using hashes here.

Provenance

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