kerykeion 4.26.1__py3-none-any.whl → 5.0.0a1__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.

Files changed (50) hide show
  1. kerykeion/__init__.py +8 -5
  2. kerykeion/aspects/aspects_utils.py +14 -8
  3. kerykeion/aspects/natal_aspects.py +26 -17
  4. kerykeion/aspects/synastry_aspects.py +32 -15
  5. kerykeion/aspects/transits_time_range.py +2 -2
  6. kerykeion/astrological_subject_factory.py +1132 -0
  7. kerykeion/charts/charts_utils.py +583 -85
  8. kerykeion/charts/draw_planets.py +9 -8
  9. kerykeion/charts/draw_planets_v2.py +639 -0
  10. kerykeion/charts/kerykeion_chart_svg.py +1289 -592
  11. kerykeion/charts/templates/chart.xml +178 -79
  12. kerykeion/charts/templates/wheel_only.xml +13 -12
  13. kerykeion/charts/themes/classic.css +91 -76
  14. kerykeion/charts/themes/dark-high-contrast.css +129 -107
  15. kerykeion/charts/themes/dark.css +130 -107
  16. kerykeion/charts/themes/light.css +130 -103
  17. kerykeion/charts/themes/strawberry.css +143 -0
  18. kerykeion/composite_subject_factory.py +26 -43
  19. kerykeion/ephemeris_data.py +6 -10
  20. kerykeion/house_comparison/__init__.py +3 -0
  21. kerykeion/house_comparison/house_comparison_factory.py +70 -0
  22. kerykeion/house_comparison/house_comparison_models.py +38 -0
  23. kerykeion/house_comparison/house_comparison_utils.py +98 -0
  24. kerykeion/kr_types/chart_types.py +9 -3
  25. kerykeion/kr_types/kr_literals.py +34 -6
  26. kerykeion/kr_types/kr_models.py +122 -160
  27. kerykeion/kr_types/settings_models.py +107 -143
  28. kerykeion/planetary_return_factory.py +299 -0
  29. kerykeion/relationship_score/relationship_score.py +3 -3
  30. kerykeion/relationship_score/relationship_score_factory.py +9 -12
  31. kerykeion/report.py +4 -4
  32. kerykeion/settings/config_constants.py +35 -6
  33. kerykeion/settings/kerykeion_settings.py +1 -0
  34. kerykeion/settings/kr.config.json +1301 -1255
  35. kerykeion/settings/legacy/__init__.py +0 -0
  36. kerykeion/settings/legacy/legacy_celestial_points_settings.py +299 -0
  37. kerykeion/settings/legacy/legacy_chart_aspects_settings.py +71 -0
  38. kerykeion/settings/legacy/legacy_color_settings.py +42 -0
  39. kerykeion/transits_time_range.py +13 -9
  40. kerykeion/utilities.py +228 -31
  41. {kerykeion-4.26.1.dist-info → kerykeion-5.0.0a1.dist-info}/METADATA +137 -10
  42. kerykeion-5.0.0a1.dist-info/RECORD +56 -0
  43. {kerykeion-4.26.1.dist-info → kerykeion-5.0.0a1.dist-info}/WHEEL +1 -1
  44. kerykeion/.DS_Store +0 -0
  45. kerykeion/astrological_subject.py +0 -841
  46. kerykeion/charts/.DS_Store +0 -0
  47. kerykeion-4.26.1.dist-info/LICENSE +0 -661
  48. kerykeion-4.26.1.dist-info/RECORD +0 -48
  49. /LICENSE → /kerykeion-5.0.0a1.dist-info/LICENSE +0 -0
  50. {kerykeion-4.26.1.dist-info → kerykeion-5.0.0a1.dist-info}/entry_points.txt +0 -0
