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.8-cp313-cp313-win_amd64.whl (446.3 kB view details)

Uploaded CPython 3.13Windows x86-64

panchang-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (596.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

panchang-0.2.8-cp313-cp313-macosx_11_0_arm64.whl (526.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

panchang-0.2.8-cp312-cp312-win_amd64.whl (447.0 kB view details)

Uploaded CPython 3.12Windows x86-64

panchang-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (597.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

panchang-0.2.8-cp312-cp312-macosx_11_0_arm64.whl (526.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

panchang-0.2.8-cp311-cp311-win_amd64.whl (447.1 kB view details)

Uploaded CPython 3.11Windows x86-64

panchang-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (597.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

panchang-0.2.8-cp311-cp311-macosx_11_0_arm64.whl (528.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

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

File metadata

  • Download URL: panchang-0.2.8-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 446.3 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.8-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 57af8800b561f83b6721163e0e31da4e6ddae8f58b59371909d32605bf308fe3
MD5 499673460232bc722b7b01d6e3a231da
BLAKE2b-256 4505951cfef61e4c51db07966eeabc9ca901be65347fbe5d339e0323e1342771

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for panchang-0.2.8-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 556535957fb604a5769fce3e483ade8d87c5d7c00d3a1811e27f99935a289ae0
MD5 91ec55938edeea0658a0fae39f95fa94
BLAKE2b-256 6e44b6731aa7a2dcd1f8fbbe944ce36cb0240d65e64567f1a88d98b1ec7192c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for panchang-0.2.8-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c35d3ff741fb89a23859d976e509869cf74b5c43a5e75cd86c600a2e3b63fb11
MD5 420d0fd30b8f4cfbf052488de179596c
BLAKE2b-256 8666fe29d2e851c84bf5a84f8b0c1b6ba029db4851d258f3f8dc560f799ca3ee

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: panchang-0.2.8-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 447.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.8-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c74bbec61f3ee89760e5754ff3655253dbe71cc77e8ffc6c65cd0eca5337ded0
MD5 d5d2f9eedf2bd51427dbc0c912dab0f9
BLAKE2b-256 336c6981b5e6a18289f49c0bc9f514cae3ace6ce6bb17ab9ac7de0d656fa4775

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for panchang-0.2.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ccdfcf9b7971b6251d0b3a6d1dff98032bf1a7889fa88aa10b903b5b69b677ad
MD5 9adf345c58aa558b1b743b9d5f8228e2
BLAKE2b-256 424f1b3ad76a2188e47760a5a9d29b308c2f3e514b91a20f56514725b50e2184

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for panchang-0.2.8-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d5d5b7f4e86b7bdb67abffe062d011158bdbae485503e74d06119d0e60cf5800
MD5 7e89308de8a978d15a5593b62ac0a2ae
BLAKE2b-256 627b2643bfddeb78a6d24bab61e7a6986bc282059f42c2328dae1a824a129477

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: panchang-0.2.8-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 447.1 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.8-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6914020e0ba760817348410f73b19a9569bec3bc36f8042dbc6b7cfaa93aa4eb
MD5 3a5cb4b788d5484dc2c18c7f346a84a6
BLAKE2b-256 429b6533d0664bd6cb02fd86338165cfd68ff219a8bb12ed9499b35f72090bc7

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for panchang-0.2.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 33b76cb5045f714fe85bd233b28961a969fce9c4ac12f0375a9c0bdc4fafae84
MD5 353fd6aa6e36865568f868e29887e407
BLAKE2b-256 25b55c74fbe64231299b538385096bbcdee44e9333222942efda1422ae66f1e2

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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.8-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for panchang-0.2.8-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bc1b979dc1ff67df33db3ff040a975f3b01b3cc6d9a638fbd9cb67acd1b00fe
MD5 46df28285e3f46d519e6217cf1b1da36
BLAKE2b-256 ad62eca5a166b947dd340062192aea96f37e254123f8e8659b4b662bc1a98a98

See more details on using hashes here.

Provenance

The following attestation bundles were made for panchang-0.2.8-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