Skip to main content

rust-ephem logo

rust-ephem

PyPI version Python 3.10+ Rust License Documentation

Fast ephemeris generation and target visibility calculations for space and ground-based telescopes.

rust-ephem is a Rust library with Python bindings for high-performance satellite and planetary ephemeris calculations. It propagates Two-Line Element (TLE) data and SPICE kernels, outputs standard coordinate frames (ITRS, GCRS), and integrates with astropy for Python workflows. It achieves meters-level accuracy for Low Earth Orbit (LEO) satellites with proper time corrections. It also supports ground-based observatory ephemerides.

Built for performance: generates ephemerides for thousands of time steps using Rust's speed and efficient memory handling. Ideal for visibility calculators where speed is critical (e.g. APIs serving many users) and large-scale ephemeris tasks where it outperforms pure-Python libraries by an order of magnitude.

rust-ephem outputs ephemerides as astropy SkyCoord objects, eliminating manual conversions and enabling seamless integration with astropy-based workflows. By default, it includes Sun and Moon positions in SkyCoord with observer location and velocity, correctly handling motion effects like Moon parallax in LEO spacecraft. It also supports ephemerides for other solar system bodies.

rust-ephem also has a constraint system that enables flexible evaluation of observational constraints for ephemeris planning, including Sun and Moon proximity, Earth limb avoidance, and generic body proximity. It supports logical operators (AND, OR, NOT, XOR) for combining constraints, with Python operator overloading (&, |, ~, ^) for intuitive composition. Built on Pydantic models, it allows JSON serialization and direct evaluation against ephemeris objects for efficient visibility and planning calculations.

Features

  • Rust for Speed: Full featured Python module built on a Rust core for maximum efficiency
  • Multiple Ephemeris Types: TLE (SGP4), SPICE kernels, ground observatories, CCSDS OEM files supported
  • Coordinate Frames: TEME, ITRS, GCRS with automatic transformations
  • Astropy Integration: Direct SkyCoord output for satellite, Sun, Moon, Earth and other solar system body positions
  • High Accuracy: UT1-UTC and polar motion corrections using IERS EOP data
  • Constraint System: Calculate target visibility with Sun/Moon avoidance, Earth limb, eclipses with logical operators (&, |, ~)
  • JPL Horizons Fallback: Automatically query NASA JPL Horizons for bodies not in SPICE kernels, including asteroids and comets
  • Type Support: strong type support for use with mypy, pyright etc.

Installation

pip install rust-ephem

Note that if a binary wheel for your operating system dos not exist on PyPI, this will build from source. This will require your computer to have a valid Rust installation, and other dependencies may be required. If you require a specific architecture, please put in an Issue.

Quick Start

Satellite Ephemeris from TLE

This example generates an ephemeris for the ISS from a TLE. The TLE is downloaded automatically (and cached) from Celestrak.

import rust_ephem
from datetime import datetime, timezone

# Define time range
begin = datetime(2024, 1, 1, 0, 0, 0, tzinfo=timezone.utc)
end = datetime(2024, 1, 1, 1, 0, 0, tzinfo=timezone.utc)

# Create ephemeris from NORAD ID (fetches from Celestrak)
ephem = rust_ephem.TLEEphemeris(
    norad_id=25544,  # ISS
    begin=begin,
    end=end,
    step_size=60
)

# Access positions as astropy SkyCoord
satellite = ephem.gcrs      # Satellite in GCRS frame
sun = ephem.sun             # Sun position
moon = ephem.moon           # Moon position

# Or access raw position/velocity data (km, km/s)
print(f"Position: {ephem.gcrs_pv.position[0]}")
print(f"Velocity: {ephem.gcrs_pv.velocity[0]}")

Ground Observatory

Ground-based observatories can also have an ephemeris generated for them. This is useful if you need a one-system-fits all approach that includes both space and ground based telescopes.

import rust_ephem
from datetime import datetime, timezone

begin = datetime(2024, 1, 1, 12, 0, 0, tzinfo=timezone.utc)
end = datetime(2024, 1, 1, 13, 0, 0, tzinfo=timezone.utc)

# Mauna Kea Observatory
obs = rust_ephem.GroundEphemeris(
    latitude=19.8207,
    longitude=-155.468,
    height=4205.0,  # meters
    begin=begin,
    end=end,
    step_size=60
)

