A python library for astrology.
Project description
Kerykeion
Kerykeion is a python library for Astrology. It can calculate all the planet and house position, also it can calculate the aspects of a single persone or between two, you can set how many planets you need in the settings in the utility module. It also can generate an SVG of a birthchart, a synastry chart or a transit chart.
Installation
Kerykeion is a Python 3.9 package, make sure you have Python 3.9 or above installed on your system.
pip3 install kerykeion
Usage
Here some examples:
# Import the main class for creating a kerykeion instance:
from kerykeion import AstrologicalSubject
# Create a kerykeion instance:
# Args: Name, year, month, day, hour, minuts, city, nation(optional)
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
# Get the information about the sun in the chart:
# (The position of the planets always starts at 0)
kanye.sun
#> {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, 'pos': 17.598992059774275, 'abs_pos': 77.59899205977428, 'emoji': '♊️', 'house': '12th House', 'retrograde': False}
# Get information about the first house:
kanye.first_house
#> {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', 'sign_num': 3, 'pos': 17.995779673209114, 'abs_pos': 107.99577967320911, 'emoji': '♋️'}
# Get element of the moon sign:
kanye.moon.get("element")
#> 'Water'
To avoid connecting to GeoNames (eg. avoiding hourly limit or no internet connection) you should instance kerykeion like this:
kanye = AstrologicalSubject(
"Kanye", 1977, 6, 8, 8, 45,
lng=50, lat=50, tz_str="Europe/Rome"
)
Generate a SVG Chart:
from kerykeion import AstrologicalSubject, KerykeionChartSVG
first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")
# Set the type, it can be Natal, Synastry or Transit
name = KerykeionChartSVG(first, chart_type="Synastry", second_obj=second)
name.makeSVG()
print(len(name.aspects_list))
#> Generating kerykeion object for Jack...
#> Generating kerykeion object for Jane...
#> Jack birth location: Roma, 41.89193, 12.51133
#> SVG Generated Correctly
#> 38
Report
To print a report of all the data:
from kerykeion import Report, AstrologicalSubject
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
report = Report(kanye)
report.print_report()
Returns:
+- Kerykeion report for Kanye -+
+----------+------+-------------+-----------+----------+
| Date | Time | Location | Longitude | Latitude |
+----------+------+-------------+-----------+----------+
| 8/6/1977 | 8:45 | Atlanta, US | -84.38798 | 33.749 |
+----------+------+-------------+-----------+----------+
+-----------+------+-------+------+----------------+
| Planet | Sign | Pos. | Ret. | House |
+-----------+------+-------+------+----------------+
| Sun | Gem | 17.6 | - | Twelfth_House |
| Moon | Pis | 16.43 | - | Ninth_House |
| Mercury | Tau | 26.29 | - | Eleventh_House |
| Venus | Tau | 2.03 | - | Tenth_House |
| Mars | Tau | 1.79 | - | Tenth_House |
| Jupiter | Gem | 14.61 | - | Eleventh_House |
| Saturn | Leo | 12.8 | - | Second_House |
| Uranus | Sco | 8.27 | R | Fourth_House |
| Neptune | Sag | 14.69 | R | Fifth_House |
| Pluto | Lib | 11.45 | R | Fourth_House |
| Mean_Node | Lib | 21.49 | R | Fourth_House |
| True_Node | Lib | 22.82 | R | Fourth_House |
+-----------+------+-------+------+----------------+
+----------------+------+----------+
| House | Sign | Position |
+----------------+------+----------+
| First_House | Can | 18.0 |
| Second_House | Leo | 9.51 |
| Third_House | Vir | 4.02 |
| Fourth_House | Lib | 3.98 |
| Fifth_House | Sco | 9.39 |
| Sixth_House | Sag | 15.68 |
| Seventh_House | Cap | 18.0 |
| Eighth_House | Aqu | 9.51 |
| Ninth_House | Pis | 4.02 |
| Tenth_House | Ari | 3.98 |
| Eleventh_House | Tau | 9.39 |
| Twelfth_House | Gem | 15.68 |
+----------------+------+----------+
And if you want to export it to a file:
$ python3 your_script_name.py > file.txt
Other exeples of possibles usecase
# Get all aspects between two persons:
from kerykeion import SynastryAspects, AstrologicalSubject
first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")
name = SynastryAspects(first, second)
aspect_list = name.get_relevant_aspects()
print(aspect_list[0])
#> Generating kerykeion object for Jack...
#> Generating kerykeion object for Jane...
#> {'p1_name': 'Sun', 'p1_abs_pos': 84.17867971515636, 'p2_name': 'Sun', 'p2_abs_pos': 211.90472999502984, 'aspect': 'trine', 'orbit': 7.726050279873476, 'aspect_degrees': 120, 'color': '#36d100', 'aid': 6, 'diff': 127.72605027987348, 'p1': 0, 'p2': 0}
Documentation
Most of the functions and the classes are self documented by the types and have docstrings. An auto-generated documentation is available here.
Sooner or later I'll try to write an extensive documentation.
Development
You can clone this repository or download a zip file using the right side buttons.
Contributing
Feel free to contribute to the code!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for kerykeion-4.0rc1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44021baa5d558ef5fe1b166e771589ed980fd5f80df2e1e38e0c3ea17ad01ee4 |
|
MD5 | 35f9d407df4d4f3887165da1059217f0 |
|
BLAKE2b-256 | 77e5bd767eee88275675a8832e4e0d7e19f06c7a3f762a64d6d9797c4571b396 |