@@ -1,117 +1,144 @@
1
1
  :root {
2
- /* -------- */
3
- /* General */
4
- /* ------- */
5
- --kerykeion-color-black: #000000;
6
- --kerykeion-color-white: #ffffff;
2
+ /* -------- */
3
+ /* General */
4
+ /* ------- */
5
+ --kerykeion-color-black: #000000;
6
+ --kerykeion-color-white: #ffffff;
7
7
 
8
- --kerykeion-color-neutral-content: #333c4d;
9
- --kerykeion-color-base-content: #333c4d;
10
- --kerykeion-color-primary: #65cc8a;
11
- --kerykeion-color-secondary: #367bfb;
12
- --kerykeion-color-accent: #f68067;
13
- --kerykeion-color-neutral: #333c4d;
14
- --kerykeion-color-base-100: #ffffff;
15
- --kerykeion-color-info: #00b5ff;
16
- --kerykeion-color-info-content: #000000;
17
- --kerykeion-color-success: #00a96e;
18
- --kerykeion-color-warning: #ffbe00;
19
- --kerykeion-color-error: #ff5761;
8
+ --kerykeion-color-neutral-content: #333c4d;
9
+ --kerykeion-color-base-content: #333c4d;
10
+ --kerykeion-color-primary: #65cc8a;
11
+ --kerykeion-color-secondary: #367bfb;
12
+ --kerykeion-color-accent: #f68067;
13
+ --kerykeion-color-neutral: #333c4d;
14
+ --kerykeion-color-base-100: #ffffff;
15
+ --kerykeion-color-info: #00b5ff;
16
+ --kerykeion-color-info-content: #000000;
17
+ --kerykeion-color-success: #00a96e;
18
+ --kerykeion-color-warning: #ffbe00;
19
+ --kerykeion-color-error: #ff5761;
20
20
 
21
- /* Zodiac */
22
- --kerykeion-color-base-200: #d1d1d1;
23
- --kerykeion-color-base-300: rgb(113 113 122);
21
+ /* Zodiac */
22
+ --kerykeion-color-base-200: #d1d1d1;
23
+ --kerykeion-color-base-300: rgb(113 113 122);
24
24
 
25
- /* ----------- */
26
- /* Chart Color */
27
- /* ----------- */
25
+ /* ----------- */
26
+ /* Chart Color */
27
+ /* ----------- */
28
28
 
29
- /* Main colors */
30
- --kerykeion-chart-color-paper-0: var(--kerykeion-color-neutral-content);
31
- --kerykeion-chart-color-paper-1: var(--kerykeion-color-base-100);
29
+ /* Main colors */
30
+ --kerykeion-chart-color-paper-0: var(--kerykeion-color-neutral-content);
31
+ --kerykeion-chart-color-paper-1: var(--kerykeion-color-base-100);
32
32
 
33
- /* Zodiac Sign Sectors */
34
- --kerykeion-chart-color-zodiac-bg-0: var(--kerykeion-color-base-200);
35
- --kerykeion-chart-color-zodiac-bg-1: var(--kerykeion-color-base-300);
36
- --kerykeion-chart-color-zodiac-bg-2: var(--kerykeion-color-base-200);
37
- --kerykeion-chart-color-zodiac-bg-3: var(--kerykeion-color-base-300);
38
- --kerykeion-chart-color-zodiac-bg-4: var(--kerykeion-color-base-200);
39
- --kerykeion-chart-color-zodiac-bg-5: var(--kerykeion-color-base-300);
40
- --kerykeion-chart-color-zodiac-bg-6: var(--kerykeion-color-base-200);
41
- --kerykeion-chart-color-zodiac-bg-7: var(--kerykeion-color-base-300);
42
- --kerykeion-chart-color-zodiac-bg-8: var(--kerykeion-color-base-200);
43
- --kerykeion-chart-color-zodiac-bg-9: var(--kerykeion-color-base-300);
44
- --kerykeion-chart-color-zodiac-bg-10: var(--kerykeion-color-base-200);
45
- --kerykeion-chart-color-zodiac-bg-11: var(--kerykeion-color-base-300);
33
+ /* Zodiac Sign Sectors */
34
+ --kerykeion-chart-color-zodiac-bg-0: var(--kerykeion-color-base-200);
35
+ --kerykeion-chart-color-zodiac-bg-1: var(--kerykeion-color-base-300);
36
+ --kerykeion-chart-color-zodiac-bg-2: var(--kerykeion-color-base-200);
37
+ --kerykeion-chart-color-zodiac-bg-3: var(--kerykeion-color-base-300);
38
+ --kerykeion-chart-color-zodiac-bg-4: var(--kerykeion-color-base-200);
39
+ --kerykeion-chart-color-zodiac-bg-5: var(--kerykeion-color-base-300);
40
+ --kerykeion-chart-color-zodiac-bg-6: var(--kerykeion-color-base-200);
41
+ --kerykeion-chart-color-zodiac-bg-7: var(--kerykeion-color-base-300);
42
+ --kerykeion-chart-color-zodiac-bg-8: var(--kerykeion-color-base-200);
43
+ --kerykeion-chart-color-zodiac-bg-9: var(--kerykeion-color-base-300);
44
+ --kerykeion-chart-color-zodiac-bg-10: var(--kerykeion-color-base-200);
45
+ --kerykeion-chart-color-zodiac-bg-11: var(--kerykeion-color-base-300);
46
46
 
47
- /* Zodiac Sign Rings */
48
- --kerykeion-chart-color-zodiac-radix-ring-0: var(--kerykeion-color-neutral);
49
- --kerykeion-chart-color-zodiac-radix-ring-1: var(--kerykeion-color-neutral);
50
- --kerykeion-chart-color-zodiac-radix-ring-2: var(--kerykeion-color-neutral);
51
- --kerykeion-chart-color-zodiac-transit-ring-0: var(--kerykeion-color-neutral);
52
- --kerykeion-chart-color-zodiac-transit-ring-1: var(--kerykeion-color-neutral);
53
- --kerykeion-chart-color-zodiac-transit-ring-2: var(--kerykeion-color-neutral);
54
- --kerykeion-chart-color-zodiac-transit-ring-3: var(--kerykeion-color-neutral);
55
- --kerykeion-chart-color-houses-radix-line: var(--kerykeion-color-base-content);
56
- --kerykeion-chart-color-houses-transit-line: var(--kerykeion-color-base-content);
47
+ /* Zodiac Sign Rings */
48
+ --kerykeion-chart-color-zodiac-radix-ring-0: var(--kerykeion-color-neutral);
49
+ --kerykeion-chart-color-zodiac-radix-ring-1: var(--kerykeion-color-neutral);
50
+ --kerykeion-chart-color-zodiac-radix-ring-2: var(--kerykeion-color-neutral);
51
+ --kerykeion-chart-color-zodiac-transit-ring-0: var(
52
+ --kerykeion-color-neutral
53
+ );
54
+ --kerykeion-chart-color-zodiac-transit-ring-1: var(
55
+ --kerykeion-color-neutral
56
+ );
57
+ --kerykeion-chart-color-zodiac-transit-ring-2: var(
58
+ --kerykeion-color-neutral
59
+ );
60
+ --kerykeion-chart-color-zodiac-transit-ring-3: var(
61
+ --kerykeion-color-neutral
62
+ );
63
+ --kerykeion-chart-color-houses-radix-line: var(
64
+ --kerykeion-color-base-content
65
+ );
66
+ --kerykeion-chart-color-houses-transit-line: var(
67
+ --kerykeion-color-base-content
68
+ );
57
69
 
58
- /* Aspects */
59
- --kerykeion-chart-color-conjunction: var(--kerykeion-color-success);
60
- --kerykeion-chart-color-semi-sextile: var(--kerykeion-color-success);
61
- --kerykeion-chart-color-semi-square: var(--kerykeion-color-error);
62
- --kerykeion-chart-color-sextile: var(--kerykeion-color-success);
63
- --kerykeion-chart-color-quintile: var(--kerykeion-color-secondary);
64
- --kerykeion-chart-color-square: var(--kerykeion-color-error);
65
- --kerykeion-chart-color-trine: var(--kerykeion-color-success);
66
- --kerykeion-chart-color-sesquiquadrate: var(--kerykeion-color-error);
67
- --kerykeion-chart-color-biquintile: var(--kerykeion-color-secondary);
68
- --kerykeion-chart-color-quincunx: var(--kerykeion-color-secondary);
69
- --kerykeion-chart-color-opposition: var(--kerykeion-color-error);
70
+ /* Aspects */
71
+ --kerykeion-chart-color-conjunction: var(--kerykeion-color-success);
72
+ --kerykeion-chart-color-semi-sextile: var(--kerykeion-color-success);
73
+ --kerykeion-chart-color-semi-square: var(--kerykeion-color-error);
74
+ --kerykeion-chart-color-sextile: var(--kerykeion-color-success);
75
+ --kerykeion-chart-color-quintile: var(--kerykeion-color-secondary);
76
+ --kerykeion-chart-color-square: var(--kerykeion-color-error);
77
+ --kerykeion-chart-color-trine: var(--kerykeion-color-success);
78
+ --kerykeion-chart-color-sesquiquadrate: var(--kerykeion-color-error);
79
+ --kerykeion-chart-color-biquintile: var(--kerykeion-color-secondary);
80
+ --kerykeion-chart-color-quincunx: var(--kerykeion-color-secondary);
81
+ --kerykeion-chart-color-opposition: var(--kerykeion-color-error);
70
82
 
71
- /* Planets */
72
- --kerykeion-chart-color-sun: var(--kerykeion-color-warning);
73
- --kerykeion-chart-color-moon: var(--kerykeion-color-secondary);
74
- --kerykeion-chart-color-mercury: var(--kerykeion-color-primary);
75
- --kerykeion-chart-color-venus: var(--kerykeion-color-accent);
76
- --kerykeion-chart-color-mars: var(--kerykeion-color-warning);
77
- --kerykeion-chart-color-jupiter: var(--kerykeion-color-primary);
78
- --kerykeion-chart-color-saturn: var(--kerykeion-color-secondary);
79
- --kerykeion-chart-color-uranus: var(--kerykeion-color-accent);
80
- --kerykeion-chart-color-neptune: var(--kerykeion-color-primary);
81
- --kerykeion-chart-color-pluto: var(--kerykeion-color-secondary);
82
- --kerykeion-chart-color-true-node: var(--kerykeion-color-warning);
83
- --kerykeion-chart-color-mean-node: var(--kerykeion-color-warning);
84
- --kerykeion-chart-color-chiron: var(--kerykeion-color-secondary);
85
- --kerykeion-chart-color-first-house: var(--kerykeion-color-warning);
86
- --kerykeion-chart-color-tenth-house: var(--kerykeion-color-warning);
87
- --kerykeion-chart-color-seventh-house: var(--kerykeion-color-warning);
88
- --kerykeion-chart-color-fourth-house: var(--kerykeion-color-warning);
89
- --kerykeion-chart-color-mean-lilith: var(--kerykeion-color-secondary);
83
+ /* Planets */
84
+ --kerykeion-chart-color-sun: var(--kerykeion-color-warning);
85
+ --kerykeion-chart-color-moon: var(--kerykeion-color-secondary);
86
+ --kerykeion-chart-color-mercury: var(--kerykeion-color-primary);
87
+ --kerykeion-chart-color-venus: var(--kerykeion-color-accent);
88
+ --kerykeion-chart-color-mars: var(--kerykeion-color-warning);
89
+ --kerykeion-chart-color-jupiter: var(--kerykeion-color-primary);
90
+ --kerykeion-chart-color-saturn: var(--kerykeion-color-secondary);
91
+ --kerykeion-chart-color-uranus: var(--kerykeion-color-accent);
92
+ --kerykeion-chart-color-neptune: var(--kerykeion-color-primary);
93
+ --kerykeion-chart-color-pluto: var(--kerykeion-color-secondary);
94
+ --kerykeion-chart-color-true-node: var(--kerykeion-color-warning);
95
+ --kerykeion-chart-color-mean-node: var(--kerykeion-color-warning);
96
+ --kerykeion-chart-color-chiron: var(--kerykeion-color-secondary);
97
+ --kerykeion-chart-color-first-house: var(--kerykeion-color-warning);
98
+ --kerykeion-chart-color-tenth-house: var(--kerykeion-color-warning);
99
+ --kerykeion-chart-color-seventh-house: var(--kerykeion-color-warning);
100
+ --kerykeion-chart-color-fourth-house: var(--kerykeion-color-warning);
101
+ --kerykeion-chart-color-mean-lilith: var(--kerykeion-color-secondary);
102
+ --kerykeion-chart-color-true-lilith: var(--kerykeion-color-secondary);
103
+ --kerykeion-chart-color-ceres: var(--kerykeion-color-accent);
104
+ --kerykeion-chart-color-pallas: var(--kerykeion-color-primary);
105
+ --kerykeion-chart-color-juno: var(--kerykeion-color-accent);
106
+ --kerykeion-chart-color-vesta: var(--kerykeion-color-warning);
107
+ --kerykeion-chart-color-pars-fortunae: var(--kerykeion-color-success);
108
+ --kerykeion-chart-color-vertex: var(--kerykeion-color-secondary);
109
+ --kerykeion-chart-color-east-point: var(--kerykeion-color-primary);
110
+ --kerykeion-chart-color-eris: var(--kerykeion-color-error);
90
111
 
91
- /* Zodiac Signs */
92
- --kerykeion-chart-color-zodiac-icon-0: var(--kerykeion-color-accent);
93
- --kerykeion-chart-color-zodiac-icon-1: var(--kerykeion-color-warning);
94
- --kerykeion-chart-color-zodiac-icon-2: var(--kerykeion-color-primary);
95
- --kerykeion-chart-color-zodiac-icon-3: var(--kerykeion-color-secondary);
96
- --kerykeion-chart-color-zodiac-icon-4: var(--kerykeion-color-accent);
97
- --kerykeion-chart-color-zodiac-icon-5: var(--kerykeion-color-warning);
98
- --kerykeion-chart-color-zodiac-icon-6: var(--kerykeion-color-primary);
99
- --kerykeion-chart-color-zodiac-icon-7: var(--kerykeion-color-secondary);
100
- --kerykeion-chart-color-zodiac-icon-8: var(--kerykeion-color-accent);
101
- --kerykeion-chart-color-zodiac-icon-9: var(--kerykeion-color-warning);
102
- --kerykeion-chart-color-zodiac-icon-10: var(--kerykeion-color-primary);
103
- --kerykeion-chart-color-zodiac-icon-11: var(--kerykeion-color-secondary);
112
+ /* Arab Parts */
113
+ --kerykeion-chart-color-pars-spiritus: var(--kerykeion-color-success);
114
+ --kerykeion-chart-color-pars-amoris: var(--kerykeion-color-accent);
115
+ --kerykeion-chart-color-pars-fortunae: var(--kerykeion-color-success);
116
+ --kerykeion-chart-color-pars-fidei: var(--kerykeion-color-success);
104
117
 
105
- /* Elements Percentage */
106
- --kerykeion-chart-color-air-percentage: var(--kerykeion-color-primary);
107
- --kerykeion-chart-color-earth-percentage: var(--kerykeion-color-warning);
108
- --kerykeion-chart-color-fire-percentage: var(--kerykeion-color-accent);
109
- --kerykeion-chart-color-water-percentage: var(--kerykeion-color-secondary);
118
+ /* Zodiac Signs */
119
+ --kerykeion-chart-color-zodiac-icon-0: var(--kerykeion-color-accent);
120
+ --kerykeion-chart-color-zodiac-icon-1: var(--kerykeion-color-warning);
121
+ --kerykeion-chart-color-zodiac-icon-2: var(--kerykeion-color-primary);
122
+ --kerykeion-chart-color-zodiac-icon-3: var(--kerykeion-color-secondary);
123
+ --kerykeion-chart-color-zodiac-icon-4: var(--kerykeion-color-accent);
124
+ --kerykeion-chart-color-zodiac-icon-5: var(--kerykeion-color-warning);
125
+ --kerykeion-chart-color-zodiac-icon-6: var(--kerykeion-color-primary);
126
+ --kerykeion-chart-color-zodiac-icon-7: var(--kerykeion-color-secondary);
127
+ --kerykeion-chart-color-zodiac-icon-8: var(--kerykeion-color-accent);
128
+ --kerykeion-chart-color-zodiac-icon-9: var(--kerykeion-color-warning);
129
+ --kerykeion-chart-color-zodiac-icon-10: var(--kerykeion-color-primary);
130
+ --kerykeion-chart-color-zodiac-icon-11: var(--kerykeion-color-secondary);
110
131
 
111
- /* Aspects */
112
- --kerykeion-chart-color-lunar-phase-0: var(--kerykeion-color-black);
113
- --kerykeion-chart-color-lunar-phase-1: var(--kerykeion-color-white);
132
+ /* Elements Percentage */
133
+ --kerykeion-chart-color-air-percentage: var(--kerykeion-color-primary);
134
+ --kerykeion-chart-color-earth-percentage: var(--kerykeion-color-warning);
135
+ --kerykeion-chart-color-fire-percentage: var(--kerykeion-color-accent);
136
+ --kerykeion-chart-color-water-percentage: var(--kerykeion-color-secondary);
114
137
 
115
- /* Houses Numbers */
116
- --kerykeion-chart-color-house-number: var(--kerykeion-color-base-content);
138
+ /* Aspects */
139
+ --kerykeion-chart-color-lunar-phase-0: var(--kerykeion-color-black);
140
+ --kerykeion-chart-color-lunar-phase-1: var(--kerykeion-color-white);
141
+
142
+ /* Houses Numbers */
143
+ --kerykeion-chart-color-house-number: var(--kerykeion-color-base-content);
117
144
  }
