Skip to main content

JyotiPy

PyPI version Python versions License: MIT

Pure-Python Vedic (Jyotish) astrology library. Computes sidereal planetary positions, ascendant, houses, divisional charts, dashas, panchanga, transits, Ashtakavarga, Shadbala, and a conservative set of yogas with zero C extensions or external ephemeris files.

Built as a permissive-license alternative to pyswisseph. All computations use PyMeeus for planetary positions (VSOP87 + ELP2000-82) followed by pure-Python ayanamsa, house, dasha, and strength-system logic. Supports Python 3.8+.

Installation

pip install jyotipy

Or install from source:

git clone https://github.com/AnandShah10/jyotipy.git
cd jyotipy
pip install -e .

Quick Start

from datetime import datetime
from jyotipy import BirthChart, Graha

chart = BirthChart(
    dt=datetime(1990, 6, 15, 14, 32),
    utc_offset_hours=5.5,
    latitude=23.03, longitude=72.58,   # Ahmedabad
)

print(chart.summary())          # sign, degree, nakshatra, pada per graha
print(chart.ascendant)          # sidereal Lagna longitude
print(chart.houses("whole_sign"))
print(chart.varga("D9"))        # Navamsha
print(chart.mahadashas()[:3])   # first 3 Vimshottari mahadashas
print(chart.yogas())
print(chart.panchanga())

New in 0.2

chart.reduced_ashtakavarga(Graha.SUN)                # Bhinnashtakavarga after Trikona + Ekadhipatya Sodhana
chart.transits(datetime(2026, 9, 1, 12, 0), 5.5)     # Gochara + Vedha-aware transit report
chart.sade_sati(datetime(2026, 9, 1, 12, 0), 5.5)    # Sade Sati / Kantaka Sani / Ashtama Sani status
chart.dasha_bhukti_activation(datetime(2026, 9, 1))  # which period lord dominates, via Shadbala
chart.full_shadbala()                                # all six Shadbala components, all 7 planets, Yuddha Bala applied
chart.houses("placidus")                             # or "sripati"

See CHANGELOG.md for the full list of what shipped in 0.2.

What's implemented (v0.2)

Area Status
Tropical planetary positions (Sun, Moon, Mercury-Saturn) Done, via PyMeeus
Rahu/Ketu (mean node default, true node optional) Done
Ayanamsa: Lahiri, True Chitrapaksha, KP-Newcomb, Raman Done -- Raman now independently sourced (397 CE epoch), not a Lahiri offset
Ascendant / Midheaven Done
Houses: Whole Sign, Equal, Porphyry, Placidus, Sripati Done -- see Accuracy notes for two honest caveats
Nakshatra + Pada Done
Divisional charts: all 16 vargas, D1 through D60 Done
Vimshottari Mahadasha + Antardasha Done
Dasha/Bhukti activation weighting (which period lord dominates, via Shadbala comparison) Done
Yogas: Pancha Mahapurusha, Gajakesari, Budhaditya, Chandra-Mangal, Sunapha/Anapha/Durudhara, Kemadruma, Neechabhanga Done, deliberately conservative set
Panchanga: Tithi, Vara, Nakshatra, Nitya Yoga, Karana Done
Ashtakavarga: Bhinnashtakavarga, Sarvashtakavarga, Trikona Sodhana, Ekadhipatya Sodhana Done
Transit/Gochara: good/bad houses from Moon, Vedha, Sade Sati, Ashtakavarga-qualified verdicts Done
Shadbala: all six components (Sthana, Dig, Kala, Chesta, Naisargika, Drik) Done -- see Accuracy notes for two narrow open items
Compatibility (Guna Milan / Ashtakoot) Done (8 kootas, 36-point total)

