Skip to main content

Bhāratīya calendar infrastructure — Panchang, festivals, muhurat, and regional calendars

Project description

Panchang

PyPI Python License: MIT CI

Bhāratīya calendar infrastructure for developers — Panchang, festivals, muhurat, regional calendars, and batch computation.

Built on a Rust computation engine with Swiss Ephemeris precision. Not an astrology API. It answers: "What is happening in the Bhāratīya calendar right now, at this location?"

from datetime import date
from panchang import panchang, calendar, Location

delhi = Location(lat=28.6139, lng=77.2090, tz="Asia/Kolkata")

# Daily Panchang
today = panchang.compute(date.today(), delhi)
print(today.tithi.name)        # "Shukla Dvitiya"
print(today.nakshatra.name)    # "Pushya"
print(today.nakshatra.pada)    # 3
print(today.sunrise)           # 2026-03-03 06:42:18+05:30

# Festival dates
festivals = calendar.compute_festivals(2026, delhi)
for f in festivals[:3]:
    print(f"{f.name}: {f.date}")
# Makar Sankranti: 2026-01-14
# Vasant Panchami: 2026-02-01
# Maha Shivaratri: 2026-02-15

Install

pip install panchang

Requires Python 3.11+. Wheels available for Linux, macOS, and Windows.

Features

Panchang (Daily Calendar)

All 5 Panchanga elements with precise transition times (start/end to the second):

  • Tithi (lunar day) — with Paksha (Shukla/Krishna)
  • Nakshatra (lunar mansion) — with Pada (1-4)
  • Yoga (Sun-Moon combination)
  • Karana (half-tithi)
  • Vara (weekday)

Sun & Moon

  • Sunrise/sunset using Hindu rising model (disc center at horizon, Bhāratīya atmospheric refraction)
  • Location-aware computation for any lat/lng/timezone

Muhurat (Auspicious Windows)

  • Rahu Kalam, Yama Gandam, Gulika Kalam
  • Abhijit Muhurat
  • Choghadiya (16 windows per day — 8 day + 8 night)

Festivals

55+ Hindu festivals astronomically computed for any year:

  • Tithi-based: Diwali, Holi, Janmashtami, Ram Navami, Ganesh Chaturthi, Navaratri, ...
  • Sankranti-based: Makar Sankranti, Pongal, Vishu, Bihu, ...
  • Nakshatra-based: Onam (Thiruvonam)
  • Ekadashi: All 24 per year with Smartha and Vaishnava dates
  • Vrat dates: Pradosh, Sankashti Chaturthi, Amavasya, Purnima (~60 per year)

Festival definitions are data-driven (YAML, not hardcoded) with year-agnostic astronomical rules. Each resolved date includes a reasoning string explaining the determination.

Regional Calendars

8 regional calendar systems with proper era numbering:

  • Solar: Tamil, Bengali, Malayalam, Kannada
  • Lunar: Hindi, Marathi, Telugu, Gujarati
  • Era support: Vikram Samvat, Shaka Samvat, Bangabda, Kollavarsham, Thiruvalluvar, 60-year Jovian cycle

Lunar Months

  • Both Amant (South Bhārat) and Purnimant (North Bhārat) systems
  • Adhik Maas (intercalary month) and Kshaya Maas detection

Shraddha Tithi

Death anniversary date resolution — given a death date, computes the Shraddha date for any target year using the lunar tithi and month.

Batch Computation

Full-year or date-range Panchang in a single call:

from panchang import batch, Location

delhi = Location(lat=28.6139, lng=77.2090, tz="Asia/Kolkata")
year_data = batch.compute_year(2026, delhi)  # 365 days of Panchang

Accuracy

All computations use the Swiss Ephemeris (Moshier analytical model) with Lahiri/Chitrapaksha Ayanamsa — the Government of Bhārat standard.

Cross-validated against Drik Panchang for 2026-02-24, Delhi:

Element Drik Panchang Panchang Delta
Sunrise 06:51 06:55 ~4 min
Tithi Shukla Saptami until 07:01 Shukla Saptami until 07:02 ~1 min
Nakshatra Krittika until 15:07 Krittika until 15:07 exact
Yoga Indra until 07:24 Indra until 07:23 ~1 min
Karana Vanija until 07:01 Vanija until 07:02 ~1 min
Rahu Kalam 15:26-16:52 15:24-16:48 ~2 min

All element names match exactly. Timing differences are 1-5 minutes due to sunrise geometric model variations.

Architecture

Rust core + Python API. All astronomical math runs in Rust via PyO3, giving C-level performance with a Pythonic interface.

Python (pydantic models, typed API)
  └── Rust via PyO3 (panchang, festivals, muhurat, batch)
        └── Swiss Ephemeris C (planetary positions via FFI)

Performance (Rust benchmarks):

  • Full Panchang: ~3.7 ms
  • Sunrise: ~29 µs
  • All 9 planets: ~7 µs

Development

# Setup
uv venv
uv pip install -e ".[dev]"

# Build Rust extension
maturin develop --uv

