fix(varga): source D5/D6/D8/D11 from PVR 6.2 (BUG-1260, upstream f32472b5)
This commit is contained in:
@@ -306,3 +306,23 @@ def test_d30_even_sign_venus_region():
|
||||
"""Even sign, 0-5° → Taurus (Venus region)."""
|
||||
lon = calc._calculate_varga_position(32.0, 30) # Taurus 2°
|
||||
assert int(lon // 30) == 1 # Taurus
|
||||
|
||||
|
||||
def test_extended_d5_d6_d8_d11_use_pvr_mapping():
|
||||
"""Extended charts delegate D5/D6/D8/D11 to the sourced varga mapping."""
|
||||
from varga import calc_varga
|
||||
|
||||
samples = (
|
||||
(5, 60 + 11, 10), # 11° Gemini -> Aquarius
|
||||
(6, 60 + 11, 2), # 11° Gemini -> Gemini
|
||||
(6, 210 + 19, 9), # 19° Scorpio -> Capricorn
|
||||
(8, 60 + 10, 6), # 10° Gemini -> Libra
|
||||
(8, 210 + 19, 1), # 19° Scorpio -> Taurus
|
||||
(11, 60 + 11, 2), # 11° Gemini -> Gemini
|
||||
(11, 210 + 19, 11), # 19° Scorpio -> Pisces
|
||||
)
|
||||
for division, degree, sign_idx in samples:
|
||||
lon = calc._calculate_varga_position(degree, division)
|
||||
point = calc_varga(degree, division)
|
||||
assert int(lon // 30) == sign_idx
|
||||
assert lon == pytest.approx(point["sign_idx"] * 30 + point["degree_in_sign"])
|
||||
|
||||
@@ -99,10 +99,13 @@ def test_varga_map_boundary_examples() -> None:
|
||||
def test_rudramsa_d11_is_supported_by_native_varga_map() -> None:
|
||||
assert varga_map(0, 0, 11) == 0
|
||||
assert varga_map(0, 10, 11) == 10
|
||||
assert varga_map(1, 0, 11) == 9
|
||||
assert varga_map(1, 10, 11) == 7
|
||||
# 原值: varga_map(1, 0, 11) == 9;varga_map(1, 10, 11) == 7;calc_varga(35) == Aquarius
|
||||
# 新值: 11、9、Aries
|
||||
# 原因: BUG-1260,D11 改按 PVR 6.2.11 从白羊逆数起点,再顺数各份
|
||||
assert varga_map(1, 0, 11) == 11
|
||||
assert varga_map(1, 10, 11) == 9
|
||||
result = calc_varga(35.0, 11)
|
||||
assert result["sign"] == "Aquarius"
|
||||
assert result["sign"] == "Aries"
|
||||
assert 0 <= result["degree_in_sign"] < 30
|
||||
|
||||
|
||||
@@ -117,7 +120,29 @@ def test_default_varga_batch_includes_declared_vargas() -> None:
|
||||
charts = calc_all_vargas({"Moon": 35.0}, 10.0)
|
||||
for key in ("D5_Panchamsa", "D6_Shashthamsa", "D8_Ashtamsa", "D11_Rudramsa", "D81_Navamsa-Navamsa", "D108_Dwadasamsa-Navamsa", "D144_Dwadasamsa-Dwadasamsa"):
|
||||
assert key in charts
|
||||
assert charts["D11_Rudramsa"]["Moon"]["sign"] == "Aquarius"
|
||||
# 原值: Aquarius / 新值: Aries / 原因: BUG-1260,35° 的 D11 按 PVR 6.2.11 落到白羊
|
||||
assert charts["D11_Rudramsa"]["Moon"]["sign"] == "Aries"
|
||||
assert "6.2.5" in charts["D5_Panchamsa"]["_meta"]["mapping_source"]
|
||||
assert "6.2.11" in charts["D11_Rudramsa"]["_meta"]["mapping_source"]
|
||||
|
||||
|
||||
def test_pvr_d5_d6_d8_d11_worked_examples() -> None:
|
||||
"""Hand counts from PVR Integrated Approach 6.2.5 / 6.2.6 / 6.2.8 / 6.2.11."""
|
||||
# 6.2.5: odd parts Ar, Aq, Sg, Ge, Li; even Ta, Vi, Pi, Cp, Sc.
|
||||
# 11° Gemini is the 2nd part of an odd sign.
|
||||
assert calc_varga(60 + 11, 5)["sign"] == "Aquarius"
|
||||
# 19° Taurus is the 4th part of an even sign.
|
||||
assert calc_varga(30 + 19, 5)["sign"] == "Capricorn"
|
||||
# 6.2.6: 11° Gemini -> Gemini; 19° Scorpio -> Capricorn.
|
||||
assert calc_varga(60 + 11, 6)["sign"] == "Gemini"
|
||||
assert calc_varga(210 + 19, 6)["sign"] == "Capricorn"
|
||||
# 6.2.8 counting: 10° Gemini is the 3rd part of a dual sign, 3rd from Leo is Libra.
|
||||
# 19° Scorpio is the 6th part of a fixed sign, 6th from Sagittarius is Taurus.
|
||||
assert calc_varga(60 + 10, 8)["sign"] == "Libra"
|
||||
assert calc_varga(210 + 19, 8)["sign"] == "Taurus"
|
||||
# 6.2.11: 11° Gemini -> Gemini; 19° Scorpio -> Pisces.
|
||||
assert calc_varga(60 + 11, 11)["sign"] == "Gemini"
|
||||
assert calc_varga(210 + 19, 11)["sign"] == "Pisces"
|
||||
|
||||
|
||||
def test_navamsa_matches_user_jhora_pdf_reference_chart() -> None:
|
||||
|
||||
Reference in New Issue
Block a user