3.1 KiB
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.timeproperty — current time of sol as formatted stringHH:MM:SSPlanetaryTime.dateproperty — current date as formatted stringYear X, Sol Y
[1.1.0] - 2026-04-16
Added
Moondataclass representing a natural satellite withrotation_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_nameproperty for consistent name access acrossBodyandMoonget_epoch_dateextended to handleMoon(readsdiscovery_date/contact_datedirectly from the dataclass)PlanetaryTime.from_earthand all internals acceptBody | Moon- Titan has contact epoch (Huygens probe, 2005-01-14)
py.typedmarker — package is now PEP 561 compliant- Full pytest test suite for
MoonandPlanetaryTimewith moons
Changed
PlanetaryTime.bodyreturn type widened toBody | Moon__str__and__repr__usedisplay_nameinstead of.valueto support both planets and moonspyproject.toml— addeddescription,license,keywords,classifiersREADME.md— rewritten with full usage examples, body tables, and logging docsLICENSE— MIT license file addedpoetry.lockadded to.gitignore(library — consumers pin their own dependencies)
[1.0.0] - 2026-04-16
Added
Bodyenum with all 7 classic Solar System planets (Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune)Body.rotation_hours— sidereal rotation period in Earth hoursBody.orbital_hours— orbital period around the Sun in Earth hoursBody.hours_per_sol— rotation period rounded to nearest Earth hourBody.sols_per_year— number of sols in one planetary yearEpochTypeenum with two modes:DISCOVERYandCONTACT- 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
PlanetaryTimeclass representing a moment in time on a specific planetary bodyPlanetaryTime.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
BodyandPlanetaryTime