"""BUG-1190 (TASK-upstream-sync4-20261002 T6): AL / UL have one source. Every place a full reading shows Arudha Lagna or Upapada Lagna (yogas_doshas, special_lagnas, the transit multi-reference table) must equal ``jaimini.calc_arudha_padas``. Fictitious charts only. 00:30 puts the lagna lord 4th from the lagna and 02:30 puts the 12th lord 4th from the 12th, the two cases where the removed "count from the landing" 1/7 exception disagreed. """ from __future__ import annotations import pytest import scripts.special_lagnas as special_lagnas import scripts.yogas_doshas as yogas_doshas from scripts.jyotish_engine import cmd_full_reading from scripts.professional_report_reference import _export_args BASE = dict(year=1990, month=6, day=15, second=0, lat=39.9042, lon=116.4074, tz=8, ayanamsa="lahiri", node_mode="mean") @pytest.mark.parametrize("hour", [10, 0, 2]) def test_full_reading_al_ul_equal_jaimini(hour: int) -> None: modules = cmd_full_reading(_export_args({**BASE, "hour": hour, "minute": 30}))["modules"] padas = modules["jaimini"]["arudha_padas"] al, ul = padas["arudha_lagna"]["sign"], padas["upapada"]["sign"] assert modules["yogas_doshas"]["arudha_lagna"]["arudha_lagna"] == al assert modules["yogas_doshas"]["upapada_lagna"]["upapada"] == ul assert modules["special_lagnas"]["Arudha_Lagna"]["sign"] == al assert modules["special_lagnas"]["Upapada_Lagna"]["sign"] == ul assert modules["special_lagnas"]["Arudha_Lagna"]["source"] == "jaimini.calc_arudha_padas" assert modules["transit_multi_reference"]["references"]["Arudha_Lagna"]["sign"] == al def test_parallel_arudha_calculators_are_gone() -> None: assert not hasattr(yogas_doshas, "calc_arudha_lagna") assert not hasattr(yogas_doshas, "calc_upapada_lagna") assert not hasattr(special_lagnas.SpecialLagnasCalculator, "calculate_arudha_lagna") assert not hasattr(special_lagnas.SpecialLagnasCalculator, "calculate_upapada_lagna")