Accuracy notes -- read this before using it for real work

  • Planetary positions: PyMeeus implements full VSOP87 (planets) and ELP2000-82 (Moon), validated in this project against Meeus's own published worked examples. Cross-check a real chart against JHora or astro.com before relying on this for client work.
  • Ayanamsa: Lahiri/KP-Newcomb/True Chitrapaksha are cross-checked against multiple independent public sources and numerically validated against published reference values. Raman is now independently sourced from its own base epoch (397 CE) and precession rate, confirmed by 7 independent sources including B.V. Raman's grandson.
  • Divisional charts: all 16 vargas (D1-D60) are implemented and cross-sourced. D60 specifically has a documented, unresolved disagreement between two classical methods in the wider literature; this implementation uses the one modern software (JHora) actually uses -- see varga.py for the alternate reading.
  • Houses: Whole Sign and Equal House are exact by construction. Porphyry, Placidus, and Sripati are all implemented, but Placidus in particular required unusually extensive debugging -- see houses.py's module comments for the full story if you want to understand exactly what's verified (boundary conditions to numerical precision, universal house-numbering convention against real Swiss Ephemeris output) versus what has no external numeric example to check against (the final 12-cusp output end-to-end). Sripati has one known quirk: for some ordinary, non-polar charts, its House 1 cusp doesn't sit exactly at the true Ascendant, because the real reference algorithm (transcribed directly from Swiss Ephemeris source) includes a swap condition that triggers more broadly than its own documentation suggests.
  • Ashtakavarga: the base bindu tables and both reduction techniques (Trikona/Ekadhipatya Sodhana) are implemented. The base tables are validated against a fully worked B.V. Raman example (all 7 planets plus Sarvashtakavarga matched exactly). The two reductions don't have an external worked example to check against; confidence rests on exhaustive coverage of every documented rule branch in the test suite instead.
  • Shadbala: all six classical components (Sthana, Dig, Kala, Chesta, Naisargika, Drik) are now implemented. Two narrow open items remain: Yuddha Bala's victor rule doesn't implement a secondary "Venus always wins" exception some sources describe, and Drik Bala's formula was reconstructed from a worked reference grid (not a primary text) -- both documented in their respective modules (yuddhabala.py, drikbala.py).
  • Transit/Gochara: the base good/bad-house and Vedha tables are cross-validated against multiple sources and a full worked example. Dasha/Bhukti activation weighting layers Shadbala-based strength judgment on top, per B.V. Raman's own stated method, but doesn't attempt his complete predictive synthesis (house lordships, functional benefic/malefic status, classical yogas).
  • Vimshottari year length: uses 365.25 days/year, a common but not universal convention. Check what a reference tool uses if you need bit-for-bit agreement with it.

Roadmap

  1. Nadi astrology, Prashna (horary), Muhurta (electional), Varshaphal/Tajika (annual charts) -- none started yet
  2. A CLI for the library
  3. Full documentation coverage as new modules are added (currently up to date as of 0.2.1)

License

MIT License (see the LICENSE file in the GitHub repository).

JyotiPy depends on PyMeeus (LGPLv3) as an unmodified runtime dependency. This does not change JyotiPy's own MIT license, but if you vendor or fork PyMeeus itself, the LGPL terms apply to that portion.

Full documentation: https://jyotipy.readthedocs.io

Source code, examples, and issue reports are at the GitHub repository.

Metadata

Release files for jyotipy 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for jyotipy 0.2.1
File Size Uploaded Provenance Actions
jyotipy-0.2.1.tar.gz 80.4 kB With provenance Details for jyotipy-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for jyotipy 0.2.1
File Interpreter ABI Platform Actions
jyotipy-0.2.1-py3-none-any.whl Python 3 none any Details for jyotipy-0.2.1-py3-none-any.whl

Total release size: 149.0 kB

Release files / jyotipy-0.2.1.tar.gz

Download URL jyotipy-0.2.1.tar.gz
Size 80.4 kB
Tags Source
SHA-256 checksum
How to use checksums
9157aeb691e2f87e08e49e481c17f6b1adb0b8a319a95e771fba7a85a6914bbd
BLAKE2b-256 checksum
How to use checksums
25f896136fa5d4cc2f13fae094ef31dae90dc0f8dd65cc64e0cec2fd8e8c4d2f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Release files / jyotipy-0.2.1-py3-none-any.whl

Download URL jyotipy-0.2.1-py3-none-any.whl
Size 68.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dcaf59f6528fefab7c34798304918ec9b31ee93a42405718454cfcd8fd5d1c34
BLAKE2b-256 checksum
How to use checksums
80f03bf4494c1fa8cbbf1b3ef7261caf949a91bf84065603b3b83c7585c9f613
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

Security for jyotipy 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for jyotipy-0.2.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 2, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page