Skip to main content

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

  • Lahiri
  • Lahiri_1940
  • Lahiri_VP285
  • Lahiri_ICRC
  • Raman
  • Krishnamurti
  • Krishnamurti_Senthilathiban

Supported house systems

  • Whole Sign
  • Placidus
  • Equal
  • Equal 2
  • Porphyry

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)

Source distribution for astro-ascendant 1.1.2
File Size Uploaded
astro_ascendant-1.1.2.tar.gz 112.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for astro-ascendant 1.1.2
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

2.0.0

2 release files

This release

1.1.2 This release

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.1

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.0

2 release files

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