Skip to content

Fork of Kerykeion that changes default location of cache so it can work with AWS Lambda.

License

Notifications You must be signed in to change notification settings

astrace/kerykeion

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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 composite 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 KrInstance

# Create a kerykeion instance:
# Args: Name, year, month, day, hour, minuts, city, nation(optional)
kanye = KrInstance("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 informations 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 = KrInstance(
    "Kanye", 1977, 6, 8, 8, 45,
    lng=50, lat=50, tz_str="Europe/Rome"
    )

Generate a SVG Chart:

from kerykeion import KrInstance, MakeSvgInstance

first = KrInstance("Jack", 1990, 6, 15, 15, 15, "Roma")
second = KrInstance("Jane", 1991, 10, 25, 21, 00, "Roma")

# Set the type, it can be Natal, Composite or Transit

name = MakeSvgInstance(first, chart_type="Composite", 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

alt text

Report

To print a report of all the data:

from kerykeion import Report, KrInstance

kanye = KrInstance("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 

Example of a possible text output with information:

from kerykeion import print_all_data, KrInstance

kanye = KrInstance("Kanye", 1977, 6, 8, 8, 45, "Atlanta")

print_all_data(kanye)

Returns:

NAME: Kanye
PLANET     POSITION

Sun:       Gem 17.599 in 12th House
Moon:      Pis 16.425 in 9th House
Mercury:   Tau 26.286 in 11th House
Venus:     Tau 2.032 in 10th House
Mars:      Tau 1.79 in 10th House
Jupiter:   Gem 14.607 in 11th House
Saturn:    Leo 12.799 in 2nd House
Uranus:    Sco 8.273 in 4th House
Neptune:   Sag 14.693 in 5th House
Pluto:     Lib 11.446 in 4th House

PLACIDUS HAUSES
House Cusp 1:     Can  17.996
House Cusp 2:     Leo  9.506
House Cusp 3:     Vir  4.022
House Cusp 4:     Lib  3.977
House Cusp 5:     Sco  9.393
House Cusp 6:     Sag  15.681
House Cusp 7:     Cap  17.996
House Cusp 8:     Aqu  9.506
House Cusp 9:     Pis  4.022
House Cusp 10:    Ari  3.977
House Cusp 11:    Tau  9.393
House Cusp 12:    Gem  15.681

Other exeples of possibles usecase

# Get all aspects between two persons:

from kerykeion import CompositeAspects, KrInstance
first = KrInstance("Jack", 1990, 6, 15, 15, 15, "Roma")
second = KrInstance("Jane", 1991, 10, 25, 21, 00, "Roma")

name = CompositeAspects(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!

About

Fork of Kerykeion that changes default location of cache so it can work with AWS Lambda.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%