# Sun and Moon positions from observatory
sun = obs.sun
moon = obs.moon

Target Visibility

rust-ephem can calculate visibilities for celestial targets. It does this by defining constraints, which are True when a target cannot be observed. These constraints can be combined using logical operators, and then evaluated using the telescope Ephemeris. Note the | (or) operator is used here to combine the Sun and Moon constraint, as if we used & (and) the constraint would only be true if the target was too close to the Sun and Moon.

import rust_ephem
from rust_ephem.constraints import SunConstraint, MoonConstraint

# Initialize planetary ephemeris (required for constraints)
rust_ephem.ensure_planetary_ephemeris()

# Create combined constraint: avoid Sun within 45° OR Moon within 10°
constraint = SunConstraint(min_angle=45.0) | MoonConstraint(min_angle=10.0)

# Evaluate against ephemeris for a target (Crab Nebula)
result = constraint.evaluate(ephem, target_ra=83.63, target_dec=22.01)

# Get visibility windows
for window in result.visibility:
    print(f"{window.start_time} to {window.end_time}")

Shared-Axis Multi-Instrument Constraints (Boresight Offsets)

For observatories with multiple instruments on the same mount, you can require that the primary target direction is also valid for a secondary instrument whose boresight is offset by fixed Euler angles.

Two roll concepts are supported:

  • boresight_offset(..., roll_deg=<value>, ...) — the fixed mechanical roll of the instrument relative to the spacecraft coordinate frame. Defaults to 0.0 (instrument aligned with spacecraft). This is a property of the hardware, not the observation.
  • evaluate(..., target_roll=...) / in_constraint_batch(..., target_roll=...) — the commanded spacecraft roll at observation time, applied on top of the instrument offset. This is separate so you can test different roll states without redefining the instrument.
  • boresight_offset(..., roll_reference=...) defaults to "north" (celestial-north-projected +Z at roll=0). Use "sun" if you need Sun-projected +Z at roll=0.
  • instantaneous_field_of_regard with no target_roll sweeps all spacecraft roll angles and counts a direction accessible if any roll satisfies the constraint, giving the maximum reachable sky.

Remember: constraints are True when the target is not visible. So if either primary or secondary instrument is blocked, the combined constraint should be True (use |).

import rust_ephem
from rust_ephem.constraints import SunConstraint, MoonConstraint

rust_ephem.ensure_planetary_ephemeris()

# Primary instrument constraints (evaluated at commanded pointing)
primary = (
  SunConstraint(min_angle=45.0)
  | MoonConstraint(min_angle=12.0)
)

# Secondary instrument constraints (evaluated at boresight-offset direction)
secondary = (
  SunConstraint(min_angle=45.0)
  | MoonConstraint(min_angle=12.0)
)
secondary_offset = secondary.boresight_offset(
    pitch_deg=1.2,     # roll_deg=0.0 (default) = instrument aligned with spacecraft
    yaw_deg=-0.8,
)

# Commanded pointing is invalid if either instrument is blocked
combined = primary | secondary_offset

result = combined.evaluate(ephem, target_ra=83.63, target_dec=22.01)
print(result.all_satisfied)

# Evaluate same pointing at a specific spacecraft roll state
result_roll = combined.evaluate(
  ephem,
  target_ra=83.63,
  target_dec=22.01,
  target_roll=95.0,
)
print(result_roll.all_satisfied)

Pydantic constraint configs support the same pattern:

from rust_ephem.constraints import SunConstraint, MoonConstraint

primary = SunConstraint(min_angle=45.0) | MoonConstraint(min_angle=12.0)
secondary = SunConstraint(min_angle=45.0) | MoonConstraint(min_angle=12.0)
combined = primary | secondary.boresight_offset(pitch_deg=1.2, yaw_deg=-0.8)  # roll_deg=0.0, FoR sweeps all spacecraft rolls

# Apply spacecraft roll at evaluation time
result = combined.evaluate(ephem, target_ra=83.63, target_dec=22.01, target_roll=95.0)

Threshold Combinator (k-of-n Violated)

Use at_least when you want a combined constraint to be blocked only after a minimum number of sub-constraints are violated.

