Files
Jyotisha/tests/test_relationship_event_class_evidence.py
T
Jesse_ChenandCursor 04ad3325d5
Independent Staging Quality Gate / validate (push) Successful in 11m26s
Independent Staging Quality Gate / publish (push) Successful in 13m24s
fix(relationship): freeze marriage event classes and add conditional dashas (BUG-608)
Venus/Jupiter/Moon periods no longer collapse into one marriage-opportunity line. Full reading reports the ten BPHS conditional dasha families; Skill 6.9.16.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 16:04:52 +08:00

66 lines
2.4 KiB
Python

"""Event-class evidence items for marriage themes."""
from __future__ import annotations
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT / "scripts"))
from relationship_analysis import analyze_relationship # noqa: E402
from relationship_event_class_evidence import build_event_class_evidence # noqa: E402
def _theme_evidence(technique, chart, conclusion, sentiment, strength, *, source, details=None):
return {
"technique": technique,
"chart": chart,
"conclusion": conclusion,
"sentiment": sentiment,
"strength": strength,
"details": {**(details or {}), "source": source},
}
def _moon_saturn_seventh_house() -> dict:
return {
"Moon": {"sign": "Aquarius", "house": 7, "longitude": 311.48},
"Saturn": {"sign": "Aquarius", "house": 7, "longitude": 319.01},
"Venus": {"sign": "Pisces", "house": 8, "longitude": 341.99},
"Jupiter": {"sign": "Virgo", "house": 2, "longitude": 165.27},
"Sun": {"sign": "Leo", "house": 1, "longitude": 125.0},
}
def test_moon_saturn_seventh_with_venus_ad_emits_romantic_and_legal_items() -> None:
relationship = analyze_relationship(
_moon_saturn_seventh_house(),
asc_sign="Leo",
dasha_info={"maha_dasha": "Saturn", "antar_dasha": "Venus"},
ul_sign="Libra",
darakaraka="Sun",
)
items = build_event_class_evidence(relationship, _theme_evidence)
by_name = {item["technique"]: item for item in items}
assert "Romantic-activation" in by_name
assert "Legal-marriage" in by_name
assert by_name["Romantic-activation"]["strength"] == "weak"
assert by_name["Romantic-activation"]["sentiment"] == "neutral"
assert by_name["Legal-marriage"]["details"]["hits"]
def test_pratyantar_venus_does_not_emit_legal_marriage_item() -> None:
relationship = analyze_relationship(
_moon_saturn_seventh_house(),
asc_sign="Leo",
dasha_info={"maha_dasha": "Saturn", "antar_dasha": "Mercury", "pratyantar": "Venus"},
ul_sign="Libra",
darakaraka="Sun",
)
split = relationship["event_class_split"]
assert "Venus_pd" in split["pd_hits"]
assert "Venus_dasha" not in split["legal_marriage"]["hits"]
items = build_event_class_evidence(relationship, _theme_evidence)
assert all(item["technique"] != "Legal-marriage" for item in items)