@@ -0,0 +1,143 @@
1
+ :root {
2
+ /* -------- */
3
+ /* General */
4
+ /* ------- */
5
+ --kerykeion-color-black: #141012; /* quasi nero con traccia impercettibile di rosa */
6
+ --kerykeion-color-white: #fef5f9; /* rosa tenue */
7
+ --kerykeion-color-neutral-content: #5c2d41; /* oklch(25% 0.08 330) - rosa scuro */
8
+ --kerykeion-color-base-content: #5c2d41; /* stessa di neutral-content */
9
+ --kerykeion-color-primary: #d91aa6; /* oklch(55% 0.35 320) - rosa magenta vibrante */
10
+ --kerykeion-color-secondary: #ff1b6b; /* oklch(70% 0.35 340) - rosa fucsia brillante */
11
+ --kerykeion-color-accent: #ff4dd2; /* oklch(80% 0.3 330) - rosa elettrico */
12
+ --kerykeion-color-neutral: #3d1f2a; /* oklch(16% 0.05 330) - rosa scuro */
13
+ --kerykeion-color-base-100: #fef0f5; /* oklch(96% 0.03 330) - sfondo rosa chiaro */
14
+ --kerykeion-color-info: #e056f2; /* oklch(74% 0.3 310) - rosa-viola brillante */
15
+ --kerykeion-color-info-content: #6b2e5d; /* oklch(32% 0.12 310) */
16
+ --kerykeion-color-success: #4fdc9a; /* oklch(78% 0.18 130) - verde con base rosa */
17
+ --kerykeion-color-warning: #ff8a6c; /* oklch(80% 0.25 50) - arancione rosato */
18
+ --kerykeion-color-error: #ff4f9a; /* oklch(73% 0.28 340) - rosa error vibrante */
19
+ /* Zodiac */
20
+ --kerykeion-color-base-200: #fce8f1; /* oklch(93% 0.05 330) - rosa delicato evidente */
21
+ --kerykeion-color-base-300: #f5d1e3; /* rosa chiaro invece di grigio */
22
+
23
+ /* ----------- */
24
+ /* Chart Color */
25
+ /* ----------- */
26
+
27
+ /* Main colors */
28
+ --kerykeion-chart-color-paper-0: var(--kerykeion-color-neutral-content);
29
+ --kerykeion-chart-color-paper-1: var(--kerykeion-color-base-100);
30
+
31
+ /* Zodiac Sign Sectors */
32
+ --kerykeion-chart-color-zodiac-bg-0: var(--kerykeion-color-base-200);
33
+ --kerykeion-chart-color-zodiac-bg-1: var(--kerykeion-color-base-300);
34
+ --kerykeion-chart-color-zodiac-bg-2: var(--kerykeion-color-base-200);
35
+ --kerykeion-chart-color-zodiac-bg-3: var(--kerykeion-color-base-300);
36
+ --kerykeion-chart-color-zodiac-bg-4: var(--kerykeion-color-base-200);
37
+ --kerykeion-chart-color-zodiac-bg-5: var(--kerykeion-color-base-300);
38
+ --kerykeion-chart-color-zodiac-bg-6: var(--kerykeion-color-base-200);
39
+ --kerykeion-chart-color-zodiac-bg-7: var(--kerykeion-color-base-300);
40
+ --kerykeion-chart-color-zodiac-bg-8: var(--kerykeion-color-base-200);
41
+ --kerykeion-chart-color-zodiac-bg-9: var(--kerykeion-color-base-300);
42
+ --kerykeion-chart-color-zodiac-bg-10: var(--kerykeion-color-base-200);
43
+ --kerykeion-chart-color-zodiac-bg-11: var(--kerykeion-color-base-300);
44
+
45
+ /* Zodiac Sign Rings */
46
+ --kerykeion-chart-color-zodiac-radix-ring-0: var(--kerykeion-color-neutral);
47
+ --kerykeion-chart-color-zodiac-radix-ring-1: var(--kerykeion-color-neutral);
48
+ --kerykeion-chart-color-zodiac-radix-ring-2: var(--kerykeion-color-neutral);
49
+ --kerykeion-chart-color-zodiac-transit-ring-0: var(
50
+ --kerykeion-color-neutral
51
+ );
52
+ --kerykeion-chart-color-zodiac-transit-ring-1: var(
53
+ --kerykeion-color-neutral
54
+ );
55
+ --kerykeion-chart-color-zodiac-transit-ring-2: var(
56
+ --kerykeion-color-neutral
57
+ );
58
+ --kerykeion-chart-color-zodiac-transit-ring-3: var(
59
+ --kerykeion-color-neutral
60
+ );
61
+ --kerykeion-chart-color-houses-radix-line: var(
62
+ --kerykeion-color-base-content
63
+ );
64
+ --kerykeion-chart-color-houses-transit-line: var(
65
+ --kerykeion-color-base-content
66
+ );
67
+
68
+ /* Aspects */
69
+ --kerykeion-chart-color-conjunction: var(--kerykeion-color-success);
70
+ --kerykeion-chart-color-semi-sextile: var(--kerykeion-color-success);
71
+ --kerykeion-chart-color-semi-square: var(--kerykeion-color-error);
72
+ --kerykeion-chart-color-sextile: var(--kerykeion-color-success);
73
+ --kerykeion-chart-color-quintile: var(--kerykeion-color-secondary);
74
+ --kerykeion-chart-color-square: var(--kerykeion-color-error);
75
+ --kerykeion-chart-color-trine: var(--kerykeion-color-success);
76
+ --kerykeion-chart-color-sesquiquadrate: var(--kerykeion-color-error);
77
+ --kerykeion-chart-color-biquintile: var(--kerykeion-color-secondary);
78
+ --kerykeion-chart-color-quincunx: var(--kerykeion-color-secondary);
79
+ --kerykeion-chart-color-opposition: var(--kerykeion-color-error);
80
+
81
+ /* Planets */
82
+ --kerykeion-chart-color-sun: var(--kerykeion-color-warning);
83
+ --kerykeion-chart-color-moon: var(--kerykeion-color-secondary);
84
+ --kerykeion-chart-color-mercury: var(--kerykeion-color-primary);
85
+ --kerykeion-chart-color-venus: var(--kerykeion-color-accent);
86
+ --kerykeion-chart-color-mars: var(--kerykeion-color-warning);
87
+ --kerykeion-chart-color-jupiter: var(--kerykeion-color-primary);
88
+ --kerykeion-chart-color-saturn: var(--kerykeion-color-secondary);
89
+ --kerykeion-chart-color-uranus: var(--kerykeion-color-accent);
90
+ --kerykeion-chart-color-neptune: var(--kerykeion-color-primary);
91
+ --kerykeion-chart-color-pluto: var(--kerykeion-color-secondary);
92
+ --kerykeion-chart-color-true-node: var(--kerykeion-color-warning);
93
+ --kerykeion-chart-color-mean-node: var(--kerykeion-color-warning);
94
+ --kerykeion-chart-color-chiron: var(--kerykeion-color-secondary);
95
+ --kerykeion-chart-color-first-house: var(--kerykeion-color-warning);
96
+ --kerykeion-chart-color-tenth-house: var(--kerykeion-color-warning);
97
+ --kerykeion-chart-color-seventh-house: var(--kerykeion-color-warning);
98
+ --kerykeion-chart-color-fourth-house: var(--kerykeion-color-warning);
99
+ --kerykeion-chart-color-mean-lilith: var(--kerykeion-color-secondary);
100
+ --kerykeion-chart-color-true-lilith: var(--kerykeion-color-secondary);
101
+ --kerykeion-chart-color-ceres: var(--kerykeion-color-accent);
102
+ --kerykeion-chart-color-pallas: var(--kerykeion-color-primary);
103
+ --kerykeion-chart-color-juno: var(--kerykeion-color-accent);
104
+ --kerykeion-chart-color-vesta: var(--kerykeion-color-warning);
105
+ --kerykeion-chart-color-pars-fortunae: var(--kerykeion-color-success);
106
+ --kerykeion-chart-color-vertex: var(--kerykeion-color-secondary);
107
+ --kerykeion-chart-color-east-point: var(--kerykeion-color-primary);
108
+ --kerykeion-chart-color-eris: var(--kerykeion-color-error);
109
+ --kerykeion-chart-color-earth: var(--kerykeion-color-warning);
110
+
111
+ /* Arab Parts */
112
+ --kerykeion-chart-color-pars-spiritus: var(--kerykeion-color-success);
113
+ --kerykeion-chart-color-pars-amoris: var(--kerykeion-color-accent);
114
+ --kerykeion-chart-color-pars-fortunae: var(--kerykeion-color-success);
115
+ --kerykeion-chart-color-pars-fidei: var(--kerykeion-color-success);
116
+
117
+ /* Zodiac Signs */
118
+ --kerykeion-chart-color-zodiac-icon-0: var(--kerykeion-color-accent);
119
+ --kerykeion-chart-color-zodiac-icon-1: var(--kerykeion-color-warning);
120
+ --kerykeion-chart-color-zodiac-icon-2: var(--kerykeion-color-primary);
121
+ --kerykeion-chart-color-zodiac-icon-3: var(--kerykeion-color-secondary);
122
+ --kerykeion-chart-color-zodiac-icon-4: var(--kerykeion-color-accent);
123
+ --kerykeion-chart-color-zodiac-icon-5: var(--kerykeion-color-warning);
124
+ --kerykeion-chart-color-zodiac-icon-6: var(--kerykeion-color-primary);
125
+ --kerykeion-chart-color-zodiac-icon-7: var(--kerykeion-color-secondary);
126
+ --kerykeion-chart-color-zodiac-icon-8: var(--kerykeion-color-accent);
127
+ --kerykeion-chart-color-zodiac-icon-9: var(--kerykeion-color-warning);
128
+ --kerykeion-chart-color-zodiac-icon-10: var(--kerykeion-color-primary);
129
+ --kerykeion-chart-color-zodiac-icon-11: var(--kerykeion-color-secondary);
130
+
131
+ /* Elements Percentage */
132
+ --kerykeion-chart-color-air-percentage: var(--kerykeion-color-primary);
133
+ --kerykeion-chart-color-earth-percentage: var(--kerykeion-color-warning);
134
+ --kerykeion-chart-color-fire-percentage: var(--kerykeion-color-accent);
135
+ --kerykeion-chart-color-water-percentage: var(--kerykeion-color-secondary);
136
+
137
+ /* Aspects */
138
+ --kerykeion-chart-color-lunar-phase-0: var(--kerykeion-color-black);
139
+ --kerykeion-chart-color-lunar-phase-1: var(--kerykeion-color-white);
140
+
141
+ /* Houses Numbers */
142
+ --kerykeion-chart-color-house-number: var(--kerykeion-color-base-content);
143
+ }
@@ -1,15 +1,17 @@
1
- from typing import Union
1
+ from typing import Union, TYPE_CHECKING
2
2
 
