Files
Jyotisha/references/open_source_sources/dashaflow/constants.py
732642856 f83db2fac1 Enhance Jyotish validation and Jaimini modules
- add external validation reports and open-source comparison references

- integrate Jaimini arudha/graha pada, enhanced argala, and additional synastry kutas

- update skill docs and capability matrices

- add smoke tests for open-source integrations
2026-06-10 20:50:52 +08:00

224 lines
7.2 KiB
Python

import swisseph as swe
PLANETS = {
"Sun": swe.SUN,
"Moon": swe.MOON,
"Mars": swe.MARS,
"Mercury": swe.MERCURY,
"Jupiter": swe.JUPITER,
"Venus": swe.VENUS,
"Saturn": swe.SATURN,
"Rahu": swe.MEAN_NODE,
}
ZODIAC_SIGNS = [
"Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo",
"Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"
]
SIGN_LORDS = {
"Aries": "Mars", "Taurus": "Venus", "Gemini": "Mercury", "Cancer": "Moon",
"Leo": "Sun", "Virgo": "Mercury", "Libra": "Venus", "Scorpio": "Mars",
"Sagittarius": "Jupiter", "Capricorn": "Saturn", "Aquarius": "Saturn", "Pisces": "Jupiter"
}
# Nakshatra lord sequence repeats 3 times to cover all 27
NAKSHATRA_LORD_SEQUENCE = [
"Ketu", "Venus", "Sun", "Moon", "Mars", "Rahu", "Jupiter", "Saturn", "Mercury"
]
NAKSHATRAS = [
{"name": "Ashwini", "lord": "Ketu"},
{"name": "Bharani", "lord": "Venus"},
{"name": "Krittika", "lord": "Sun"},
{"name": "Rohini", "lord": "Moon"},
{"name": "Mrigashira", "lord": "Mars"},
{"name": "Ardra", "lord": "Rahu"},
{"name": "Punarvasu", "lord": "Jupiter"},
{"name": "Pushya", "lord": "Saturn"},
{"name": "Ashlesha", "lord": "Mercury"},
{"name": "Magha", "lord": "Ketu"},
{"name": "Purva Phalguni", "lord": "Venus"},
{"name": "Uttara Phalguni","lord": "Sun"},
{"name": "Hasta", "lord": "Moon"},
{"name": "Chitra", "lord": "Mars"},
{"name": "Swati", "lord": "Rahu"},
{"name": "Vishakha", "lord": "Jupiter"},
{"name": "Anuradha", "lord": "Saturn"},
{"name": "Jyeshtha", "lord": "Mercury"},
{"name": "Mula", "lord": "Ketu"},
{"name": "Purva Ashadha", "lord": "Venus"},
{"name": "Uttara Ashadha", "lord": "Sun"},
{"name": "Shravana", "lord": "Moon"},
{"name": "Dhanishta", "lord": "Mars"},
{"name": "Shatabhisha", "lord": "Rahu"},
{"name": "Purva Bhadrapada","lord": "Jupiter"},
{"name": "Uttara Bhadrapada","lord": "Saturn"},
{"name": "Revati", "lord": "Mercury"},
]
NAK_SPAN = 360.0 / 27.0 # 13.33333... degrees per nakshatra
PADA_SPAN = NAK_SPAN / 4.0 # 3.33333... degrees per pada
# ==========================================
# VIMSHOTTARI DASHA
# ==========================================
VIMSHOTTARI_YEARS = {
"Ketu": 7, "Venus": 20, "Sun": 6, "Moon": 10, "Mars": 7,
"Rahu": 18, "Jupiter": 16, "Saturn": 19, "Mercury": 17
}
VIMSHOTTARI_TOTAL = 120.0
DASHA_SEQUENCE = ["Ketu", "Venus", "Sun", "Moon", "Mars", "Rahu", "Jupiter", "Saturn", "Mercury"]
# ==========================================
# PLANETARY DIGNITY (per BPHS)
# ==========================================
# (sign_name, deep_exaltation_degree)
EXALTATION = {
"Sun": ("Aries", 10),
"Moon": ("Taurus", 3),
"Mars": ("Capricorn", 28),
"Mercury": ("Virgo", 15),
"Jupiter": ("Cancer", 5),
"Venus": ("Pisces", 27),
"Saturn": ("Libra", 20),
"Rahu": ("Taurus", 20),
"Ketu": ("Scorpio", 20),
}
DEBILITATION = {
"Sun": ("Libra", 10),
"Moon": ("Scorpio", 3),
"Mars": ("Cancer", 28),
"Mercury": ("Pisces", 15),
"Jupiter": ("Capricorn", 5),
"Venus": ("Virgo", 27),
"Saturn": ("Aries", 20),
"Rahu": ("Scorpio", 20),
"Ketu": ("Taurus", 20),
}
OWN_SIGNS = {
"Sun": ["Leo"],
"Moon": ["Cancer"],
"Mars": ["Aries", "Scorpio"],
"Mercury": ["Gemini", "Virgo"],
"Jupiter": ["Sagittarius", "Pisces"],
"Venus": ["Taurus", "Libra"],
"Saturn": ["Capricorn", "Aquarius"],
"Rahu": ["Aquarius"],
"Ketu": ["Scorpio"],
}
# (sign, start_degree, end_degree) -- per BPHS
# Mooltrikona ranges per B.V. Raman (Hindu Predictive Astrology).
# Note: Pure BPHS has slightly narrower ranges for Moon(4-20), Mars(0-12),
# Jupiter(0-10), Venus(0-5). Raman's expanded ranges are used here for
# compatibility with VedAstro and most modern Vedic software.
MOOLTRIKONA = {
"Sun": ("Leo", 0, 20),
"Moon": ("Taurus", 4, 30),
"Mars": ("Aries", 0, 18),
"Mercury": ("Virgo", 16, 20),
"Jupiter": ("Sagittarius", 0, 13),
"Venus": ("Libra", 0, 10),
"Saturn": ("Aquarius", 0, 20),
}
# ==========================================
# PLANETARY RELATIONSHIPS (BPHS natural/permanent)
# ==========================================
NATURAL_FRIENDS = {
"Sun": ["Moon", "Mars", "Jupiter"],
"Moon": ["Sun", "Mercury"],
"Mars": ["Sun", "Moon", "Jupiter"],
"Mercury": ["Sun", "Venus"],
"Jupiter": ["Sun", "Moon", "Mars"],
"Venus": ["Mercury", "Saturn"],
"Saturn": ["Mercury", "Venus"],
"Rahu": ["Mercury", "Venus", "Saturn"],
"Ketu": ["Mars", "Jupiter"],
}
NATURAL_ENEMIES = {
"Sun": ["Venus", "Saturn"],
"Moon": [],
"Mars": ["Mercury"],
"Mercury": ["Moon"],
"Jupiter": ["Mercury", "Venus"],
"Venus": ["Sun", "Moon"],
"Saturn": ["Sun", "Moon", "Mars"],
"Rahu": ["Sun", "Moon", "Mars"],
"Ketu": ["Mercury", "Venus"],
}
# Planets not in friends or enemies are neutral
NATURAL_NEUTRALS = {
"Sun": ["Mercury"],
"Moon": ["Mars", "Jupiter", "Venus", "Saturn"],
"Mars": ["Venus", "Saturn"],
"Mercury": ["Mars", "Jupiter", "Saturn"],
"Jupiter": ["Saturn"],
"Venus": ["Mars", "Jupiter"],
"Saturn": ["Jupiter"],
"Rahu": ["Jupiter"],
"Ketu": ["Sun", "Moon", "Saturn"],
}
# ==========================================
# COMBUSTION ORBS (degrees from Sun)
# ==========================================
COMBUSTION_ORBS = {
"Moon": 12,
"Mars": 17,
"Mercury": {"direct": 14, "retrograde": 12},
"Jupiter": 11,
"Venus": {"direct": 10, "retrograde": 8},
"Saturn": 15,
}
# ==========================================
# PANCHANG NAMES
# ==========================================
TITHI_NAMES = [
"Pratipada", "Dwitiya", "Tritiya", "Chaturthi", "Panchami",
"Shashthi", "Saptami", "Ashtami", "Navami", "Dashami",
"Ekadashi", "Dwadashi", "Trayodashi", "Chaturdashi", "Purnima",
"Pratipada", "Dwitiya", "Tritiya", "Chaturthi", "Panchami",
"Shashthi", "Saptami", "Ashtami", "Navami", "Dashami",
"Ekadashi", "Dwadashi", "Trayodashi", "Chaturdashi", "Amavasya",
]
VARA_NAMES = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"]
VARA_LORDS = ["Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Sun"]
PANCHANG_YOGA_NAMES = [
"Vishkambha", "Priti", "Ayushman", "Saubhagya", "Shobhana",
"Atiganda", "Sukarma", "Dhriti", "Shula", "Ganda",
"Vriddhi", "Dhruva", "Vyaghata", "Harshana", "Vajra",
"Siddhi", "Vyatipata", "Variyan", "Parigha", "Shiva",
"Siddha", "Sadhya", "Shubha", "Shukla", "Brahma",
"Indra", "Vaidhriti",
]
KARANA_NAMES = [
"Bava", "Balava", "Kaulava", "Taitila", "Garija",
"Vanija", "Vishti", "Shakuni", "Chatushpada", "Nagava", "Kimstughna"
]
# ==========================================
# DIGBALA (directional strength)
# Houses where planets gain Digbala (1-indexed)
# ==========================================
DIGBALA_HOUSES = {
"Jupiter": 1,
"Mercury": 1,
"Sun": 10,
"Mars": 10,
"Saturn": 7,
"Moon": 4,
"Venus": 4,
}