from rust_ephem.constraints import SunConstraint, MoonConstraint, EclipseConstraint

sun = SunConstraint(min_angle=45.0)
moon = MoonConstraint(min_angle=10.0)
eclipse = EclipseConstraint(umbra_only=True)

# Block target when at least 2 of these 3 constraints are violated
constraint = sun.at_least(2, moon, eclipse)

result = constraint.evaluate(ephem, target_ra=83.63, target_dec=22.01)
print(result.all_satisfied)

Notes:

  • Constraints are True when blocked/not visible.
  • min_violated=1 behaves like OR over violations.
  • min_violated=len(constraints) behaves like AND over violations.

Instantaneous Field of Regard (steradians)

You can compute the visible sky solid angle at a single timestamp for any constraint (single or combined):

from rust_ephem.constraints import SunConstraint, MoonConstraint

constraint = SunConstraint(min_angle=45.0) | MoonConstraint(min_angle=12.0)

# Evaluate at a single ephemeris index (fastest path)
field_sr = constraint.instantaneous_field_of_regard(
  ephemeris=ephem,
  index=0,
  n_points=20000,
)

print(f"Field of regard: {field_sr:.3f} sr")
print(f"Visible sky fraction: {field_sr / (4.0 * 3.141592653589793):.2%}")

Notes:

  • Exactly one of time or index must be provided.
  • Return value is in steradians, range [0, 4π].
  • Constraints are True when blocked/not visible, so this computes area where constraints are False.

JPL Horizons Fallback

For bodies not available in SPICE kernels (asteroids, comets, spacecraft, etc.), enable JPL Horizons fallback with use_horizons=True:

import rust_ephem

eph = rust_ephem.TLEEphemeris(norad_id=25544, begin=begin, end=end)

# Query Ceres (NAIF ID 1) using JPL Horizons
result = eph.get_body("1", use_horizons=True)
print(result)  # SkyCoord position

# Also works with moving_body_visibility constraints
from rust_ephem.constraints import moving_body_visibility, SunConstraint
constraint = SunConstraint(min_angle=45)
visibility = moving_body_visibility(
    constraint=constraint,
    ephemeris=eph,
    body="2",  # Pallas
    use_horizons=True
)

TLE Sources

rust-ephem supports multiple ways to fetch TLE data for the TLEEphemeris class:

# Direct TLE strings
ephem = rust_ephem.TLEEphemeris(tle1, tle2, begin, end, step_size)

# From file path
ephem = rust_ephem.TLEEphemeris(tle="path/to/satellite.tle", begin=begin, end=end)

# From URL (cached for 24 hours)
ephem = rust_ephem.TLEEphemeris(tle="https://celestrak.org/...", begin=begin, end=end)

# From NORAD ID (Celestrak, or Space-Track.org with credentials)
ephem = rust_ephem.TLEEphemeris(norad_id=25544, begin=begin, end=end)

# From satellite name
ephem = rust_ephem.TLEEphemeris(norad_name="ISS", begin=begin, end=end)

# Using fetch_tle
tle = fetch_tle(norad_id=25544)
ephem = rust_ephem.TLEEphemeris(tle=tle, begin=begin, end=end)

For Space-Track.org integration, set credentials via environment variables or .env file:

SPACETRACK_USERNAME=your_username
SPACETRACK_PASSWORD=your_password

Documentation

For comprehensive documentation including:

Visit rust-ephem.readthedocs.io

Building from Source

A full Rust toolchain should be installed.

# Install maturin
pip install maturin

# Build and install in development mode
maturin develop