3
- from kerykeion import AstrologicalSubject
4
- from kerykeion import KerykeionException
3
+ # Fix the circular import by changing this import
4
+ from kerykeion.astrological_subject_factory import AstrologicalSubjectFactory
5
+ from kerykeion.kr_types.kerykeion_exception import KerykeionException
5
6
  from kerykeion.kr_types.kr_models import CompositeSubjectModel, AstrologicalSubjectModel
6
- from kerykeion.kr_types.kr_literals import ZodiacType, PerspectiveType, HousesSystemIdentifier, SiderealMode, Planet, Houses, AxialCusps, CompositeChartType
7
+ from kerykeion.kr_types.kr_literals import ZodiacType, PerspectiveType, HousesSystemIdentifier, SiderealMode, AstrologicalPoint, Houses, CompositeChartType
7
8
  from kerykeion.utilities import (
8
9
  get_kerykeion_point_from_degree,
9
10
  get_planet_house,
10
11
  circular_mean,
11
12
  calculate_moon_phase,
12
- circular_sort
13
+ circular_sort,
14
+ find_common_active_points
13
15
  )
14
16
 
15
17
 
@@ -36,26 +38,24 @@ class CompositeSubjectFactory:
36
38
  houses_system_identifier: HousesSystemIdentifier
37
39
  houses_system_name: str
