Skip to main content

Temporal Moon timekeeping

Project description

MoonTime Staging

This folder is a temporary staging area to branch MoonTime into its own repository. It is intentionally ignored by Git (see repo .gitignore) so we can iterate locally without affecting the main repo until the extraction is complete.

Plan

  • Extract MoonTime class and helpers from mooncal.py into a standalone package.
  • Preserve public API: MoonTime, moontime(), temporal_hms(), display_str, add_temporal(), temporal_seconds_to(), plus isoformat() and MoonTime.fromisoformat().
  • Keep lunar fields available: lunar_year, lunar_month_index, lunar_month_name, lunar_day, lunar_weekday, lunar_sun_sign, moon_phase.
  • Use AetherField at runtime for lunar_sun_sign (no Skyfield at runtime).
  • Decouple from mooncal: use internal moontime.ledger and moontime.aether wrappers.

Seasonal + Sunrise Features (Aether-backed)

  • MoonTime now exposes:
    • season: "Spring" | "Summer" | "Autumn" | "Winter" (North default; set MOONTIME_HEMISPHERE=S for Southern)
    • season_start: most recent equinox/solstice boundary timestamp
    • day_length_seconds, day_length_delta_seconds, day_length_trend: daylight metrics
    • sunrise_azimuth_deg: degrees from North, clockwise
  • sunrise_solstice_scale_0_100: 0≈equinox, 100≈solstice (latitude-aware)
  • solar_movement: "north" | "south" | "stationary"
  • Temporal strings:
    • lunar_temporal_hms()L↑ HH:MM:SS / L↓ HH:MM:SS
    • planetary_temporal_hms(body) → e.g., Ju↓ 02:34:10 (Sun..Saturn)
  • CLI prints seasonal_summary: {scale} {season} {movement} {trend} after the display line.

Local Layout (staging)

  • src/moontime/ — package source (to be populated during extraction)
  • tests/ — focused tests for time arithmetic and serialization
  • requirements.txt — runtime deps for MoonTime package
  • requirements-dev.txt — test-only deps (pytest)

Notes

  • This staging area is not committed. When stable, we’ll move it to a new repo and wire CI there.
  • Runtime ephemeris: AetherField drives phases/signs. Sunrise/sunset for temporal hours are computed via the host project's skyfieldcomm.twilight helper (no direct Skyfield dependency here). In a fully standalone repo, provide a light twilight utility or persist sunrise in the ledger.

Dev Tips

  • Create a venv: python -m venv venv && .\\venv\\Scripts\\activate
  • Install deps: pip install -r requirements.txt
  • Install test deps: pip install -r requirements-dev.txt
  • Run only MoonTime tests: pytest -q moontime/tests
  • If pytest is missing, install it: pip install pytest

Config

  • MOONTIME_TZ: default timezone (IANA string), default UTC.
  • MOONTIME_COORDS: default coordinates "lat,lon", default "0,0".
  • MOONTIME_HEMISPHERE: default N; set S to invert seasonal naming.
  • Ledger sources: prefers in-memory serapeum.all_lunar_years; falls back to all_lunar_years.json at repo root or calendars/all_lunar_years.json.
  • MOONTIME_SUN_PROVIDER: choose sunrise/sunset provider: auto (default; AetherField then twilight), aether (AetherField only, falls back to twilight if error), or twilight (use host skyfieldcomm.twilight).

Future Extraction

  • AetherField: moontime.aether wraps the host aetherfield. For a standalone repo, either vendor the calibrated model or declare it as an optional dependency and add a small loader.

Project details


Download files

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

Source Distribution

moontime-0.2.3.tar.gz (23.3 kB view details)

Uploaded Source

Built Distribution

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

moontime-0.2.3-py3-none-any.whl (22.2 kB view details)

Uploaded Python 3

File details

Details for the file moontime-0.2.3.tar.gz.

File metadata

  • Download URL: moontime-0.2.3.tar.gz
  • Upload date:
  • Size: 23.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for moontime-0.2.3.tar.gz
Algorithm Hash digest
SHA256 666506a2c190863feefcbcbb6bf1810f271231ca1a0a0d97375a5dfb6f58cc48
MD5 d71bba87542a359fb234f54d57847a6c
BLAKE2b-256 b5ea8b20b44a307b5a9223fc348e3da829270019e2b04ebdc7252dd3a4575b2c

See more details on using hashes here.

File details

Details for the file moontime-0.2.3-py3-none-any.whl.

File metadata

  • Download URL: moontime-0.2.3-py3-none-any.whl
  • Upload date:
  • Size: 22.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.4

File hashes

Hashes for moontime-0.2.3-py3-none-any.whl
Algorithm Hash digest
SHA256 6a2b072ee4db7b03ee24b1076e5bbf90388f58580bcd9e63388631b6dbb1ffff
MD5 9e2e23f0330f1e2cc1b1a3f97032ceb2
BLAKE2b-256 1328f3bfef0f0344dcbecdab678c30c1fe4ee6e0cd590dfd0a8b327d576e86dd

See more details on using hashes here.

Supported by

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