Skip to main content

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 and has been validated against both real low-SNR images taken with a camera in my backyard and high-star-density images from more-complex telescopes (plus synthetic SkyView and NASA TESS multi-sector data). The API is not yet stable and may change between releases. See CHANGELOG.md for breaking changes per release.

Features

  • Lost-in-space solving — determines attitude from star patterns with no initial guess
  • Tracking mode — when an attitude hint is available (e.g. the previous frame's solution), skip the 4-star pattern-hash phase and match centroids directly against catalog stars near the hinted boresight. Succeeds with as few as 3 stars, robust to sparse/low-SNR fields, with automatic fallback to lost-in-space if the hint is stale
  • 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
  • Compact binary databases — databases serialize with postcard in a portable, lightweight format with no offset-size limit, so wide-FOV-range multiscale databases of any size load cleanly
  • Centroid extraction — detect stars from in-memory pixel data with local background subtraction, connected-component labeling, and quadratic sub-pixel peak refinement. Accepts an already-decoded image::DynamicImage or a raw &[f32] pixel buffer (requires the image feature)
  • Camera model — unified intrinsics struct (focal length, optical center, parity, distortion) used throughout the pipeline
  • Distortion calibration — fit either a SIP polynomial or a standard camera-intrinsics model (free optical center, focal scale, and full Brown-Conrady k1, k2, k3, p1, p2 — the same parameter set as OpenCV's calibrateCamera) from one or more solved images via calibrate_camera, with alternating per-image WCS refinement and global sigma-clipped LS fit. Handles mosaic cameras (e.g. TESS) where the optical axis sits far off the detector
  • 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, SolveFailure, CalibrateResult, ExtractionResult, Centroid, RadialDistortion, PolynomialDistortion) support pickle serialization via postcard.

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 (G < 10, ~17 MB):

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. Two scripts live in scripts/:

  • download_gaia_catalog.py — ESA Gaia Archive TAP server. Canonical Gaia source, but the server enforces a hard 3,000,000-row output limit per async job for anonymous users, so bulk queries top out at G ≈ 11.5.
  • download_gaia_flatiron.py — Flatiron Institute's flathub service. Serves the full Gaia DR3 catalog without the faint-end cap; use this if you need G > 11.5. flathub is not on PyPI — install it from the upstream repo.

Both produce byte-compatible output and share the Hipparcos bright-star merge. See the Star Catalog docs page for setup, CLI flags, and the on-disk format.

Example

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

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

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

// 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_max_error_rad: Some((2.0_f32).to_radians()),
    // 15° horizontal FOV estimate, 1024×1024 image
    ..SolveConfig::new((15.0_f32).to_radians(), 1024, 1024)
};

