kerykeion 4.8.1__py3-none-any.whl → 4.14.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of kerykeion might be problematic. Click here for more details.
- kerykeion/__init__.py +3 -95
- kerykeion/aspects/aspects_utils.py +10 -21
- kerykeion/aspects/natal_aspects.py +9 -2
- kerykeion/aspects/synastry_aspects.py +11 -4
- kerykeion/astrological_subject.py +386 -146
- kerykeion/charts/charts_utils.py +390 -25
- kerykeion/charts/kerykeion_chart_svg.py +162 -439
- kerykeion/charts/templates/chart.xml +381 -358
- kerykeion/enums.py +1 -0
- kerykeion/ephemeris_data.py +174 -0
- kerykeion/fetch_geonames.py +2 -3
- kerykeion/kr_types/chart_types.py +4 -9
- kerykeion/kr_types/kr_literals.py +87 -54
- kerykeion/kr_types/kr_models.py +75 -97
- kerykeion/kr_types/settings_models.py +14 -28
- kerykeion/settings/kr.config.json +19 -5
- kerykeion/utilities.py +40 -23
- {kerykeion-4.8.1.dist-info → kerykeion-4.14.2.dist-info}/METADATA +128 -32
- kerykeion-4.14.2.dist-info/RECORD +33 -0
- kerykeion-4.8.1.dist-info/RECORD +0 -32
- {kerykeion-4.8.1.dist-info → kerykeion-4.14.2.dist-info}/LICENSE +0 -0
- {kerykeion-4.8.1.dist-info → kerykeion-4.14.2.dist-info}/WHEEL +0 -0
- {kerykeion-4.8.1.dist-info → kerykeion-4.14.2.dist-info}/entry_points.txt +0 -0
|
@@ -4,29 +4,12 @@
|
|
|
4
4
|
"""
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
from pydantic import
|
|
7
|
+
from pydantic import Field
|
|
8
8
|
from typing import List
|
|
9
|
+
from kerykeion.kr_types.kr_models import SubscriptableBaseModel
|
|
9
10
|
|
|
10
11
|
|
|
11
|
-
class
|
|
12
|
-
"""
|
|
13
|
-
Extends the BaseModel class of Pydantic to add some useful methods.
|
|
14
|
-
"""
|
|
15
|
-
|
|
16
|
-
def __init__(self, **data):
|
|
17
|
-
super().__init__(**data)
|
|
18
|
-
|
|
19
|
-
def __getitem__(self, item):
|
|
20
|
-
return getattr(self, item)
|
|
21
|
-
|
|
22
|
-
def __str__(self) -> str:
|
|
23
|
-
return str(self.model_dump())
|
|
24
|
-
|
|
25
|
-
def get(self, item, default=None):
|
|
26
|
-
return getattr(self, item, default)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
class KerykeionSettingsCelestialPointModel(CustomBaseModel):
|
|
12
|
+
class KerykeionSettingsCelestialPointModel(SubscriptableBaseModel):
|
|
30
13
|
"""
|
|
31
14
|
Defines the model for a celestial point data.
|
|
32
15
|
"""
|
|
@@ -41,7 +24,7 @@ class KerykeionSettingsCelestialPointModel(CustomBaseModel):
|
|
|
41
24
|
|
|
42
25
|
|
|
43
26
|
# Chart Colors Settings
|
|
44
|
-
class KerykeionSettingsChartColorsModel(
|
|
27
|
+
class KerykeionSettingsChartColorsModel(SubscriptableBaseModel):
|
|
45
28
|
"""
|
|
46
29
|
Defines the model for the chart colors.
|
|
47
30
|
"""
|
|
@@ -81,13 +64,15 @@ class KerykeionSettingsChartColorsModel(CustomBaseModel):
|
|
|
81
64
|
zodiac_transit_ring_3: str = Field(title="Zodiac Transit Ring Color 3", description="Zodiac Transit Ring Color 3")
|
|
82
65
|
houses_radix_line: str = Field(title="Houses Radix Line Color", description="Houses Radix Line Color")
|
|
83
66
|
houses_transit_line: str = Field(title="Houses Transit Line Color", description="Houses Transit Line Color")
|
|
67
|
+
|
|
68
|
+
# Deprecated: Not used anymore
|
|
84
69
|
lunar_phase_0: str = Field(title="Lunar Phase Color 0", description="Lunar Phase Color 0")
|
|
85
70
|
lunar_phase_1: str = Field(title="Lunar Phase Color 1", description="Lunar Phase Color 1")
|
|
86
71
|
lunar_phase_2: str = Field(title="Lunar Phase Color 2", description="Lunar Phase Color 2")
|
|
87
72
|
|
|
88
73
|
|
|
89
74
|
# Aspect Settings
|
|
90
|
-
class KerykeionSettingsAspectModel(
|
|
75
|
+
class KerykeionSettingsAspectModel(SubscriptableBaseModel):
|
|
91
76
|
"""
|
|
92
77
|
Defines the model for an aspect.
|
|
93
78
|
"""
|
|
@@ -103,7 +88,7 @@ class KerykeionSettingsAspectModel(CustomBaseModel):
|
|
|
103
88
|
|
|
104
89
|
|
|
105
90
|
# Language Settings
|
|
106
|
-
class KerykeionLanguageCelestialPointModel(
|
|
91
|
+
class KerykeionLanguageCelestialPointModel(SubscriptableBaseModel):
|
|
107
92
|
"""
|
|
108
93
|
This class is used to define the labels, show in the chart, for the celestial points.
|
|
109
94
|
It is used to translate the celestial points in the language of the chart.
|
|
@@ -126,9 +111,10 @@ class KerykeionLanguageCelestialPointModel(CustomBaseModel):
|
|
|
126
111
|
Mc: str = Field(title="Medium Coeli", description="The name of Medium Coeli in the chart, in the language")
|
|
127
112
|
Dsc: str = Field(title="Descendant", description="The name of Descendant in the chart, in the language")
|
|
128
113
|
Ic: str = Field(title="Imum Coeli", description="The name of Imum Coeli in the chart, in the language")
|
|
114
|
+
Mean_Lilith: str = Field(title="Mean Lilith", description="The name of Mean Lilith in the chart, in the language")
|
|
129
115
|
|
|
130
116
|
|
|
131
|
-
class KerykeionLanguageModel(
|
|
117
|
+
class KerykeionLanguageModel(SubscriptableBaseModel):
|
|
132
118
|
"""
|
|
133
119
|
This model is used to store the language settings for the chart,
|
|
134
120
|
it's used to translate the celestial points and the other labels
|
|
@@ -157,17 +143,17 @@ class KerykeionLanguageModel(CustomBaseModel):
|
|
|
157
143
|
celestial_points: KerykeionLanguageCelestialPointModel
|
|
158
144
|
|
|
159
145
|
|
|
160
|
-
class KerykeionGeneralSettingsModel(
|
|
146
|
+
class KerykeionGeneralSettingsModel(SubscriptableBaseModel):
|
|
161
147
|
axes_orbit: int = Field(title="Axes Orbit", description="The orbit of the axes in the chart")
|
|
162
148
|
planet_in_zodiac_extra_points: int = Field(title="Planet in Zodiac Extra Points", description="The extra points of the planet in the zodiac")
|
|
163
149
|
language: str = Field(title="Language", description="The language of the chart")
|
|
164
150
|
|
|
165
|
-
class KerykeionChartSettingsModel(
|
|
151
|
+
class KerykeionChartSettingsModel(SubscriptableBaseModel):
|
|
166
152
|
basic_chart_viewBox: str = Field(title="Basic Chart ViewBox", description="The viewbox of the basic chart")
|
|
167
153
|
wide_chart_viewBox: str = Field(title="Wide Chart ViewBox", description="The viewbox of the wide chart")
|
|
168
154
|
|
|
169
155
|
# Settings Model
|
|
170
|
-
class KerykeionSettingsModel(
|
|
156
|
+
class KerykeionSettingsModel(SubscriptableBaseModel):
|
|
171
157
|
"""
|
|
172
158
|
This class is used to define the global settings for the Kerykeion.
|
|
173
159
|
"""
|
|
@@ -177,4 +163,4 @@ class KerykeionSettingsModel(CustomBaseModel):
|
|
|
177
163
|
aspects: List[KerykeionSettingsAspectModel] = Field(title="Aspects", description="The list of the aspects of the chart")
|
|
178
164
|
language_settings: dict[str, KerykeionLanguageModel] = Field(title="Language Settings", description="The language settings of the chart")
|
|
179
165
|
general_settings: KerykeionGeneralSettingsModel = Field(title="General Settings", description="The general settings of the chart")
|
|
180
|
-
chart_settings: KerykeionChartSettingsModel = Field(title="Chart Settings", description="The chart settings of the chart")
|
|
166
|
+
chart_settings: KerykeionChartSettingsModel = Field(title="Chart Settings", description="The chart settings of the chart")
|
|
@@ -38,7 +38,8 @@
|
|
|
38
38
|
"Ic": "Ic",
|
|
39
39
|
"True_Node": "North Node",
|
|
40
40
|
"Mean_Node": "Mean Node",
|
|
41
|
-
"Chiron": "Chiron"
|
|
41
|
+
"Chiron": "Chiron",
|
|
42
|
+
"Mean_Lilith": "Lilith"
|
|
42
43
|
}
|
|
43
44
|
},
|
|
44
45
|
"FR": {
|
|
@@ -79,7 +80,8 @@
|
|
|
79
80
|
"Ic": "Ic",
|
|
80
81
|
"True_Node": "Noeud Nord",
|
|
81
82
|
"Mean_Node": "Noeud Moyen",
|
|
82
|
-
"Chiron": "Chiron"
|
|
83
|
+
"Chiron": "Chiron",
|
|
84
|
+
"Mean_Lilith": "Lilith"
|
|
83
85
|
}
|
|
84
86
|
},
|
|
85
87
|
"PT": {
|
|
@@ -120,7 +122,8 @@
|
|
|
120
122
|
"Ic": "Ic",
|
|
121
123
|
"True_Node": "Nodo Norte",
|
|
122
124
|
"Mean_Node": "Nodo Médio",
|
|
123
|
-
"Chiron": "Quíron"
|
|
125
|
+
"Chiron": "Quíron",
|
|
126
|
+
"Mean_Lilith": "Lilith"
|
|
124
127
|
}
|
|
125
128
|
},
|
|
126
129
|
"IT": {
|
|
@@ -161,7 +164,8 @@
|
|
|
161
164
|
"Ic": "Ic",
|
|
162
165
|
"True_Node": "Nodo Nord",
|
|
163
166
|
"Mean_Node": "Nodo Medio",
|
|
164
|
-
"Chiron": "Chirone"
|
|
167
|
+
"Chiron": "Chirone",
|
|
168
|
+
"Mean_Lilith": "Lilith"
|
|
165
169
|
}
|
|
166
170
|
},
|
|
167
171
|
"CN": {
|
|
@@ -202,7 +206,8 @@
|
|
|
202
206
|
"Ic": "下中天",
|
|
203
207
|
"True_Node": "北交點",
|
|
204
208
|
"Mean_Node": "平交點",
|
|
205
|
-
"Chiron": "凱龍星"
|
|
209
|
+
"Chiron": "凱龍星",
|
|
210
|
+
"Mean_Lilith": "黑月亮"
|
|
206
211
|
}
|
|
207
212
|
}
|
|
208
213
|
},
|
|
@@ -471,6 +476,15 @@
|
|
|
471
476
|
"element_points": 0,
|
|
472
477
|
"related_zodiac_signs": [],
|
|
473
478
|
"label": "Ic"
|
|
479
|
+
},
|
|
480
|
+
{
|
|
481
|
+
"id": 17,
|
|
482
|
+
"name": "Mean_Lilith",
|
|
483
|
+
"color": "#000",
|
|
484
|
+
"is_active": true,
|
|
485
|
+
"element_points": 0,
|
|
486
|
+
"related_zodiac_signs": [],
|
|
487
|
+
"label": "Mean_Lilith"
|
|
474
488
|
}
|
|
475
489
|
],
|
|
476
490
|
"chart_colors": {
|
kerykeion/utilities.py
CHANGED
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
from kerykeion.kr_types import KerykeionPointModel, KerykeionException, KerykeionSettingsModel, AstrologicalSubjectModel
|
|
2
|
-
from kerykeion.kr_types.kr_literals import LunarPhaseEmoji, LunarPhaseName
|
|
3
|
-
from typing import Union
|
|
2
|
+
from kerykeion.kr_types.kr_literals import LunarPhaseEmoji, LunarPhaseName, PointType, Planet
|
|
3
|
+
from typing import Union
|
|
4
4
|
import logging
|
|
5
5
|
import math
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
def get_number_from_name(name:
|
|
9
|
+
def get_number_from_name(name: Planet) -> int:
|
|
10
10
|
"""Utility function, gets planet id from the name."""
|
|
11
|
-
name = name.lower()
|
|
12
11
|
|
|
13
|
-
if name == "
|
|
12
|
+
if name == "Sun":
|
|
14
13
|
return 0
|
|
15
|
-
elif name == "
|
|
14
|
+
elif name == "Moon":
|
|
16
15
|
return 1
|
|
17
|
-
elif name == "
|
|
16
|
+
elif name == "Mercury":
|
|
18
17
|
return 2
|
|
19
|
-
elif name == "
|
|
18
|
+
elif name == "Venus":
|
|
20
19
|
return 3
|
|
21
|
-
elif name == "
|
|
20
|
+
elif name == "Mars":
|
|
22
21
|
return 4
|
|
23
|
-
elif name == "
|
|
22
|
+
elif name == "Jupiter":
|
|
24
23
|
return 5
|
|
25
|
-
elif name == "
|
|
24
|
+
elif name == "Saturn":
|
|
26
25
|
return 6
|
|
27
|
-
elif name == "
|
|
26
|
+
elif name == "Uranus":
|
|
28
27
|
return 7
|
|
29
|
-
elif name == "
|
|
28
|
+
elif name == "Neptune":
|
|
30
29
|
return 8
|
|
31
|
-
elif name == "
|
|
30
|
+
elif name == "Pluto":
|
|
32
31
|
return 9
|
|
33
|
-
elif name == "
|
|
32
|
+
elif name == "Mean_Node":
|
|
34
33
|
return 10
|
|
35
|
-
elif name == "
|
|
34
|
+
elif name == "True_Node":
|
|
36
35
|
return 11
|
|
37
|
-
elif name == "
|
|
36
|
+
elif name == "Chiron":
|
|
38
37
|
return 15
|
|
38
|
+
elif name == "Mean_Lilith":
|
|
39
|
+
return 12
|
|
39
40
|
else:
|
|
40
|
-
|
|
41
|
+
raise KerykeionException(f"Error in getting number from name! Name: {name}")
|
|
41
42
|
|
|
42
43
|
|
|
43
44
|
def calculate_position(
|
|
44
|
-
degree: Union[int, float], number_name: str, point_type:
|
|
45
|
+
degree: Union[int, float], number_name: str, point_type: PointType
|
|
45
46
|
) -> KerykeionPointModel:
|
|
46
47
|
"""Utility function to create a dictionary dividing the houses or the planets list."""
|
|
47
48
|
|
|
@@ -214,14 +215,14 @@ def setup_logging(level: str) -> None:
|
|
|
214
215
|
Args:
|
|
215
216
|
level: Log level as a string, options: debug, info, warning, error
|
|
216
217
|
"""
|
|
217
|
-
|
|
218
|
+
logging_options: dict[str, int] = {
|
|
218
219
|
"debug": logging.DEBUG,
|
|
219
220
|
"info": logging.INFO,
|
|
220
221
|
"warning": logging.WARNING,
|
|
221
222
|
"error": logging.ERROR,
|
|
222
223
|
}
|
|
223
224
|
format: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
|
|
224
|
-
loglevel: int =
|
|
225
|
+
loglevel: int = logging_options.get(level, logging.INFO)
|
|
225
226
|
logging.basicConfig(format=format, level=loglevel)
|
|
226
227
|
|
|
227
228
|
def check_if_point_between(
|
|
@@ -286,7 +287,7 @@ def get_planet_house(planet_position_degree: Union[int, float], houses_degree_ut
|
|
|
286
287
|
elif check_if_point_between(houses_degree_ut_list[11], houses_degree_ut_list[0], planet_position_degree) == True:
|
|
287
288
|
house = "Twelfth_House"
|
|
288
289
|
else:
|
|
289
|
-
raise ValueError("Error in house calculation, planet: ", planet_position_degree)
|
|
290
|
+
raise ValueError("Error in house calculation, planet: ", planet_position_degree, "houses: ", houses_degree_ut_list)
|
|
290
291
|
|
|
291
292
|
return house
|
|
292
293
|
|
|
@@ -354,4 +355,20 @@ def get_moon_phase_name_from_phase_int(phase: int) -> LunarPhaseName:
|
|
|
354
355
|
else:
|
|
355
356
|
raise KerykeionException(f"Error in moon name calculation! Phase: {phase}")
|
|
356
357
|
|
|
357
|
-
return result
|
|
358
|
+
return result
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
def check_and_adjust_polar_latitude(latitude: float) -> float:
|
|
362
|
+
"""
|
|
363
|
+
Utility function to check if the location is in the polar circle.
|
|
364
|
+
If it is, it sets the latitude to 66 or -66 degrees.
|
|
365
|
+
"""
|
|
366
|
+
if latitude > 66.0:
|
|
367
|
+
latitude = 66.0
|
|
368
|
+
logging.info("Polar circle override for houses, using 66 degrees")
|
|
369
|
+
|
|
370
|
+
elif latitude < -66.0:
|
|
371
|
+
latitude = -66.0
|
|
372
|
+
logging.info("Polar circle override for houses, using -66 degrees")
|
|
373
|
+
|
|
374
|
+
return latitude
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kerykeion
|
|
3
|
-
Version: 4.
|
|
3
|
+
Version: 4.14.2
|
|
4
4
|
Summary: A python library for astrology.
|
|
5
|
-
Home-page: https://
|
|
5
|
+
Home-page: https://www.kerykeion.net/
|
|
6
6
|
License: AGPL-3.0
|
|
7
7
|
Keywords: astrology,ephemeris,astrology library,birtchart,svg,zodiac,zodiac-sing,astronomical-algorithms,synastry,astrology-calculator
|
|
8
8
|
Author: Giacomo Battaglia
|
|
@@ -28,8 +28,8 @@ Classifier: Typing :: Typed
|
|
|
28
28
|
Requires-Dist: pydantic (>=2.5,<3.0)
|
|
29
29
|
Requires-Dist: pyswisseph (>=2.10.3.1,<3.0.0.0)
|
|
30
30
|
Requires-Dist: pytz (>=2022.7,<2023.0)
|
|
31
|
-
Requires-Dist: requests (>=2.
|
|
32
|
-
Requires-Dist: requests-cache (>=
|
|
31
|
+
Requires-Dist: requests (>=2.32.3,<3.0.0)
|
|
32
|
+
Requires-Dist: requests-cache (>=1.2.1,<2.0.0)
|
|
33
33
|
Requires-Dist: scour (>=0.38.2,<0.39.0)
|
|
34
34
|
Requires-Dist: terminaltables (>=3.1.10,<4.0.0)
|
|
35
35
|
Project-URL: Repository, https://github.com/g-battaglia/kerykeion
|
|
@@ -48,7 +48,7 @@ Description-Content-Type: text/markdown
|
|
|
48
48
|
</a>
|
|
49
49
|
<a href="https://pypi.org/project/kerykeion" target="_blank">
|
|
50
50
|
<img src="https://visitor-badge.laobi.icu/badge?page_id=g-battaglia.kerykeion" alt="visitors"/>
|
|
51
|
-
</a>
|
|
51
|
+
</a>
|
|
52
52
|
<a href="https://pypi.org/project/kerykeion" target="_blank">
|
|
53
53
|
<img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
|
|
54
54
|
</a>
|
|
@@ -69,13 +69,13 @@ The core goal of this project is to provide a simple and easy approach to astrol
|
|
|
69
69
|
|
|
70
70
|
Here's an example of a birthchart:
|
|
71
71
|
|
|
72
|
-

|
|
73
73
|
|
|
74
74
|
## Web API
|
|
75
75
|
|
|
76
76
|
If you want to use Kerykeion in a web application, I've created a web API for this purpose, you can find it here:
|
|
77
77
|
|
|
78
|
-
**[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/)**
|
|
78
|
+
**[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/pricing)**
|
|
79
79
|
|
|
80
80
|
It's [open source](https://github.com/g-battaglia/Astrologer-API), it's a way to support me and the project.
|
|
81
81
|
|
|
@@ -95,9 +95,11 @@ Kerykeion is a _Python 3.9_ package, make sure you have _Python 3.9_ or above in
|
|
|
95
95
|
pip3 install kerykeion
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
-
## Usage
|
|
98
|
+
## Basic Usage
|
|
99
|
+
|
|
100
|
+
The basic usage of the library is to create an instance of the AstrologicalSubject class and then access the properties of the instance to get the astrological information about the subject.
|
|
99
101
|
|
|
100
|
-
Here
|
|
102
|
+
Here's an example:
|
|
101
103
|
|
|
102
104
|
```python
|
|
103
105
|
|
|
@@ -105,8 +107,8 @@ Here some examples:
|
|
|
105
107
|
from kerykeion import AstrologicalSubject
|
|
106
108
|
|
|
107
109
|
# Create a kerykeion instance:
|
|
108
|
-
# Args: Name, year, month, day, hour, minuts, city, nation
|
|
109
|
-
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
|
|
110
|
+
# Args: Name, year, month, day, hour, minuts, city, nation
|
|
111
|
+
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
|
|
110
112
|
|
|
111
113
|
# Get the information about the sun in the chart:
|
|
112
114
|
# (The position of the planets always starts at 0)
|
|
@@ -137,38 +139,68 @@ kanye = AstrologicalSubject(
|
|
|
137
139
|
The difference is that you have to pass the longitude, latitude and the timezone string, instead of the city and nation.
|
|
138
140
|
If you omit the nation, it will be set to "GB" by default, but the value is not used for calculations. It's better to set it to the correct value though.
|
|
139
141
|
|
|
140
|
-
## Generate a SVG Chart
|
|
142
|
+
## Generate a SVG Chart
|
|
143
|
+
|
|
144
|
+
### Birth Chart
|
|
141
145
|
|
|
142
146
|
```python
|
|
143
147
|
from kerykeion import AstrologicalSubject, KerykeionChartSVG
|
|
144
148
|
|
|
145
|
-
|
|
146
|
-
|
|
149
|
+
|
|
150
|
+
birth_chart = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
|
|
151
|
+
birth_chart_svg = KerykeionChartSVG(birth_chart)
|
|
152
|
+
|
|
153
|
+
birth_chart_svg.makeSVG()
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
The SVG file will be saved in the home directory.
|
|
157
|
+

|
|
158
|
+
|
|
159
|
+
### Synastry Chart
|
|
160
|
+
|
|
161
|
+
```python
|
|
162
|
+
from kerykeion import AstrologicalSubject, KerykeionChartSVG
|
|
163
|
+
|
|
164
|
+
first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
|
|
165
|
+
second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
|
|
147
166
|
|
|
148
167
|
# Set the type, it can be Natal, Synastry or Transit
|
|
168
|
+
synastry_chart = KerykeionChartSVG(first, "Synastry", second)
|
|
169
|
+
synastry_chart.makeSVG()
|
|
149
170
|
|
|
150
|
-
|
|
151
|
-
name.makeSVG()
|
|
152
|
-
print(len(name.aspects_list))
|
|
171
|
+
```
|
|
153
172
|
|
|
154
|
-
|
|
155
|
-
#> Generating kerykeion object for Jane...
|
|
156
|
-
#> Jack birth location: Roma, 41.89193, 12.51133
|
|
157
|
-
#> SVG Generated Correctly
|
|
158
|
-
#> 38
|
|
173
|
+

|
|
159
174
|
|
|
175
|
+
### Change the output directory
|
|
176
|
+
|
|
177
|
+
By default the output directory is the home directory, you can change it by passing the new_output_directory parameter to the KerykeionChartSVG class:
|
|
178
|
+
|
|
179
|
+
```python
|
|
180
|
+
from kerykeion import AstrologicalSubject, KerykeionChartSVG
|
|
181
|
+
|
|
182
|
+
first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
|
|
183
|
+
second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
|
|
184
|
+
|
|
185
|
+
# Set the output directory to the current directory
|
|
186
|
+
synastry_chart = KerykeionChartSVG(first, "Synastry", second, new_output_directory=".")
|
|
187
|
+
synastry_chart.makeSVG()
|
|
160
188
|
```
|
|
161
189
|
|
|
162
|
-
|
|
190
|
+
### Change Language
|
|
191
|
+
|
|
192
|
+
To change the language of the chart you should create a new kr.config.js file and pass it to the BirthChartSVG class. So far the available languages are English, Portuguese, Italian, Spanish, French and Chinese.
|
|
163
193
|
|
|
164
|
-
|
|
194
|
+
Some examples [here](https://www.kerykeion.net/docs/examples/change-language).
|
|
195
|
+
|
|
196
|
+
## Report
|
|
165
197
|
|
|
166
198
|
To print a report of all the data:
|
|
167
199
|
|
|
168
200
|
```python
|
|
169
201
|
from kerykeion import Report, AstrologicalSubject
|
|
170
202
|
|
|
171
|
-
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
|
|
203
|
+
kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
|
|
172
204
|
report = Report(kanye)
|
|
173
205
|
report.print_report()
|
|
174
206
|
|
|
@@ -176,7 +208,7 @@ report.print_report()
|
|
|
176
208
|
|
|
177
209
|
Returns:
|
|
178
210
|
|
|
179
|
-
```
|
|
211
|
+
```txt
|
|
180
212
|
+- Kerykeion report for Kanye -+
|
|
181
213
|
+----------+------+-------------+-----------+----------+
|
|
182
214
|
| Date | Time | Location | Longitude | Latitude |
|
|
@@ -222,17 +254,17 @@ Returns:
|
|
|
222
254
|
And if you want to export it to a file:
|
|
223
255
|
|
|
224
256
|
```bash
|
|
225
|
-
|
|
257
|
+
python3 your_script_name.py > file.txt
|
|
226
258
|
```
|
|
227
259
|
|
|
228
|
-
## Other
|
|
260
|
+
## Other examples of possible use cases:
|
|
229
261
|
|
|
230
262
|
```python
|
|
231
263
|
# Get all aspects between two persons:
|
|
232
264
|
|
|
233
265
|
from kerykeion import SynastryAspects, AstrologicalSubject
|
|
234
|
-
first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
|
|
235
|
-
second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")
|
|
266
|
+
first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma", "IT")
|
|
267
|
+
second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma", "IT")
|
|
236
268
|
|
|
237
269
|
name = SynastryAspects(first, second)
|
|
238
270
|
aspect_list = name.get_relevant_aspects()
|
|
@@ -244,10 +276,74 @@ print(aspect_list[0])
|
|
|
244
276
|
|
|
245
277
|
```
|
|
246
278
|
|
|
279
|
+
## Ayanamsa (Sidereal Modes)
|
|
280
|
+
|
|
281
|
+
By default, the zodiac type is set to Tropic (Tropical).
|
|
282
|
+
You can set the zodiac type to Sidereal and the sidereal mode in the AstrologicalSubject class:
|
|
283
|
+
|
|
284
|
+
```python
|
|
285
|
+
johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", zodiac_type="Sidereal", sidereal_mode="LAHIRI")
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
More examples [here](https://www.kerykeion.net/docs/examples/sidereal-modes/).
|
|
289
|
+
|
|
290
|
+
Full list of supported sidereal modes [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#SiderealMode).
|
|
291
|
+
|
|
292
|
+
## Houses Systems
|
|
293
|
+
|
|
294
|
+
By default, the houses system is set to Placidus.
|
|
295
|
+
You can set the houses system in the AstrologicalSubject class:
|
|
296
|
+
|
|
297
|
+
```python
|
|
298
|
+
johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", houses_system="M")
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
More examples [here](https://www.kerykeion.net/docs/examples/houses-systems/).
|
|
302
|
+
|
|
303
|
+
Full list of supported house systems [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#HousesSystem).
|
|
304
|
+
|
|
305
|
+
So far all the available houses system in the Swiss Ephemeris are supported but the Gauquelin Sectors.
|
|
306
|
+
|
|
307
|
+
## Perspective Type
|
|
308
|
+
|
|
309
|
+
By default, the perspective type is set to Apparent Geocentric (the most common standard for astrology).
|
|
310
|
+
The perspective indicates the point of view from which the chart is calculated (Es. Apparent Geocentric, Heliocentric, etc.).
|
|
311
|
+
You can set the perspective type in the AstrologicalSubject class:
|
|
312
|
+
|
|
313
|
+
```python
|
|
314
|
+
johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", perspective_type="Heliocentric")
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
More examples [here](https://www.kerykeion.net/docs/examples/perspective-type/).
|
|
318
|
+
|
|
319
|
+
Full list of supported perspective types [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#PerspectiveType).
|
|
320
|
+
|
|
321
|
+
## Alternative Initialization
|
|
322
|
+
|
|
323
|
+
You can initialize the AstrologicalSubject from a **UTC** ISO 8601 string:
|
|
324
|
+
|
|
325
|
+
```python
|
|
326
|
+
subject = AstrologicalSubject.get_from_iso_utc_time(
|
|
327
|
+
"Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US")
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
Note : The default time zone is UTC, with Greenwich longitude and latitude.
|
|
331
|
+
|
|
332
|
+
The default online/offline mode is set to offline, if you set it online the default latitude and longitude will be ignored and
|
|
333
|
+
calculated from the city and nation. Remember to pass also the geonames_username parameter if you want to use the online mode, like this:
|
|
334
|
+
|
|
335
|
+
```python
|
|
336
|
+
from kerykeion.astrological_subject import AstrologicalSubject
|
|
337
|
+
|
|
338
|
+
# Use the static method get_from_iso_utc_time to create an instance of AstrologicalSubject
|
|
339
|
+
subject = AstrologicalSubject.get_from_iso_utc_time(
|
|
340
|
+
"Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True)
|
|
341
|
+
```
|
|
342
|
+
|
|
247
343
|
## Documentation
|
|
248
344
|
|
|
249
345
|
Most of the functions and the classes are self documented by the types and have docstrings.
|
|
250
|
-
An auto-generated documentation [is available here](https://
|
|
346
|
+
An auto-generated documentation [is available here](https://www.kerykeion.net/pydocs/kerykeion.html).
|
|
251
347
|
|
|
252
348
|
Sooner or later I'll try to write an extensive documentation.
|
|
253
349
|
|
|
@@ -266,5 +362,5 @@ To understand how this impacts your use of the software, please see the [LICENSE
|
|
|
266
362
|
If you have questions, you can reach out to me at my [email](mailto:battaglia.giacomo@yahoo.it?subject=Kerykeion) address.
|
|
267
363
|
As a rule of thumb, if you are using this library in a project, you should open source the code of the project with a compatible license.
|
|
268
364
|
|
|
269
|
-
You can implement the logic of
|
|
365
|
+
You can implement the logic of kerykeion in your project and also keep it closed source by using a third party API, like the [AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/). The AstrologerAPI is AGPL-3.0 compliant. Subscribing to the API is also, currently, the best way to support the project.
|
|
270
366
|
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
|
|
2
|
+
kerykeion/__init__.py,sha256=f4_J_hAh_OSLAUrabqVhrc1rH59I6X1LS9vuAEzE9PY,536
|
|
3
|
+
kerykeion/aspects/__init__.py,sha256=9FlDVI1ndCJga0-chNIhcLitjU_x3kbtAFfFqVp2ejc,293
|
|
4
|
+
kerykeion/aspects/aspects_utils.py,sha256=8zPbP4xTOiaSwJ8Yet6wh38Icsd0xUNVG-dptkuD-Ik,5409
|
|
5
|
+
kerykeion/aspects/natal_aspects.py,sha256=jzYItHWZcyaWqWJ6_akwFx3ct1eFesCcu0fE5l-1_uo,4691
|
|
6
|
+
kerykeion/aspects/synastry_aspects.py,sha256=uYzHZNSw7IckE5ngtyaQ7LhNzCfTB4VZOhKlly43-oc,4167
|
|
7
|
+
kerykeion/astrological_subject.py,sha256=zewCsuCdCyrhDRPgaNiwEPM4KaQPfKWFPFxj3Y76ZVk,35472
|
|
8
|
+
kerykeion/charts/__init__.py,sha256=Juxkduy2TaagWblh_7CE8Acrg3dHL27-WEddJhau_eQ,127
|
|
9
|
+
kerykeion/charts/charts_utils.py,sha256=A6ZHCM9en_BeCOAaoVmyH9yrm_TUD-vg9np4myvl-Rw,29448
|
|
10
|
+
kerykeion/charts/kerykeion_chart_svg.py,sha256=UaXFaZci4vzkGL-BzZDGspI6KiNzIRuqpjD4Q5-n1u0,49312
|
|
11
|
+
kerykeion/charts/templates/chart.xml,sha256=axmNWwAgPpuSNRDx-aaaArO29fZXQ9E8ODSFInOZuH8,68435
|
|
12
|
+
kerykeion/enums.py,sha256=Xp_0A6jBSW7SZvB5LlKfBObg0xTqB6hTq1IXjz-UWl4,997
|
|
13
|
+
kerykeion/ephemeris_data.py,sha256=8r-h4wPKFwfM--DFcxv5QouoqlYCJbaH78d5PKh8v_E,8085
|
|
14
|
+
kerykeion/fetch_geonames.py,sha256=NmyTErvKISjJCAxvRB1H35aVZI8_-_U-Cqb_rmqRseA,4563
|
|
15
|
+
kerykeion/kr_types/__init__.py,sha256=-qhGQikurdoHnGtuT1bsaEeZ-IwmZtIHMjGOPC9_oqQ,295
|
|
16
|
+
kerykeion/kr_types/chart_types.py,sha256=GmX7u7wDXax8y4ZbQZCrvvUzAquuILcjGFzTuk9WGkw,2110
|
|
17
|
+
kerykeion/kr_types/kerykeion_exception.py,sha256=G-7VFta78qBt10l54JZWvwH-3lUNKmDwuILXaVGVu9A,314
|
|
18
|
+
kerykeion/kr_types/kr_literals.py,sha256=o1yLhsWNOTSCd3O1pYGhQU4w9sUEF9mt_v6DWUqutyE,3156
|
|
19
|
+
kerykeion/kr_types/kr_models.py,sha256=nrH0GJAWQiAG8MECW3WUuy_DlB6aLET1zPqSFIBV2BE,3648
|
|
20
|
+
kerykeion/kr_types/settings_models.py,sha256=loWmKjqE4uOxFy_2Evuj8m32sChL5o9dHQGP43gFD00,12532
|
|
21
|
+
kerykeion/relationship_score.py,sha256=R9JugfK5_gJgr5ND-EghkqpqZcutzzKlJ-2JnYUMVv4,6794
|
|
22
|
+
kerykeion/report.py,sha256=kS5avIN119pJVapYjZOvabg77nEcA8sSrOuXbRifABk,2565
|
|
23
|
+
kerykeion/settings/__init__.py,sha256=QQNFCl7sgN27MKaVscqtpPk10HGz4wZS3I_7KEGMaVA,69
|
|
24
|
+
kerykeion/settings/kerykeion_settings.py,sha256=uRAbhJ0ZXAbGBPGJjhh5u8YX2phcXobEwJA646wMHcM,2347
|
|
25
|
+
kerykeion/settings/kr.config.json,sha256=3BNbPBfF-hCMx-LWtQxWCE7npf7lOrJ-AIOzowLwdgs,12646
|
|
26
|
+
kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
|
|
27
|
+
kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
|
|
28
|
+
kerykeion/utilities.py,sha256=s6zY1n25awevSy3qqsO03Bvnkh2Z7GMyinpYc9zU9Fs,11447
|
|
29
|
+
kerykeion-4.14.2.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
|
|
30
|
+
kerykeion-4.14.2.dist-info/METADATA,sha256=mQa3uimc4_Blmi8Ewy6JlO9Z4Fpcyst5jJDuDYXaxsM,14410
|
|
31
|
+
kerykeion-4.14.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
32
|
+
kerykeion-4.14.2.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
|
|
33
|
+
kerykeion-4.14.2.dist-info/RECORD,,
|
kerykeion-4.8.1.dist-info/RECORD
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
|
|
2
|
-
kerykeion/__init__.py,sha256=Z2-gAp09RAl2_WwzPO-OTc4ZRDLh54kTduAoy891gQc,3917
|
|
3
|
-
kerykeion/aspects/__init__.py,sha256=9FlDVI1ndCJga0-chNIhcLitjU_x3kbtAFfFqVp2ejc,293
|
|
4
|
-
kerykeion/aspects/aspects_utils.py,sha256=Rdo3ITDSU80n6U7aazpzzK4ruv7Iui2PaI3zMGqu1NQ,5832
|
|
5
|
-
kerykeion/aspects/natal_aspects.py,sha256=m3_v1dM6YXvENZ6iN_EJkikKxySZBeR5QKhGsaChERk,4507
|
|
6
|
-
kerykeion/aspects/synastry_aspects.py,sha256=uwg7Lc7wKnpxW9ydOdBHqx9cvO_t0ydGfIGluBIDD7c,3993
|
|
7
|
-
kerykeion/astrological_subject.py,sha256=Z9QUNqX6mrOm4ihxmhH0hiMv6ilp_-0HCQ4u_feE73g,22956
|
|
8
|
-
kerykeion/charts/__init__.py,sha256=Juxkduy2TaagWblh_7CE8Acrg3dHL27-WEddJhau_eQ,127
|
|
9
|
-
kerykeion/charts/charts_utils.py,sha256=45Ee0Hj5nb30q97ggYTQEShxkbCPq65gI0-sE32UxDM,15112
|
|
10
|
-
kerykeion/charts/kerykeion_chart_svg.py,sha256=vtTYgwXELnZoPKvySpEQRLZSaYVzzpDQBcUk9DwnQjw,60764
|
|
11
|
-
kerykeion/charts/templates/chart.xml,sha256=njaX-1vglR7PFInmteCNHcxwMTjsMJPkW56TlJq0qxw,70158
|
|
12
|
-
kerykeion/enums.py,sha256=Ben9GLYkPucpYY2ZDpURzUbNCc9jzK2MuaffkgiXFdQ,965
|
|
13
|
-
kerykeion/fetch_geonames.py,sha256=ZWB1DbcH54ab3fQhzPhLY0Dz0OaPJqiHFn2e7DRr1MM,4588
|
|
14
|
-
kerykeion/kr_types/__init__.py,sha256=-qhGQikurdoHnGtuT1bsaEeZ-IwmZtIHMjGOPC9_oqQ,295
|
|
15
|
-
kerykeion/kr_types/chart_types.py,sha256=g9z53FTOsb2rusUG8nK4dtFgvVa6RCwAfAbrxFb9KaM,2180
|
|
16
|
-
kerykeion/kr_types/kerykeion_exception.py,sha256=G-7VFta78qBt10l54JZWvwH-3lUNKmDwuILXaVGVu9A,314
|
|
17
|
-
kerykeion/kr_types/kr_literals.py,sha256=Kc7LfdeTqHi5uDGoQHWsB81GTBc5E-fGxTJqWKK1FFU,1267
|
|
18
|
-
kerykeion/kr_types/kr_models.py,sha256=3gyT4z-J9EM6p5175HKJX9q9WVWQTDt5Y_m3m8lZu9s,4260
|
|
19
|
-
kerykeion/kr_types/settings_models.py,sha256=V4iEj7egXZHrWiV1cGQIezbtVmOKbOB-BRzPwa8WVtc,12683
|
|
20
|
-
kerykeion/relationship_score.py,sha256=R9JugfK5_gJgr5ND-EghkqpqZcutzzKlJ-2JnYUMVv4,6794
|
|
21
|
-
kerykeion/report.py,sha256=kS5avIN119pJVapYjZOvabg77nEcA8sSrOuXbRifABk,2565
|
|
22
|
-
kerykeion/settings/__init__.py,sha256=QQNFCl7sgN27MKaVscqtpPk10HGz4wZS3I_7KEGMaVA,69
|
|
23
|
-
kerykeion/settings/kerykeion_settings.py,sha256=uRAbhJ0ZXAbGBPGJjhh5u8YX2phcXobEwJA646wMHcM,2347
|
|
24
|
-
kerykeion/settings/kr.config.json,sha256=1Yhv9RGHom5U9e-JZZRWVfT2Ubllz2WrckdwadDWfyg,12282
|
|
25
|
-
kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
|
|
26
|
-
kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
|
|
27
|
-
kerykeion/utilities.py,sha256=ncoXHvzXhNjhdm-uU6hMirVo287laq2GAJElNE6cBZM,10822
|
|
28
|
-
kerykeion-4.8.1.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
|
|
29
|
-
kerykeion-4.8.1.dist-info/METADATA,sha256=5KQpaw5C7-Ym6P1S6QJ8pIjMyOn4JlVh3cJrroZmluA,10351
|
|
30
|
-
kerykeion-4.8.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
|
|
31
|
-
kerykeion-4.8.1.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
|
|
32
|
-
kerykeion-4.8.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|