PyJHora
Python package containing almost all the features described in the book Vedic Astrology - An Integrated Approach - by PVR Narasimha Rao
Install / Use
/learn @naturalstupid/PyJHoraREADME
JHora 4.7.0
Python package containing almost all the features described in the book
Vedic Astrology - An Integrated Approach - by PVR Narasimha Rao

and
the free astrology software Jagannatha Hora V8.0 software by the same author.

This python library was inspired by his book and software. Almost all the results have been verified against the examples and exercises provided in the book. Also the features that are outside of his book but in his JHora software were collected from various internet sources and have been verified closest to results obtained using JHora software.
There is a test module (jhora.tests.pvr_tests) containing about 6800 tests that can be run to verify the same. Please note the tests assume const._DEFAULT_AYANAMSA_MODE='LAHIRI'.
Having said that, if you find this package useful, all the credits go to Shri. P.V.R Narasimha Rao for such a wonderful book and the software and to the other internet sources.
Installation Requirements
This package is available in pypi.org
pip install PyJHora
IMPORTANT: From 3.6.6 onwards due to space limitations, the installation wheel/tar file will not contain the ephemeris data files. They should be copied from previous versions or directly from
https://github.com/naturalstupid/pyjhora/src/jhora/data/ephe folder
Copy all the files from that folder to package installation directory jhora/data/ephe
Requirements
Python interface to Swiss ephemeris and Qt.
pip install pyswisseph # OR apt-get install pyswisseph
pip install pyqt6 # OR apt-get install pyqt6
There are other dependencies listed in the file requirements.txt should be installed using pip if not already available.
There are four basic UI files namely: panchangam.py, vedic_calendar.py, horo_chart_tabs.py and match_ui.py.
panchangam.py - provides a one page panchanga information. vedic_calendar.py provides calendar for current month.
horo_chart_tabs.py- provides multi-tab/page panchanga, divisional charts and match_ui.py - provides marriage compatibility between boy and girl based on their birh stars.
Using the Code / command line
Run the file: jhora.ui.panchanga.py in your Eclipse IDE
Or
from jhora.ui.panchangam import PanchangaWidget
from jhora import utils
import sys
from _datetime import datetime
from PyQt6.QtWidgets import QApplication
def except_hook(cls, exception, traceback):
print('exception called')
sys.__excepthook__(cls, exception, traceback)
sys.excepthook = except_hook
App = QApplication(sys.argv)
chart = PanchangaWidget()
chart.language('Tamil')
chart.compute_horoscope()
chart.show()
sys.exit(App.exec())
If you have installed PyQt6 installed you can have Tabbed UI with almost all features.
from jhora.ui.horo_chart_tabs import ChartTabbed
def except_hook(cls, exception, traceback):
print('exception called')
sys.__excepthook__(cls, exception, traceback)
sys.excepthook = except_hook
App = QApplication(sys.argv)
chart = ChartTabbed()
chart.language('Tamil')
chart.compute_horoscope()
chart.show()
sys.exit(App.exec())
Using the GUI
Enter Name, and Place with country name (e.g. Chennai, IN) If you get an error, enter latitude, longitude and time zone manually. If you want to be precise, enter the lat/long of the exact place (e.g. hospital) You can use google to find the latitude, longitude, time zone of the place
Type the Date in YYY,MM,DD format in the 'Date' field. Negative value for YYYY are interpolated as proleptic Gregorian calendar (Before Christ BC).
Enter Time of birth, choose chart style, ayanamsa mode, language of display
Click Show Chart to display the birth (Raasi and Navamsam) charts (every time any imput is changed)
Click Show PDF to save the screen as a PDF file
Changes since 4.6.0
- MAJOR CHANGES: RAHU AND KETU HAVE BEEN CHANGED TO "TRUE NODES" AND
const._DEFAULT_AYANAMSAchanged toTRUE_PUSHYA. With this Rahu/Ketu planet positions match with JHora software. But the unit tests were created with them to be "Mean Nodes". To pass them you have to changeconst.use_rahu_ketu_as_true_nodesto False. Similarly HINDU FLAGS added todrik.ascendantfunction - now ascendant and planets match in longitudes with JHora software (withTRUE_PUSHYAayanamsa). Unit tests will be checked with these changes in a future version. They are still valid withLAHIRIandMEAN NODES. - Use
drik.set_planet_list(set_rahu_ketu_as_true_nodes=False)to use Mean Modes andTrueto use True Nodes. From V4.7.0 onwards default will be True Nodes and default Ayanamsa will beTRUE_PUSHYAto match with JHora software. - Earlier versions planet longitudes and ascendant were not matching with JHora with same ayanamsa. This was fixed by using same ephemeris parameters for nutation, aberration, reflection etc. Also added 3 functions in
utilsmodule namelyset_flags_for_planet_positions,set_flags_for_rise_setandset_flag_for_calendarthat sets the default as in JHora software. - Some reported bugs have been fixed. Thanks to the users who reported them.
- New implementation for
jhora.horoscope.dhasa.grahadrigandpadhanadhamsa. Drig dhasa now matches with JHora software (but you have to setconst.scorpio_owner_for_dhasa_calculations=const.KETU_IDandconst.aquarius_owner_for_dhasa_calculations=const.RAHU_IDor whatever default in JHora software. Drig dasa offers 2 methods, 1. PVR (his drig dasa 2007 paper) (default) and 2. PVR per book. Similarly, Padhanadhamsa offers 3 methods: 1. Iranganti Rangacharya 2. Sanjay Rath and 3. PVR. Of these only PVR can be used for all varga charts while other two are restricted to navamsa. - Added 3 new methods to
jhora.horoscope.chart.dhasa.raasi.chara2 Male chart methods using Iranganti Rangacharya and Mind Sutra method. - All dhasas now support generating upto Dehaantara dhasa. New argument
dhasa_level_index=const.MAHA_DHASA_DEPTH.ANTARAhas been added to all dhasa functions. You can choose uptoconst.MAHA_DHASA_DEPTH.DEHAfor all dhasa functions. Previous version argumentinclude_antardhasahas been removed from all dhasa functions. - Added bhava chart/madhya options: KN Rao, Parashari/PVR, KP, Raman, Sripathi (PVR), Sripathi (Astrodienst) and other western systems (Placidus, Koch, Porphyrius, Regiomontanus, Campanus', Vehlow, axial rotation system, azimuthal or horizontal system, Polich/Page - topocentric system, Alcabitus and Morinus). Errors in Bhava Chart calculations fixed. Results match with JHora now.
- Added
strength.planet_aspect_relationship_table_pvrfunction to more or less match JHora's relationship table. There are are still minor differences though. - Added a few more functions in
drikmodule: Improvednext_conjunction_of_planet_pair,ardra_pravesha_date,next_planet_nakshathra_pravesha_date,ascendant_speed,next_planet_entry_date_generalfunctions. NOTE: RAHU/KETU ENTRY DATES STILL DONT MATCH WITH JHORA VALUES ESPECIALLY FOR DIRECTION=-1 (PREVIOUS DATE). Also the _general function is still experimental and requires tweaking the increment_speed_factor (to .001 for Saturn/Lahiri). - Added tests for all newly added functions. Almost all of them close to JHora software values. Also added a
jhora.tests.test_helper(using CoPilot's help). Using this helper - expected results are saved in JSON files for each test baseline you may want to create. I have created 2 baselines one for existingLAHIRIand one forTRUE_PUSHYA. Helper supportsrecordmode to save actual/expected values,comparemode to test against baseline files andnonemode to test against hard-coded expected results inside thepvr_testsmodule. - Added
jhora.panchanga.eclipsemodule. Movednext_solar_eclipse_dateandnext_lunar_eclipse_dateto the eclipse module. Now you can specify Local/Global or Eclipse Types (Total, Partial, Annular, Penumbral). Constants defined to add these such asSolarEclipseType.TOTAL, SolarEclipseType.ANYorLunarEclipseType.PENUMBRALorEclipseLocation.LOCAL or EclipseLocation.GLOBAL. The functions can optionally return global location of maximum eclipse. - REMOVED PANDAS AS REQUIREMENT AND REPLACED IT WITH CSV TO AVOID MEMORY ISSUES.
Changes since 4.5.5
- Some reported bugs have been fixed. Thanks to the users who reported them.
- ayanamsa_mode argument has been removed as an argument from all functions. Use only
drik.set_ayanamsa_mode(ayanamsa_mode)to set ayanamsa mode - 186 more yogas added from BV Raman's book. Total we have now support for 284 yogas. See
jhora.horoscope.chart.yogafor details. - Some extra functions have been added to
jhora.horoscope.chart.house. Example:are_planets_in_quadrants,get_planets_in_quadrants. - introduced 2 new constants in
constnamelyconst.force_saturn_as_owner_of_aquariusandforce_mars_as_owner_of_scorpio. By default these areFalse. These can be used inhouse.stronger_planet_from_planet_positionsandhouse.stronger_planetfunctions if required. Also removed Uranus/Neptune/Pluto fromassociations_of_the_planet. - Added constants for planets
SUN_ID=0toKETU_ID=8. Similarly constants for zodiacs and houses. - more functions added
utils. Example:is_planet_in_moolatrikona,is_planet_in_exalation,is_planet_strong,is_planet_in_debilitation,is_planet_weak,remove_tropical_planets_from_chart,get_amsa_ruler_from_planet_longitude,is_cruel_shashtiamsa_rulerandis_soumya_shashtiamsa_ruler - Now we have about 7678 tests verifying the features of this software. Includes tests for each BV.Raman yoga added as well.
Changes since 4.5.
Related Skills
node-connect
351.8kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
110.9kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
351.8kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
351.8kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
