Add Body.EARTH with Luna moon and switch Body indexing to 1-based
This commit is contained in:
12
CHANGELOG.md
12
CHANGELOG.md
@@ -5,6 +5,18 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [1.3.1] - 2026-04-22
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- `Body.EARTH` enum value with `rotation_hours = 23.934`, `orbital_hours = 8766.0`, discovery epoch 1543-01-01 (Copernicus), contact epoch 1969-07-20 (Apollo 11)
|
||||||
|
- `Luna` moon (Earth's Moon): tidally locked, `rotation_hours = orbital_hours = 655.72`, discovery epoch 1609-11-01 (Galileo), contact epoch 1969-07-20 (Apollo 11)
|
||||||
|
- `LUNA` constant exported from `moon.py`
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
- `Body.__getitem__` now uses 1-based indexing — `Body.MARS[1]` returns Phobos, `Body.MARS[2]` returns Deimos
|
||||||
|
|
||||||
## [1.3.0] - 2026-04-21
|
## [1.3.0] - 2026-04-21
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
[project]
|
[project]
|
||||||
name = "planetarytime"
|
name = "planetarytime"
|
||||||
version = "1.3.0"
|
version = "1.3.1"
|
||||||
description = "Python library for representing and working with time on other bodies in the Solar System"
|
description = "Python library for representing and working with time on other bodies in the Solar System"
|
||||||
authors = [
|
authors = [
|
||||||
{name = "Jan Doubravský", email = "jan.doubravsky@gmail.com"}
|
{name = "Jan Doubravský", email = "jan.doubravsky@gmail.com"}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ from datetime import date
|
|||||||
PLANET_ROWS: list[tuple[str, float, float, date, date | None]] = [
|
PLANET_ROWS: list[tuple[str, float, float, date, date | None]] = [
|
||||||
('Mercury' , 1407.600, 2111.2800, date(1631, 11, 7), date(2011, 3, 18)),
|
('Mercury' , 1407.600, 2111.2800, date(1631, 11, 7), date(2011, 3, 18)),
|
||||||
('Venus' , 5832.500, 5392.8000, date(1610, 1, 1), date(1970, 12, 15)),
|
('Venus' , 5832.500, 5392.8000, date(1610, 1, 1), date(1970, 12, 15)),
|
||||||
|
('Earth' , 23.934, 8766.0000, date(1543, 1, 1), date(1969, 7, 20)),
|
||||||
('Mars' , 24.600, 16487.2800, date(1610, 1, 1), date(1976, 7, 20)),
|
('Mars' , 24.600, 16487.2800, date(1610, 1, 1), date(1976, 7, 20)),
|
||||||
('Jupiter' , 9.900, 103982.1600, date(1610, 1, 7), None),
|
('Jupiter' , 9.900, 103982.1600, date(1610, 1, 7), None),
|
||||||
('Saturn' , 10.700, 258221.2800, date(1610, 7, 25), None),
|
('Saturn' , 10.700, 258221.2800, date(1610, 7, 25), None),
|
||||||
@@ -14,6 +15,7 @@ PLANET_ROWS: list[tuple[str, float, float, date, date | None]] = [
|
|||||||
|
|
||||||
# (name, rotation_hours, orbital_hours, is_tidally_locked, discovery_date, contact_date | None)
|
# (name, rotation_hours, orbital_hours, is_tidally_locked, discovery_date, contact_date | None)
|
||||||
MOON_ROWS: list[tuple[str, float, float, bool, date, date | None]] = [
|
MOON_ROWS: list[tuple[str, float, float, bool, date, date | None]] = [
|
||||||
|
('Luna' , 655.720, 655.720, True , date(1609, 11, 1), date(1969, 7, 20)),
|
||||||
('Phobos' , 7.653, 7.653, True , date(1877, 8, 18), None),
|
('Phobos' , 7.653, 7.653, True , date(1877, 8, 18), None),
|
||||||
('Deimos' , 30.312, 30.312, True , date(1877, 8, 12), None),
|
('Deimos' , 30.312, 30.312, True , date(1877, 8, 12), None),
|
||||||
('Io' , 42.456, 42.456, True , date(1610, 1, 8), None),
|
('Io' , 42.456, 42.456, True , date(1610, 1, 8), None),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ from planetarytime.moon import (
|
|||||||
EUROPA,
|
EUROPA,
|
||||||
GANYMEDE,
|
GANYMEDE,
|
||||||
IO,
|
IO,
|
||||||
|
LUNA,
|
||||||
MIRANDA,
|
MIRANDA,
|
||||||
Moon,
|
Moon,
|
||||||
OBERON,
|
OBERON,
|
||||||
@@ -27,6 +28,7 @@ class Body(Enum):
|
|||||||
|
|
||||||
MERCURY = "Mercury"
|
MERCURY = "Mercury"
|
||||||
VENUS = "Venus"
|
VENUS = "Venus"
|
||||||
|
EARTH = "Earth"
|
||||||
MARS = "Mars"
|
MARS = "Mars"
|
||||||
JUPITER = "Jupiter"
|
JUPITER = "Jupiter"
|
||||||
SATURN = "Saturn"
|
SATURN = "Saturn"
|
||||||
@@ -58,8 +60,8 @@ class Body(Enum):
|
|||||||
return self.value
|
return self.value
|
||||||
|
|
||||||
def __getitem__(self, index: int) -> Moon:
|
def __getitem__(self, index: int) -> Moon:
|
||||||
"""Return the moon at the given index for this body."""
|
"""Return the moon at the given 1-based index for this body."""
|
||||||
return _MOONS[self][index]
|
return _MOONS[self][index - 1]
|
||||||
|
|
||||||
|
|
||||||
_ROTATION_HOURS: dict[Body, float] = {
|
_ROTATION_HOURS: dict[Body, float] = {
|
||||||
@@ -74,6 +76,7 @@ _ORBITAL_HOURS: dict[Body, float] = {
|
|||||||
_MOONS: dict[Body, list[Moon]] = {
|
_MOONS: dict[Body, list[Moon]] = {
|
||||||
Body.MERCURY: [],
|
Body.MERCURY: [],
|
||||||
Body.VENUS: [],
|
Body.VENUS: [],
|
||||||
|
Body.EARTH: [LUNA],
|
||||||
Body.MARS: [PHOBOS, DEIMOS],
|
Body.MARS: [PHOBOS, DEIMOS],
|
||||||
Body.JUPITER: [IO, EUROPA, GANYMEDE, CALLISTO],
|
Body.JUPITER: [IO, EUROPA, GANYMEDE, CALLISTO],
|
||||||
Body.SATURN: [TITAN, ENCELADUS],
|
Body.SATURN: [TITAN, ENCELADUS],
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ _MOONS_BY_NAME: dict[str, Moon] = {
|
|||||||
row[0]: _make_moon(*row) for row in MOON_ROWS
|
row[0]: _make_moon(*row) for row in MOON_ROWS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
LUNA = _MOONS_BY_NAME["Luna"]
|
||||||
PHOBOS = _MOONS_BY_NAME["Phobos"]
|
PHOBOS = _MOONS_BY_NAME["Phobos"]
|
||||||
DEIMOS = _MOONS_BY_NAME["Deimos"]
|
DEIMOS = _MOONS_BY_NAME["Deimos"]
|
||||||
IO = _MOONS_BY_NAME["Io"]
|
IO = _MOONS_BY_NAME["Io"]
|
||||||
|
|||||||
Reference in New Issue
Block a user