"""Optional PyJHora D1 signs for the rectification parity packet. The product packet calls this only for the PyJHora column. A missing install raises, and the packet records that column as blocked. """ from __future__ import annotations import importlib from typing import Any SIGNS = ( "Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo", "Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces", ) def pyjhora_d1(case: dict[str, Any]) -> dict[str, str]: utils = importlib.import_module("jhora.utils") charts = importlib.import_module("jhora.horoscope.chart.charts") drik = importlib.import_module("jhora.panchanga.drik") jd = utils.julian_day_number( (case["year"], case["month"], case["day"]), (case["hour"], case["minute"], case.get("second", 0)), ) drik.set_ayanamsa_mode("LAHIRI", jd=jd) place = drik.Place("request-level", case["lat"], case["lon"], case["tz"]) index_to_planet = { 0: "Sun", 1: "Moon", 2: "Mars", 3: "Mercury", 4: "Jupiter", 5: "Venus", 6: "Saturn", } return { index_to_planet[body]: SIGNS[int(position[0])] for body, position in charts.rasi_chart(jd, place) if body in index_to_planet }