38
40
  perspective_type: PerspectiveType
39
- planets_names_list: list[Planet]
40
41
  houses_names_list: list[Houses]
41
- axial_cusps_names_list: list[AxialCusps]
42
+ active_points: list[AstrologicalPoint]
42
43
 
43
44
  def __init__(
44
45
  self,
45
- first_subject: Union[AstrologicalSubject, AstrologicalSubjectModel],
46
- second_subject: Union[AstrologicalSubject, AstrologicalSubjectModel],
46
+ first_subject: AstrologicalSubjectModel,
47
+ second_subject: AstrologicalSubjectModel,
47
48
  chart_name: Union[str, None] = None
48
49
  ):
49
50
  self.model: Union[CompositeSubjectModel, None] = None
50
51
  self.composite_chart_type = "Midpoint"
51
52
 
52
- # Subjects
53
- if isinstance(first_subject, AstrologicalSubject) or isinstance(first_subject, AstrologicalSubjectModel):
54
- self.first_subject = first_subject.model() # type: ignore
55
- self.second_subject = second_subject.model() # type: ignore
56
- else:
57
- self.first_subject = first_subject
58
- self.second_subject = second_subject
53
+ self.first_subject = first_subject
54
+ self.second_subject = second_subject
55
+ self.active_points = find_common_active_points(
56
+ first_subject.active_points,
57
+ second_subject.active_points
58
+ )
59
59
 
