Kundli Matching
Marriage compatibility in Python
Basic Usage
from vedika import VedikaClient
client = VedikaClient()
match = client.kundli_match({
"bride": {
"datetime": "1995-03-20T14:30:00+05:30",
"latitude": 28.6139,
"longitude": 77.2090
},
"groom": {
"datetime": "1992-07-15T06:00:00+05:30",
"latitude": 19.0760,
"longitude": 72.8777
}
})
print(f"Total Score: {match.total_score}/{match.max_score}")
print(f"Percentage: {match.percentage}%")
print(f"Verdict: {match.verdict}")
Guna Breakdown
# Access individual gunas
for guna in match.gunas:
status = "Matched" if guna.is_matched else "Not Matched"
print(f"{guna.name}: {guna.obtained_points}/{guna.max_points} - {status}")
# Output:
# Varna: 1/1 - Matched
# Vashya: 2/2 - Matched
# Tara: 3/3 - Matched
# Yoni: 3/4 - Not Matched
# Graha Maitri: 5/5 - Matched
# Gana: 6/6 - Matched
# Bhakoot: 7/7 - Matched
# Nadi: 8/8 - Matched
Manglik Compatibility
# Check Manglik status
print(f"Bride Manglik: {match.manglik_status.bride_is_manglik}")
print(f"Groom Manglik: {match.manglik_status.groom_is_manglik}")
print(f"Compatible: {match.manglik_status.is_compatible}")
# Standalone Manglik check
mangal = client.mangal_dosha({
"datetime": "1995-03-20T14:30:00+05:30",
"latitude": 28.6139,
"longitude": 77.2090
})
print(f"Is Manglik: {mangal.is_manglik}")
print(f"Severity: {mangal.severity}")
print(f"Cancellations: {mangal.cancellations}")
South Indian (Porutham)
# Use Dasa Porutham system
match = client.kundli_match({
"bride": bride_details,
"groom": groom_details,
"system": "porutham" # South Indian method
})
# Access 10 poruthams
for porutham in match.poruthams:
status = "Yes" if porutham.matched else "No"
print(f"{porutham.name}: {status}")
# Output:
# Dina: Yes
# Gana: Yes
# Mahendra: No
# Stree Deergha: Yes
# Yoni: Yes
# Rasi: Yes
# Rasiadhipati: Yes
# Vasya: Yes
# Rajju: Yes
# Vedha: Yes
Recommendations & Remedies
match = client.kundli_match({
"bride": bride_details,
"groom": groom_details,
"include_remedies": True
})
# Access recommendations
print("Strengths:")
for strength in match.recommendations.strengths:
print(f" - {strength}")
print("\nConcerns:")
for concern in match.recommendations.concerns:
print(f" - {concern}")
print("\nRemedies:")
for remedy in match.recommendations.remedies:
print(f" - {remedy}")
Batch Matching
from vedika import AsyncVedikaClient
import asyncio
async def match_multiple_profiles(bride, grooms):
"""Match one bride with multiple groom profiles."""
async with AsyncVedikaClient() as client:
tasks = [
client.kundli_match({"bride": bride, "groom": groom})
for groom in grooms
]
results = await asyncio.gather(*tasks)
# Sort by score
ranked = sorted(
zip(grooms, results),
key=lambda x: x[1].total_score,
reverse=True
)
return ranked
# Usage
bride = {"datetime": "1995-03-20T14:30:00+05:30", "latitude": 28.6139, "longitude": 77.2090}
grooms = [
{"datetime": "1992-07-15T06:00:00+05:30", "latitude": 19.0760, "longitude": 72.8777},
{"datetime": "1990-12-25T10:00:00+05:30", "latitude": 13.0827, "longitude": 80.2707},
{"datetime": "1993-08-08T15:30:00+05:30", "latitude": 22.5726, "longitude": 88.3639},
]
ranked_matches = asyncio.run(match_multiple_profiles(bride, grooms))
for groom, match in ranked_matches:
print(f"Score: {match.total_score} - {match.verdict}")
Generate Matching Report
def generate_match_report(match):
"""Generate a detailed matching report."""
report = []
report.append("=" * 50)
report.append("KUNDLI MATCHING REPORT")
report.append("=" * 50)
report.append(f"\nOverall Score: {match.total_score}/{match.max_score} ({match.percentage}%)")
report.append(f"Verdict: {match.verdict}\n")
report.append("GUNA ANALYSIS:")
report.append("-" * 30)
for guna in match.gunas:
status = "MATCH" if guna.is_matched else "----"
report.append(f"{guna.name:15} {guna.obtained_points}/{guna.max_points} [{status}]")
report.append(f"\nMANGLIK STATUS:")
report.append("-" * 30)
report.append(f"Bride: {'Manglik' if match.manglik_status.bride_is_manglik else 'Non-Manglik'}")
report.append(f"Groom: {'Manglik' if match.manglik_status.groom_is_manglik else 'Non-Manglik'}")
if match.recommendations.remedies:
report.append(f"\nRECOMMENDED REMEDIES:")
report.append("-" * 30)
for remedy in match.recommendations.remedies:
report.append(f" * {remedy}")
return "\n".join(report)
# Usage
match = client.kundli_match({"bride": bride, "groom": groom, "include_remedies": True})
print(generate_match_report(match))