kerykeion 4.14.2__py3-none-any.whl → 4.18.0__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 +2 -1
- kerykeion/aspects/aspects_utils.py +33 -117
- kerykeion/aspects/natal_aspects.py +26 -25
- kerykeion/aspects/synastry_aspects.py +25 -27
- kerykeion/astrological_subject.py +145 -189
- kerykeion/charts/charts_utils.py +400 -126
- kerykeion/charts/draw_planets.py +407 -0
- kerykeion/charts/kerykeion_chart_svg.py +502 -770
- kerykeion/charts/templates/aspect_grid_only.xml +452 -0
- kerykeion/charts/templates/chart.xml +39 -39
- kerykeion/charts/templates/wheel_only.xml +499 -0
- kerykeion/charts/themes/classic.css +82 -0
- kerykeion/charts/themes/dark-high-contrast.css +121 -0
- kerykeion/charts/themes/dark.css +121 -0
- kerykeion/charts/themes/light.css +117 -0
- kerykeion/ephemeris_data.py +22 -18
- kerykeion/kr_types/chart_types.py +3 -7
- kerykeion/kr_types/kr_literals.py +10 -1
- kerykeion/kr_types/kr_models.py +33 -8
- kerykeion/kr_types/settings_models.py +1 -10
- kerykeion/relationship_score/__init__.py +2 -0
- kerykeion/relationship_score/relationship_score.py +175 -0
- kerykeion/relationship_score/relationship_score_factory.py +275 -0
- kerykeion/report.py +6 -3
- kerykeion/settings/kerykeion_settings.py +6 -1
- kerykeion/settings/kr.config.json +238 -98
- kerykeion/utilities.py +116 -215
- {kerykeion-4.14.2.dist-info → kerykeion-4.18.0.dist-info}/METADATA +40 -10
- kerykeion-4.18.0.dist-info/RECORD +42 -0
- kerykeion/relationship_score.py +0 -205
- kerykeion-4.14.2.dist-info/RECORD +0 -33
- {kerykeion-4.14.2.dist-info → kerykeion-4.18.0.dist-info}/LICENSE +0 -0
- {kerykeion-4.14.2.dist-info → kerykeion-4.18.0.dist-info}/WHEEL +0 -0
- {kerykeion-4.14.2.dist-info → kerykeion-4.18.0.dist-info}/entry_points.txt +0 -0
kerykeion/relationship_score.py
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
This is part of Kerykeion (C) 2024 Giacomo Battaglia
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from kerykeion import AstrologicalSubject
|
|
7
|
-
from kerykeion.aspects.synastry_aspects import SynastryAspects
|
|
8
|
-
import logging
|
|
9
|
-
from pathlib import Path
|
|
10
|
-
from typing import Union
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
class RelationshipScore:
|
|
14
|
-
"""
|
|
15
|
-
Calculates the relevance of the relationship of the two subjects according to
|
|
16
|
-
Ciro Discepolo method.
|
|
17
|
-
|
|
18
|
-
Results:
|
|
19
|
-
- From 0 to 5 = Null relationship
|
|
20
|
-
- From 5 a 10 = Mediocre relationship
|
|
21
|
-
- From 10 to 15 = Important relationship
|
|
22
|
-
- From 15 to 20 = Very important relationship
|
|
23
|
-
- From 20 to su = Exceptional relationship
|
|
24
|
-
|
|
25
|
-
Documentation at:
|
|
26
|
-
http://www.cirodiscepolo.it/Articoli/Discepoloele.htm
|
|
27
|
-
|
|
28
|
-
Args:
|
|
29
|
-
first_subject (AstrologicalSubject): First subject kerykeion instance
|
|
30
|
-
second_subject (AstrologicalSubject): Second subject kerykeion instance
|
|
31
|
-
|
|
32
|
-
"""
|
|
33
|
-
|
|
34
|
-
first_subject: AstrologicalSubject
|
|
35
|
-
second_subject: AstrologicalSubject
|
|
36
|
-
score: int
|
|
37
|
-
is_destiny_sign: bool
|
|
38
|
-
relevant_aspects: list
|
|
39
|
-
relevant_default_aspects: list
|
|
40
|
-
|
|
41
|
-
def __init__(
|
|
42
|
-
self,
|
|
43
|
-
first_subject: AstrologicalSubject,
|
|
44
|
-
second_subject: AstrologicalSubject,
|
|
45
|
-
new_settings_file: Union[Path, None] = None,
|
|
46
|
-
):
|
|
47
|
-
self.first_subject = first_subject
|
|
48
|
-
self.second_subject = second_subject
|
|
49
|
-
self.score = 0
|
|
50
|
-
self.is_destiny_sign = False
|
|
51
|
-
self.relevant_aspects = []
|
|
52
|
-
self.relevant_default_aspects = []
|
|
53
|
-
self.__all_synastry_aspects = SynastryAspects(
|
|
54
|
-
first_subject, second_subject, new_settings_file=new_settings_file
|
|
55
|
-
).all_aspects
|
|
56
|
-
|
|
57
|
-
# Calculates all at initialization
|
|
58
|
-
self._get_all()
|
|
59
|
-
|
|
60
|
-
def __str__(self) -> str:
|
|
61
|
-
return f"CuppleScoreInstance: {self.first_subject.name} and {self.second_subject.name}, score: {self.score}"
|
|
62
|
-
|
|
63
|
-
def __dict__(self):
|
|
64
|
-
return {
|
|
65
|
-
"first_subject_name": self.first_subject.name,
|
|
66
|
-
"second_subject_name": self.second_subject.name,
|
|
67
|
-
"score": self.score,
|
|
68
|
-
"relevant_aspects": self.relevant_aspects,
|
|
69
|
-
"relevant_default_aspects": self.relevant_default_aspects,
|
|
70
|
-
"is_destiny_sign": self.is_destiny_sign,
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
def _log_aspect(self, aspect: dict, points: int) -> None:
|
|
74
|
-
logging.debug(
|
|
75
|
-
f"{points} Points: {aspect['p1_name']} {aspect['aspect']} {aspect['p2_name']}, rounded orbit: {int(aspect['orbit'])}"
|
|
76
|
-
)
|
|
77
|
-
|
|
78
|
-
def _evaluate_destiny_sign(self) -> int:
|
|
79
|
-
"""
|
|
80
|
-
5 points if is a destiny sign:
|
|
81
|
-
"""
|
|
82
|
-
if self.first_subject.sun["quality"] == self.second_subject.sun["quality"]:
|
|
83
|
-
logging.debug(
|
|
84
|
-
f'5 points: Destiny sign, {self.first_subject.sun["sign"]} and {self.second_subject.sun["sign"]}'
|
|
85
|
-
)
|
|
86
|
-
self.is_destiny_sign = True
|
|
87
|
-
return 5
|
|
88
|
-
|
|
89
|
-
return 0
|
|
90
|
-
|
|
91
|
-
def _check_if_sun_sun_aspect(self, aspect: dict, log: bool = True) -> int:
|
|
92
|
-
"""
|
|
93
|
-
8 points if Sun conjunction/opposition/square to Sun,
|
|
94
|
-
11 if diff <= 2 degrees:
|
|
95
|
-
"""
|
|
96
|
-
aspect_types = ["conjunction", "opposition", "square"]
|
|
97
|
-
|
|
98
|
-
if (aspect["p1_name"] == "Sun" and aspect["p2_name"] == "Sun") and (aspect["aspect"] in aspect_types):
|
|
99
|
-
self.relevant_default_aspects.append(aspect)
|
|
100
|
-
|
|
101
|
-
if aspect["orbit"] <= 2:
|
|
102
|
-
score = 11
|
|
103
|
-
|
|
104
|
-
self._log_aspect(aspect, score)
|
|
105
|
-
self.relevant_aspects.append(self._create_aspects_dictionary(aspect, score))
|
|
106
|
-
|
|
107
|
-
return score
|
|
108
|
-
else:
|
|
109
|
-
score = 8
|
|
110
|
-
|
|
111
|
-
self._log_aspect(aspect, score)
|
|
112
|
-
self.relevant_aspects.append(self._create_aspects_dictionary(aspect, score))
|
|
113
|
-
|
|
114
|
-
return score
|
|
115
|
-
|
|
116
|
-
return 0
|
|
117
|
-
|
|
118
|
-
def _check_if_sun_moon_conjunction(self, aspect: dict) -> int:
|
|
119
|
-
"""
|
|
120
|
-
8 points if Moon conjunction/opposition/square to Moon,
|
|
121
|
-
11 if diff <= 2 degrees:
|
|
122
|
-
"""
|
|
123
|
-
planets = set(["Moon", "Sun"])
|
|
124
|
-
|
|
125
|
-
if set([aspect["p1_name"], aspect["p2_name"]]) == planets and aspect["aspect"] == "conjunction":
|
|
126
|
-
self.relevant_default_aspects.append(aspect)
|
|
127
|
-
|
|
128
|
-
if aspect["orbit"] <= 2:
|
|
129
|
-
score = 11
|
|
130
|
-
|
|
131
|
-
self._log_aspect(aspect, score)
|
|
132
|
-
self.relevant_aspects.append(self._create_aspects_dictionary(aspect, score))
|
|
133
|
-
|
|
134
|
-
return score
|
|
135
|
-
|
|
136
|
-
else:
|
|
137
|
-
score = 8
|
|
138
|
-
|
|
139
|
-
self._log_aspect(aspect, score)
|
|
140
|
-
self.relevant_aspects.append(self._create_aspects_dictionary(aspect, score))
|
|
141
|
-
|
|
142
|
-
return score
|
|
143
|
-
|
|
144
|
-
return 0
|
|
145
|
-
|
|
146
|
-
def _check_if_sun_moon_asc_aspect(self, aspect: dict) -> int:
|
|
147
|
-
planets = ["Sun", "Moon", "First_House"]
|
|
148
|
-
|
|
149
|
-
if self._check_if_sun_sun_aspect(aspect) or self._check_if_sun_moon_conjunction(aspect):
|
|
150
|
-
return 0
|
|
151
|
-
|
|
152
|
-
if aspect["p1_name"] in planets and aspect["p2_name"] in planets:
|
|
153
|
-
self.relevant_default_aspects.append(aspect)
|
|
154
|
-
score = 4
|
|
155
|
-
|
|
156
|
-
self._log_aspect(aspect, score)
|
|
157
|
-
self.relevant_aspects.append(self._create_aspects_dictionary(aspect, score))
|
|
158
|
-
|
|
159
|
-
return score
|
|
160
|
-
|
|
161
|
-
return 0
|
|
162
|
-
|
|
163
|
-
def _check_if_venus_mars_aspect(self, aspect: dict) -> int:
|
|
164
|
-
planets = set(["Venus", "Mars"])
|
|
165
|
-
if set([aspect["p1_name"], aspect["p2_name"]]) == planets:
|
|
166
|
-
score = 4
|
|
167
|
-
self.relevant_default_aspects.append(aspect)
|
|
168
|
-
|
|
169
|
-
self._log_aspect(aspect, score)
|
|
170
|
-
self.relevant_aspects.append(self._create_aspects_dictionary(aspect, score))
|
|
171
|
-
|
|
172
|
-
return score
|
|
173
|
-
|
|
174
|
-
return 0
|
|
175
|
-
|
|
176
|
-
def _create_aspects_dictionary(self, aspect: dict, score: int) -> dict:
|
|
177
|
-
return {
|
|
178
|
-
"points": score,
|
|
179
|
-
"p1_name": aspect["p1_name"],
|
|
180
|
-
"p2_name": aspect["p2_name"],
|
|
181
|
-
"aspect": aspect["aspect"],
|
|
182
|
-
"orbit": aspect["orbit"],
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
def _get_all(self) -> None:
|
|
186
|
-
self.score += self._evaluate_destiny_sign()
|
|
187
|
-
|
|
188
|
-
for a in self.__all_synastry_aspects:
|
|
189
|
-
self.score += self._check_if_sun_sun_aspect(a)
|
|
190
|
-
self.score += self._check_if_sun_moon_conjunction(a)
|
|
191
|
-
self.score += self._check_if_sun_moon_asc_aspect(a)
|
|
192
|
-
self.score += self._check_if_venus_mars_aspect(a)
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if __name__ == "__main__":
|
|
196
|
-
from kerykeion.utilities import setup_logging
|
|
197
|
-
setup_logging(level="debug")
|
|
198
|
-
|
|
199
|
-
lui = AstrologicalSubject("John", 1975, 10, 10, 21, 15, "Roma", "IT")
|
|
200
|
-
lei = AstrologicalSubject("Sarah", 1978, 2, 9, 15, 50, "Roma", "IT")
|
|
201
|
-
|
|
202
|
-
score = RelationshipScore(lui, lei)
|
|
203
|
-
print(score.__dict__()["score"])
|
|
204
|
-
print(score.__dict__()["is_destiny_sign"])
|
|
205
|
-
print(score.__dict__()["relevant_aspects"][0])
|
|
@@ -1,33 +0,0 @@
|
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|