60
60
  # Name
61
61
  if chart_name is None:
@@ -93,17 +93,14 @@ class CompositeSubjectFactory:
93
93
  self.perspective_type = first_subject.perspective_type
94
94
 
95
95
  # Planets Names List
96
- self.planets_names_list = []
97
- for planet in first_subject.planets_names_list:
98
- if planet in second_subject.planets_names_list:
99
- self.planets_names_list.append(planet)
96
+ self.active_points = []
97
+ for planet in first_subject.active_points:
98
+ if planet in second_subject.active_points:
99
+ self.active_points.append(planet)
100
100
 
101
101
  # Houses Names List
102
102
  self.houses_names_list = self.first_subject.houses_names_list
103
103
 
104
- # Axial Cusps Names List
105
- self.axial_cusps_names_list = self.first_subject.axial_cusps_names_list
106
-
107
104
  def __str__(self):
108
105
  return f"Composite Chart Data for {self.name}"
109
106
 
@@ -152,8 +149,8 @@ class CompositeSubjectFactory:
152
149
 
153
150
  # Planets
154
151
  common_planets = []
155
- for planet in self.first_subject.planets_names_list:
156
- if planet in self.second_subject.planets_names_list:
152
+ for planet in self.first_subject.active_points:
153
+ if planet in self.second_subject.active_points:
157
154
  common_planets.append(planet)
