kerykeion 4.9.0__tar.gz → 4.10.0__tar.gz
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-4.9.0 → kerykeion-4.10.0}/PKG-INFO +1 -1
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/astrological_subject.py +35 -21
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/charts/kerykeion_chart_svg.py +40 -16
- kerykeion-4.10.0/kerykeion/charts/templates/chart.xml +521 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/kr_types/kr_literals.py +4 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/pyproject.toml +1 -1
- kerykeion-4.9.0/kerykeion/charts/templates/chart.xml +0 -517
- {kerykeion-4.9.0 → kerykeion-4.10.0}/LICENSE +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/README.md +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/__init__.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/aspects/__init__.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/aspects/aspects_utils.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/aspects/natal_aspects.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/aspects/synastry_aspects.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/charts/__init__.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/charts/charts_utils.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/enums.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/fetch_geonames.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/kr_types/__init__.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/kr_types/chart_types.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/kr_types/kerykeion_exception.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/kr_types/kr_models.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/kr_types/settings_models.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/relationship_score.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/report.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/settings/__init__.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/settings/kerykeion_settings.py +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/settings/kr.config.json +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/sweph/README.md +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/sweph/seas_18.se1 +0 -0
- {kerykeion-4.9.0 → kerykeion-4.10.0}/kerykeion/utilities.py +0 -0
|
@@ -15,7 +15,8 @@ from kerykeion.kr_types import (
|
|
|
15
15
|
AstrologicalSubjectModel,
|
|
16
16
|
LunarPhaseModel,
|
|
17
17
|
KerykeionPointModel,
|
|
18
|
-
PointType
|
|
18
|
+
PointType,
|
|
19
|
+
SiderealMode
|
|
19
20
|
)
|
|
20
21
|
from kerykeion.utilities import (
|
|
21
22
|
get_number_from_name,
|
|
@@ -28,6 +29,7 @@ from pathlib import Path
|
|
|
28
29
|
from typing import Union
|
|
29
30
|
|
|
30
31
|
DEFAULT_GEONAMES_USERNAME = "century.boy"
|
|
32
|
+
DEFAULT_SIDEREAL_MODE = "FAGAN_BRADLEY"
|
|
31
33
|
|
|
32
34
|
|
|
33
35
|
class AstrologicalSubject:
|
|
@@ -59,6 +61,10 @@ class AstrologicalSubject:
|
|
|
59
61
|
_ Defaults to None.
|
|
60
62
|
- disable_chiron (bool, optional): Disables the calculation of Chiron. Defaults to False.
|
|
61
63
|
Chiron calculation can create some issues with the Swiss Ephemeris when the date is too far in the past.
|
|
64
|
+
- sidereal_mode (SiderealMode, optional): Also known as Ayanamsa.
|
|
65
|
+
The mode to use for the sidereal zodiac, according to the Swiss Ephemeris.
|
|
66
|
+
Defaults to "FAGAN_BRADLEY".
|
|
67
|
+
Available modes are visible in the SiderealMode Literal.
|
|
62
68
|
"""
|
|
63
69
|
|
|
64
70
|
# Defined by the user
|
|
@@ -77,6 +83,7 @@ class AstrologicalSubject:
|
|
|
77
83
|
geonames_username: str
|
|
78
84
|
online: bool
|
|
79
85
|
zodiac_type: ZodiacType
|
|
86
|
+
sidereal_mode: SiderealMode
|
|
80
87
|
|
|
81
88
|
# Generated internally
|
|
82
89
|
city_data: dict[str, str]
|
|
@@ -140,16 +147,16 @@ class AstrologicalSubject:
|
|
|
140
147
|
zodiac_type: ZodiacType = "Tropic",
|
|
141
148
|
online: bool = True,
|
|
142
149
|
utc_datetime: Union[datetime, None] = None,
|
|
143
|
-
disable_chiron: bool = False
|
|
150
|
+
disable_chiron: bool = False,
|
|
151
|
+
sidereal_mode: Union[SiderealMode, None] = None
|
|
144
152
|
) -> None:
|
|
145
153
|
logging.debug("Starting Kerykeion")
|
|
146
154
|
|
|
147
155
|
# We set the swisseph path to the current directory
|
|
148
|
-
swe.set_ephe_path(
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
)
|
|
156
|
+
swe.set_ephe_path(str(Path(__file__).parent.absolute() / "sweph"))
|
|
157
|
+
|
|
158
|
+
# Flags for the Swiss Ephemeris
|
|
159
|
+
self._iflag = swe.FLG_SWIEPH + swe.FLG_SPEED
|
|
153
160
|
|
|
154
161
|
self.name = name
|
|
155
162
|
self.year = year
|
|
@@ -168,6 +175,22 @@ class AstrologicalSubject:
|
|
|
168
175
|
self.geonames_username = geonames_username
|
|
169
176
|
self.utc_datetime = utc_datetime
|
|
170
177
|
self.disable_chiron = disable_chiron
|
|
178
|
+
self.sidereal_mode = sidereal_mode
|
|
179
|
+
|
|
180
|
+
# Sidereal mode check and setup --->
|
|
181
|
+
if self.sidereal_mode and self.zodiac_type == "Tropic":
|
|
182
|
+
raise KerykeionException("You can't set a sidereal mode with a Tropic zodiac type!")
|
|
183
|
+
|
|
184
|
+
if self.zodiac_type == "Sidereal" and not self.sidereal_mode:
|
|
185
|
+
self.sidereal_mode = DEFAULT_SIDEREAL_MODE
|
|
186
|
+
logging.info("No sidereal mode set, using default FAGAN_BRADLEY")
|
|
187
|
+
|
|
188
|
+
if self.zodiac_type == "Sidereal":
|
|
189
|
+
self._iflag += swe.FLG_SIDEREAL
|
|
190
|
+
mode = "SIDM_" + sidereal_mode
|
|
191
|
+
swe.set_sid_mode(getattr(swe, mode))
|
|
192
|
+
logging.debug(f"Using sidereal mode: {mode}")
|
|
193
|
+
# <--- Sidereal mode check and setup
|
|
171
194
|
|
|
172
195
|
# This message is set to encourage the user to set a custom geonames username
|
|
173
196
|
if geonames_username is None and online:
|
|
@@ -207,9 +230,7 @@ class AstrologicalSubject:
|
|
|
207
230
|
logging.info("No longitude specified, using London as default")
|
|
208
231
|
|
|
209
232
|
if (not self.online) and (not tz_str):
|
|
210
|
-
raise KerykeionException(
|
|
211
|
-
"You need to set the coordinates and timezone if you want to use the offline mode!"
|
|
212
|
-
)
|
|
233
|
+
raise KerykeionException("You need to set the coordinates and timezone if you want to use the offline mode!")
|
|
213
234
|
|
|
214
235
|
self._check_if_poles()
|
|
215
236
|
|
|
@@ -328,12 +349,9 @@ class AstrologicalSubject:
|
|
|
328
349
|
self.houses_degree_ut = swe.houses(
|
|
329
350
|
tjdut=self.julian_day, lat=self.lat, lon=self.lng, hsys=str.encode('P')
|
|
330
351
|
)[0]
|
|
331
|
-
else:
|
|
332
|
-
raise KerykeionException("Zodiac type not recognized! Please use 'Tropic' or 'Sidereal'")
|
|
333
352
|
|
|
334
353
|
point_type: PointType = "House"
|
|
335
|
-
|
|
336
|
-
self.houses_degree_ut = swe.houses(self.julian_day, self.lat, self.lng)[0]
|
|
354
|
+
|
|
337
355
|
# stores the house in singular dictionaries.
|
|
338
356
|
self.first_house = calculate_position(self.houses_degree_ut[0], "First_House", point_type=point_type)
|
|
339
357
|
self.second_house = calculate_position(self.houses_degree_ut[1], "Second_House", point_type=point_type)
|
|
@@ -365,12 +383,6 @@ class AstrologicalSubject:
|
|
|
365
383
|
|
|
366
384
|
def _planets_degrees_lister(self):
|
|
367
385
|
"""Sidereal or tropic mode."""
|
|
368
|
-
self._iflag = swe.FLG_SWIEPH + swe.FLG_SPEED
|
|
369
|
-
|
|
370
|
-
if self.zodiac_type == "Sidereal":
|
|
371
|
-
self._iflag += swe.FLG_SIDEREAL
|
|
372
|
-
mode = "SIDM_FAGAN_BRADLEY"
|
|
373
|
-
swe.set_sid_mode(getattr(swe, mode))
|
|
374
386
|
|
|
375
387
|
# Calculates the position of the planets and stores it in a list.
|
|
376
388
|
sun_deg = swe.calc(self.julian_day, 0, self._iflag)[0][0]
|
|
@@ -578,7 +590,6 @@ class AstrologicalSubject:
|
|
|
578
590
|
|
|
579
591
|
KrData = AstrologicalSubjectModel(**self.__dict__)
|
|
580
592
|
json_string = KrData.model_dump_json(exclude_none=True)
|
|
581
|
-
print(json_string)
|
|
582
593
|
|
|
583
594
|
if dump:
|
|
584
595
|
if destination_folder:
|
|
@@ -621,3 +632,6 @@ if __name__ == "__main__":
|
|
|
621
632
|
|
|
622
633
|
print('\n')
|
|
623
634
|
print(johnny.chiron)
|
|
635
|
+
|
|
636
|
+
# With Sidereal Zodiac
|
|
637
|
+
johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", zodiac_type="Sidereal", sidereal_mode="FAGAN_BRADLEY")
|
|
@@ -45,9 +45,9 @@ class KerykeionChartSVG:
|
|
|
45
45
|
- first_obj: First kerykeion object
|
|
46
46
|
- chart_type: Natal, ExternalNatal, Transit, Synastry (Default: Type="Natal").
|
|
47
47
|
- second_obj: Second kerykeion object (Not required if type is Natal)
|
|
48
|
-
- new_output_directory: Set the output directory (default:
|
|
49
|
-
-
|
|
50
|
-
|
|
48
|
+
- new_output_directory: Set the output directory (default: home directory).
|
|
49
|
+
- new_settings_file: Set the settings file (default: kr.config.json).
|
|
50
|
+
In the settings file you can set the language, colors, planets, aspects, etc.
|
|
51
51
|
"""
|
|
52
52
|
|
|
53
53
|
# Constants
|
|
@@ -218,7 +218,6 @@ class KerykeionChartSVG:
|
|
|
218
218
|
self.t_houses_sign_graph.append(h["sign_num"])
|
|
219
219
|
|
|
220
220
|
# screen size
|
|
221
|
-
|
|
222
221
|
self.height = self._DEFAULT_HEIGHT
|
|
223
222
|
if self.chart_type == "Synastry" or self.chart_type == "Transit":
|
|
224
223
|
self.width = self._DEFAULT_FULL_WIDTH
|
|
@@ -1159,7 +1158,6 @@ class KerykeionChartSVG:
|
|
|
1159
1158
|
svgHeight = "100%"
|
|
1160
1159
|
svgWidth = "100%"
|
|
1161
1160
|
rotate = "0"
|
|
1162
|
-
translate = "0"
|
|
1163
1161
|
|
|
1164
1162
|
# To increase the size of the chart, change the viewbox
|
|
1165
1163
|
if self.chart_type == "Natal" or self.chart_type == "ExternalNatal":
|
|
@@ -1218,6 +1216,7 @@ class KerykeionChartSVG:
|
|
|
1218
1216
|
td["svgHeight"] = str(svgHeight)
|
|
1219
1217
|
td["viewbox"] = viewbox
|
|
1220
1218
|
|
|
1219
|
+
# Chart Title
|
|
1221
1220
|
if self.chart_type == "Synastry":
|
|
1222
1221
|
td["stringTitle"] = f"{self.user.name} {self.language_settings['and_word']} {self.t_user.name}"
|
|
1223
1222
|
|
|
@@ -1227,17 +1226,24 @@ class KerykeionChartSVG:
|
|
|
1227
1226
|
else:
|
|
1228
1227
|
td["stringTitle"] = self.user.name
|
|
1229
1228
|
|
|
1230
|
-
#
|
|
1229
|
+
# Chart Name
|
|
1231
1230
|
if self.chart_type == "Synastry" or self.chart_type == "Transit":
|
|
1232
1231
|
td["stringName"] = f"{self.user.name}:"
|
|
1233
1232
|
else:
|
|
1234
1233
|
td["stringName"] = f'{self.language_settings["info"]}:'
|
|
1235
1234
|
|
|
1236
|
-
#
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1235
|
+
# Bottom Left Corner
|
|
1236
|
+
if self.chart_type == "Natal" or self.chart_type == "ExternalNatal" or self.chart_type == "Synastry":
|
|
1237
|
+
td["bottomLeft1"] = f"{self.user.zodiac_type if self.user.zodiac_type == 'Tropic' else self.user.zodiac_type + ' ' + self.user.sidereal_mode}"
|
|
1238
|
+
td["bottomLeft2"] = f'{self.language_settings.get("lunar_phase", "Lunar Phase")}: {self.user.lunar_phase.moon_phase_name}'
|
|
1239
|
+
td["bottomLeft3"] = f'{self.language_settings.get("lunar_phase", "Lunar Phase")}: {self.language_settings.get("day", "Day")} {self.user.lunar_phase.get("moon_phase", "")}'
|
|
1240
|
+
td["bottomLeft4"] = ""
|
|
1241
|
+
|
|
1242
|
+
else:
|
|
1243
|
+
td["bottomLeft1"] = f"{self.user.zodiac_type if self.user.zodiac_type == 'Tropic' else self.user.zodiac_type + ' ' + self.user.sidereal_mode}"
|
|
1244
|
+
td["bottomLeft2"] = f'{self.language_settings.get("lunar_phase", "Lunar Phase")}: {self.t_user.lunar_phase.moon_phase_name}'
|
|
1245
|
+
td["bottomLeft3"] = f'{self.language_settings.get("lunar_phase", "Lunar Phase")}: {self.language_settings.get("day", "Day")} {self.t_user.lunar_phase.get("moon_phase", "")}'
|
|
1246
|
+
td["bottomLeft4"] = ""
|
|
1241
1247
|
|
|
1242
1248
|
# lunar phase
|
|
1243
1249
|
deg = self.user.lunar_phase["degrees_between_s_m"]
|
|
@@ -1348,7 +1354,6 @@ class KerykeionChartSVG:
|
|
|
1348
1354
|
# config
|
|
1349
1355
|
td["cfgZoom"] = str(self.zoom)
|
|
1350
1356
|
td["cfgRotate"] = rotate
|
|
1351
|
-
td["cfgTranslate"] = translate
|
|
1352
1357
|
|
|
1353
1358
|
# ---
|
|
1354
1359
|
# Drawing Functions
|
|
@@ -1401,7 +1406,7 @@ class KerykeionChartSVG:
|
|
|
1401
1406
|
if not (self.template):
|
|
1402
1407
|
self.template = self.makeTemplate(minify)
|
|
1403
1408
|
|
|
1404
|
-
self.chartname = self.output_directory / f"{self.user.name}{self.chart_type}Chart.svg"
|
|
1409
|
+
self.chartname = self.output_directory / f"{self.user.name} - {self.chart_type} Chart.svg"
|
|
1405
1410
|
|
|
1406
1411
|
with open(self.chartname, "w", encoding="utf-8", errors="ignore") as output_file:
|
|
1407
1412
|
output_file.write(self.template)
|
|
@@ -1426,9 +1431,28 @@ if __name__ == "__main__":
|
|
|
1426
1431
|
|
|
1427
1432
|
# Synastry Chart
|
|
1428
1433
|
synastry_chart = KerykeionChartSVG(first, "Synastry", second)
|
|
1429
|
-
synastry_chart.makeSVG(
|
|
1434
|
+
synastry_chart.makeSVG()
|
|
1430
1435
|
|
|
1431
1436
|
# Transits Chart
|
|
1432
1437
|
transits_chart = KerykeionChartSVG(first, "Transit", second)
|
|
1433
|
-
transits_chart.makeSVG(
|
|
1434
|
-
|
|
1438
|
+
transits_chart.makeSVG()
|
|
1439
|
+
|
|
1440
|
+
# Sidereal Birth Chart (Lahiri)
|
|
1441
|
+
sidereal_subject = AstrologicalSubject("John Lennon Lahiri", 1940, 10, 9, 10, 30, "Liverpool", "GB", zodiac_type="Sidereal", sidereal_mode="LAHIRI")
|
|
1442
|
+
sidereal_chart = KerykeionChartSVG(sidereal_subject)
|
|
1443
|
+
sidereal_chart.makeSVG()
|
|
1444
|
+
|
|
1445
|
+
# Sidereal Birth Chart (Fagan-Bradley)
|
|
1446
|
+
sidereal_subject = AstrologicalSubject("John Lennon Fagan-Bradley", 1940, 10, 9, 10, 30, "Liverpool", "GB", zodiac_type="Sidereal", sidereal_mode="FAGAN_BRADLEY")
|
|
1447
|
+
sidereal_chart = KerykeionChartSVG(sidereal_subject)
|
|
1448
|
+
sidereal_chart.makeSVG()
|
|
1449
|
+
|
|
1450
|
+
# Sidereal Birth Chart (DeLuce)
|
|
1451
|
+
sidereal_subject = AstrologicalSubject("John Lennon DeLuce", 1940, 10, 9, 10, 30, "Liverpool", "GB", zodiac_type="Sidereal", sidereal_mode="DELUCE")
|
|
1452
|
+
sidereal_chart = KerykeionChartSVG(sidereal_subject)
|
|
1453
|
+
sidereal_chart.makeSVG()
|
|
1454
|
+
|
|
1455
|
+
# Sidereal Birth Chart (J2000)
|
|
1456
|
+
sidereal_subject = AstrologicalSubject("John Lennon J2000", 1940, 10, 9, 10, 30, "Liverpool", "GB", zodiac_type="Sidereal", sidereal_mode="J2000")
|
|
1457
|
+
sidereal_chart = KerykeionChartSVG(sidereal_subject)
|
|
1458
|
+
sidereal_chart.makeSVG()
|