// The solve returns Result<Solution, SolveFailure>; a Solution's
// fields are all guaranteed present.
if let Ok(solution) = db.solve_from_centroids(&centroids, &solve_config) {
    println!("Attitude: {}", solution.qicrs2cam);
    println!("Matched {} stars in {:.1} ms",
        solution.num_matches, solution.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.

Tracking mode

When you already have a rough attitude estimate — typically the previous frame's solution in a video-rate star tracker, a propagated gyro estimate, or a coarse attitude sensor — you can skip the lost-in-space pattern-hash phase entirely by passing an attitude_hint:

Rust:

use tetra3::SolveConfig;

// Reuse the camera model from the previous solve so the refined focal length carries over.
let config = SolveConfig {
    attitude_hint: Some(prev_solution.qicrs2cam),
    hint_uncertainty_rad: 1.0_f32.to_radians(),
    ..SolveConfig::with_camera_model(prev_solution.camera_model.clone())
};
let result = db.solve_from_centroids(&centroids, &config);

Python:

# `attitude_hint` accepts either a 4-element [w, x, y, z] quaternion
# (Hamilton, scalar-first) or a 3×3 rotation matrix.
result = db.solve_from_centroids(
    centroids,
    fov_estimate_deg=15.0,
    image_shape=(1024, 1024),
    camera_model=prev_result.camera_model,
    attitude_hint=prev_result.quaternion,  # or .rotation_matrix_icrs_to_camera
    hint_uncertainty_deg=1.0,
)

The solver projects catalog stars near the hinted boresight, nearest-neighbor matches them to centroids, and runs the same Wahba SVD + verification + WCS refine path as lost-in-space. Tracking succeeds with as few as 3 matched stars (lost-in-space needs 4) and is robust to pattern-hash failures from sparse / low-SNR fields. On failure it falls back to lost-in-space automatically — set strict_hint=True (strict_hint: true in Rust) to opt out of the fallback.

See docs/concepts/tracking.md for details on hint uncertainty, quaternion convention, and limitations.

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 a near-Earth observer, Earth's orbital motion around the Sun (~30 km/s) dominates stellar aberration, producing ~20″ shifts. Earth's surface-rotation contribution (~0.46 km/s at the equator) is only ~0.3″ and can usually be neglected. LEO orbital velocity (~7.5 km/s) is ~25% of Earth's orbital velocity and produces ~5″ additional direction error — not negligible for star trackers on LEO spacecraft. Pass the observer's full barycentric velocity (Earth-around-Sun + spacecraft-around-Earth + ground-based surface rotation, as appropriate) to get an unbiased attitude.

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, magic GDR3) Default; merged catalog with proper motion. 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

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.

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.12.0.tar.gz (221.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.12.0-cp314-cp314-win_amd64.whl (510.5 kB view details)

Uploaded CPython 3.14Windows x86-64

tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl (624.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl (601.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

tetra3rs-0.12.0-cp314-cp314-macosx_11_0_arm64.whl (558.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

tetra3rs-0.12.0-cp313-cp313-win_amd64.whl (495.3 kB view details)

Uploaded CPython 3.13Windows x86-64

tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl (624.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl (601.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

tetra3rs-0.12.0-cp313-cp313-macosx_11_0_arm64.whl (558.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

tetra3rs-0.12.0-cp312-cp312-win_amd64.whl (495.2 kB view details)

Uploaded CPython 3.12Windows x86-64

tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl (625.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl (602.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

tetra3rs-0.12.0-cp312-cp312-macosx_11_0_arm64.whl (558.2 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

tetra3rs-0.12.0-cp311-cp311-win_amd64.whl (499.9 kB view details)

Uploaded CPython 3.11Windows x86-64

tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl (626.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl (605.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

tetra3rs-0.12.0-cp311-cp311-macosx_11_0_arm64.whl (563.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

tetra3rs-0.12.0-cp310-cp310-win_amd64.whl (500.3 kB view details)

Uploaded CPython 3.10Windows x86-64

tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl (627.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl (605.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

tetra3rs-0.12.0-cp310-cp310-macosx_11_0_arm64.whl (564.1 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: tetra3rs-0.12.0.tar.gz
  • Upload date:
  • Size: 221.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.12.0.tar.gz
Algorithm Hash digest
SHA256 6d8f95f442fe0188ac98d3c97b542dc59d97158740b0e21e867f39b6f5ff02bb
MD5 2d252bf777d48939ab643cd5486e92a5
BLAKE2b-256 387d1631a7ecbff416a1179186a333ad95fb696cbb66d0a69b8b89d691485d26

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0.tar.gz:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.12.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 510.5 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.12.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9ca9df1f37a2a4baa3ed6f3b7e5af5acef4e2dbba0a9c8cadddbc67acfd53025
MD5 a7c612551f489f6c5af5caca5bbec979
BLAKE2b-256 5306f4475d978333f0bc3feb0fca12e0b25331da98b6f72e814bdcf1f86dd9b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a027dfeddeba78a55e213233a962e93c19c86d6d8b8e2f3d00736e736888ccd4
MD5 f0b445d422a59e9f213077212ec4598f
BLAKE2b-256 7a4476227f808808d7569a6e0073b2c7686fe3a56f7649c28e10df88699dafa1

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9f8d0201b1620294bf60d2af7cb1476584736c9f9745509df2449ee93f73c410
MD5 51b870d595ab502bf3ac6f17b85f70ad
BLAKE2b-256 e167848bda5c227ecaee0b276c939740667b3d20d4361f8c249b6f8e37e914c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp314-cp314-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 34161bce27b1aa5eb2ac8f5bf1a4729117aa0f0d9900f230e0a943d3b825cabe
MD5 e9258fa29d006469bee762455e3c8a59
BLAKE2b-256 62b143b3afb675f0d3fcd9d2831b65f463e3c9d208bb0a1e34c23a791da0091b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.12.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 495.3 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.12.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 9e5769937a0b328fd203b9dc1c65da48aab30d3e39bf185ab3ecbf3b3e1cad74
MD5 11e0d4b158b07560ac8a5e4b92d9a358
BLAKE2b-256 c9f9e6252ecf5d079c42e4d7d9c837271131fac19674d6b084176768fcd31409

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 852edc0744a0e0096cf0544f3d98108469589e6bd7194bc45751c3f7724934d5
MD5 dff88c93dc5a4471fdfe2b539eccb05a
BLAKE2b-256 d37d7a925c5763fd87c3e41fbca8c0b871ec1b03e5adc64f7680904486f41a5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 976a5582a6c86c4b23562e117196fbf38b9a36d70e55cd48eac8286e1a804fd3
MD5 5bff74fdb0c451250812a92b25706e24
BLAKE2b-256 26b5cccb574f4d229369e606ddf4ce947f87ada5d4e175ee04a9e20e84574b59

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp313-cp313-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad8daba40fbe18e32cd948c4df74ae98f04db42d2926bcbcc0a1037343467346
MD5 3a8bfb652349901280a4b410bd6ecc56
BLAKE2b-256 3063b2b2484ad582137ab9664a118edb2ebcb6eb1e815550911d99bb8db91bc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.12.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 495.2 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.12.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 5ad50bbec2df1fb851b4561dd72844b18e1f8454c0459e5704a5de5692f7a36c
MD5 9d78457d840ce6cca382dcdbc18ca506
BLAKE2b-256 45c48af97f1298ed21f90083ca48fd4cb01ea140434f9dad9eddd6e06bc42ff2

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4e54cd2b2fa46619fd58c70488f75cfd5bf022f6b6f3f9ee80cee979dbb3650f
MD5 bf96a676a87363450fce97a4b7d95c25
BLAKE2b-256 d7030eed54c5d2f0c6af5ac6891eac98e7b864ad00c20880f94a85bd95469064

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d0ce4d400f83894e3f66774319704aca81a0a903f2122e4c490224256ee3e0c5
MD5 7184538c6fdb17d09ff12aa70f7e65e2
BLAKE2b-256 7e591ad472b782474b781586fff86bcfc77f377675d1b357c102aa4ec6fb4ca6

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp312-cp312-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 37ccccd28a2b796c7e37ac6aa70959ae6b7823260f57ab9e8852a8e19829baa8
MD5 fa020ccc7600cac2ceeadd4037d6cf84
BLAKE2b-256 8ed3acd41297dea37210a178e1e79dea586c8837a1a320ced01fda190a43a271

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.12.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 499.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.12.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 fb7aa16a176d3076028795b456821dcdf8d9866fc18a59cdcfc2c725e37482c2
MD5 29272c07ae87e55d9ef4cc11f1a196bd
BLAKE2b-256 46160036c54aec66fe376b81bfbc5c5ac4e907b36cc0ab7e6e49b82f919d6639

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 87649823f15a60e85c4031955a62fb66ee976613cbac9e2ab38161854d0a8fa0
MD5 4f9fa50dee1ec998c9bc2fb86963666f
BLAKE2b-256 29ccbd6516b7a6b0d17481c868256ca0ff94b493cebfe670d097cebd95b062d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a200ff9116700e0588914b8a8b48be9e95c01705956bb6fb49e891ef9837fe25
MD5 f7ed807977c7e1d86ddd885e26a92d37
BLAKE2b-256 a52c0c4d206d2c96347828d2e2f28a47bd197470c2989959a118138d60217ac0

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp311-cp311-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e198972849246b99af1fa5dd7dfabbecab2b57d0d564185d6e3a466cbfe138a
MD5 ddc9c2c77e3af0fb63e6c56c51f72fd2
BLAKE2b-256 1c98bac6e243f20ca36f321d9eb824bab1636ef2054432778d568de3ca8ac09c

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: tetra3rs-0.12.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 500.3 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for tetra3rs-0.12.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 95ab8b0cad4cff745aa0cd84be464dd717ed1631e12620ebeca6d6c41f225be6
MD5 a74a2d4b405e6b9ee56b1140975393f6
BLAKE2b-256 7536f29027989c4edf5b46460116f37675fc7ed1215f58ddcb12449ad64fc832

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 df078f07c3f5d12d71af267ede63e498ee6119155017cb452cad19cffe15a6d1
MD5 6c1c4e66d88d4a5ce4196910c9d9d64d
BLAKE2b-256 c185a2f2908f7550ff8a0464a2a7503064bf652d7cd852e92a714c986e0de608

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_x86_64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 632ee2d577ad58ff80747d2aed17da69dbe082e41282ca078961d734481051c1
MD5 efb5832afead2f3b1a0e1e4a29bd8b76
BLAKE2b-256 31c39a23b473d087b2b276661ea55823705e899a9886bb59a04e0535d4b182f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp310-cp310-manylinux_2_28_aarch64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file tetra3rs-0.12.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for tetra3rs-0.12.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d950ff279a51dea7c1521545fd54eff667afe143b84709882963c04a19fec19c
MD5 faa42e36799000d8f8a5b4393f15cbf7
BLAKE2b-256 c276650bf4c1f457c39cf11d4da8aea0cca239e340ee1ab4f431b0ca4d628e03

See more details on using hashes here.

Provenance

The following attestation bundles were made for tetra3rs-0.12.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: publish.yml on ssmichael1/tetra3rs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.13.0

21 files

This release

0.12.0 This release

21 files

0.11.0

21 files

0.10.0

21 files

0.9.0

21 files

0.8.0

21 files

0.7.4

21 files

0.7.3

9 files

0.7.2

21 files

0.7.1

21 files

0.7.0

21 files

0.6.1

21 files

0.6.0

21 files

0.5.1

21 files

0.4.1

21 files

0.4.0

21 files

0.3.2

21 files

0.3.1

21 files

0.3.0

17 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page