Observed since 20 Oct, 20:54 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
AetherField runtime ephemeris
AetherField is a lightweight, modular system for computing astrological positions, signs, and alignments across multiple time representations. This is meant to replace the frozen or outdated zodiac libraries, with a dynamic stellar gazing tool.
It is designed to sit cleanly on top of my own temporal layer moontime while remaining flexible enough to integrate with external systems such as Skyfield.
At its core, AetherField answers a simple question:
Given a moment in time, where are the celestial bodies?
🌌 Compute zodiac signs for planetary bodies
🔭 Support for multiple time inputs:
datetimeMoonTimeTime🧭 Longitude calculations (tropical + draconic)
🧬 Calibration system:
🖥️ CLI interface with automatic calibration
pip install aetherfield
from aetherfield import AetherField
def example():
from skyfield.api import load
from datetime import datetime, timezone
from moontime import MoonTime
# Three different instances with different calibrations:
a = AetherField() # No calibration
b = AetherField.load_calibration("my_calibration.json") # Local calibration
c = AetherField.load_calibration('AetherField') # Hosted calibration
# Works with dt
dt = datetime.now(timezone.utc)
print("No calibration:", a.sign(dt=dt, body="sun")) # No calibration
print("Local calibration:", b.sign(dt=dt, body="sun")) # Local calibration
print("Hosted calibration:", c.sign(dt=dt, body="sun")) # Hosted calibration
print("Full suite:", c.alignments(dt=dt))
# Works with skyfield time
ts = load.timescale()
sf = ts.from_datetime(dt)
print("From skyfield time:", c.sign(dt=sf, body="sun"))
# Works with moontime
mt = MoonTime.from_datetime(dt)
print("From moontime:", c.sign(dt=mt, body="sun"))
print("Longitude:", c.longitude(dt=mt, body="sun"))
print("Draconic:", c.longitude(dt=mt, body="ascending_node"))
if __name__ == "__main__":
example()
No calibration: Gemini
Local calibration: Aries
Hosted calibration: Aries
Full suite: {
'sun': 'Aries',
'moon': 'Gemini',
'mercury': 'Pisces',
'venus': 'Aries',
'mars': 'Pisces',
'jupiter': 'Gemini',
'saturn': 'Pisces',
'uranus': 'Aries',
'neptune': 'Pisces',
'pluto': 'Capricorn',
'ascending_node': 'Aquarius',
'descending_node': 'Leo'
}
From skyfield time: Aries
From moontime: Aries
Longitude: 30.42190333085091
Draconic: 336.2217926416203
af = AetherField()
Creates a baseline field with no calibration applied.
Calibration adjusts how positions are interpreted.
af = af.load_calibration("AetherField")
af.sign(dt, "neptune")
Returns the zodiac sign for a given celestial body.
af.alignments(dt)
Returns all tracked bodies in a single call.
af.longitude(dt, "mars")
Returns the raw longitude in degrees.
Supports:
AetherField accepts multiple time formats seamlessly:
datetimeaf.sign(datetime.now(), "saturn")
af.sign(MoonTime.now(), "venus")
ts = load.timescale()
sf = ts.from_datetime(dt)
af.sign(sf, "jupiter")
AetherField is built to be:
AetherField pairs naturally with:
moontime → temporal frameworkEarly release. Core systems are stable, but APIs may evolve as calibration and data layers expand.
AetherField doesn’t try to define meaning.
It provides structure — positions, alignments, relationships.
What you build on top of that… is entirely yours.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.6.6 | 11 Jun 2026 | 1 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 20:54 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:d9c9de01092fd30812ae53871e4b4e58ee836918c1ba53eb846bd709cc244913