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 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

Hipparcos catalog

Python: The Hipparcos catalog is bundled automatically via the hipparcos-catalog dependency — no manual download needed.

Rust: Download hip2.dat from the Hipparcos, the New Reduction (I/311):

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 Rust 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.2.tar.gz (121.8 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.2-cp314-cp314-win_amd64.whl (477.7 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.3.2-cp314-cp314-manylinux_2_28_x86_64.whl (605.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.2-cp314-cp314-macosx_11_0_arm64.whl (535.6 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.3.2-cp313-cp313-win_amd64.whl (462.4 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.3.2-cp313-cp313-manylinux_2_28_x86_64.whl (605.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.2-cp313-cp313-manylinux_2_28_aarch64.whl (575.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.2-cp313-cp313-macosx_11_0_arm64.whl (535.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.3.2-cp312-cp312-win_amd64.whl (462.7 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.3.2-cp312-cp312-manylinux_2_28_x86_64.whl (605.7 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.2-cp312-cp312-manylinux_2_28_aarch64.whl (576.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.2-cp312-cp312-macosx_11_0_arm64.whl (535.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.3.2-cp311-cp311-win_amd64.whl (464.6 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.3.2-cp311-cp311-manylinux_2_28_x86_64.whl (604.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.2-cp311-cp311-manylinux_2_28_aarch64.whl (576.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.2-cp311-cp311-macosx_11_0_arm64.whl (536.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.3.2-cp310-cp310-win_amd64.whl (464.6 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.3.2-cp310-cp310-manylinux_2_28_x86_64.whl (604.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.3.2-cp310-cp310-manylinux_2_28_aarch64.whl (576.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.3.2-cp310-cp310-macosx_11_0_arm64.whl (537.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tetra3rs-0.3.2.tar.gz
  • Upload date:
  • Size: 121.8 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.2.tar.gz
Algorithm Hash digest
SHA256 8b9bdf3bde972c61481aa7ef9f54e14e7287956c317b0fb888fae5305e2977bd
MD5 7c0a30110e9e78d6c02709ff9a0761d6
BLAKE2b-256 135b656b3993029d382fc22e32045740cf59a9df1f64efbda4f8311d719d9891

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 477.7 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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 26ae953c74af03f2036781ae1fb7b125575a7535a03ab68e6bdd30cd540de880
MD5 5b2d254e81fd0358667800c6ca9cc94b
BLAKE2b-256 98683fc779fe6548df6ea919a333a336a202976f0c197ef5ab8565e7557f1842

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5fea23822091b1fa8e5cf276d2d687f0ae8662798e8a86442b1834ee1dc337bb
MD5 9518ad0b057590283dc375173be979d4
BLAKE2b-256 a429a09b12d330773c4a57d9d31213d92fdd0728a841b41818c85a7201f1566e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 08bd043eddaf1c25f2bbfc983203fd73daf11f5afdc522fa56d35e8ceb5190f3
MD5 6e7df95e18ef9cafc722bf8b0b48c0b9
BLAKE2b-256 32a58d6606a2ed5de44d534f2ac6ac333edf7f2bde0b127c27607d9c88557f1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d579b280e95f2eca3f4a9128517fbbcd325bb241e56e7bd676f600e778b4c8c
MD5 3479a358558f7812b99b31b389f3f909
BLAKE2b-256 9b7f67c2d2f814090587a8b52533388ca3186805a44ddea683ff2e9dfd7f5096

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 462.4 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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8c0b34150bc4e05c706071710f9225786421092e055ec3be88758d9ceb71fadd
MD5 f58ed3aaf7477ef6a63df0d7c004654f
BLAKE2b-256 cb1f865dceb69bf07f56d2b349a32457e736626c0520922476c560fb225370a1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7423c73a8c4e306982bee21a966b922d377604a79cedcff81419283e7a2f9cf5
MD5 3af436643089b4ee9f4dcb3bf1bcec8f
BLAKE2b-256 42ab03983ada5c7d6de9170a957a2d197afb24c4a896e7750f4f7d740a1efbc4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4660d767d4033562ea06c11e19648195a8e2656669658aa461cf79410c1e5687
MD5 b9dbdbdb30148fe493869c59afdfe83d
BLAKE2b-256 c6cd88331c216e3410e88f0b0c2d8d6f68d54e9ee7eb21cd9c3f6766d28be67f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1b1246a197a734afee90fc26e426eb1402ae093654d6eb29351d206ac4f3b0be
MD5 8af097141ebaab84d6fb5b1e20056642
BLAKE2b-256 5bea3513f23b15ea21a6e484e2042d7ebca639a84bc3506e8c6502955f0f4aa3

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 462.7 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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e20ad6c8ff0ce63bb75d652c5d9411cf25cea9d6bd5dab8040751adc21443ef2
MD5 d8cce9481fbd73535073fb10cd7c8099
BLAKE2b-256 1eea5830c1d7dff7f2b08dc5dbb3b3738e51c015c222a637eb47979cf5b2a3f9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 46965d850642e4102f9508319407283b2146e5aaeeb6c64f455291648a0b783f
MD5 9211a374a9e2cda89f7dba1db9495f46
BLAKE2b-256 907c7589a8b81390d42ff08ddf91ea33411ee58fadbe12f9b9d1eff55f76652d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 94f60006c523bdd978c18c51ecd5dbc3ea75fef32a941366e846e486a3f63eea
MD5 08fcfb0c01e54b3c09f8c1e34339ec0f
BLAKE2b-256 8ce8b71094670d6f7e8ecb99f2743407e7dda230c4cac17fafe125d71c1d8489

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 64a2c1c06ed39ab63092d11638bd0395e5efecbb67b5e8a3fff8f6f5b0e25750
MD5 9ed93022c9f5c37c4218305aa6fc6433
BLAKE2b-256 6c1edaa25eb9bc19e38e636e4069ef8abd7062125d04f8401b4b134c6eb77132

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 464.6 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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 67d350b5cbb7ce0b1f6428501e55a1aa36d70e29083859d58a81c9e9ea528b6d
MD5 370e675b8396fb53736af643319a4f29
BLAKE2b-256 3ab0ac27149a9a9cce0875207138c1aa0294432e6509e0d277ca79bf1a4c1b7a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59ed7c4be55970f79fc9d47b23e1c441cefff2c1fdb7c236fb04c576ccc6d9cb
MD5 22e669b3dda9bb3bef219ad1702808b8
BLAKE2b-256 e1d61f4b394302a089e2a4d68a3f2e7a1b738aca89fc830f51e548f7638fc158

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9bb3a9b194cab9ed5979fb84554bb21ab08ee44c0655eb11d9fa8e1d9ec2229f
MD5 20b3f110aeed16804a4318f067f84223
BLAKE2b-256 f16f181bf60d2c0091e28dbb11a669fe3f438a0932599b23a24682213bbd0f2d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 395749ae9ba4e0637c8e59ba5af6f4c20054188eb71dd7ac2507f3ee377e6a06
MD5 d06c11cb066bb107d568fc2a1504c9d1
BLAKE2b-256 e5b651e450d22639f821bb29dfb90ada36410c9c15887011e65a89e15771136d

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.3.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 464.6 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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 46663c7bc6d1bf29ecaddf1670643ca956052d4531fa048a8e5d4f98b947dbb9
MD5 3bc7d66b8e7460f15f7991557a66a298
BLAKE2b-256 3f498523505a22cbab597301123aeae4114d5ba37dff77735dcb016f24c2f1e7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a19881956f5c9a43cad03a7a5ea70c38d10899cb82779b8c214dcba36a43ccac
MD5 587a10f0793f1ddafafaf9c21e213e54
BLAKE2b-256 b4515b1c5b5bc686b10e73026afe2176c07ce29929b378bd1cf62cb88e97ba16

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8b064dc916ee634b6b154517b7944d17ca1cf5179ad51f4ddd21beb810067a4a
MD5 4411f2897de5c0048aa464c74e0c973f
BLAKE2b-256 422cec281e29a2a991c0db4080f67614a5794def9925a79e6c83b356ca696174

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb74b1a98ed4aef82efc867f16d7e9c2630a4b7534a99324b5508f183faa89bb
MD5 0b3a06d1ccf145a63443d868b7ad9bef
BLAKE2b-256 b25a3bae8674367d1e8907f1185e65097bbd0f51ec29c3582542ac0ebf8d43ef

See more details on using hashes here.

Provenance

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