kerykeion 4.22.0rc1__py3-none-any.whl → 4.24.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.

@@ -9,6 +9,7 @@ from kerykeion.settings import KerykeionSettingsModel
9
9
  from swisseph import difdeg2n
10
10
  from typing import Union
11
11
  from kerykeion.kr_types.kr_models import AstrologicalSubjectModel
12
+ from kerykeion.kr_types.kr_literals import Planet, AxialCusps
12
13
  from kerykeion.kr_types.settings_models import KerykeionSettingsCelestialPointModel, KerykeionSettingsAspectModel
13
14
 
14
15
 
@@ -32,6 +33,7 @@ def get_aspect_from_two_points(
32
33
  diff = abs(point_one - point_two)
33
34
 
34
35
  for aid, aspect in enumerate(aspects_settings):
36
+ # TODO: Remove the "degree" element EVERYWHERE!
35
37
  aspect_degree = aspect["degree"] # type: ignore
36
38
  aspect_orb = aspect["orb"] # type: ignore
37
39
 
@@ -72,7 +74,7 @@ def planet_id_decoder(planets_settings: list[KerykeionSettingsCelestialPointMode
72
74
 
73
75
 
74
76
  def get_active_points_list(
75
- subject: Union[AstrologicalSubject, AstrologicalSubjectModel], settings: Union[KerykeionSettingsModel, dict]
77
+ subject: Union[AstrologicalSubject, AstrologicalSubjectModel], settings: Union[KerykeionSettingsModel, dict], active_points: list = []
76
78
  ) -> list:
77
79
  """
78
80
  Given an astrological subject and the settings, return a list of the active points.
@@ -85,7 +87,7 @@ def get_active_points_list(
85
87
  """
86
88
  point_list = []
87
89
  for planet in settings["celestial_points"]:
88
- if planet["is_active"] == True:
90
+ if planet["name"] in active_points:
89
91
  point_list.append(subject[planet["name"].lower()])
90
92
 
91
93
  return point_list
@@ -6,13 +6,16 @@
6
6
  from pathlib import Path
7
7
  from kerykeion import AstrologicalSubject
8
8
  import logging
9
- from typing import Union
9
+ from typing import Union, List
10
10
  from kerykeion.settings.kerykeion_settings import get_settings
11
- from dataclasses import dataclass
11
+ from dataclasses import dataclass, field
12
12
  from functools import cached_property
13
13
  from kerykeion.aspects.aspects_utils import planet_id_decoder, get_aspect_from_two_points, get_active_points_list
14
- from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel
14
+ from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel, ActiveAspect
15
+ from kerykeion.kr_types.kr_literals import AxialCusps, Planet
15
16
  from kerykeion.kr_types.settings_models import KerykeionSettingsModel
17
+ from kerykeion.settings.config_constants import DEFAULT_ACTIVE_POINTS, DEFAULT_ACTIVE_ASPECTS
18
+
16
19
 
17
20
 
18
21
  AXES_LIST = [
@@ -31,6 +34,8 @@ class NatalAspects:
31
34
 
32
35
  user: Union[AstrologicalSubject, AstrologicalSubjectModel]
33
36
  new_settings_file: Union[Path, KerykeionSettingsModel, dict, None] = None
37
+ active_points: List[Union[AxialCusps, Planet]] = field(default_factory=lambda: DEFAULT_ACTIVE_POINTS)
38
+ active_aspects: List[ActiveAspect] = field(default_factory=lambda: DEFAULT_ACTIVE_ASPECTS)
34
39
 
35
40
  def __post_init__(self):
36
41
  self.settings = get_settings(self.new_settings_file)
@@ -38,6 +43,7 @@ class NatalAspects:
38
43
  self.celestial_points = self.settings.celestial_points
39
44
  self.aspects_settings = self.settings.aspects
40
45
  self.axes_orbit_settings = self.settings.general_settings.axes_orbit
46
+ self.active_points = self.active_points
41
47
 
42
48
  @cached_property
43
49
  def all_aspects(self):
@@ -47,7 +53,7 @@ class NatalAspects:
47
53
  without repetitions.
48
54
  """
49
55
 
50
- active_points_list = get_active_points_list(self.user, self.settings)
56
+ active_points_list = get_active_points_list(self.user, self.settings, self.active_points)
51
57
 
52
58
  self.all_aspects_list = []
53
59
 
@@ -107,17 +113,15 @@ class NatalAspects:
107
113
  the most important are hardcoded.
108
114
  Set the list with set_points and creating a list with the names
109
115
  or the numbers of the houses.
110
- The relevant aspects are the ones that are set as active ("is_active") in the settings.
116
+ The relevant aspects are the ones that are set as looping in the available_aspects list.
111
117
  """
112
118
 
113
119
  logging.debug("Relevant aspects not already calculated, calculating now...")
114
120
  self.all_aspects
115
121
 
116
122
  aspects_filtered = []
117
-
118
- # Only pick aspects for which the is_active setting (specified usually in kr.config.json file) is true.
119
123
  for a in self.all_aspects_list:
120
- if self.aspects_settings[a["aid"]]["is_active"] == True:
124
+ if a["aspect"] in [aspect["name"] for aspect in self.active_aspects]:
121
125
  aspects_filtered.append(a)
122
126
 
123
127
  axes_list = AXES_LIST
@@ -11,9 +11,11 @@ from functools import cached_property
11
11
  from kerykeion.aspects.natal_aspects import NatalAspects
12
12
  from kerykeion.settings.kerykeion_settings import get_settings
13
13
  from kerykeion.aspects.aspects_utils import planet_id_decoder, get_aspect_from_two_points, get_active_points_list
14
- from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel
14
+ from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel, ActiveAspect
15
15
  from kerykeion.kr_types.settings_models import KerykeionSettingsModel
16
- from typing import Union
16
+ from kerykeion.settings.config_constants import DEFAULT_ACTIVE_POINTS, DEFAULT_ACTIVE_ASPECTS
17
+ from kerykeion.kr_types.kr_literals import AxialCusps, Planet
18
+ from typing import Union, List
17
19
 
18
20
 
19
21
  class SynastryAspects(NatalAspects):
@@ -26,6 +28,8 @@ class SynastryAspects(NatalAspects):
26
28
  kr_object_one: Union[AstrologicalSubject, AstrologicalSubjectModel],
27
29
  kr_object_two: Union[AstrologicalSubject, AstrologicalSubjectModel],
28
30
  new_settings_file: Union[Path, KerykeionSettingsModel, dict, None] = None,
31
+ active_points: list[Union[AxialCusps, Planet]] = DEFAULT_ACTIVE_POINTS,
32
+ active_aspects: List[ActiveAspect] = DEFAULT_ACTIVE_ASPECTS,
29
33
  ):
30
34
  # Subjects
31
35
  self.first_user = kr_object_one
@@ -38,6 +42,8 @@ class SynastryAspects(NatalAspects):
38
42
  self.celestial_points = self.settings.celestial_points
39
43
  self.aspects_settings = self.settings.aspects
40
44
  self.axes_orbit_settings = self.settings.general_settings.axes_orbit
45
+ self.active_points = active_points
46
+ self.active_aspects = active_aspects
41
47
 
42
48
  # Private variables of the aspects
43
49
  self._all_aspects: Union[list, None] = None
@@ -55,8 +61,8 @@ class SynastryAspects(NatalAspects):
55
61
  return self._all_aspects
56
62
 
57
63
  # Celestial Points Lists
58
- first_active_points_list = get_active_points_list(self.first_user, self.settings)
59
- second_active_points_list = get_active_points_list(self.second_user, self.settings)
64
+ first_active_points_list = get_active_points_list(self.first_user, self.settings, self.active_points)
65
+ second_active_points_list = get_active_points_list(self.second_user, self.settings, self.active_points)
60
66
 
61
67
  self.all_aspects_list = []
62
68
 
@@ -742,6 +742,7 @@ def draw_transit_aspect_list(
742
742
  inner_path += f'<use transform="scale(0.4)" x="0" y="3" xlink:href="#{celestial_point_language[aspects_list[i]["p1"]]["name"]}" />'
743
743
 
744
744
  # aspect symbol
745
+ # TODO: Remove the "degree" element EVERYWHERE!
745
746
  inner_path += f'<use x="15" y="0" xlink:href="#orb{aspects_settings[aspects_list[i]["aid"]]["degree"]}" />'
746
747
 
747
748
  # second planet symbol
@@ -12,11 +12,11 @@ from kerykeion.settings.kerykeion_settings import get_settings
12
12
  from kerykeion.aspects.synastry_aspects import SynastryAspects
13
13
  from kerykeion.aspects.natal_aspects import NatalAspects
14
14
  from kerykeion.astrological_subject import AstrologicalSubject
15
- from kerykeion.kr_types import KerykeionException, ChartType, KerykeionPointModel, Sign
15
+ from kerykeion.kr_types import KerykeionException, ChartType, KerykeionPointModel, Sign, ActiveAspect
16
16
  from kerykeion.kr_types import ChartTemplateDictionary
17
17
  from kerykeion.kr_types.kr_models import AstrologicalSubjectModel
18
18
  from kerykeion.kr_types.settings_models import KerykeionSettingsCelestialPointModel, KerykeionSettingsModel
19
- from kerykeion.kr_types.kr_literals import KerykeionChartTheme, KerykeionChartLanguage
19
+ from kerykeion.kr_types.kr_literals import KerykeionChartTheme, KerykeionChartLanguage, AxialCusps, Planet
20
20
  from kerykeion.charts.charts_utils import (
21
21
  draw_zodiac_slice,
22
22
  convert_latitude_coordinate_to_string,
@@ -39,13 +39,13 @@ from kerykeion.charts.charts_utils import (
39
39
  )
40
40
  from kerykeion.charts.draw_planets import draw_planets # type: ignore
41
41
  from kerykeion.utilities import get_houses_list
42
+ from kerykeion.settings.config_constants import DEFAULT_ACTIVE_POINTS, DEFAULT_ACTIVE_ASPECTS
42
43
  from pathlib import Path
43
44
  from scour.scour import scourString
44
45
  from string import Template
45
46
  from typing import Union, List, Literal
46
47
  from datetime import datetime
47
48
 
48
-
49
49
  class KerykeionChartSVG:
50
50
  """
51
51
  Creates the instance that can generate the chart with the
@@ -62,6 +62,17 @@ class KerykeionChartSVG:
62
62
  That's useful if you want to use your own CSS file customizing the value of the default theme variables.
63
63
  - double_chart_aspect_grid_type: Set the type of the aspect grid for the double chart (transit or synastry). (Default: list.)
64
64
  - chart_language: Set the language for the chart (default: EN).
65
+ - active_points: Set the active points for the chart (default: DEFAULT_ACTIVE_POINTS). Example:
66
+ ["Sun", "Moon", "Mercury", "Venus", "Mars", "Jupiter", "Saturn", "Uranus", "Neptune", "Pluto", "True_Node", "True_South_Node", "Ascendant", "Medium_Coeli", "Descendant", "Imum_Coeli"]
67
+ - active_aspects: Set the active aspects for the chart (default: DEFAULT_ACTIVE_ASPECTS). Example:
68
+ [
69
+ {"name": "conjunction", "orb": 10},
70
+ {"name": "opposition", "orb": 10},
71
+ {"name": "trine", "orb": 8},
72
+ {"name": "sextile", "orb": 6},
73
+ {"name": "square", "orb": 5},
74
+ {"name": "quintile", "orb": 1},
75
+ ]
65
76
  """
66
77
 
67
78
  # Constants
@@ -82,6 +93,12 @@ class KerykeionChartSVG:
82
93
  new_output_directory: Union[Path, None]
83
94
  new_settings_file: Union[Path, None, KerykeionSettingsModel, dict]
84
95
  output_directory: Path
96
+ new_settings_file: Union[Path, None, KerykeionSettingsModel, dict]
97
+ theme: Union[KerykeionChartTheme, None]
98
+ double_chart_aspect_grid_type: Literal["list", "table"]
99
+ chart_language: KerykeionChartLanguage
100
+ active_points: List[Union[Planet, AxialCusps]]
101
+ active_aspects: List[ActiveAspect]
85
102
 
86
103
  # Internal properties
87
104
  fire: float
@@ -114,11 +131,14 @@ class KerykeionChartSVG:
114
131
  theme: Union[KerykeionChartTheme, None] = "classic",
115
132
  double_chart_aspect_grid_type: Literal["list", "table"] = "list",
116
133
  chart_language: KerykeionChartLanguage = "EN",
134
+ active_points: List[Union[Planet, AxialCusps]] = DEFAULT_ACTIVE_POINTS,
135
+ active_aspects: List[ActiveAspect] = DEFAULT_ACTIVE_ASPECTS,
117
136
  ):
118
- # Directories:
119
137
  home_directory = Path.home()
120
138
  self.new_settings_file = new_settings_file
121
139
  self.chart_language = chart_language
140
+ self.active_points = active_points
141
+ self.active_aspects = active_aspects
122
142
 
123
143
  if new_output_directory:
124
144
  self.output_directory = Path(new_output_directory)
@@ -133,8 +153,10 @@ class KerykeionChartSVG:
133
153
 
134
154
  self.available_planets_setting = []
135
155
  for body in self.planets_settings:
136
- if body['is_active'] == False:
156
+ if body["name"] not in active_points:
137
157
  continue
158
+ else:
159
+ body["is_active"] = True
138
160
 
139
161
  self.available_planets_setting.append(body)
140
162
 
@@ -149,7 +171,11 @@ class KerykeionChartSVG:
149
171
 
150
172
  # Makes the sign number list.
151
173
  if self.chart_type == "Natal" or self.chart_type == "ExternalNatal":
152
- natal_aspects_instance = NatalAspects(self.user, new_settings_file=self.new_settings_file)
174
+ natal_aspects_instance = NatalAspects(
175
+ self.user, new_settings_file=self.new_settings_file,
176
+ active_points=active_points,
177
+ active_aspects=active_aspects,
178
+ )
153
179
  self.aspects_list = natal_aspects_instance.relevant_aspects
154
180
 
155
181
  if self.chart_type == "Transit" or self.chart_type == "Synastry":
@@ -160,7 +186,13 @@ class KerykeionChartSVG:
160
186
  self.t_user = second_obj
161
187
 
162
188
  # Aspects
163
- self.aspects_list = SynastryAspects(self.user, self.t_user, new_settings_file=self.new_settings_file).relevant_aspects
189
+ synastry_aspects_instance = SynastryAspects(
190
+ self.user, self.t_user,
191
+ new_settings_file=self.new_settings_file,
192
+ active_points=active_points,
193
+ active_aspects=active_aspects,
194
+ )
195
+ self.aspects_list = synastry_aspects_instance.relevant_aspects
164
196
 
165
197
  self.t_available_kerykeion_celestial_points = []
166
198
  for body in available_celestial_points_names:
@@ -633,8 +665,7 @@ class KerykeionChartSVG:
633
665
  with open(chartname, "w", encoding="utf-8", errors="ignore") as output_file:
634
666
  output_file.write(self.template)
635
667
 
636
- logging.info(f"SVG Generated Correctly in: {chartname}")
637
-
668
+ print(f"SVG Generated Correctly in: {chartname}")
638
669
  def makeWheelOnlyTemplate(self, minify: bool = False):
639
670
  """Creates the template for the SVG file with only the wheel"""
640
671
 
@@ -661,8 +692,7 @@ class KerykeionChartSVG:
661
692
  with open(chartname, "w", encoding="utf-8", errors="ignore") as output_file:
662
693
  output_file.write(template)
663
694
 
664
- logging.info(f"SVG Generated Correctly in: {chartname}")
665
-
695
+ print(f"SVG Generated Correctly in: {chartname}")
666
696
  def makeAspectGridOnlyTemplate(self, minify: bool = False):
667
697
  """Creates the template for the SVG file with only the aspect grid"""
668
698
 
@@ -695,8 +725,7 @@ class KerykeionChartSVG:
695
725
  with open(chartname, "w", encoding="utf-8", errors="ignore") as output_file:
696
726
  output_file.write(template)
697
727
 
698
- logging.info(f"SVG Generated Correctly in: {chartname}")
699
-
728
+ print(f"SVG Generated Correctly in: {chartname}")
700
729
 
701
730
  if __name__ == "__main__":
702
731
  from kerykeion.utilities import setup_logging
@@ -105,11 +105,29 @@ Usually the standard is "Apparent Geocentric"
105
105
 
106
106
 
107
107
  SignsEmoji = Literal["♈️", "♉️", "♊️", "♋️", "♌️", "♍️", "♎️", "♏️", "♐️", "♑️", "♒️", "♓️"]
108
-
108
+ """Literal type for Zodiac Signs Emoji"""
109
109
 
110
110
  KerykeionChartTheme = Literal["light", "dark", "dark-high-contrast", "classic"]
111
+ """Literal type for Kerykeion Chart Themes"""
111
112
 
112
113
 
113
114
  KerykeionChartLanguage = Literal["EN", "FR", "PT", "IT", "CN", "ES", "RU", "TR", "DE", "HI"]
115
+ """Literal type for Kerykeion Chart Languages"""
114
116
 
115
117
  RelationshipScoreDescription = Literal["Minimal", "Medium", "Important", "Very Important", "Exceptional", "Rare Exceptional"]
118
+ """Literal type for Relationship Score Description"""
119
+
120
+ AspectName = Literal[
121
+ "conjunction",
122
+ "semi-sextile",
123
+ "semi-square",
124
+ "sextile",
125
+ "quintile",
126
+ "square",
127
+ "trine",
128
+ "sesquiquadrate",
129
+ "biquintile",
130
+ "quincunx",
131
+ "opposition"
132
+ ]
133
+ """Literal type for all the available aspects names"""
@@ -4,8 +4,9 @@
4
4
  """
5
5
 
6
6
 
7
- from typing import Union, Optional
7
+ from typing import Union, Optional, TypedDict
8
8
  from pydantic import BaseModel
9
+ from kerykeion.kr_types.kr_literals import AspectName
9
10
 
10
11
  from kerykeion.kr_types import (
11
12
  AxialCusps,
@@ -196,3 +197,8 @@ class RelationshipScoreModel(SubscriptableBaseModel):
196
197
  is_destiny_sign: bool
197
198
  aspects: list[RelationshipScoreAspectModel]
198
199
  subjects: list[AstrologicalSubjectModel]
200
+
201
+
202
+ class ActiveAspect(TypedDict):
203
+ name: AspectName
204
+ orb: int
@@ -5,7 +5,7 @@
5
5
 
6
6
 
7
7
  from pydantic import Field
8
- from typing import List
8
+ from typing import List, Optional
9
9
  from kerykeion.kr_types.kr_models import SubscriptableBaseModel
10
10
 
11
11
 
@@ -17,10 +17,10 @@ class KerykeionSettingsCelestialPointModel(SubscriptableBaseModel):
17
17
  id: int = Field(title="Celestial Point ID", description="Celestial Point ID according to Pyswisseph")
18
18
  name: str = Field(title="Celestial Point Name", description="Celestial Point Name")
19
19
  color: str = Field(title="Celestial Point Color", description="Celestial Point Color, used in the chart")
20
- is_active: bool = Field(title="Celestial Point is Active", description="Indicates if the celestial point is active in the chart")
21
20
  element_points: int = Field(title="Celestial Point Element Points", description="Element Points given to the celestial point")
22
21
  related_zodiac_signs: List[int] = Field(title="Celestial Point Related Zodiac Signs", description="Zodiac Signs related to the celestial point")
23
22
  label: str = Field(title="Celestial Point Label", description="The name of the celestial point in the chart, it can be different from the name")
23
+ is_active: Optional[bool] = Field(title="Celestial Point is Active", description="Indicates if the celestial point is active in the chart", default=None)
24
24
 
25
25
 
26
26
  # Chart Colors Settings
@@ -78,7 +78,6 @@ class KerykeionSettingsAspectModel(SubscriptableBaseModel):
78
78
 
79
79
  degree: int = Field(title="Aspect Degrees", description="The degree of the aspect")
80
80
  name: str = Field(title="Aspect Name", description="The name of the aspect")
81
- is_active: bool = Field(title="Aspect is Active", description="Is the aspect active?")
82
81
  is_major: bool = Field(title="Aspect is Major", description="Is the aspect major?")
83
82
  orb: int = Field(title="Aspect Orb", description="The orb of the aspect")
84
83
  color: str = Field(title="Aspect Color", description="The color of the aspect")
@@ -0,0 +1,47 @@
1
+ from kerykeion.kr_types.kr_literals import Planet, AxialCusps, AspectName
2
+ from kerykeion.kr_types.kr_models import ActiveAspect
3
+ from typing import List, Union
4
+
5
+ DEFAULT_ACTIVE_POINTS: List[Union[Planet, AxialCusps]] = [
6
+ "Sun",
7
+ "Moon",
8
+ "Mercury",
9
+ "Venus",
10
+ "Mars",
11
+ "Jupiter",
12
+ "Saturn",
13
+ "Uranus",
14
+ "Neptune",
15
+ "Pluto",
16
+ "Mean_Node",
17
+ # "True_Node",
18
+ "Chiron",
19
+ "Ascendant",
20
+ "Medium_Coeli",
21
+ # "Descendant",
22
+ # "Imum_Coeli",
23
+ "Mean_Lilith",
24
+ "Mean_South_Node",
25
+ # "True_South_Node"
26
+ ]
27
+ """
28
+ Default list of active points in the charts or aspects calculations.
29
+ """
30
+
31
+ DEFAULT_ACTIVE_ASPECTS: List[ActiveAspect] = [
32
+ {"name": "conjunction", "orb": 10},
33
+ {"name": "opposition", "orb": 10},
34
+ {"name": "trine", "orb": 8},
35
+ {"name": "sextile", "orb": 6},
36
+ {"name": "square", "orb": 5},
37
+ {"name": "quintile", "orb": 1},
38
+ # {"name": "semi-sextile", "orb": 1},
39
+ # {"name": "semi-square", "orb": 1},
40
+ # {"name": "sesquiquadrate", "orb": 1},
41
+ # {"name": "biquintile", "orb": 1},
42
+ # {"name": "quincunx", "orb": 1},
43
+ ]
44
+ """
45
+ Default list of active aspects in the aspects calculations.
46
+ The full list of aspects is available in the `kr_types.kr_literals.AspectName` literal.
47
+ """
@@ -445,88 +445,77 @@
445
445
  {
446
446
  "degree": 0,
447
447
  "name": "conjunction",
448
- "is_active": 1,
449
- "is_major": 1,
448
+ "is_major": true,
450
449
  "orb": 10,
451
450
  "color": "var(--kerykeion-chart-color-conjunction)"
452
451
  },
453
452
  {
454
453
  "degree": 30,
455
454
  "name": "semi-sextile",
456
- "is_active": 0,
457
- "is_major": 0,
455
+ "is_major": false,
458
456
  "orb": 1,
459
457
  "color": "var(--kerykeion-chart-color-semi-sextile)"
460
458
  },
461
459
  {
462
460
  "degree": 45,
463
461
  "name": "semi-square",
464
- "is_active": 0,
465
- "is_major": 0,
462
+ "is_major": false,
466
463
  "orb": 1,
467
464
  "color": "var(--kerykeion-chart-color-semi-square)"
468
465
  },
469
466
  {
470
467
  "degree": 60,
471
468
  "name": "sextile",
472
- "is_active": 1,
473
- "is_major": 1,
469
+ "is_major": true,
474
470
  "orb": 6,
475
471
  "color": "var(--kerykeion-chart-color-sextile)"
476
472
  },
477
473
  {
478
474
  "degree": 72,
479
475
  "name": "quintile",
480
- "is_active": 1,
481
- "is_major": 0,
476
+ "is_major": false,
482
477
  "orb": 1,
483
478
  "color": "var(--kerykeion-chart-color-quintile)"
484
479
  },
485
480
  {
486
481
  "degree": 90,
487
482
  "name": "square",
488
- "is_active": 1,
489
- "is_major": 1,
483
+ "is_major": true,
490
484
  "orb": 5,
491
485
  "color": "var(--kerykeion-chart-color-square)"
492
486
  },
493
487
  {
494
488
  "degree": 120,
495
489
  "name": "trine",
496
- "is_active": 1,
497
- "is_major": 1,
490
+ "is_major": true,
498
491
  "orb": 8,
499
492
  "color": "var(--kerykeion-chart-color-trine)"
500
493
  },
501
494
  {
502
495
  "degree": 135,
503
496
  "name": "sesquiquadrate",
504
- "is_active": 0,
505
- "is_major": 0,
497
+ "is_major": false,
506
498
  "orb": 1,
507
499
  "color": "var(--kerykeion-chart-color-sesquiquadrate)"
508
500
  },
509
501
  {
510
502
  "degree": 144,
511
503
  "name": "biquintile",
512
- "is_active": 0,
513
- "is_major": 0,
504
+ "is_major": false,
514
505
  "orb": 1,
515
506
  "color": "var(--kerykeion-chart-color-biquintile)"
516
507
  },
517
508
  {
518
509
  "degree": 150,
519
510
  "name": "quincunx",
520
- "is_active": 0,
521
- "is_major": 0,
511
+ "is_major": false,
522
512
  "orb": 1,
523
513
  "color": "var(--kerykeion-chart-color-quincunx)"
524
514
  },
525
515
  {
526
516
  "degree": 180,
527
517
  "name": "opposition",
528
- "is_active": 1,
529
- "is_major": 1,
518
+ "is_major": true,
530
519
  "orb": 10,
531
520
  "color": "var(--kerykeion-chart-color-opposition)"
532
521
  }
@@ -536,7 +525,6 @@
536
525
  "id": 0,
537
526
  "name": "Sun",
538
527
  "color": "var(--kerykeion-chart-color-sun)",
539
- "is_active": true,
540
528
  "element_points": 40,
541
529
  "related_zodiac_signs": ["4"],
542
530
  "label": "Sun"
@@ -545,7 +533,6 @@
545
533
  "id": 1,
546
534
  "name": "Moon",
547
535
  "color": "var(--kerykeion-chart-color-moon)",
548
- "is_active": true,
549
536
  "element_points": 40,
550
537
  "related_zodiac_signs": ["3"],
551
538
  "label": "Moon"
@@ -554,7 +541,6 @@
554
541
  "id": 2,
555
542
  "name": "Mercury",
556
543
  "color": "var(--kerykeion-chart-color-mercury)",
557
- "is_active": true,
558
544
  "element_points": 15,
559
545
  "related_zodiac_signs": ["2", "5"],
560
546
  "label": "Mercury"
@@ -563,7 +549,6 @@
563
549
  "id": 3,
564
550
  "name": "Venus",
565
551
  "color": "var(--kerykeion-chart-color-venus)",
566
- "is_active": true,
567
552
  "element_points": 15,
568
553
  "related_zodiac_signs": ["1", "6"],
569
554
  "label": "Venus"
@@ -572,7 +557,6 @@
572
557
  "id": 4,
573
558
  "name": "Mars",
574
559
  "color": "var(--kerykeion-chart-color-mars)",
575
- "is_active": true,
576
560
  "element_points": 15,
577
561
  "related_zodiac_signs": ["0"],
578
562
  "label": "Mars"
@@ -581,7 +565,6 @@
581
565
  "id": 5,
582
566
  "name": "Jupiter",
583
567
  "color": "var(--kerykeion-chart-color-jupiter)",
584
- "is_active": true,
585
568
  "element_points": 10,
586
569
  "related_zodiac_signs": ["8"],
587
570
  "label": "Jupiter"
@@ -590,7 +573,6 @@
590
573
  "id": 6,
591
574
  "name": "Saturn",
592
575
  "color": "var(--kerykeion-chart-color-saturn)",
593
- "is_active": true,
594
576
  "element_points": 10,
595
577
  "related_zodiac_signs": ["9"],
596
578
  "label": "Saturn"
@@ -599,7 +581,6 @@
599
581
  "id": 7,
600
582
  "name": "Uranus",
601
583
  "color": "var(--kerykeion-chart-color-uranus)",
602
- "is_active": true,
603
584
  "element_points": 10,
604
585
  "related_zodiac_signs": ["10"],
605
586
  "label": "Uranus"
@@ -608,7 +589,6 @@
608
589
  "id": 8,
609
590
  "name": "Neptune",
610
591
  "color": "var(--kerykeion-chart-color-neptune)",
611
- "is_active": true,
612
592
  "element_points": 10,
613
593
  "related_zodiac_signs": ["11"],
614
594
  "label": "Neptune"
@@ -617,7 +597,6 @@
617
597
  "id": 9,
618
598
  "name": "Pluto",
619
599
  "color": "var(--kerykeion-chart-color-pluto)",
620
- "is_active": true,
621
600
  "element_points": 10,
622
601
  "related_zodiac_signs": ["7"],
623
602
  "label": "Pluto"
@@ -626,7 +605,6 @@
626
605
  "id": 10,
627
606
  "name": "Mean_Node",
628
607
  "color": "var(--kerykeion-chart-color-mean-node)",
629
- "is_active": true,
630
608
  "element_points": 0,
631
609
  "related_zodiac_signs": [],
632
610
  "label": "Mean_Node"
@@ -635,7 +613,6 @@
635
613
  "id": 11,
636
614
  "name": "True_Node",
637
615
  "color": "var(--kerykeion-chart-color-true-node)",
638
- "is_active": false,
639
616
  "element_points": 0,
640
617
  "related_zodiac_signs": [],
641
618
  "label": "True_Node"
@@ -644,7 +621,6 @@
644
621
  "id": 12,
645
622
  "name": "Chiron",
646
623
  "color": "var(--kerykeion-chart-color-chiron)",
647
- "is_active": true,
648
624
  "element_points": 0,
649
625
  "related_zodiac_signs": [],
650
626
  "label": "Chiron"
@@ -653,7 +629,6 @@
653
629
  "id": 13,
654
630
  "name": "Ascendant",
655
631
  "color": "var(--kerykeion-chart-color-first-house)",
656
- "is_active": true,
657
632
  "element_points": 40,
658
633
  "related_zodiac_signs": [],
659
634
  "label": "Asc"
@@ -662,7 +637,6 @@
662
637
  "id": 14,
663
638
  "name": "Medium_Coeli",
664
639
  "color": "var(--kerykeion-chart-color-tenth-house)",
665
- "is_active": true,
666
640
  "element_points": 20,
667
641
  "related_zodiac_signs": [],
668
642
  "label": "Mc"
@@ -671,7 +645,6 @@
671
645
  "id": 15,
672
646
  "name": "Descendant",
673
647
  "color": "var(--kerykeion-chart-color-seventh-house)",
674
- "is_active": false,
675
648
  "element_points": 0,
676
649
  "related_zodiac_signs": [],
677
650
  "label": "Dsc"
@@ -680,7 +653,6 @@
680
653
  "id": 16,
681
654
  "name": "Imum_Coeli",
682
655
  "color": "var(--kerykeion-chart-color-fourth-house)",
683
- "is_active": false,
684
656
  "element_points": 0,
685
657
  "related_zodiac_signs": [],
686
658
  "label": "Ic"
@@ -689,7 +661,6 @@
689
661
  "id": 17,
690
662
  "name": "Mean_Lilith",
691
663
  "color": "var(--kerykeion-chart-color-mean-lilith)",
692
- "is_active": true,
693
664
  "element_points": 0,
694
665
  "related_zodiac_signs": [],
695
666
  "label": "Mean_Lilith"
@@ -698,7 +669,6 @@
698
669
  "id": 18,
699
670
  "name": "Mean_South_Node",
700
671
  "color": "var(--kerykeion-chart-color-mean-node)",
701
- "is_active": true,
702
672
  "element_points": 0,
703
673
  "related_zodiac_signs": [],
704
674
  "label": "Mean_South_Node"
@@ -707,7 +677,6 @@
707
677
  "id": 19,
708
678
  "name": "True_South_Node",
709
679
  "color": "var(--kerykeion-chart-color-true-node)",
710
- "is_active": false,
711
680
  "element_points": 0,
712
681
  "related_zodiac_signs": [],
713
682
  "label": "True_South_Node"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kerykeion
3
- Version: 4.22.0rc1
3
+ Version: 4.24.0
4
4
  Summary: A python library for astrology.
5
5
  Home-page: https://www.kerykeion.net/
6
6
  License: AGPL-3.0
@@ -19,6 +19,7 @@ Classifier: Programming Language :: Python :: 3.9
19
19
  Classifier: Programming Language :: Python :: 3.10
20
20
  Classifier: Programming Language :: Python :: 3.11
21
21
  Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
22
23
  Classifier: Programming Language :: Python :: 3 :: Only
23
24
  Classifier: Topic :: Scientific/Engineering :: Astronomy
24
25
  Classifier: Topic :: Software Development
@@ -1,14 +1,14 @@
1
1
  LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
2
2
  kerykeion/__init__.py,sha256=XtKNBNSVsQ-PAbnJfNUcw-femdF4NgQqohMtM0cRH18,639
3
3
  kerykeion/aspects/__init__.py,sha256=9kx_Rx1NJx5SM7nDCSbI79S1neZ3c-q2NvQr-S6A9PY,292
4
- kerykeion/aspects/aspects_utils.py,sha256=XyjQvvdrN6-L8QqpecV-mCG9Wb8I9G0S1ZvzXIsQSCk,2977
5
- kerykeion/aspects/natal_aspects.py,sha256=zTB5wIp0B3XdqtM5ktWpD2rw8ITTlR2wpXBOdPwSZmI,6048
6
- kerykeion/aspects/synastry_aspects.py,sha256=HtXSVPkiDQmbkqnI7k9IOhCgON59VZXjflqWJdugwyI,4327
4
+ kerykeion/aspects/aspects_utils.py,sha256=gqBtQZHbziHd3LVRNc0pJ07UJMjBGm2_p4nMea3ziZM,3125
5
+ kerykeion/aspects/natal_aspects.py,sha256=GCFCjXzOF_9kuMx-jjbI_OwJXOxcrgp7JZ3Lp2-5yY4,6402
6
+ kerykeion/aspects/synastry_aspects.py,sha256=819RVZuXmRIta1HkHxLiVCU1nJvpbHm-ar96aITJmlU,4780
7
7
  kerykeion/astrological_subject.py,sha256=OWBpAKP0aavvqNWg_c1dTbGVkd6BM7XMzgIMOVo683A,39157
8
8
  kerykeion/charts/__init__.py,sha256=i9NMZ7LdkllPlqQSi1or9gTobHbROGDKmJhBDO4R0mA,128
9
- kerykeion/charts/charts_utils.py,sha256=HjCmBa9TCoAmH5Z20W8BRnQICN3qZOjQcSQ20sLLz7M,41965
9
+ kerykeion/charts/charts_utils.py,sha256=_dv24QSsTps2wNXJLJ0YEhoQhrTucF8vUCIlmwhZYG8,42021
10
10
  kerykeion/charts/draw_planets.py,sha256=Uty3zpWYMQZvvK7ZHhlmynCHeL8DIN3qL2ifnBXVciM,17393
11
- kerykeion/charts/kerykeion_chart_svg.py,sha256=i11TB6mtsn9Sjos1G0rwby2O0LXUB5lyji3VdAviHXw,43895
11
+ kerykeion/charts/kerykeion_chart_svg.py,sha256=LnkdhnLXJ-rVKQVnDnHKpz8E-p41bxXEbpHodDDwUm8,45638
12
12
  kerykeion/charts/templates/aspect_grid_only.xml,sha256=ZiBVeToVmCA8QxYlB_cfnsAO1NNeQAnJ_6rIYkr4F58,70091
13
13
  kerykeion/charts/templates/chart.xml,sha256=rUO7kL3z1RZuFjFBwA88xIF2KQFuGOcHQ5Kcw-K4hLY,73761
14
14
  kerykeion/charts/templates/wheel_only.xml,sha256=E0JCxcnjTjxuaomw7PQEc_3xRVErj1y2hIOGTrShuhc,71304
@@ -22,21 +22,22 @@ kerykeion/fetch_geonames.py,sha256=e66Nh6yq9A4VjnuvVSiV1TW1IkJ9m3Q2LKPWrkOGgO0,4
22
22
  kerykeion/kr_types/__init__.py,sha256=jshJOccCQcYZuoOvrILRZH6imy4RBvKpFPujlNLFyGE,295
23
23
  kerykeion/kr_types/chart_types.py,sha256=OlDvjCra7acaBT--B_gqsqOcAwbuKCXmQQyDTDNfy4o,1983
24
24
  kerykeion/kr_types/kerykeion_exception.py,sha256=kE1y0K0rmuz32b4K_ZppSsZ59I2Get0ZkvOkTE5HejI,314
25
- kerykeion/kr_types/kr_literals.py,sha256=hnbKFC0Wu_ee1VjpXd1GJaE_tC6ALjhbuo7PEW51yQc,3766
26
- kerykeion/kr_types/kr_models.py,sha256=53VnGY8ie35crNemMusf8iasACHRrM1ZVc0kuZggCes,4593
27
- kerykeion/kr_types/settings_models.py,sha256=VJ9rt4WzO4xTQRxFrX-9da44-SE2V0v2AH4CI4ygJc4,11894
25
+ kerykeion/kr_types/kr_literals.py,sha256=UDTgG6Hoe2378WzLpobCpYy1gLcHulbiamP8l3_GgFw,4225
26
+ kerykeion/kr_types/kr_models.py,sha256=Sv8dO1iplaUXGDo9RErCO3ziB90Ed7--cs2Rr1L7jH8,4725
27
+ kerykeion/kr_types/settings_models.py,sha256=BdeFIPc_adBSqEf-MTowPzQZUHR13B0Guv3_Lm58qLw,11837
28
28
  kerykeion/relationship_score/__init__.py,sha256=cLaEBQXQBfyRkv0OaS3ceLROzvWcvKXWiRq0PS6LDjY,114
29
29
  kerykeion/relationship_score/relationship_score.py,sha256=lJkSbHw9nOUaPMrPxqcGhnVQIwAgI52K8BQzXXswb6A,6504
30
30
  kerykeion/relationship_score/relationship_score_factory.py,sha256=P_swvpip5luODeByv_qaP1c5IpUqWTqSlEumDJjal7I,10861
31
31
  kerykeion/report.py,sha256=snqnrJzb89q2ixL74qS9ksvzNSh_WXtZ_haBOIvHYeY,2814
32
32
  kerykeion/settings/__init__.py,sha256=QQNFCl7sgN27MKaVscqtpPk10HGz4wZS3I_7KEGMaVA,69
33
+ kerykeion/settings/config_constants.py,sha256=OUi28L2l8s09Df3GHiQUiBZuTjOdfL4A5zSRNqBRHc8,1255
33
34
  kerykeion/settings/kerykeion_settings.py,sha256=WZyiC4uwpjnTmoDGWORYLIk9rIpJ3EuLdjFw6eUuylo,2554
34
- kerykeion/settings/kr.config.json,sha256=TbHMfGX0hXgjLS92RmScjhL1Qq8CUcdyXp1IJVVrJrc,21998
35
+ kerykeion/settings/kr.config.json,sha256=kd45JTd8F-PSXnjNH3_XJIqFtMpaTuJpTMkqDQwhEtk,21291
35
36
  kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
36
37
  kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
37
38
  kerykeion/utilities.py,sha256=vuEDWs5Htl2zi6_3flLvlAsFC9YT9LaOQDpRirFf3Cg,11160
38
- kerykeion-4.22.0rc1.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
39
- kerykeion-4.22.0rc1.dist-info/METADATA,sha256=7YXawskC_TcrsyUylv0SMbBxz9BGTtcB9tvx0P1p030,17623
40
- kerykeion-4.22.0rc1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
41
- kerykeion-4.22.0rc1.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
42
- kerykeion-4.22.0rc1.dist-info/RECORD,,
39
+ kerykeion-4.24.0.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
40
+ kerykeion-4.24.0.dist-info/METADATA,sha256=XoYG3A-Tk8aQZ2ZDRDmVG6MQ85CPskcRH7p8ZK3Bdbw,17671
41
+ kerykeion-4.24.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
42
+ kerykeion-4.24.0.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
43
+ kerykeion-4.24.0.dist-info/RECORD,,
@@ -1,4 +1,4 @@
1
1
  Wheel-Version: 1.0
2
- Generator: poetry-core 1.9.0
2
+ Generator: poetry-core 1.9.1
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any