158
155
 
159
156
  planets = {}
@@ -164,23 +161,9 @@ class CompositeSubjectFactory:
164
161
  self.first_subject[planet_lower]["abs_pos"],
165
162
  self.second_subject[planet_lower]["abs_pos"]
166
163
  )
167
- self[planet_lower] = get_kerykeion_point_from_degree(planets[planet_lower]["abs_pos"], planet, "Planet")
164
+ self[planet_lower] = get_kerykeion_point_from_degree(planets[planet_lower]["abs_pos"], planet, "AstrologicalPoint")
168
165
  self[planet_lower]["house"] = get_planet_house(self[planet_lower]['abs_pos'], house_degree_list_ut)
169
166
 
170
-
171
- # Axial Cusps
172
- for cusp in self.first_subject.axial_cusps_names_list:
173
- cusp_lower = cusp.lower()
174
- self[cusp_lower] = get_kerykeion_point_from_degree(
175
- circular_mean(
176
- self.first_subject[cusp_lower]["abs_pos"],
177
- self.second_subject[cusp_lower]["abs_pos"]
178
- ),
179
- cusp,
180
- "AxialCusps"
181
- )
182
- self[cusp_lower]["house"] = get_planet_house(self[cusp_lower]['abs_pos'], house_degree_list_ut)
183
-
184
167
  def _calculate_composite_lunar_phase(self):