# Or build a release wheel
maturin build --release
pip install target/wheels/*.whl

License

Apache 2.0

Contributing

Contributions welcome! Please open an issue or pull request.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rust_ephem-0.14.2.tar.gz (754.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

rust_ephem-0.14.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

rust_ephem-0.14.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

rust_ephem-0.14.2-cp314-cp314-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rust_ephem-0.14.2-cp314-cp314-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

rust_ephem-0.14.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

rust_ephem-0.14.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

rust_ephem-0.14.2-cp313-cp313-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rust_ephem-0.14.2-cp313-cp313-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

rust_ephem-0.14.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

rust_ephem-0.14.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

rust_ephem-0.14.2-cp312-cp312-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rust_ephem-0.14.2-cp312-cp312-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

rust_ephem-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

rust_ephem-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

rust_ephem-0.14.2-cp311-cp311-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rust_ephem-0.14.2-cp311-cp311-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

rust_ephem-0.14.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

rust_ephem-0.14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

rust_ephem-0.14.2-cp310-cp310-macosx_11_0_arm64.whl (2.2 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rust_ephem-0.14.2-cp310-cp310-macosx_10_12_x86_64.whl (2.4 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

File details

Details for the file rust_ephem-0.14.2.tar.gz.

File metadata

  • Download URL: rust_ephem-0.14.2.tar.gz
  • Upload date:
  • Size: 754.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for rust_ephem-0.14.2.tar.gz
Algorithm Hash digest
SHA256 accc369359dcf1cd314bfd32eafe94dbf2dd3445824543b6dfaf4ea90ab5c7f0
MD5 083b01e2969853904a09a6c2a32d898d
BLAKE2b-256 e24e21162174d52f8e8bf10153ccdd623d0433171a07f3221f59f7bf41520a91

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 df79e3ba090811aa877e21d38de66bdba4a7904f89e07faeb0019dcc438bc38f
MD5 87968bf64169aa405777ad7c69eb764c
BLAKE2b-256 bcabbb96fa8044734c250e26f0fdd0a3c653dfdbc5f842e67bf88cd441c22667

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 0f67f3cda0e269a6bdcf05288ea9d3cb3e302df69258ba62defd539e84ec6da5
MD5 35aa2e311d1b587530dbac0cc685e018
BLAKE2b-256 cf4b89228216153409c8672039bab8cc746dd298f5bed2d7cf83c8dab0d63f3f

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de438a1d6891755eff8d97f053247c684be37f08c4dd94ffc169e861d46b7e0f
MD5 07abc9a25b9f0c648ee52429fa69ae41
BLAKE2b-256 51eb8fb55ba8eaec8e2938e6be739e59bc1bfff3cc28fcc27a7164af50e8b038

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 c06ff75a58946790676e59180fdf6fe5ee8bb19806800b32b70b060f22282ed5
MD5 db53a8932f50bd51fa16b85ef61f8436
BLAKE2b-256 686b9c2689471e5ae9d442af88b191efbe6c474c7315b42255a9c0cce7823e4d

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3c2483554cfe37fb3da553cf7ca17e88da3a04d1259823778a7ea088a084387d
MD5 0265e3740f2e9c6349a46f790a805c7a
BLAKE2b-256 d7349708ee18795794b5f6994df0a3b0a2aac421c3bf0c54725838c76dfdaecc

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 67d83d33401f2c4d1dc00d17b55ae80f117834f70760950ecaf04eba5c00fddc
MD5 229f2916ecb6bb907bb79444ee397b35
BLAKE2b-256 059e1a24b36744a9d917bf978a6b31826f69046fc87e61d987d6c3d33a4abbcd

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2408af75a2b8ef7baa9ab54608523a947c23f5ce555594cf431fed3520fd808b
MD5 4186e2fa616ebd73ab22c4da9aea44ee
BLAKE2b-256 028526ccd41984c159bb3d085072db296af1581a7910dbfdfb94ab4fe8fdacea

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1308a74023d487c6fdf0dbe823792c811c14740844e938246452b99ab44e8239
MD5 3a7f9f4510ba37b33d40a0be8d1249b1
BLAKE2b-256 0d449f473fd53b02b8656b8995af61fd0b0e27a9ecc2acd7207abfb1ba1c25db

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b6d2d175d98b9b3225a05034b0d792c8a7c930cd6f532bed38dfb2cc6e14c4c
MD5 eb33d117729528a7eac571aefdf4c835
BLAKE2b-256 91a1939094532b023255b951d098bfed916e1fbc9cd8665d0e30135badbb6445

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5ce6d7140ffc795e2f9eb0b314f8e7a83f25518e85e8e778f58a501c1b34e03b
MD5 96c5f4c6ed74a761cb99f5bbf19a9a36
BLAKE2b-256 8284518256f225d551e3f04fdcaaf9857c6bfe52bfce2a91e093dead597bd26d

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 609cb2a610101c7e6ac7e9d0ebed06911dee034ac837e2a6243eb35eb933bc0c
MD5 b70b8e46b7b4b3e69cb617d10d90de9e
BLAKE2b-256 c2e67d7cf0f8ad0dd26f0dbb4a5a7617dfce1c0013f84e24b63c16ded0a4000d

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2c69f45a68e2e35f3c201194be90f7c39d316ec6675a7ea2f2e900c7fca7b0a1
MD5 0118f508378e65ad4268b2a77449eee0
BLAKE2b-256 d605d9cc69b6f881e3a3207f5b4377b90b56d4ece245bef576cac85030ab32b7

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 736d0d14563b792169510ef27ec5d2e45b9bf76d426d8e253c5fadbac9a2b6b9
MD5 0e567cb40f2d347166a0e51842252e88
BLAKE2b-256 753ccefa5d98bde05fff7c9fb7b6320f7986d0113714a085b22e923c1894cd85

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bdfaf630b498045287101cffc0d84960cb46b4caa7200fbc524306e17ff1347f
MD5 ce25706444622d43fd9684fff88c82b2
BLAKE2b-256 2142d008914a491d99c17ab30079e72117659b29fbd2cc718ae800754dfa4ba9

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 535be86e3a19e384cfa61409e86e660587c23b7eb32e8f8a31291cb970c05e26
MD5 3cc6a23638ebedb70df2001b11be55c1
BLAKE2b-256 41fd6d8ce6517228d08a7f935cf997cf493e5e1b20a80a4a1c09c9ed2bd54b92

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e3c9861803d2f33069ac4fc351bc81cae27d448a9e858c1e1e82c09f806e87f0
MD5 087b047e661a8388d8c632da386ea394
BLAKE2b-256 c1c049f9d837ebe9a83fe48e2af8afa3d4225302392072402745d6e98c7b2f6a

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d6cd206a3f84d31a1ea03b88628331157296d730bd85adfca638e3e1fe1fd4de
MD5 6b946ea5dbf2528b158094d81705ed44
BLAKE2b-256 87ca3bf381614d3986513ef76f5e543ceca7ade8ebffa37e16f87801ae9f4c34

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 230d4422015994b7337d490ad83a3d5e286fcc435d1b2e21adf9149734100ab4
MD5 6a964f6f06beb1da8d5c82cffbfa0894
BLAKE2b-256 91f2ae4042a428c387d4d6eff0c8f171b28e4324eafa3465d8d0930f438ad7fd

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 44127e2973742b0c865c1ac0fba1c3e8faca218dc76db753d5183df2da650ba6
MD5 d843c8b83f6a2d36f9f77c187eb3de7c
BLAKE2b-256 6c0a2f254efc3285a7fedcaa616ec643bab9a46549712dd9a9ab6076a5298718

See more details on using hashes here.

File details

Details for the file rust_ephem-0.14.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rust_ephem-0.14.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0cbc3bbeabe2360262752771f95f8ebf7782f351f012480cf6b89307bd6b7cbb
MD5 0f7e230f57844aec5f789a4585f92bdd
BLAKE2b-256 ba0195dc096adc1743d4696c0fa82eafad11303d7db7710ea875b30a932fd0e7

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.14.2 This release

21 files

0.14.1

21 files

0.14.0

21 files

0.13.0

21 files

0.12.0

21 files

0.11.1

21 files

0.11.0

21 files

0.10.1

21 files

0.10.0

21 files

0.9.2

21 files

0.9.1

21 files

0.9.0

21 files

0.8.0

21 files

0.7.0

21 files

0.6.0

21 files

0.5.2

21 files

0.5.1

21 files

0.5.0

21 files

0.4.0

21 files

0.3.2

21 files

0.3.1

21 files

0.3.0

21 files

0.2.1

21 files

0.2.0

21 files

0.1.15

21 files

0.1.14

21 files

0.1.13

21 files

0.1.12

21 files

0.1.11

21 files

0.1.10

21 files

0.1.9

21 files

0.1.8

21 files

0.1.7

21 files

0.1.6

21 files

0.1.5

21 files

0.1.4

21 files

0.1.3

21 files

0.1.2

21 files

0.1.0

21 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page