French Ephemeris
FrenchEphemeris is a fast, thread safe ephemeris and astrology calculation library
written in Rust, with Python bindings. It computes planetary, lunar and asteroid positions
from NASA/JPL DE441/DE442, the same data JPL Horizons serves, together with house
cusps, ayanamsas, lunar nodes and Lilith, fixed stars, rise and set times, solar and lunar
eclipses, occultations and heliacal events. A pyswisseph style API (swe_compat) lets
existing Swiss Ephemeris code switch with one import change.
It is the engine behind every calculation of FreeAstroAPI, and an independent, clean room alternative to the Swiss Ephemeris.
pip install frenchephemeris # works immediately: years 0 to 2400 are built in
python -m frenchephemeris.packs download # optional: JPL's exact numbers for 1800 to 2401
- Accurate: within 0.0005″ of JPL Horizons for years 0–1550; every eclipse of the NASA Five Millennium Canons found, years 0–2400.
- Fast: ~500,000 positions/s per call from Python, ~4.5 million/s in batches.
- Thread safe: no global state; settings are per thread and per asyncio task.
- Complete: 24 house systems, 46 ayanamsas, 8,969 fixed stars (every naked-eye star), Chiron, Pholus, main asteroids, any numbered asteroid, years −13198 … +17190.
- No setup: the package ships a compact data set for years 0 to 2400; download JPL's exact numbers when you want them, or a 2 MB set for mobile apps.
Contents
- Installation
- Quickstart
- Data packs
- Features
- Accuracy and validation
- Performance
- FrenchEphemeris and the Swiss Ephemeris
- Documentation
- FAQ
- Licensing · Data sources · Trademarks · Disclaimer · Security
Installation
Prebuilt wheels (CPython 3.9 and later, one abi3 wheel per platform):
| Platform | Architectures |
|---|---|
| Linux (manylinux 2.28) | x86_64, aarch64 |
| macOS | Apple Silicon, Intel |
| Windows | x64 |
pip install frenchephemeris
python -m frenchephemeris.packs download # exact JPL data for 1800 to 2401, ~69 MB, SHA-256 checked
The engine reads data packs (JPL coefficients in the FEPK format). The wheel includes a
compact lossy set for years 0 to 2400 (7.7 MB), so the library works right after
pip install. packs download adds JPL's exact numbers from the
packs v1 release;
they are then used wherever they apply, and the built in set covers the other dates. See
Data packs for every set. To build from source you need Rust 1.88+ and
maturin: pip install maturin && maturin build --release.
JavaScript (Node.js 18+, Deno, Bun, browsers): the same engine compiled to WebAssembly, with the 2 MB mobile data set for years 1800 to 2400 included.
npm install frenchephemeris
import { load, julday } from "frenchephemeris";
const eph = await load();
eph.chart(julday(1990, 5, 17, 14.5), 48.8566, 2.3522); // planets with signs, houses
See js/README.md. Build it with tools/build_npm.sh.
Quickstart
Python, pyswisseph style
import frenchephemeris.swe_compat as swe
jd = swe.julday(1990, 5, 17, 14.5) # UT
(lon, lat, dist, speed, *_), _ = swe.calc_ut(jd, swe.MOON, swe.FLG_SPEED)
cusps, ascmc = swe.houses(jd, 48.8566, 2.3522, b"P") # Placidus, Paris; ascmc[0] = Ascendant
swe.set_sid_mode(swe.SIDM_LAHIRI) # this thread / async task only
(sid_lon, *_), _ = swe.calc_ut(jd, swe.SUN, swe.FLG_SIDEREAL)
xx, name, _ = swe.fixstar2_ut("Spica", jd, 0) # fixed stars by name
Most code written for pyswisseph runs after replacing import swisseph as swe with
import frenchephemeris.swe_compat as swe. See the
migration notes.
Python, native engine and NumPy batches
import numpy as np
import frenchephemeris as fe
eng = fe.open_default() # every installed pack
times = 2448029.1 + np.arange(10_000.0) # JD UT
pos = eng.calc_batch_ut(times, list(range(10))) # Sun .. Pluto, shape (10000, 10, 6)
sid = eng.calc_batch_ut(times, [1], sidereal="lahiri", topo=(2.3522, 48.8566, 35.0))
Batches run without the GIL and return NumPy arrays: longitude, latitude, distance and their speeds.
Rust
[dependencies]
fe-core = { git = "https://github.com/FreeAstroApi/frenchephemeris", tag = "v1.5.0" }
use fe_core::context::{Body, CalcOptions, Engine};
fn main() -> fe_core::Result<()> {
let eng = Engine::open("packs/fepk-de441-de442-v1.bin".as_ref())?;
let moon = eng.calc_ut(Body::Moon, 2448029.104166667, &CalcOptions::default())?;
println!("Moon {:.6}°, {:.4}°/day", moon.lon, moon.lon_speed);
Ok(())
}
Data packs
python -m frenchephemeris.packs download --set <name> fetches a set and checks every file
against published SHA-256 sums. list shows every pack, path prints the data directory.
| Set | Size | Years | Fidelity | Use |
|---|---|---|---|---|
built in (lite) |
7.7 MB, in the wheel | 0 … 2400 | lossy, planets ≤ 0.007″, Moon ≤ 0.4″ | works with no download |
modern (the default download) |
~69 MB | 1800 … 2401 | JPL coefficients, bit identical | exact results for modern charts |
full |
~256 MB | −2 … 2581 | bit identical | exact results for every era |
dev |
~27 MB | 1900 … 2100 | bit identical | development, CI |
extended |
~305 MB | −13198 … 17190 | refit, ≤ 0.001″ planets | ancient and far future dates |
asteroids |
~108 MB | varies | refit | 326 asteroids used in astrology |
compact |
~13 MB | 1800 … 2400 | lossy, planets ≤ 0.001″, Moon ≤ 0.04″ | small installs |
mobile |
~2 MB | 1800 … 2400 | lossy, planets ≤ 0.007″, Moon ≤ 0.4″ | mobile and embedded apps |
Packs go to $FRENCHEPHEMERIS_DATA if set, otherwise a per user data directory
(~/.local/share/frenchephemeris/packs, ~/Library/Application Support/frenchephemeris/packs
or %LOCALAPPDATA%\frenchephemeris\packs). $FRENCHEPHEMERIS_PACK names the main pack
directly. Packs are memory mapped, so worker processes share them. Exact packs are always
preferred; the built in set answers only for dates or bodies they do not cover
(FRENCHEPHEMERIS_NO_FALLBACK=1 turns that off). Outside every loaded pack, calls raise an
error instead of returning an approximation.
Features
| Area | What is included |
|---|---|
| Bodies | Sun, Moon, Mercury … Pluto; mean and true lunar node; mean, osculating and interpolated Lilith (apogee and perigee); Chiron, Pholus, Ceres, Pallas, Juno, Vesta, Eris, Eros; a 326-asteroid bundle; any numbered asteroid on demand from JPL; Uranian and other hypothetical bodies |
| Coordinates | apparent, true or astrometric; geocentric, topocentric, heliocentric, barycentric, planet centric; ecliptic or equatorial; of date, J2000 or ICRS; Cartesian; speeds |
| Houses | 24 systems (Placidus, Koch, Whole Sign, Equal, Campanus, Regiomontanus, Porphyry, Alcabitius, Topocentric, Morinus, Meridian, Gauquelin sectors, Krusinski, APC, Sunshine, …), house position of a point, plus variants anchored on the Sun, Moon or nodes (house_variants) |
| Sidereal | 46 ayanamsas (Lahiri, Raman, Krishnamurti, Fagan/Bradley, True Citra, True Pushya, J.N. Bhasin, Sheoran, galactic centre and Babylonian modes, …), user defined, all SIDBIT options |
| Stars | 8,969 fixed stars: every Hipparcos star down to magnitude 6.5, from the Hipparcos New Reduction, with IAU names, rigorous space motion |
| Events | rise, set and meridian transit, twilight; Sun, Moon and heliocentric crossings (ingresses, returns); solar and lunar eclipses (global and local); lunar occultations; heliacal rising and setting; in the Rust core also exact aspects, lunations and stations (fe_core::search) |
| Time | Delta T from observations, IERS predictions and a published long term model; UTC with leap seconds; TT, TDB, UT1; calendar conversions |
| Extensions | optional charts away from Earth: an observer on Mars, the Moon or any planet out to Pluto, at a world's centre or anywhere in space, with houses, horizon, Earth's or the world's own zodiac, and Mars time (frenchephemeris.ext.space, cargo feature space) |
| Uncertainty | 1σ position error and an "uncertain" flag for Chiron, Pholus, Eris and Eros from JPL's orbit covariance (minor_uncertainty) |
The complete function list is in the user guide.
Accuracy and validation
| Check | Result |
|---|---|
| Positions vs JPL Horizons (astrometric, years 0–1550, same DE441) | ≤ 0.0005″ |
| After 1550 (DE442 vs Horizons' DE441) | ≤ 0.13″ inner planets, Sun, Moon; ≤ 1.76″ Uranus–Pluto |
| Agreement with Swiss Ephemeris 2.10, 1800–2100 charts | Sun ≤ 0.07″, Moon ≤ 0.83″, nodes ≤ 0.04″; no sign or retrograde changes in 8,400 samples |
| 10,000 random births through a full astrology API (Western, Vedic, dasha, KP, panchang) | no sign, nakshatra, pada or dasha lord changed for 1900–2025 |
| Eclipses vs the NASA Five Millennium Canons, years 0–2400 | 0 missed, 0 spurious, 0 type mismatches |
| Eclipse contacts vs NASA's Besselian elements | 0.4 s median (Swiss: 4–6 s) |
Every figure has its method, sample and reproduction command in the engine report and the topic reports listed under Documentation.
Performance
Measured on an Apple M4 with tools/bench_throughput.py --swiss (Python, 10 bodies, random
dates 1900–2100, with speeds):
| Positions per second | FrenchEphemeris | Swiss Ephemeris 2.10 |
|---|---|---|
| One body per call, 1 thread | ~500,000 | ~313,000 |
| One body per call, 8 threads | ~580,000 | ~311,000 |
| Sidereal (Lahiri), 1 thread | ~386,000 | ~262,000 |
| Batch API, 10 bodies × 10,000 times | ~4,460,000 | , |
The engine is immutable and Send + Sync; single positions keep the GIL (a few
microseconds of work), batches and searches release it.
FrenchEphemeris and the Swiss Ephemeris
FrenchEphemeris is an independent implementation, written from published sources only.
Where an independent reference exists (JPL
Horizons, NASA eclipse canons, IERS Delta T), FrenchEphemeris is the closer of the two;
where none exists (future Earth rotation, Mean Lilith conventions), the reports say so. Data
files are a choice: Swiss ships small lossy files, FrenchEphemeris ships JPL's numbers
bit identical, plus a lossy mobile set that is smaller than Swiss's files for the same
years. The full point by point comparison is in
docs/ENGINE_REPORT.md
and docs/SWISS_GAP_ANALYSIS.md.
Documentation
| Document | Contents |
|---|---|
| User guide | installation, packs, swe_compat, native engine, bodies, houses, sidereal, stars, events, threads, errors, Rust |
| Documentation index | every report, with what it validates |
| Online docs | the same quickstart on freeastroapi.com |
| Engine report | accuracy, Swiss compatibility, speed |
| Pack format | the FEPK file format |
| Charts away from Earth | the space extension: method and validation against JPL Horizons |
| Changelog | releases |
FAQ
What is FrenchEphemeris? An open source ephemeris library for Python and Rust that computes the positions of the Sun, Moon, planets, asteroids and stars from NASA/JPL data, with the geometry astrology needs: houses, ayanamsas, nodes, crossings, eclipses and rise/set times.
Is it a replacement for pyswisseph and the Swiss Ephemeris?
Yes for most code. frenchephemeris.swe_compat accepts pyswisseph's function names, flags
and return shapes (calc_ut, houses, set_sid_mode, fixstar2_ut, rise_trans,
eclipse functions and more). Results agree with Swiss Ephemeris 2.10 to under 1″ for modern
charts. It is an independent implementation, not affiliated with the Swiss Ephemeris.
How accurate is it? It reads JPL's DE441/DE442 coefficients directly: within 0.0005″ of JPL Horizons for years 0–1550, and within 0.13″ for the Sun, Moon and inner planets after 1550 (where it uses the newer DE442). Charts display 0.001° = 3.6″, far coarser than either figure.
Which data files do I need, and how large are they?
None to start: the package includes a compact set for years 0 to 2400 (planets within
0.007″ of JPL, Moon within 0.4″). python -m frenchephemeris.packs download adds JPL's exact
numbers for 1800 to 2401 (69 MB), --set full for −2 to 2581 (256 MB), and --set mobile
(2 MB) is a lossy set for apps.
Can I use it in a mobile or embedded app?
Yes. The mobile set is 2.03 MB for 1800–2400, planets, Moon and minor bodies included,
with planets within 0.007″ and the Moon within 0.4″ of JPL. The Rust crate depends only on
memmap2 and thiserror.
Is it thread safe? Can I use it in FastAPI, Django or Celery?
Yes. There is no global mutable state; the sidereal mode, observer position and Delta T
settings in swe_compat are stored per thread and per asyncio task, so concurrent requests
never see each other's settings.
Does it support Vedic and KP astrology? Yes: 46 ayanamsas including Lahiri, Raman, Krishnamurti and True Chitra, sidereal houses, nakshatra ready longitudes, the true node, and sunrise times for panchang. FreeAstroAPI runs its Vedic, KP and dasha endpoints on it.
Which date range is covered?
Years 0 to 2400 out of the box, −2 to 2581 with --set full, and −13198 to +17190 with the
extended packs. Outside the loaded range, calls raise an error.
Is it free for commercial use? Yes under the AGPL-3.0, provided you meet its conditions (including publishing the source of modified versions you offer over a network). For closed source products, the commercial licence costs USD 200 once per company, with every future version and unlimited end users.
Who maintains it, and is it used in production? Gabriel Naulleau (FreeAstroAPI). It has computed every FreeAstroAPI response since October 2026.
How do I report a bug or a security issue? Open an issue for wrong results or crashes; report vulnerabilities privately as described in SECURITY.md.
Licensing
FrenchEphemeris is dual licensed:
- AGPL-3.0-only (LICENSE), free, with the AGPL's obligations, including offering the source of modified versions to users who interact with them over a network (§ 13); or
- a commercial licence, USD 200 one time, per company, for the full term of copyright with all updates, including use behind your own APIs and apps for unlimited end users, for closed source or otherwise non AGPL use; see the commercial licence terms, contact contact@freeastroapi.com.
SPDX: AGPL-3.0-only OR LicenseRef-FrenchEphemeris-Commercial.
Copyright (C) 2026 Gabriel Naulleau EI, trading as FreeAstroAPI.
Contributions require the contributor licence agreement in CONTRIBUTING.md.
Data sources and attribution
Third party data and their terms are listed in NOTICE: NASA/JPL DE441/DE442 and
small body ephemerides (Park et al. 2021), ERFA (BSD-3) coefficient tables, the IAU WGSN
star names (CC BY 4.0), Hipparcos (ESA; van Leeuwen 2007), SIMBAD (CDS), IERS EOP and leap
seconds, USNO and Stephenson–Morrison–Hohenkerk Delta T, NASA eclipse catalogues
(F. Espenak), the ELP 2000-82B and ELP/MPP02 lunar theories (Chapront-Touzé, Chapront,
Francou), and the published astronomy and astrology
definitions behind each feature. Per constant provenance is in the docs/*REPORT*.md files.
The Swiss Ephemeris was used only as a black box oracle through its public API to measure
compatibility. No Swiss code, data files or outputs are part of this repository; the
oracle comparison fixtures are kept in a private corpus (FE_ORACLE_DIR), and the tests
that need them are skipped without it.
Trademarks
"Swiss Ephemeris" is a trademark of its owner. FrenchEphemeris is an independent
implementation; it is not affiliated with, sponsored or endorsed by the owner or the
authors of the Swiss Ephemeris. The
name is used here only to describe compatibility and to report measured comparisons. The
swe_compat Python module is an interface compatibility layer that accepts the same
function names and argument shapes; it contains no Swiss Ephemeris code.
"FrenchEphemeris" and "FreeAstroAPI" are trade names of Gabriel Naulleau EI; see TRADEMARKS.md for how forks and derived works may refer to them.
Disclaimer
FrenchEphemeris is provided "as is", without warranty of any kind, as stated in the AGPL-3.0 (sections 15–16) and in the commercial licence. Results are intended for astrology, education and general astronomy. It is not designed or certified for navigation, surveying, spacecraft operations, legal or civil timekeeping, or any safety critical use. Positions far from the present (before about 1600 and after about 2100) inherit the uncertainties of the underlying models (Delta T, minor body orbits), which are documented in the reports.
Security
See SECURITY.md to report a vulnerability. Community rules are in CODE_OF_CONDUCT.md.
Metadata
Release files for frenchephemeris 1.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| frenchephemeris-1.5.0.tar.gz | 2.1 MB | With provenance | Details for frenchephemeris-1.5.0.tar.gz |
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| frenchephemeris-1.5.0-cp39-abi3-win_amd64.whl | CPython 3.9 | abi3 | Windows x86-64 | Details for frenchephemeris-1.5.0-cp39-abi3-win_amd64.whl |
| frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_x86_64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ x86-64 | Details for frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_x86_64.whl |
| frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_aarch64.whl | CPython 3.9 | abi3 | Linux glibc 2.28+ ARM64 | Details for frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_aarch64.whl |
| frenchephemeris-1.5.0-cp39-abi3-macosx_11_0_arm64.whl | CPython 3.9 | abi3 | macOS 11.0+ ARM64 | Details for frenchephemeris-1.5.0-cp39-abi3-macosx_11_0_arm64.whl |
| frenchephemeris-1.5.0-cp39-abi3-macosx_10_12_x86_64.whl | CPython 3.9 | abi3 | macOS 10.12+ x86-64 | Details for frenchephemeris-1.5.0-cp39-abi3-macosx_10_12_x86_64.whl |
Total release size: 49.1 MB
Release files / frenchephemeris-1.5.0.tar.gz
| Download URL | frenchephemeris-1.5.0.tar.gz |
|---|---|
| Size | 2.1 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84ba840e9dd91a54d78e70c884f2f725939a299d39f779594bc824a389d7171c
|
|
BLAKE2b-256 checksum How to use checksums |
6525883564182c7da2658e610d26fa19b51427d02984dcbee1e2dce75602777d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / frenchephemeris-1.5.0-cp39-abi3-win_amd64.whl
| Download URL | frenchephemeris-1.5.0-cp39-abi3-win_amd64.whl |
|---|---|
| Size | 9.2 MB |
| Tags | CPython 3.9 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d351140b583652c417bf54d7f654dd140bc9972b3ea88db7470794c85c260ee5
|
|
BLAKE2b-256 checksum How to use checksums |
008c93a522636e01582de9722334734eb32b433ab0d691b10f1455aaa79d712a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_x86_64.whl
| Download URL | frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 9.5 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
24253c1ad987e71f680833d4c389aa0b073741272109c32fd1628c269c97c151
|
|
BLAKE2b-256 checksum How to use checksums |
2a0685234443f4333fe409dd2c7b70765db632ed537233f7f8b6cb86db017447
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_aarch64.whl
| Download URL | frenchephemeris-1.5.0-cp39-abi3-manylinux_2_28_aarch64.whl |
|---|---|
| Size | 9.7 MB |
| Tags | CPython 3.9 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
defcdd3eee3a7bdd488bd29e69fc39d9ab462fdf70a3caf62f448e6c33add901
|
|
BLAKE2b-256 checksum How to use checksums |
4c33349ded19854f96ef78dfc0aeea531d09677081040e01531c847bc29f0fcf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / frenchephemeris-1.5.0-cp39-abi3-macosx_11_0_arm64.whl
| Download URL | frenchephemeris-1.5.0-cp39-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.9 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
26e5aa47484a54a106537f3483d9e50475e20c32b16b78de4c897f127e6945a9
|
|
BLAKE2b-256 checksum How to use checksums |
6b7d0b0abbaf8c688aa27f82e5b84dd3e720a34fcee6a675b1b8b6c0557ec665
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logRelease files / frenchephemeris-1.5.0-cp39-abi3-macosx_10_12_x86_64.whl
| Download URL | frenchephemeris-1.5.0-cp39-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 9.3 MB |
| Tags | CPython 3.9 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
a62ff12fd65fa1c4e3a21ecfd89447706e6f56ba66df94633f4f543826610386
|
|
BLAKE2b-256 checksum How to use checksums |
d80e81c0a5eb4596735adf565fe62e506a0fffa0754da86025cb6877621a5612
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logSecurity for frenchephemeris 1.5.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 6 files in this release have been uploaded with provenance metadata.
Attestation for frenchephemeris-1.5.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 31, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.