Ascendant
Ascendant is a Python package for calculating Vedic astrology charts, Vimshottari Dashas, Yoga combinations, and Ashtakavarga values.
It uses Swiss Ephemeris through pyswisseph and supports typed configuration
for ayanamsa and house-system defaults.
Installation
Ascendant requires Python 3.11 or later.
python -m pip install astro-ascendant
pyswisseph is installed as a package dependency. No separate flatlib
installation is required.
Quick start
Create an Ascendant instance with the local birth time, UTC offset, and
geographic coordinates:
from ascendant import Ascendant
astro = Ascendant(
year=1990,
month=1,
day=1,
hour=12,
minute=0,
second=0,
utc="+5:30",
latitude=28.6139,
longitude=77.2090,
)
# Rasi chart (D1)
chart = astro.get_chart(division=1)
# Detected Yoga combinations
present_yogas = [
yoga for yoga in astro.get_yogas() if yoga["present"]
]
# Vimshottari Dasha
dasha_timeline = astro.get_dasha_timeline()
current_dasha = astro.get_current_dasha()
# Ashtakavarga and Sarvashtakavarga
ashtakavarga = astro.get_sav()
sarvashtakavarga = ashtakavarga["sarva"]
By default, Ascendant uses the Lahiri ayanamsa and Whole Sign houses.
Features
- Sidereal planetary and house calculations using Swiss Ephemeris
- Divisional charts, including D1, D9, D10, and other supported Vargas
- Vimshottari Mahadasha and Antardasha timelines
- Current Dasha lookup for a supplied date
- Registered Vedic Yoga evaluation with structured results
- Bhinnashtakavarga, Sarvashtakavarga, Shodhana, and Shodhya Pinda
- Typed, immutable calculation configuration
Configuration
Override the defaults for an individual chart:
astro = Ascendant(
year=1990,
month=1,
day=1,
hour=12,
minute=0,
second=0,
utc="+5:30",
latitude=28.6139,
longitude=77.2090,
ayanamsa="Krishnamurti",
house_system="Porphyry",
)
Or configure application-wide defaults:
from ascendant import (
Ascendant,
AscendantConfig,
Ayanamsa,
HouseSystem,
configure,
)
configure(
AscendantConfig(
ayanamsa=Ayanamsa.LAHIRI,
house_system=HouseSystem.PORPHYRY,
)
)
astro = Ascendant(
year=1990,
month=1,
day=1,
hour=12,
minute=0,
second=0,
utc="+5:30",
latitude=28.6139,
longitude=77.2090,
)
Explicit Ascendant arguments take precedence over configured defaults, which
take precedence over the package defaults. Each instance captures an immutable
configuration snapshot when it is created.
Use get_config() to inspect the configured defaults and reset_config() to
restore Lahiri and Whole Sign. Unsupported constructor values raise
ValueError.
Supported ayanamsas
LahiriLahiri_1940Lahiri_VP285Lahiri_ICRCRamanKrishnamurtiKrishnamurti_Senthilathiban
Supported house systems
Whole SignPlacidusEqualEqual 2Porphyry
Result shape
Ascendant returns regular Python dictionaries and lists. For example, every Yoga result contains:
{
"id": "gajakesari",
"name": "GajaKesari",
"present": True,
"strength": 0.9,
"details": "Jupiter in house 4 and Moon is in 1",
"type": "Positive",
}
Use present to select detected combinations and retain details when
presenting or interpreting a result.
Documentation
The repository includes guides for:
Development
Clone the repository, create the local environment, and use the documented Make targets:
make help
make test
make typecheck
make lint
Swiss Ephemeris accuracy cases live in
tests/test_swiss_ephemeris_accuracy.py.
Agent skills
The repository also contains an optional Ascendant agent plugin. It is not required to use the Python package.
npx skills add thaletto/ascendant
Codex users can install the bundled plugin from the repository marketplace:
codex plugin marketplace add https://github.com/thaletto/ascendant.git --ref main
codex plugin add agent@ascendant
Release files for astro-ascendant 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| astro_ascendant-1.1.2.tar.gz | 112.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| astro_ascendant-1.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 212.2 kB
Release files / astro_ascendant-1.1.2.tar.gz
| Download URL | astro_ascendant-1.1.2.tar.gz |
|---|---|
| Size | 112.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1ec7ad76b16b4b6137a21b4ad47ad279c37560666eeef68f4bc4a3db373c0404
|
|
BLAKE2b-256 checksum How to use checksums |
ed2c195670582035ad76ffbe81ccbd6ac13e7dc02dbba774c8a904ffdccda272
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Jul 29, 2026.
Transparency logRelease files / astro_ascendant-1.1.2-py3-none-any.whl
| Download URL | astro_ascendant-1.1.2-py3-none-any.whl |
|---|---|
| Size | 99.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d213c4823e6c4e378ee5cea6bc8b0f1be36da8c7a0b082c805a31424b9c26e19
|
|
BLAKE2b-256 checksum How to use checksums |
9f9d964325c52e6a76069654263ae46b0e8a2638f62fcfc30aea0816d07a663c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Jul 29, 2026.
Transparency log