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.1.tar.gz (123.6 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.1-cp314-cp314-win_amd64.whl (475.4 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.4.1-cp314-cp314-manylinux_2_28_x86_64.whl (606.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.1-cp314-cp314-manylinux_2_28_aarch64.whl (580.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.1-cp314-cp314-macosx_11_0_arm64.whl (539.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.4.1-cp313-cp313-win_amd64.whl (459.9 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.4.1-cp313-cp313-manylinux_2_28_x86_64.whl (606.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.1-cp313-cp313-manylinux_2_28_aarch64.whl (580.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.1-cp313-cp313-macosx_11_0_arm64.whl (538.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.4.1-cp312-cp312-win_amd64.whl (460.3 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.4.1-cp312-cp312-manylinux_2_28_x86_64.whl (606.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.1-cp312-cp312-manylinux_2_28_aarch64.whl (580.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.1-cp312-cp312-macosx_11_0_arm64.whl (539.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.4.1-cp311-cp311-win_amd64.whl (462.8 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.4.1-cp311-cp311-manylinux_2_28_x86_64.whl (605.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.1-cp311-cp311-manylinux_2_28_aarch64.whl (581.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.1-cp311-cp311-macosx_11_0_arm64.whl (540.1 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.4.1-cp310-cp310-win_amd64.whl (462.7 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.4.1-cp310-cp310-manylinux_2_28_x86_64.whl (606.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.4.1-cp310-cp310-manylinux_2_28_aarch64.whl (581.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.4.1-cp310-cp310-macosx_11_0_arm64.whl (540.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tetra3rs-0.4.1.tar.gz
  • Upload date:
  • Size: 123.6 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.1.tar.gz
Algorithm Hash digest
SHA256 47409db2e484eec6ce1ac711654c35563fb826d9506ccd073f9dc9e01c5f0181
MD5 cf3e3c2d457f972211d43f3faf828aae
BLAKE2b-256 e1b836359f63ec21f221cb49c977b43d4307b5051f536eadf2df0199b3cfebd4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 475.4 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.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 7f3ab3cf1b58a37cf9956acb3791b512207a3c1bd2b1383a0494bc4d3add18e3
MD5 55843b7033437f199ba97c9dfdc76251
BLAKE2b-256 365f2098ef440185cdb43257a1d170a0d7948aa4e3484149220af59dd9bc9e91

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 abec28cdbf361f2b57ba12c57f44f573048f18d040a3bf660e5f79e0c0641a7d
MD5 6a0686f22e8fff4285c428e98b863d7c
BLAKE2b-256 78e5c3f816b937acb5946735bfc7e6162ca3fc30e0bc259cd46942eb799ca319

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4de3fc6dd6defb59c6dc65ad640fd5e7880293a0696c7b1d51c735789610de8e
MD5 3d707233aec61d816d306d28874a77d1
BLAKE2b-256 63092314f31b210f3b106dd8a2c06f777fdbdff4e90e36f7413132008ea081ff

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cf4230f3dfca9ef9d354f1435a576a0f8b59d56c2b666a360dd061798a70f1dd
MD5 c53ff9b88bcee381b7ef7b0b26875eb8
BLAKE2b-256 d2898333bc0e147384f8efdd51e2a5a63df921ed163d22f9c3f083984d26bba2

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 459.9 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bf60a3ace245280da13dfc39025b1020850c7e53f7048f03116cc41d783aeb81
MD5 1d426df2445235ee5ceb9a5946c3d0ac
BLAKE2b-256 a2aeeed6501124954e75f35d9f778735a31a636a234df0fae8af41afd3ee04cf

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a2d9d6b3868d7430535ccd084dc3f105df7401ca8c9c411ec3d49dc9871d7254
MD5 ab7871df6a0b6cec6e33ec35655193f3
BLAKE2b-256 441c2b0b1ff8f57d1ac993e7e0323a1a40b588535c64f85664a07a004beee550

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 24bbfd6127a447f03662cd4e758c959bdb96caa25488008ab84730c60ad54eda
MD5 dd4b66535c9f62e4c126fa6ea940033e
BLAKE2b-256 555bb6006d76a6b2ce806654bccba11fb770ea942eea08a5da987db08ed818e4

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 aa448d78156b785ba88b5eed51ca8bbbe98d49ebd5f4dbf0013d2102bc0d787b
MD5 2c12cadca7dd47fb4904c10a74e6af80
BLAKE2b-256 01218fb2cc4b61a7e7ff32d734926b699311e78c4831183005fa385c2e455811

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 460.3 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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 1de40ddb075ff029048cc3440a9c510d66d837850aed5ef51402a130bffb60f4
MD5 0421c6f926e194271f3ca0719311f649
BLAKE2b-256 1f694cf7b6619150cb1638ad23cf3a0fc302582c1ddbc2937d5b6218f8e66c5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 05b8b3f5d68a55a8abcdab10f2f029390f2d8f9586bb1f55087855632b710e45
MD5 e7673f044386cc575926727da46d0192
BLAKE2b-256 7b3b00c59cb4ee5e90cd6efa24afa8630530383741ff74ba47bb23a01e9913cb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f8feb4f7aa7f20dee41ee346c24f5a2003bd3150673162e40891b962c0a4593d
MD5 f4a797f4071893b8bece39d632c4b288
BLAKE2b-256 3d4100b7def4e2c6362dd8a1d1de1df430de1d6e547dd300421e947491be6be2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1707ad763e6af8d2e2d21c8c231b864230d4b9df5049e7946be7d560c1ea380a
MD5 be75f4d76b13dd8372592423d0b18051
BLAKE2b-256 2e7d08b5cf14ce6710a6b699dad878331c9facc0337c9a469f8cd100c0fd1e4c

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 462.8 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9b02f1c30fd7f71d922d48390c19347c60fb50fd3b9811f249bd550a94f20e95
MD5 eae7c5e34ed84c3d2b9ece7d5b792005
BLAKE2b-256 8d3f28ac307da56c4b5dada26f2fa4b4c2ce8e7df050b09b27cb2311da16cc12

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7786686403dc09782f067dcda0194da166d4b306a27bfa37f1cfadde6a4ed49c
MD5 1df5ffbc38b69f8612b28ab33c1fdab2
BLAKE2b-256 87833d4a1d628910841406f05c00ca03e9bbf37f1496b8a0eae68421a858b794

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4b6ee281f66e010b26bdec453a0a1ac75462442b7f67dff6a370d647b8a1f54c
MD5 3c61434f3c8246bfebe7483dd80f07c6
BLAKE2b-256 c9b162aa3b94e8393a1b41316826bc9dc73f01a4887f3fd8f20a57ae7cb8a948

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5942cc175c1a6ca12fb4d37a0f2c9773936cfa2f4d5a70e707b106d40fa40ceb
MD5 ad1edce2a0c88410573edb08edcc15bf
BLAKE2b-256 fff1636abe9f655b9aa1cca61910b87bd5ccf1514575d7c62c37202b0e4cf219

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: tetra3rs-0.4.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 462.7 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4fe8e84318350abc99dcbaeb3b51f75f9310ac6d1b59f635c47309d13b10b5c5
MD5 2b8b03056d35b612fa54894df80b6aca
BLAKE2b-256 93a048f5d65ac16e36599688db16ea7fd264699bf3da83a18be6f2b3322a7f32

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b4190b2a8243bfe3633a50a85d4616d4dff0d7a622bda03354155348033a468e
MD5 f324f60f55627a77db2ac6009ec5802d
BLAKE2b-256 6e3ff2a2e1971d86781d1457fead97ece9b359b6752a72b56d92286a886ae212

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6b4f8853be51d67cc0a4c472e57192c69ddf88cab3fa361934feeb56eed20c1f
MD5 b1b79520cd3846a72d9ab1e8702ad7e0
BLAKE2b-256 f25155d86aa63c97fc1447b0f4acad2f577060338c55006d850e502ae25b859f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for tetra3rs-0.4.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41af82c6da7418fccff32423caf8b2d846abd31a18a96bdde27628447fe93ebc
MD5 02ac266d2c2a23bd4c0b6ea683d52f46
BLAKE2b-256 afe9501dca6bba030a13aca78f4dcade945127fa62ed64d3827c8eb2896b8ede

See more details on using hashes here.

Provenance

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