# Run tests
uv run pytest tests/ -v
cargo test --manifest-path crates/panchang-core/Cargo.toml -- --test-threads=1

# Lint
uv run ruff check python/ tests/
cargo clippy --manifest-path crates/panchang-core/Cargo.toml -- -D warnings

Tech Stack

Layer Technology
Computation Rust + PyO3
Ephemeris Swiss Ephemeris (vendored C, Moshier model)
Python 3.11+ with Pydantic v2
Build maturin + uv
Testing pytest + proptest + criterion
CI GitHub Actions + maturin-action

Contributing

Contributions welcome! Please open an issue first to discuss what you'd like to change.

# Run the full check suite before submitting
uv run ruff check python/ tests/
uv run pytest tests/ -v
cargo test --manifest-path crates/panchang-core/Cargo.toml -- --test-threads=1
cargo clippy --manifest-path crates/panchang-core/Cargo.toml -- -D warnings

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

panchang-0.2.3-cp313-cp313-win_amd64.whl (427.4 kB view details)

Uploaded CPython 3.13Windows x86-64

panchang-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (576.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

panchang-0.2.3-cp313-cp313-macosx_11_0_arm64.whl (506.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

panchang-0.2.3-cp312-cp312-win_amd64.whl (428.0 kB view details)

Uploaded CPython 3.12Windows x86-64

panchang-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (577.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

panchang-0.2.3-cp312-cp312-macosx_11_0_arm64.whl (507.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

panchang-0.2.3-cp311-cp311-win_amd64.whl (427.5 kB view details)

Uploaded CPython 3.11Windows x86-64

panchang-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (578.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

panchang-0.2.3-cp311-cp311-macosx_11_0_arm64.whl (510.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file panchang-0.2.3-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: panchang-0.2.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 427.4 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for panchang-0.2.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e588e5e74664cd32ba46ebe25d95b150e9c475acd79a297c6351f6b8f86162de
MD5 a1bac33dab748ef8d22cfd7900c288db
BLAKE2b-256 e19f30fd930ca7c9f3023fd88357e8edc62b6fb835e2eac0b48e9a96984c5d03

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp313-cp313-win_amd64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for panchang-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3fb2f41fb5c7e337713c63851c25aa68f3656800d932ca80c1f07eae39bbab8c
MD5 bb2681af27999b8f6546f5b2977e65aa
BLAKE2b-256 ae903f717e68cf3d77fd3892576411084d87ed2397371f6036adc0f979a11143

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for panchang-0.2.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 443d47883f4e5170719289740d53f2e2658f5e4189bd0a0874f871428ba0ee5d
MD5 0ba576ad4b5554a590a3f9c8457fe58c
BLAKE2b-256 f563e5dbb99078d570de574cddf0017ec241da1ffd92fde4b64863e45c7a5585

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: panchang-0.2.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 428.0 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for panchang-0.2.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2d57d194dcb821660aff669da413eb42415c33db445314c7a579b371aec6aca7
MD5 cf26f65c1864e5cb7b23c71199e62ea1
BLAKE2b-256 a754fa386a14f09832a7d1e45605b4308f669fc8234bd65fb5e7aefb874a3b88

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp312-cp312-win_amd64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for panchang-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ef2894702e33a652538d32897e0e9ad807c4fc158129dd9944e9a26111289ebc
MD5 660606cc478ef1735aac51b41213687a
BLAKE2b-256 7a764c123ae6a1fb9e543c417269f07ed92e3c35497f6dc67bd35cb13d9fca64

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for panchang-0.2.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 278dd12a0b8fd542b6117b9dfc32d591fbb414a2fe8414644e94dc1c8210f69d
MD5 1840da3082bdc3e35f49407a1e472a0b
BLAKE2b-256 7ac1ffa77ee095a275ab9d7a6a9ffc417ab8a1793045fc94435e0100affc4df6

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: panchang-0.2.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 427.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for panchang-0.2.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 43466697ec814d1e6457f9a1c6e919e2b90f1aab9bbacdfe653123756ab4c76d
MD5 f49f387eb29671fc65b66ed0965082bc
BLAKE2b-256 ff9a8318aa782a30243485206fb90102f2dd15c6060ccbe5055319d10cfb32f6

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp311-cp311-win_amd64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for panchang-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6a8fbe08368a72a41e0964475f219dfef12cf6d6e37c6de465a7a7e80a1c214b
MD5 6c567522a072b565003db7d85b7fc8f4
BLAKE2b-256 9018ba53974f370116a4d1c1256991f95b9165c2b26e045ca1306e31c4622cf9

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file panchang-0.2.3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for panchang-0.2.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 defd08c2b0a4a69470336fe12df22876eb72b688ff282a822f04dcf26f1e7cdd
MD5 2f107ee7e2b4bbcb9eccdbde00980d15
BLAKE2b-256 236c7cf15a3a7f49cec89fe7f35998a38ea82ff6676394f03789240d9d0e2560

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.3-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on vibzart/panchang

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page