185
168
  self.lunar_phase = calculate_moon_phase(
186
169
  self['moon'].abs_pos,
@@ -197,10 +180,10 @@ class CompositeSubjectFactory:
197
180
 
198
181
 
199
182
  if __name__ == "__main__":
200
- from kerykeion.astrological_subject import AstrologicalSubject
183
+ from kerykeion.astrological_subject_factory import AstrologicalSubjectFactory
201
184
 
202
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
203
- second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
185
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
186
+ second = AstrologicalSubjectFactory.from_birth_data("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
204
187
 
205
188
  composite_chart = CompositeSubjectFactory(first, second)
206
189
  print(composite_chart.get_midpoint_composite_subject_model().model_dump_json(indent=4))
@@ -1,6 +1,7 @@
1
- from kerykeion import AstrologicalSubject
1
+ from kerykeion import AstrologicalSubjectFactory
2
+ from kerykeion.kr_types.kr_models import AstrologicalSubjectModel
2
3
  from kerykeion.utilities import get_houses_list, get_available_astrological_points_list
3
- from kerykeion.astrological_subject import DEFAULT_HOUSES_SYSTEM_IDENTIFIER, DEFAULT_PERSPECTIVE_TYPE, DEFAULT_ZODIAC_TYPE
4
+ from kerykeion.astrological_subject_factory import DEFAULT_HOUSES_SYSTEM_IDENTIFIER, DEFAULT_PERSPECTIVE_TYPE, DEFAULT_ZODIAC_TYPE
4
5
  from kerykeion.kr_types import EphemerisDictModel
5
6
  from kerykeion.kr_types import SiderealMode, HousesSystemIdentifier, PerspectiveType, ZodiacType
6
7
  from datetime import datetime, timedelta
@@ -21,7 +22,6 @@ class EphemerisDataFactory:
21
22
  - lng: float representing the longitude. Default is 0.0005 (Greenwich).
22
23
  - tz_str: string representing the timezone. Default is "Etc/UTC".
23
24
  - is_dst: boolean representing if daylight saving time is active. Default is False.
24
- - disable_chiron_and_lilith: boolean representing if Chiron and Lilith should be disabled. Default is False.
25
25
  - zodiac_type: ZodiacType object representing the zodiac type. Default is DEFAULT_ZODIAC_TYPE.
26
26
  - sidereal_mode: SiderealMode object representing the sidereal mode. Default is None.
27
27
  - houses_system_identifier: HousesSystemIdentifier object representing the houses system identifier. Default is DEFAULT_HOUSES_SYSTEM_IDENTIFIER.
@@ -48,7 +48,6 @@ class EphemerisDataFactory:
48
48
  lng: float = 0.0005,
49
49
  tz_str: str = "Etc/UTC",
50
50
  is_dst: bool = False,
51
- disable_chiron_and_lilith: bool = False,
52
51
  zodiac_type: ZodiacType = DEFAULT_ZODIAC_TYPE,
53
52
  sidereal_mode: Union[SiderealMode, None] = None,
54
53
  houses_system_identifier: HousesSystemIdentifier = DEFAULT_HOUSES_SYSTEM_IDENTIFIER,
@@ -65,7 +64,6 @@ class EphemerisDataFactory:
65
64
  self.lng = lng
66
65
  self.tz_str = tz_str
67
66
  self.is_dst = is_dst
68
- self.disable_chiron_and_lilith = disable_chiron_and_lilith
69
67
  self.zodiac_type = zodiac_type
70
68
  self.sidereal_mode = sidereal_mode
71
69
  self.houses_system_identifier = houses_system_identifier
@@ -123,7 +121,7 @@ class EphemerisDataFactory:
123
121
  """
124
122
  ephemeris_data_list = []
125
123
  for date in self.dates_list:
126
- subject = AstrologicalSubject(
124
+ subject = AstrologicalSubjectFactory.from_birth_data(
127
125
  year=date.year,
128
126
  month=date.month,
129
127
  day=date.day,
@@ -135,7 +133,6 @@ class EphemerisDataFactory:
135
133
  city="Placeholder",
136
134
  nation="Placeholder",
137
135
  online=False,
138
- disable_chiron_and_lilith=self.disable_chiron_and_lilith,
139
136
  zodiac_type=self.zodiac_type,
140
137
  sidereal_mode=self.sidereal_mode,
141
138
  houses_system_identifier=self.houses_system_identifier,
@@ -153,7 +150,7 @@ class EphemerisDataFactory:
153
150
 
154
151
  return ephemeris_data_list
155
152
 
156
- def get_ephemeris_data_as_astrological_subjects(self, as_model: bool = False) -> List[AstrologicalSubject]:
153
+ def get_ephemeris_data_as_astrological_subjects(self, as_model: bool = False) -> List[AstrologicalSubjectModel]:
157
154
  """
158
155
  Generate ephemeris data for the specified date range as AstrologicalSubject instances.
159
156
 
@@ -175,7 +172,7 @@ class EphemerisDataFactory:
175
172
  """
176
173
  subjects_list = []
177
174
  for date in self.dates_list:
178
- subject = AstrologicalSubject(
175
+ subject = AstrologicalSubjectFactory.from_birth_data(
179
176
  year=date.year,
180
177
  month=date.month,
181
178
  day=date.day,
@@ -187,7 +184,6 @@ class EphemerisDataFactory:
187
184
  city="Placeholder",
188
185
  nation="Placeholder",
189
186
  online=False,
190
- disable_chiron_and_lilith=self.disable_chiron_and_lilith,
191
187
  zodiac_type=self.zodiac_type,
192
188
  sidereal_mode=self.sidereal_mode,
193
189
  houses_system_identifier=self.houses_system_identifier,
@@ -0,0 +1,3 @@
1
+
2
+ from .house_comparison_factory import HouseComparisonFactory
3
+ from .house_comparison_models import HouseComparisonModel, PointInHouseModel