Skip to main content

AetherField

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?


✨ Features

  • 🌌 Compute zodiac signs for planetary bodies

  • 🔭 Support for multiple time inputs:

    • datetime
    • MoonTime
    • Skyfield Time
  • 🧭 Longitude calculations (tropical + draconic)

  • 🧬 Calibration system:

    • No calibration (pure baseline)
    • Local calibration (user-defined)
    • Hosted calibration (auto-fetched)
  • 🖥️ CLI interface with automatic calibration


📦 Installation

pip install aetherfield

🚀 Quick Example

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()

Example Output

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

🧭 Core Concepts

AetherField Instance

af = AetherField()

Creates a baseline field with no calibration applied.


Calibration

Calibration adjusts how positions are interpreted.

af = af.load_calibration("AetherField")
  • Hosted: Pulled from my server

Sign Lookup

af.sign(dt, "neptune")

Returns the zodiac sign for a given celestial body.


Full Alignment

af.alignments(dt)

Returns all tracked bodies in a single call.


Longitude

af.longitude(dt, "mars")

Returns the raw longitude in degrees.

Supports:

  • Standard (tropical)
  • Draconic (nodes-based)

⏳ Time Input Flexibility

AetherField accepts multiple time formats seamlessly:

Python datetime

af.sign(datetime.now(), "saturn")

MoonTime

af.sign(MoonTime.now(), "venus")

Skyfield

ts = load.timescale()
sf = ts.from_datetime(dt)
af.sign(sf, "jupiter")

🧬 Design Philosophy

AetherField is built to be:

  • Composable → Works with external time systems
  • Deterministic → Same input, same output
  • Extensible → Calibration layers evolve without breaking core logic
  • Decoupled → Time, data, and interpretation remain separate

🌙 Ecosystem

AetherField pairs naturally with:

  • moontime → temporal framework
  • Skyfield → astronomical precision

🧪 Status

Early release. Core systems are stable, but APIs may evolve as calibration and data layers expand.


🕯️ Closing Note

AetherField doesn’t try to define meaning.

It provides structure — positions, alignments, relationships.

What you build on top of that… is entirely yours.

Release files for aetherfield 0.6.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aetherfield 0.6.6
File Size Uploaded
aetherfield-0.6.6.tar.gz 22.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aetherfield 0.6.6
File Interpreter ABI Platform
aetherfield-0.6.6-py3-none-any.whl Python 3 none any Details

Total release size: 43.4 kB

Release files / aetherfield-0.6.6.tar.gz

Download URL aetherfield-0.6.6.tar.gz
Size 22.6 kB
Tags Source
SHA-256 checksum
How to use checksums
5dbdd8e42227b632074fe99abe3447042e9c4601970e1bef198f9c227f5ab651
BLAKE2b-256 checksum
How to use checksums
eb519e3222d7d5543fcb0285915ef4f7dfa58ffb787285318dc491d358978342
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release files / aetherfield-0.6.6-py3-none-any.whl

Download URL aetherfield-0.6.6-py3-none-any.whl
Size 20.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1eefd52bdfc440b3ec92b929895e04ce820bcaee96eded963a89791ecce42e1a
BLAKE2b-256 checksum
How to use checksums
e263a21d4a4d8b3a3459b07978380d547f2da3fc0bca98d38c2cbf482c78111e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.15

Release history Release notifications | RSS feed

This release

0.6.6 This release

2 release files

0.6.5

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.9

2 release files

0.5.8

2 release files

0.5.7

2 release files

0.5.6

2 release files

0.5.5

2 release files

0.5.4

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release 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