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.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 astro-ascendant 1.1.1
File Size Uploaded
astro_ascendant-1.1.1.tar.gz 112.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for astro-ascendant 1.1.1
File Interpreter ABI Platform
astro_ascendant-1.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 212.2 kB

Release files / astro_ascendant-1.1.1.tar.gz

Download URL astro_ascendant-1.1.1.tar.gz
Size 112.7 kB
Tags Source
SHA-256 checksum
How to use checksums
46366639b870bc4965aa299bbe205d6b27c18d602647492dfd57c86a2e5d80bf
BLAKE2b-256 checksum
How to use checksums
753f388e6a49f52186b7b1bd1ae9f285f753ad37618dd42d9debc22a7284ec17
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.1-py3-none-any.whl

Download URL astro_ascendant-1.1.1-py3-none-any.whl
Size 99.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7c512f492da42112d264f979e180bbf52b05d197a233e6ddd49d8b75ccc14cba
BLAKE2b-256 checksum
How to use checksums
6d6443c9d63bf85d00aba6be3f41b2bbac4fbf384a022ea993070c7bc10b8fc1
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

1.1.2

2 release files

This release

1.1.1 This release

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