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.5.1.tar.gz (131.7 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.5.1-cp314-cp314-win_amd64.whl (487.3 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.5.1-cp314-cp314-manylinux_2_28_x86_64.whl (616.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.5.1-cp314-cp314-manylinux_2_28_aarch64.whl (594.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.5.1-cp314-cp314-macosx_11_0_arm64.whl (547.9 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.5.1-cp313-cp313-win_amd64.whl (471.6 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl (616.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.5.1-cp313-cp313-manylinux_2_28_aarch64.whl (593.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.5.1-cp313-cp313-macosx_11_0_arm64.whl (547.6 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.5.1-cp312-cp312-win_amd64.whl (471.9 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl (616.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.5.1-cp312-cp312-manylinux_2_28_aarch64.whl (594.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.5.1-cp312-cp312-macosx_11_0_arm64.whl (547.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.5.1-cp311-cp311-win_amd64.whl (474.4 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl (616.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.5.1-cp311-cp311-manylinux_2_28_aarch64.whl (594.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.5.1-cp311-cp311-macosx_11_0_arm64.whl (548.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.5.1-cp310-cp310-win_amd64.whl (474.4 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl (616.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.5.1-cp310-cp310-manylinux_2_28_aarch64.whl (594.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.5.1-cp310-cp310-macosx_11_0_arm64.whl (548.8 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

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

File hashes

Hashes for tetra3rs-0.5.1.tar.gz
Algorithm Hash digest
SHA256 4583b21a0431f449c75c1b574c2b5799f9d516bf059feaa2d34b2efcc32e262c
MD5 5984582c372a0130c929189a2caaaa78
BLAKE2b-256 26fa2f37577f78d4de477ca67982acc58e93270efacbb8f82759c9fd2ec6c00a

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.5.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 487.3 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.5.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 200085eea135eb4f4f501ddd6c99021c44ab04b617f40d23e490ca75d8c3c7b1
MD5 9b23a6e75f64cb950628ec4d71441f12
BLAKE2b-256 6b29ebe71fc0935b2b8bf0e22cfcdbb03b9f9b84ed1de51dae94f14ff695eee6

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3dd696fcdeaa660ba09b9be4c2156931a0fd95ebc3f2501133f7701aa2490cca
MD5 310b91fdac3c661301e961529afeba2a
BLAKE2b-256 361e158822bb30dfd6922d0d1792a29b387b3f1ed4d21dc8f679cefeeb465443

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2239d065deb6e1ef84c27aefbe436679f105f571e66f8aa2d32f62d002e0df7a
MD5 a430b956408733fcb83ea7e2193b0247
BLAKE2b-256 a54425fc8c625207d520d1fbb0c4c1f83cee68610326daeba157f8fb1c025c8a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4a260930b142e94ef1420ea3dead3b6be6db3d278064773343611d13a43bb316
MD5 252d88d87e0086f7832fa01187cfdcb8
BLAKE2b-256 b88bdb6c3320ef06bacdd9262b5f3687dac3acde9498c77189dbcfeafc61d61c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.5.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 471.6 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.5.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fb2600dd20fc13ecaa33a7e96471c9aebd7884b3f48faace1e79d3273548ebe3
MD5 5101b9934f3cbabfee57200ae886be1c
BLAKE2b-256 5129b95f971e381aab668b1a32cc6225303ff28ed957235f744d5263d3d0442e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 638b40d7c442926880be45f403ff74e47f241331ab0978b3c7c484446c340140
MD5 9f4c28fca9ae7500bccb7be634417d1b
BLAKE2b-256 427bdf7f4dbe7a8f9833a8aa5ac978d19435aee35c5a3a7864984179476c84de

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 88e9346f1c7d3e0c370ac20f5665e7b0a28de345346cdf4d7fe059f56ae2400e
MD5 f1d0c3a5ed0152c363593ecc0e0ea7b0
BLAKE2b-256 0896f6b6b86a62a5f320b00e161381da2734e165e55079698f159b23023ccd61

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9acf76a81579bcd41951b51dacc6215069df86f08b5f4f839320b3ed358d9a8f
MD5 9497546d80e74772e9f484ce46875d25
BLAKE2b-256 13a9380c88b809a94eb009bf76391c5ffe1bcf116a7fa4ad00e6f632605d2596

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.5.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 471.9 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.5.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8c8a1d7f2fd96709aeed7f0014d2505cf291b4dd3a140b14a50e9317d08dbac7
MD5 b0e4199b500ab3234c0447d81c4fedd9
BLAKE2b-256 2f8652aaae939040f953db93915103f51b76cff3738710164daefedfec413109

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6cd70120ef78122b475e8e271f48a5778070a5c9c7010451ac9cbbe0ab788ca
MD5 b5da766cf5dd743e69c9add144e56564
BLAKE2b-256 cd4de8d763e7a2bd85208719638f7034e84369aecb1a96da43f80faea2ffcc62

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1485dec9736eaf8116f8f259eaffe8e8252b288b364b1ee7712b19078842c643
MD5 febe79e7267c090aab5cc3846e3e749c
BLAKE2b-256 6ad34fdb9598cf773ee01283236ad19a4865cf24bb20f3721da653dacdacb440

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bdaf1f89a448998c3fd0d7b3cc10d31b5b2e76cbf4a17f516567514e87c4cc91
MD5 8f174f3f9b7372c3f11b969c0252e049
BLAKE2b-256 2d5759f2949f5e1899596f70758baa69c4d149600f7b9a08f794e446b298e11b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.5.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 474.4 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.5.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 70c5343e7a7e6c38ff07be36c3761d65d037e73e37359d441f1de295543120f7
MD5 c12ad4c313031b066f948037481eead7
BLAKE2b-256 fab8d856a80dbaaef1b0b3caa85336dbf037da3b057408a08cb2915965af6536

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f6787f6806ec1d4164a9de28e092719ae6d463c37fe4b21c303b98d279c69333
MD5 8c48819eba224ffcb8047c0d3ca9019d
BLAKE2b-256 8fb5781398447a29fd7601d2d0a7485fecf267f1f14dbb7fad6a4871ec486b76

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2189aff59716e7748bfd013b127f28718d2803855ffc176496192cf8b2a341c7
MD5 3307725156e4c446000274f787e845e5
BLAKE2b-256 c663d3862edebf4be3470e963a44042629cf0678b160043f62564e9708d766c9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5452625ab852bec08da58a8118b5b8416ebafd4d6e14e337d20ea548bd12ce0e
MD5 c9509855b8d1907b665e409d1db9a25b
BLAKE2b-256 129cc908d5d660c1066dcc2cfb0071dbbdea5295d42fe8277c4703f59fc4135b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.5.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 474.4 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.5.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 503af1630e69e4b281cdabd095ba74dedb11f0cdfdf8928e01298e2fa89224ba
MD5 f6055a4d45c132b731c7093fce456cfd
BLAKE2b-256 a8483d5959c126fde0ebaabb4d7a04f511233853bb929c2d7a1af9ade5ec50f5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 02ab3205859894f4718f70a0f52b3e04a134e2628f7db4549f79e0ce5218bea2
MD5 96ea5b508d441d555ee771c4c58c7feb
BLAKE2b-256 eb1b88017918b8405ae5cee42aefb0e3ad3f79e275804daaf8eddcd2a956c2d7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b912684b13bb2a94733f48aa7272a0e6b75762bfc5e0aada178271138b47867
MD5 dab3fab0e698fc42196eccdced6c775c
BLAKE2b-256 94d6d3f2929ab66a898744077ce459665310616d2d58a16aecd541908dba7001

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.5.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23abb9c0efbc74a0235fda8547e93bfe28d9f36ebddc99370d144501775f81a0
MD5 9f0937c5b42487239a1a5ea14291fe86
BLAKE2b-256 06366a39be4c50fd9b4905c57c01b226ba171e10c5d98381e03c662d9ce81c87

See more details on using hashes here.

Provenance

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