kerykeion 5.0.0a9__py3-none-any.whl → 5.0.0a10__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 +22 -1
- kerykeion/aspects/__init__.py +7 -2
- kerykeion/aspects/aspects_utils.py +1 -3
- kerykeion/aspects/natal_aspects_factory.py +236 -0
- kerykeion/aspects/synastry_aspects_factory.py +234 -0
- kerykeion/astrological_subject_factory.py +5 -9
- kerykeion/charts/charts_utils.py +12 -12
- kerykeion/charts/draw_planets.py +3 -4
- kerykeion/charts/draw_planets_v2.py +5 -6
- kerykeion/charts/kerykeion_chart_svg.py +10 -10
- kerykeion/composite_subject_factory.py +1 -1
- kerykeion/house_comparison/__init__.py +6 -0
- kerykeion/house_comparison/house_comparison_factory.py +1 -1
- kerykeion/house_comparison/house_comparison_utils.py +0 -1
- kerykeion/kr_types/__init__.py +49 -0
- kerykeion/kr_types/kr_models.py +29 -0
- kerykeion/kr_types/settings_models.py +9 -1
- kerykeion/planetary_return_factory.py +6 -5
- kerykeion/relationship_score_factory.py +27 -17
- kerykeion/report.py +0 -1
- kerykeion/settings/__init__.py +5 -0
- kerykeion/settings/config_constants.py +20 -6
- kerykeion/settings/kr.config.json +80 -0
- kerykeion/transits_time_range.py +4 -4
- kerykeion/utilities.py +1 -1
- {kerykeion-5.0.0a9.dist-info → kerykeion-5.0.0a10.dist-info}/METADATA +9 -4
- kerykeion-5.0.0a10.dist-info/RECORD +53 -0
- kerykeion/aspects/natal_aspects.py +0 -181
- kerykeion/aspects/synastry_aspects.py +0 -141
- kerykeion/aspects/transits_time_range.py +0 -41
- kerykeion-5.0.0a9.dist-info/RECORD +0 -55
- kerykeion-5.0.0a9.dist-info/entry_points.txt +0 -2
- {kerykeion-5.0.0a9.dist-info → kerykeion-5.0.0a10.dist-info}/WHEEL +0 -0
- {kerykeion-5.0.0a9.dist-info → kerykeion-5.0.0a10.dist-info}/licenses/LICENSE +0 -0
|
@@ -85,6 +85,14 @@
|
|
|
85
85
|
"Return": "Return",
|
|
86
86
|
"natal": "Natal",
|
|
87
87
|
"perspective_type": "Perspective",
|
|
88
|
+
"location": "Location",
|
|
89
|
+
"day_of_week": "Day of Week",
|
|
90
|
+
"elements": "Elements",
|
|
91
|
+
"qualities": "Qualities",
|
|
92
|
+
"cardinal": "Cardinal",
|
|
93
|
+
"fixed": "Fixed",
|
|
94
|
+
"mutable": "Mutable",
|
|
95
|
+
"birth_chart": "Birth Chart",
|
|
88
96
|
"celestial_points": {
|
|
89
97
|
"Sun": "Sun",
|
|
90
98
|
"Moon": "Moon",
|
|
@@ -215,6 +223,14 @@
|
|
|
215
223
|
"Return": "Révolution",
|
|
216
224
|
"natal": "Radix",
|
|
217
225
|
"perspective_type": "Perspective",
|
|
226
|
+
"location": "Lieu",
|
|
227
|
+
"day_of_week": "Jour de la semaine",
|
|
228
|
+
"elements": "Éléments",
|
|
229
|
+
"qualities": "Qualités",
|
|
230
|
+
"cardinal": "Cardinal",
|
|
231
|
+
"fixed": "Fixe",
|
|
232
|
+
"mutable": "Mutable",
|
|
233
|
+
"birth_chart": "Thème Natal",
|
|
218
234
|
"celestial_points": {
|
|
219
235
|
"Sun": "Soleil",
|
|
220
236
|
"Moon": "Lune",
|
|
@@ -345,6 +361,14 @@
|
|
|
345
361
|
"return_point": "Ponto (ret.)",
|
|
346
362
|
"natal": "Natal",
|
|
347
363
|
"perspective_type": "Perspectiva",
|
|
364
|
+
"location": "Localização",
|
|
365
|
+
"day_of_week": "Dia da semana",
|
|
366
|
+
"elements": "Elementos",
|
|
367
|
+
"qualities": "Qualidades",
|
|
368
|
+
"cardinal": "Cardinal",
|
|
369
|
+
"fixed": "Fixo",
|
|
370
|
+
"mutable": "Mutável",
|
|
371
|
+
"birth_chart": "Mapa Natal",
|
|
348
372
|
"celestial_points": {
|
|
349
373
|
"Sun": "Sol",
|
|
350
374
|
"Moon": "Lua",
|
|
@@ -475,6 +499,14 @@
|
|
|
475
499
|
"Return": "Ritorno",
|
|
476
500
|
"natal": "Radix",
|
|
477
501
|
"perspective_type": "Prospettiva",
|
|
502
|
+
"location": "Località",
|
|
503
|
+
"day_of_week": "Giorno della settimana",
|
|
504
|
+
"elements": "Elementi",
|
|
505
|
+
"qualities": "Qualità",
|
|
506
|
+
"cardinal": "Cardinale",
|
|
507
|
+
"fixed": "Fisso",
|
|
508
|
+
"mutable": "Mutevole",
|
|
509
|
+
"birth_chart": "Tema Natale",
|
|
478
510
|
"celestial_points": {
|
|
479
511
|
"Sun": "Sole",
|
|
480
512
|
"Moon": "Luna",
|
|
@@ -605,6 +637,14 @@
|
|
|
605
637
|
"Return": "回归",
|
|
606
638
|
"natal": "本命",
|
|
607
639
|
"perspective_type": "视角",
|
|
640
|
+
"location": "位置",
|
|
641
|
+
"day_of_week": "星期",
|
|
642
|
+
"elements": "元素",
|
|
643
|
+
"qualities": "性质",
|
|
644
|
+
"cardinal": "本位",
|
|
645
|
+
"fixed": "固定",
|
|
646
|
+
"mutable": "变动",
|
|
647
|
+
"birth_chart": "出生图",
|
|
608
648
|
"celestial_points": {
|
|
609
649
|
"Sun": "太陽",
|
|
610
650
|
"Moon": "月亮",
|
|
@@ -735,6 +775,14 @@
|
|
|
735
775
|
"return_point": "Punto (rev.)",
|
|
736
776
|
"natal": "Radix",
|
|
737
777
|
"perspective_type": "Perspectiva",
|
|
778
|
+
"location": "Ubicación",
|
|
779
|
+
"day_of_week": "Día de la semana",
|
|
780
|
+
"elements": "Elementos",
|
|
781
|
+
"qualities": "Cualidades",
|
|
782
|
+
"cardinal": "Cardinal",
|
|
783
|
+
"fixed": "Fijo",
|
|
784
|
+
"mutable": "Mutable",
|
|
785
|
+
"birth_chart": "Carta Natal",
|
|
738
786
|
"celestial_points": {
|
|
739
787
|
"Sun": "Sol",
|
|
740
788
|
"Moon": "Luna",
|
|
@@ -865,6 +913,14 @@
|
|
|
865
913
|
"Return": "Возвращение",
|
|
866
914
|
"natal": "Радикс",
|
|
867
915
|
"perspective_type": "Перспектива",
|
|
916
|
+
"location": "Местоположение",
|
|
917
|
+
"day_of_week": "День недели",
|
|
918
|
+
"elements": "Стихии",
|
|
919
|
+
"qualities": "Качества",
|
|
920
|
+
"cardinal": "Кардинальный",
|
|
921
|
+
"fixed": "Фиксированный",
|
|
922
|
+
"mutable": "Мутабельный",
|
|
923
|
+
"birth_chart": "Натальная Карта",
|
|
868
924
|
"celestial_points": {
|
|
869
925
|
"Sun": "Солнце",
|
|
870
926
|
"Moon": "Луна",
|
|
@@ -995,6 +1051,14 @@
|
|
|
995
1051
|
"Return": "Dönüş",
|
|
996
1052
|
"natal": "Doğum haritası",
|
|
997
1053
|
"perspective_type": "Perspektif",
|
|
1054
|
+
"location": "Konum",
|
|
1055
|
+
"day_of_week": "Haftanın günü",
|
|
1056
|
+
"elements": "Elementler",
|
|
1057
|
+
"qualities": "Nitelikler",
|
|
1058
|
+
"cardinal": "Kardinal",
|
|
1059
|
+
"fixed": "Sabit",
|
|
1060
|
+
"mutable": "Değişken",
|
|
1061
|
+
"birth_chart": "Doğum Haritası",
|
|
998
1062
|
"celestial_points": {
|
|
999
1063
|
"Sun": "Güneş",
|
|
1000
1064
|
"Moon": "Ay",
|
|
@@ -1125,6 +1189,14 @@
|
|
|
1125
1189
|
"return_point": "Rückkehrpunkt",
|
|
1126
1190
|
"natal": "Radix",
|
|
1127
1191
|
"perspective_type": "Perspektive",
|
|
1192
|
+
"location": "Ort",
|
|
1193
|
+
"day_of_week": "Wochentag",
|
|
1194
|
+
"elements": "Elemente",
|
|
1195
|
+
"qualities": "Qualitäten",
|
|
1196
|
+
"cardinal": "Kardinal",
|
|
1197
|
+
"fixed": "Fix",
|
|
1198
|
+
"mutable": "Veränderlich",
|
|
1199
|
+
"birth_chart": "Geburtshoroskop",
|
|
1128
1200
|
"celestial_points": {
|
|
1129
1201
|
"Sun": "Sonne",
|
|
1130
1202
|
"Moon": "Mond",
|
|
@@ -1255,6 +1327,14 @@
|
|
|
1255
1327
|
"return_point": "पुनरागमन बिंदु",
|
|
1256
1328
|
"natal": "जन्म कुंडली",
|
|
1257
1329
|
"perspective_type": "दृष्टिकोण",
|
|
1330
|
+
"location": "स्थान",
|
|
1331
|
+
"day_of_week": "सप्ताह का दिन",
|
|
1332
|
+
"elements": "तत्व",
|
|
1333
|
+
"qualities": "गुण",
|
|
1334
|
+
"cardinal": "चल",
|
|
1335
|
+
"fixed": "स्थिर",
|
|
1336
|
+
"mutable": "द्विस्वभाव",
|
|
1337
|
+
"birth_chart": "जन्म चार्ट",
|
|
1258
1338
|
"celestial_points": {
|
|
1259
1339
|
"Sun": "सूर्य",
|
|
1260
1340
|
"Moon": "चंद्रमा",
|
kerykeion/transits_time_range.py
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Union, List
|
|
2
2
|
from datetime import datetime, timedelta
|
|
3
3
|
from kerykeion.kr_types.kr_models import AstrologicalSubjectModel
|
|
4
4
|
from kerykeion.astrological_subject_factory import AstrologicalSubjectFactory
|
|
5
|
-
from kerykeion.aspects import
|
|
5
|
+
from kerykeion.aspects import SynastryAspectsFactory
|
|
6
6
|
from kerykeion.ephemeris_data import EphemerisDataFactory
|
|
7
7
|
from kerykeion.kr_types.kr_literals import AstrologicalPoint
|
|
8
8
|
from kerykeion.kr_types.kr_models import ActiveAspect, TransitMomentModel, TransitsTimeRangeModel
|
|
@@ -67,7 +67,7 @@ class TransitsTimeRangeFactory:
|
|
|
67
67
|
|
|
68
68
|
for ephemeris_point in self.ephemeris_data_points:
|
|
69
69
|
# Calculate aspects between transit positions and natal chart
|
|
70
|
-
aspects =
|
|
70
|
+
aspects = SynastryAspectsFactory.from_subjects(
|
|
71
71
|
ephemeris_point,
|
|
72
72
|
self.natal_chart,
|
|
73
73
|
active_points=self.active_points,
|
|
@@ -86,7 +86,7 @@ class TransitsTimeRangeFactory:
|
|
|
86
86
|
# Create and return the complete transits model
|
|
87
87
|
return TransitsTimeRangeModel(
|
|
88
88
|
dates=[point.iso_formatted_utc_datetime for point in self.ephemeris_data_points],
|
|
89
|
-
subject=self.natal_chart
|
|
89
|
+
subject=self.natal_chart,
|
|
90
90
|
transits=transit_moments
|
|
91
91
|
)
|
|
92
92
|
|
kerykeion/utilities.py
CHANGED
|
@@ -1,23 +1,28 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kerykeion
|
|
3
|
-
Version: 5.0.
|
|
4
|
-
Summary: A
|
|
3
|
+
Version: 5.0.0a10
|
|
4
|
+
Summary: A Python library for astrological calculations, including natal charts, houses, planetary aspects, and SVG chart generation.
|
|
5
5
|
Project-URL: Homepage, https://www.kerykeion.net/
|
|
6
6
|
Project-URL: Repository, https://github.com/g-battaglia/kerykeion
|
|
7
7
|
Author-email: Giacomo Battaglia <kerykeion.astrology@gmail.com>
|
|
8
8
|
License: AGPL-3.0
|
|
9
9
|
License-File: LICENSE
|
|
10
|
-
Keywords: astrology,astrology
|
|
10
|
+
Keywords: astrology,astrology calculations,astrology calculator,astrology library,astrology transits,astronomical algorithms,birth chart,ephemeris,houses of astrology,natal chart,planetary aspects,svg charts,synastry,zodiac,zodiac signs
|
|
11
11
|
Classifier: Development Status :: 5 - Production/Stable
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: Intended Audience :: Information Technology
|
|
14
|
-
Classifier:
|
|
14
|
+
Classifier: Intended Audience :: Science/Research
|
|
15
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
16
|
Classifier: Operating System :: OS Independent
|
|
16
17
|
Classifier: Programming Language :: Python :: 3 :: Only
|
|
17
18
|
Classifier: Programming Language :: Python :: 3.9
|
|
18
19
|
Classifier: Programming Language :: Python :: 3.10
|
|
19
20
|
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
23
|
+
Classifier: Topic :: Religion
|
|
20
24
|
Classifier: Topic :: Scientific/Engineering :: Astronomy
|
|
25
|
+
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
21
26
|
Classifier: Topic :: Software Development
|
|
22
27
|
Classifier: Topic :: Software Development :: Libraries
|
|
23
28
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
kerykeion/__init__.py,sha256=ZpSRhsyTQxKC1l2Q6MmZYKRcOTto0nFUqHAeoyidc1U,1408
|
|
2
|
+
kerykeion/astrological_subject_factory.py,sha256=06iqUm9qEKYp4yHouvorNx7MnZ3afy3jopFu-jIbG_o,52153
|
|
3
|
+
kerykeion/composite_subject_factory.py,sha256=kO0pSPDSAn-JaP1quFzqOnN-NzF6mS_ZH-bKcj2rutE,7536
|
|
4
|
+
kerykeion/enums.py,sha256=nPXgP_ocsRnRno5H-yunZy3fp-hLZ9aYRaUb-2gBdvw,1199
|
|
5
|
+
kerykeion/ephemeris_data.py,sha256=h56Y4FCTYPcIzSnDiKNXYzEpeiqU554ccUmfXENigls,10750
|
|
6
|
+
kerykeion/fetch_geonames.py,sha256=e66Nh6yq9A4VjnuvVSiV1TW1IkJ9m3Q2LKPWrkOGgO0,4764
|
|
7
|
+
kerykeion/planetary_return_factory.py,sha256=LZjsHOB-lqNMidrq1x7eHnajU7yQKbbvQ1CYMuew4SM,11470
|
|
8
|
+
kerykeion/relationship_score_factory.py,sha256=qifW_rLioJtA5yFyydKyx8DTP9FDjMN-TNnNe3sxV2c,9265
|
|
9
|
+
kerykeion/report.py,sha256=Sc97N8amg6d3nw6wBVwBBzLa3gPP0NW7QNTsD91xJIo,2802
|
|
10
|
+
kerykeion/transits_time_range.py,sha256=E0RDTHZA4etjQtumu3WVx0jH6Tt5idZ0aw42ykCluOY,5515
|
|
11
|
+
kerykeion/utilities.py,sha256=a-E_hl546GqFH_4psawQLAhxrAPktnkIPK2K1PAjqnU,22173
|
|
12
|
+
kerykeion/aspects/__init__.py,sha256=i1hg04VL15s-LVGOHuTWJsicv_HNwT3b2v6_-16s6A4,394
|
|
13
|
+
kerykeion/aspects/aspects_utils.py,sha256=mOj2AqVGnY2vsGsezPfxI_crPJsN54p8qjpmCk5iupM,3093
|
|
14
|
+
kerykeion/aspects/natal_aspects_factory.py,sha256=Ct3MWR0u4CI2h_hYfqgOJDLBeBmBnrG7lOrkN2NVrGg,9538
|
|
15
|
+
kerykeion/aspects/synastry_aspects_factory.py,sha256=2dmstveidX3ZkKFQYkGS143v_1EnadCCU59VFlUl1L8,10072
|
|
16
|
+
kerykeion/charts/__init__.py,sha256=i9NMZ7LdkllPlqQSi1or9gTobHbROGDKmJhBDO4R0mA,128
|
|
17
|
+
kerykeion/charts/charts_utils.py,sha256=_z-lA7ibIQ5vhr1NxpzJFyPmMp-Sh1iyYxuO56DDO4w,62922
|
|
18
|
+
kerykeion/charts/draw_planets.py,sha256=lxxuML0xUthOqyHXEzJrH4pvqdiwZ73dtzS5ZrdTqEo,17650
|
|
19
|
+
kerykeion/charts/draw_planets_v2.py,sha256=nKDRIApXTYoMeYPBhFk9Bh6pxr2jD_kX4-4I_GSiowM,28155
|
|
20
|
+
kerykeion/charts/draw_planets_v3.py,sha256=3nrpef56qBsc0hfCOGdfCOr-61C2c5aWcRSiBcQiAuo,25811
|
|
21
|
+
kerykeion/charts/kerykeion_chart_svg.py,sha256=-7_CZUZT7Zfey2AS_RPusVUZm87tO64ShYL49LtL1QM,97768
|
|
22
|
+
kerykeion/charts/templates/aspect_grid_only.xml,sha256=lBHBj5bS5klGnv7QMuFxQjhlE6VZRaOgW93akLgRjX4,70055
|
|
23
|
+
kerykeion/charts/templates/chart.xml,sha256=r3a_csMqcoqeOnDA3YCD-iUxdqgRw5GV1GOf1Cp0e_E,79940
|
|
24
|
+
kerykeion/charts/templates/wheel_only.xml,sha256=0P8kpdsmKdFFso892v5r5WTp4GZSZApgh4mj4BTDNkg,71388
|
|
25
|
+
kerykeion/charts/themes/classic.css,sha256=LYYYWQHNG7-vuPCq8F2EPl3LauWXVrY3Q_tpwM0klgo,4660
|
|
26
|
+
kerykeion/charts/themes/dark-high-contrast.css,sha256=YW5X5-M0dz5Vy2oz-JyDNXJYHSmV83lYCodydC-KS1A,7506
|
|
27
|
+
kerykeion/charts/themes/dark.css,sha256=XVspznDRNMXsFzk7hY7IB7AI58alPAV_-CgV3gCKyzg,7581
|
|
28
|
+
kerykeion/charts/themes/light.css,sha256=5eyUzhVlRjG6lPHKnprLum0HuRtPIJhMBzpGfzoTjnQ,7590
|
|
29
|
+
kerykeion/charts/themes/strawberry.css,sha256=UtcfRsCT-M9OZs_SoclWGZ0jDJiWvQjHTeI4M1jf7pQ,8314
|
|
30
|
+
kerykeion/house_comparison/__init__.py,sha256=6FYHyQY3nUJifZ2kEVCHB8cN3TjFA1q2yhmeRwJlias,238
|
|
31
|
+
kerykeion/house_comparison/house_comparison_factory.py,sha256=Vn4_Hviy20_nsSf_vjEKZ9h-QsJDFtapM1Wydvwgx4w,3345
|
|
32
|
+
kerykeion/house_comparison/house_comparison_models.py,sha256=R9EW5F3fiIKIm8qrwTxtXhNOGDpf1-Lh9hbM1uK83oE,1549
|
|
33
|
+
kerykeion/house_comparison/house_comparison_utils.py,sha256=Q5pdP7hmUEB3cqE7QkOYNu_laQ1Nj83Fmn_F8YJkKik,3773
|
|
34
|
+
kerykeion/kr_types/__init__.py,sha256=dePcQY5rrgtUENhqnjcVx6j7iQJPo_1rmD0bLeIO3HA,1384
|
|
35
|
+
kerykeion/kr_types/chart_types.py,sha256=ofMYk7NRalSsdQcLVkpCbOb-dhdjYHEqIb_WPLtD0rM,2429
|
|
36
|
+
kerykeion/kr_types/kerykeion_exception.py,sha256=kE1y0K0rmuz32b4K_ZppSsZ59I2Get0ZkvOkTE5HejI,314
|
|
37
|
+
kerykeion/kr_types/kr_literals.py,sha256=4kJhzm_0LERiJEJks0KgDyThueMZj_F1OK2Far5SMZc,4870
|
|
38
|
+
kerykeion/kr_types/kr_models.py,sha256=lOEUi2G0VmzzK37FxyYh0QPwsCLLN4XovxQq2La9VS4,10705
|
|
39
|
+
kerykeion/kr_types/settings_models.py,sha256=Llosnvw-6NHJMbdKltPHQDLR-Ltn7ZpWkjEbLJ2C6AY,17488
|
|
40
|
+
kerykeion/settings/__init__.py,sha256=NYCwcvEfn9qJ498fv1H_Gix8e-crJ3CruV13A-e2CnI,134
|
|
41
|
+
kerykeion/settings/config_constants.py,sha256=hxDZnFKWFhGrYMejDISbYT-phUk1Qqfvt-4wBG79rGA,2233
|
|
42
|
+
kerykeion/settings/kerykeion_settings.py,sha256=umd8TZy-8ywowsd4TTkhwxSLLyX3xYj3A1zvNsTV_Y8,2955
|
|
43
|
+
kerykeion/settings/kr.config.json,sha256=bvvhi8W-u9YHTbg9O8UyfOwclhLd8Mh8oobI1qHIgp4,58497
|
|
44
|
+
kerykeion/settings/legacy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
45
|
+
kerykeion/settings/legacy/legacy_celestial_points_settings.py,sha256=YMvHhY8IQ_nNHf1-9JCSgRzTMQJaxXZfROztEhlP4Ac,6870
|
|
46
|
+
kerykeion/settings/legacy/legacy_chart_aspects_settings.py,sha256=tO4tgPgPP07_wu9f8SXyJQ9WrTh3iWz4YvBS2axCGU8,1650
|
|
47
|
+
kerykeion/settings/legacy/legacy_color_settings.py,sha256=gBUmGSNvvLzRYbdVtzwTDnMwWoh4tOCyT_9Q6aQRv_s,2620
|
|
48
|
+
kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
|
|
49
|
+
kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
|
|
50
|
+
kerykeion-5.0.0a10.dist-info/METADATA,sha256=ac1Zt-A-Unhnhl1tO-kkqnRzoDskJkKf285gvf10BuE,25544
|
|
51
|
+
kerykeion-5.0.0a10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
52
|
+
kerykeion-5.0.0a10.dist-info/licenses/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
|
|
53
|
+
kerykeion-5.0.0a10.dist-info/RECORD,,
|
|
@@ -1,181 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
This is part of Kerykeion (C) 2025 Giacomo Battaglia
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
import logging
|
|
7
|
-
from dataclasses import dataclass, field
|
|
8
|
-
from functools import cached_property
|
|
9
|
-
from kerykeion.astrological_subject_factory import AstrologicalSubjectFactory
|
|
10
|
-
from kerykeion.settings.kerykeion_settings import get_settings
|
|
11
|
-
from kerykeion.aspects.aspects_utils import planet_id_decoder, get_aspect_from_two_points, get_active_points_list
|
|
12
|
-
from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel, ActiveAspect, CompositeSubjectModel, PlanetReturnModel
|
|
13
|
-
from kerykeion.kr_types.kr_literals import AstrologicalPoint
|
|
14
|
-
from kerykeion.kr_types.settings_models import KerykeionSettingsModel
|
|
15
|
-
from kerykeion.settings.config_constants import DEFAULT_ACTIVE_POINTS, DEFAULT_ACTIVE_ASPECTS, DEFAULT_AXIS_ORBIT
|
|
16
|
-
from kerykeion.settings.legacy.legacy_celestial_points_settings import DEFAULT_CELESTIAL_POINTS_SETTINGS
|
|
17
|
-
from kerykeion.settings.legacy.legacy_chart_aspects_settings import DEFAULT_CHART_ASPECTS_SETTINGS
|
|
18
|
-
from kerykeion.utilities import find_common_active_points
|
|
19
|
-
from pathlib import Path
|
|
20
|
-
from typing import Union, List, Optional
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
AXES_LIST = [
|
|
24
|
-
"Ascendant",
|
|
25
|
-
"Medium_Coeli",
|
|
26
|
-
"Descendant",
|
|
27
|
-
"Imum_Coeli",
|
|
28
|
-
]
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
@dataclass
|
|
32
|
-
class NatalAspects:
|
|
33
|
-
"""
|
|
34
|
-
Generates an object with all the aspects of a birthcart.
|
|
35
|
-
"""
|
|
36
|
-
|
|
37
|
-
user: Union[AstrologicalSubjectModel, CompositeSubjectModel, PlanetReturnModel]
|
|
38
|
-
new_settings_file: Union[Path, KerykeionSettingsModel, dict, None] = None
|
|
39
|
-
active_points: Optional[List[AstrologicalPoint]] = field(default_factory=lambda: None)
|
|
40
|
-
active_aspects: List[ActiveAspect] = field(default_factory=lambda: DEFAULT_ACTIVE_ASPECTS)
|
|
41
|
-
|
|
42
|
-
def __post_init__(self):
|
|
43
|
-
self.settings = get_settings(self.new_settings_file)
|
|
44
|
-
|
|
45
|
-
self.celestial_points = DEFAULT_CELESTIAL_POINTS_SETTINGS
|
|
46
|
-
self.aspects_settings = DEFAULT_CHART_ASPECTS_SETTINGS
|
|
47
|
-
self.axes_orbit_settings = DEFAULT_AXIS_ORBIT
|
|
48
|
-
|
|
49
|
-
if not self.active_points:
|
|
50
|
-
self.active_points = self.user.active_points
|
|
51
|
-
else:
|
|
52
|
-
self.active_points = find_common_active_points(
|
|
53
|
-
self.user.active_points,
|
|
54
|
-
self.active_points,
|
|
55
|
-
)
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
@cached_property
|
|
59
|
-
def all_aspects(self):
|
|
60
|
-
"""
|
|
61
|
-
Return all the aspects of the points in the natal chart in a dictionary,
|
|
62
|
-
first all the individual aspects of each planet, second the aspects
|
|
63
|
-
without repetitions.
|
|
64
|
-
"""
|
|
65
|
-
|
|
66
|
-
active_points_list = get_active_points_list(self.user, self.active_points)
|
|
67
|
-
|
|
68
|
-
# ---> TODO: Clean this up
|
|
69
|
-
filtered_settings = []
|
|
70
|
-
for a in self.aspects_settings:
|
|
71
|
-
for aspect in self.active_aspects:
|
|
72
|
-
if a["name"] == aspect["name"]:
|
|
73
|
-
a["orb"] = aspect["orb"] # Assign the aspect's orb
|
|
74
|
-
filtered_settings.append(a)
|
|
75
|
-
break # Exit the inner loop once a match is found
|
|
76
|
-
self.aspects_settings = filtered_settings
|
|
77
|
-
# <--- TODO: Clean this up
|
|
78
|
-
|
|
79
|
-
self.all_aspects_list = []
|
|
80
|
-
for first in range(len(active_points_list)):
|
|
81
|
-
# Generates the aspects list without repetitions
|
|
82
|
-
for second in range(first + 1, len(active_points_list)):
|
|
83
|
-
# AC/DC, MC/IC and North/South nodes are always in opposition
|
|
84
|
-
opposite_pairs = {
|
|
85
|
-
("Ascendant", "Descendant"),
|
|
86
|
-
("Descendant", "Ascendant"),
|
|
87
|
-
("Medium_Coeli", "Imum_Coeli"),
|
|
88
|
-
("Imum_Coeli", "Medium_Coeli"),
|
|
89
|
-
("True_Node", "True_South_Node"),
|
|
90
|
-
("Mean_Node", "Mean_South_Node"),
|
|
91
|
-
("True_South_Node", "True_Node"),
|
|
92
|
-
("Mean_South_Node", "Mean_Node"),
|
|
93
|
-
}
|
|
94
|
-
if (active_points_list[first]["name"], active_points_list[second]["name"]) in opposite_pairs:
|
|
95
|
-
continue
|
|
96
|
-
|
|
97
|
-
aspect = get_aspect_from_two_points(
|
|
98
|
-
self.aspects_settings,
|
|
99
|
-
active_points_list[first]["abs_pos"],
|
|
100
|
-
active_points_list[second]["abs_pos"]
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
verdict = aspect["verdict"]
|
|
104
|
-
name = aspect["name"]
|
|
105
|
-
orbit = aspect["orbit"]
|
|
106
|
-
aspect_degrees = aspect["aspect_degrees"]
|
|
107
|
-
diff = aspect["diff"]
|
|
108
|
-
|
|
109
|
-
if verdict == True:
|
|
110
|
-
aspect_model = AspectModel(
|
|
111
|
-
p1_name=active_points_list[first]["name"],
|
|
112
|
-
p1_owner=self.user.name,
|
|
113
|
-
p1_abs_pos=active_points_list[first]["abs_pos"],
|
|
114
|
-
p2_name=active_points_list[second]["name"],
|
|
115
|
-
p2_owner=self.user.name,
|
|
116
|
-
p2_abs_pos=active_points_list[second]["abs_pos"],
|
|
117
|
-
aspect=name,
|
|
118
|
-
orbit=orbit,
|
|
119
|
-
aspect_degrees=aspect_degrees,
|
|
120
|
-
diff=diff,
|
|
121
|
-
p1=planet_id_decoder(self.celestial_points, active_points_list[first]["name"]),
|
|
122
|
-
p2=planet_id_decoder(self.celestial_points, active_points_list[second]["name"]),
|
|
123
|
-
)
|
|
124
|
-
self.all_aspects_list.append(aspect_model)
|
|
125
|
-
|
|
126
|
-
return self.all_aspects_list
|
|
127
|
-
|
|
128
|
-
@cached_property
|
|
129
|
-
def relevant_aspects(self):
|
|
130
|
-
"""
|
|
131
|
-
Filters the aspects list with the desired points, in this case
|
|
132
|
-
the most important are hardcoded.
|
|
133
|
-
Set the list with set_points and creating a list with the names
|
|
134
|
-
or the numbers of the houses.
|
|
135
|
-
The relevant aspects are the ones that are set as looping in the available_aspects list.
|
|
136
|
-
"""
|
|
137
|
-
|
|
138
|
-
logging.debug("Relevant aspects not already calculated, calculating now...")
|
|
139
|
-
self.all_aspects
|
|
140
|
-
|
|
141
|
-
axes_list = AXES_LIST
|
|
142
|
-
counter = 0
|
|
143
|
-
|
|
144
|
-
# Remove aspects where the orbits exceed the maximum orb thresholds specified in the settings
|
|
145
|
-
# (specified usually in kr.config.json file)
|
|
146
|
-
aspects_filtered = self.all_aspects
|
|
147
|
-
aspects_list_subtract = []
|
|
148
|
-
for a in aspects_filtered:
|
|
149
|
-
counter += 1
|
|
150
|
-
name_p1 = str(a["p1_name"])
|
|
151
|
-
name_p2 = str(a["p2_name"])
|
|
152
|
-
|
|
153
|
-
if name_p1 in axes_list:
|
|
154
|
-
if abs(a["orbit"]) >= self.axes_orbit_settings:
|
|
155
|
-
aspects_list_subtract.append(a)
|
|
156
|
-
|
|
157
|
-
elif name_p2 in axes_list:
|
|
158
|
-
if abs(a["orbit"]) >= self.axes_orbit_settings:
|
|
159
|
-
aspects_list_subtract.append(a)
|
|
160
|
-
|
|
161
|
-
self.aspects = [item for item in aspects_filtered if item not in aspects_list_subtract]
|
|
162
|
-
|
|
163
|
-
return self.aspects
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
if __name__ == "__main__":
|
|
167
|
-
from kerykeion.utilities import setup_logging
|
|
168
|
-
|
|
169
|
-
setup_logging(level="debug")
|
|
170
|
-
|
|
171
|
-
johnny = AstrologicalSubjectFactory.from_birth_data("Johnny Depp", 1963, 6, 9, 0, 0, 0, "Owensboro", "US")
|
|
172
|
-
|
|
173
|
-
# All aspects as a list of dictionaries
|
|
174
|
-
aspects = NatalAspects(johnny)
|
|
175
|
-
#print([a.model_dump() for a in aspects.all_aspects])
|
|
176
|
-
|
|
177
|
-
print("\n")
|
|
178
|
-
|
|
179
|
-
# Relevant aspects as a list of dictionaries
|
|
180
|
-
aspects = NatalAspects(johnny)
|
|
181
|
-
print([a.model_dump() for a in aspects.relevant_aspects])
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""
|
|
3
|
-
This is part of Kerykeion (C) 2025 Giacomo Battaglia
|
|
4
|
-
"""
|
|
5
|
-
|
|
6
|
-
from pathlib import Path
|
|
7
|
-
from typing import Union
|
|
8
|
-
from functools import cached_property
|
|
9
|
-
from typing import TYPE_CHECKING
|
|
10
|
-
|
|
11
|
-
from kerykeion.astrological_subject_factory import AstrologicalSubjectFactory
|
|
12
|
-
from kerykeion.aspects.natal_aspects import NatalAspects
|
|
13
|
-
from kerykeion.settings.kerykeion_settings import get_settings
|
|
14
|
-
from kerykeion.aspects.aspects_utils import planet_id_decoder, get_aspect_from_two_points, get_active_points_list
|
|
15
|
-
from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel, ActiveAspect, CompositeSubjectModel, PlanetReturnModel
|
|
16
|
-
from kerykeion.kr_types.settings_models import KerykeionSettingsModel
|
|
17
|
-
from kerykeion.settings.config_constants import DEFAULT_ACTIVE_ASPECTS, DEFAULT_AXIS_ORBIT
|
|
18
|
-
from kerykeion.settings.legacy.legacy_celestial_points_settings import DEFAULT_CELESTIAL_POINTS_SETTINGS
|
|
19
|
-
from kerykeion.settings.legacy.legacy_chart_aspects_settings import DEFAULT_CHART_ASPECTS_SETTINGS
|
|
20
|
-
from kerykeion.kr_types.kr_literals import AstrologicalPoint
|
|
21
|
-
from kerykeion.utilities import find_common_active_points
|
|
22
|
-
from typing import Union, List, Optional
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
class SynastryAspects(NatalAspects):
|
|
26
|
-
"""
|
|
27
|
-
Generates an object with all the aspects between two persons.
|
|
28
|
-
"""
|
|
29
|
-
|
|
30
|
-
def __init__(
|
|
31
|
-
self,
|
|
32
|
-
kr_object_one: Union[AstrologicalSubjectModel, CompositeSubjectModel, PlanetReturnModel],
|
|
33
|
-
kr_object_two: Union[AstrologicalSubjectModel, CompositeSubjectModel, PlanetReturnModel],
|
|
34
|
-
new_settings_file: Union[Path, KerykeionSettingsModel, dict, None] = None,
|
|
35
|
-
active_points: Optional[list[AstrologicalPoint]] = None,
|
|
36
|
-
active_aspects: List[ActiveAspect] = DEFAULT_ACTIVE_ASPECTS,
|
|
37
|
-
):
|
|
38
|
-
# Subjects
|
|
39
|
-
self.first_user = kr_object_one
|
|
40
|
-
self.second_user = kr_object_two
|
|
41
|
-
|
|
42
|
-
# Settings
|
|
43
|
-
self.new_settings_file = new_settings_file
|
|
44
|
-
self.settings = get_settings(self.new_settings_file)
|
|
45
|
-
|
|
46
|
-
self.celestial_points = DEFAULT_CELESTIAL_POINTS_SETTINGS
|
|
47
|
-
self.aspects_settings = DEFAULT_CHART_ASPECTS_SETTINGS
|
|
48
|
-
self.axes_orbit_settings = DEFAULT_AXIS_ORBIT
|
|
49
|
-
self.active_points = active_points
|
|
50
|
-
self.active_aspects = active_aspects
|
|
51
|
-
|
|
52
|
-
# Private variables of the aspects
|
|
53
|
-
self._all_aspects: Union[list, None] = None
|
|
54
|
-
self._relevant_aspects: Union[list, None] = None
|
|
55
|
-
|
|
56
|
-
if not self.active_points:
|
|
57
|
-
self.active_points = self.first_user.active_points
|
|
58
|
-
else:
|
|
59
|
-
self.active_points = find_common_active_points(
|
|
60
|
-
self.first_user.active_points,
|
|
61
|
-
self.active_points,
|
|
62
|
-
)
|
|
63
|
-
|
|
64
|
-
self.active_points = find_common_active_points(
|
|
65
|
-
self.second_user.active_points,
|
|
66
|
-
self.active_points,
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
@cached_property
|
|
70
|
-
def all_aspects(self):
|
|
71
|
-
"""
|
|
72
|
-
Return all the aspects of the points in the natal chart in a dictionary,
|
|
73
|
-
first all the individual aspects of each planet, second the aspects
|
|
74
|
-
whiteout repetitions.
|
|
75
|
-
"""
|
|
76
|
-
|
|
77
|
-
if self._all_aspects is not None:
|
|
78
|
-
return self._all_aspects
|
|
79
|
-
|
|
80
|
-
# Celestial Points Lists
|
|
81
|
-
first_active_points_list = get_active_points_list(self.first_user, self.active_points)
|
|
82
|
-
second_active_points_list = get_active_points_list(self.second_user, self.active_points)
|
|
83
|
-
|
|
84
|
-
# ---> TODO: Clean this up
|
|
85
|
-
filtered_settings = []
|
|
86
|
-
for a in self.aspects_settings:
|
|
87
|
-
for aspect in self.active_aspects:
|
|
88
|
-
if a["name"] == aspect["name"]:
|
|
89
|
-
a["orb"] = aspect["orb"] # Assign the aspect's orb
|
|
90
|
-
filtered_settings.append(a)
|
|
91
|
-
self.aspects_settings = filtered_settings
|
|
92
|
-
# <--- TODO: Clean this up
|
|
93
|
-
|
|
94
|
-
self.all_aspects_list = []
|
|
95
|
-
for first in range(len(first_active_points_list)):
|
|
96
|
-
# Generates the aspects list whitout repetitions
|
|
97
|
-
for second in range(len(second_active_points_list)):
|
|
98
|
-
aspect = get_aspect_from_two_points(
|
|
99
|
-
self.aspects_settings,
|
|
100
|
-
first_active_points_list[first]["abs_pos"],
|
|
101
|
-
second_active_points_list[second]["abs_pos"],
|
|
102
|
-
)
|
|
103
|
-
|
|
104
|
-
verdict = aspect["verdict"]
|
|
105
|
-
name = aspect["name"]
|
|
106
|
-
orbit = aspect["orbit"]
|
|
107
|
-
aspect_degrees = aspect["aspect_degrees"]
|
|
108
|
-
diff = aspect["diff"]
|
|
109
|
-
|
|
110
|
-
if verdict == True:
|
|
111
|
-
aspect_model = AspectModel(
|
|
112
|
-
p1_name=first_active_points_list[first]["name"],
|
|
113
|
-
p1_owner=self.first_user.name,
|
|
114
|
-
p1_abs_pos=first_active_points_list[first]["abs_pos"],
|
|
115
|
-
p2_name=second_active_points_list[second]["name"],
|
|
116
|
-
p2_owner=self.second_user.name,
|
|
117
|
-
p2_abs_pos=second_active_points_list[second]["abs_pos"],
|
|
118
|
-
aspect=name,
|
|
119
|
-
orbit=orbit,
|
|
120
|
-
aspect_degrees=aspect_degrees,
|
|
121
|
-
diff=diff,
|
|
122
|
-
p1=planet_id_decoder(self.celestial_points, first_active_points_list[first]["name"]),
|
|
123
|
-
p2=planet_id_decoder(self.celestial_points, second_active_points_list[second]["name"]),
|
|
124
|
-
)
|
|
125
|
-
self.all_aspects_list.append(aspect_model)
|
|
126
|
-
|
|
127
|
-
return self.all_aspects_list
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if __name__ == "__main__":
|
|
131
|
-
from kerykeion.utilities import setup_logging
|
|
132
|
-
|
|
133
|
-
setup_logging(level="debug")
|
|
134
|
-
|
|
135
|
-
john = AstrologicalSubjectFactory.from_birth_data("John", 1940, 10, 9, 10, 30, "Liverpool", "GB")
|
|
136
|
-
yoko = AstrologicalSubjectFactory.from_birth_data("Yoko", 1933, 2, 18, 10, 30, "Tokyo", "JP")
|
|
137
|
-
|
|
138
|
-
synastry_aspects = SynastryAspects(john, yoko)
|
|
139
|
-
|
|
140
|
-
# All aspects as a list of dictionaries
|
|
141
|
-
print([aspect.dict() for aspect in synastry_aspects.all_aspects])
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
from datetime import datetime, timedelta
|
|
2
|
-
from kerykeion import (
|
|
3
|
-
TransitsTimeRangeFactory,
|
|
4
|
-
EphemerisDataFactory,
|
|
5
|
-
AstrologicalSubject,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
# Create a natal chart for the subject
|
|
9
|
-
person = AstrologicalSubjectFactory.from_birth_data(
|
|
10
|
-
"Johnny Depp", 1963, 6, 9, 20, 15, 0, "Owensboro", "US"
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
# Define the time period for transit calculation
|
|
14
|
-
start_date = datetime.now()
|
|
15
|
-
end_date = datetime.now() + timedelta(days=30)
|
|
16
|
-
|
|
17
|
-
# Create ephemeris data for the specified time period
|
|
18
|
-
ephemeris_factory = EphemerisDataFactory(
|
|
19
|
-
start_datetime=start_date,
|
|
20
|
-
end_datetime=end_date,
|
|
21
|
-
step_type="days",
|
|
22
|
-
step=1,
|
|
23
|
-
lat=person.lat,
|
|
24
|
-
lng=person.lng,
|
|
25
|
-
tz_str=person.tz_str,
|
|
26
|
-
)
|
|
27
|
-
|
|
28
|
-
ephemeris_data_points = ephemeris_factory.get_ephemeris_data_as_astrological_subjects()
|
|
29
|
-
|
|
30
|
-
# Calculate transits for the subject
|
|
31
|
-
transit_factory = TransitsTimeRangeFactory(
|
|
32
|
-
natal_chart=person,
|
|
33
|
-
ephemeris_data_points=ephemeris_data_points,
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
transit_results = transit_factory.get_transit_moments()
|
|
37
|
-
|
|
38
|
-
# Print example data
|
|
39
|
-
print(transit_results.model_dump()["dates"][2])
|
|
40
|
-
print(transit_results.model_dump()["transits"][2]['date'])
|
|
41
|
-
print(transit_results.model_dump()["transits"][2]['aspects'][0])
|