import datetime
import pytz
import time  # Added for solution 2

def get_panchanga(dt, tz):
  """
  Calculates the Panchanga for a given date and time in a specific timezone.

  Args:
    dt: The datetime object representing the date and time.
    tz: The pytz timezone object representing the timezone.

  Returns:
    A dictionary containing the Panchanga details:
      - tithi: The Tithi (lunar day).
      - nakshatra: The Nakshatra (lunar mansion).
      - yoga: The Yoga (planetary conjunction).
      - karana: The Karana (half-tithi).
      - rashi: The Rashi (zodiac sign).
  """

  # Use timestamp() for Python 3.3 or later (Solution 1)
  # timestamp = dt.astimestamp()

  # Use time.mktime() for all Python versions (Solution 2)
  timestamp = time.mktime(dt.timetuple())

  # Calculate Panchanga using the pyswaroochana library
  from pyswaroochana import Panchanga
  panchanga = Panchanga.from_timestamp(timestamp, tz)

  # Extract Panchanga details
  tithi = panchanga.tithi.name
  nakshatra = panchanga.nakshatra.name
  yoga = panchanga.yoga.name
  karana = panchanga.karana.name
  rashi = panchanga.rashi.name

  # Return Panchanga details as a dictionary
  return {
      "tithi": tithi,
      "nakshatra": nakshatra,
      "yoga": yoga,
      "karana": karana,
      "rashi": rashi,
  }

# Example usage
dt = datetime.datetime(1975, 8, 2, 16, 5, tzinfo=pytz.timezone('Asia/Kolkata'))
panchanga = get_panchanga(dt, dt.tzinfo)

print("Panchanga details:")
print("Tithi:", panchanga["tithi"])
print("Nakshatra:", panchanga["nakshatra"])
print("Yoga:", panchanga["yoga"])
print("Karana:", panchanga["karana"])
print("Rashi:", panchanga["rashi"])

