#!/usr/bin/env python3 """Monthly transit snapshots for the KP three-year report.""" from __future__ import annotations try: # pragma: no cover - import path differs under CLI vs pytest from domain_calculation_service import compute_chart except ImportError: # pragma: no cover from scripts.domain_calculation_service import compute_chart def build_monthly_transit_snapshot( *, year: int, month: int, lat: float, lon: float, tz: float ) -> dict: chart = compute_chart( { "year": year, "month": month, "day": 1, "hour": 12, "minute": 0, "second": 0, "lat": lat, "lon": lon, "tz": tz, "ayanamsa": "kp", "node_mode": "mean", "position_mode": "apparent", } ) planets = chart.get("planets") if isinstance(chart.get("planets"), dict) else {} snapshot = {} for name in ("Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"): row = planets.get(name) if isinstance(planets.get(name), dict) else {} snapshot[name] = { "sign": row.get("sign"), "longitude": row.get("degree_raw", row.get("degree")), "retrograde": bool(row.get("retrograde")), "speed": row.get("speed"), } return { "month": f"{year:04d}-{month:02d}", "anchor_local": f"{year:04d}-{month:02d}-01T12:00:00", "planets": snapshot, "status": "parameter_sensitive", "source": "local_kp_month_anchor_chart", }