Files
PlanetaryTime/CHANGELOG.md

3.1 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[1.2.0] - 2026-04-16

Added

  • PlanetaryTime.time property — current time of sol as formatted string HH:MM:SS
  • PlanetaryTime.date property — current date as formatted string Year X, Sol Y

[1.1.0] - 2026-04-16

Added

  • Moon dataclass representing a natural satellite with rotation_hours, orbital_hours, hours_per_sol, sols_per_year, is_tidally_locked, discovery_date, contact_date
  • 14 moons across 5 planets: Phobos, Deimos (Mars); Io, Europa, Ganymede, Callisto (Jupiter); Titan, Enceladus (Saturn); Miranda, Ariel, Umbriel, Titania, Oberon (Uranus); Triton (Neptune)
  • Body.__getitem__ — access moons by index, e.g. Body.MARS[0] returns Phobos
  • Tidally locked moons have sols_per_year == 1 (one sol = one orbit around parent planet)
  • Body.display_name property for consistent name access across Body and Moon
  • get_epoch_date extended to handle Moon (reads discovery_date / contact_date directly from the dataclass)
  • PlanetaryTime.from_earth and all internals accept Body | Moon
  • Titan has contact epoch (Huygens probe, 2005-01-14)
  • py.typed marker — package is now PEP 561 compliant
  • Full pytest test suite for Moon and PlanetaryTime with moons

Changed

  • PlanetaryTime.body return type widened to Body | Moon
  • __str__ and __repr__ use display_name instead of .value to support both planets and moons
  • pyproject.toml — added description, license, keywords, classifiers
  • README.md — rewritten with full usage examples, body tables, and logging docs
  • LICENSE — MIT license file added
  • poetry.lock added to .gitignore (library — consumers pin their own dependencies)

[1.0.0] - 2026-04-16

Added

  • Body enum with all 7 classic Solar System planets (Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune)
  • Body.rotation_hours — sidereal rotation period in Earth hours
  • Body.orbital_hours — orbital period around the Sun in Earth hours
  • Body.hours_per_sol — rotation period rounded to nearest Earth hour
  • Body.sols_per_year — number of sols in one planetary year
  • EpochType enum with two modes: DISCOVERY and CONTACT
  • Discovery dates for all 7 bodies (first telescopic observation or transit)
  • Contact dates for Mercury (MESSENGER 2011), Venus (Venera 7 1970), Mars (Viking 1 1976); remaining bodies have no contact yet
  • PlanetaryTime class representing a moment in time on a specific planetary body
  • PlanetaryTime.from_earth(earth_dt, body, epoch_type) factory method
  • Properties: year, sol, hour, minute, second, body, epoch_type
  • __str__ output format: Year {y}, Sol {s}, HH:MM:SS ({Body} / {epoch} epoch)
  • __repr__ for debugging
  • Exception hierarchy: PlanetaryTimeError (base), EpochUnavailableError, DatetimePrecedesEpochError
  • Naive datetimes are treated as UTC
  • Loguru-based debug/info logging
  • Full pytest test suite for Body and PlanetaryTime