kerykeion 4.22.0__tar.gz → 4.23.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of kerykeion might be problematic. Click here for more details.

Files changed (41) hide show
  1. {kerykeion-4.22.0 → kerykeion-4.23.0}/PKG-INFO +1 -1
  2. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/aspects/aspects_utils.py +3 -2
  3. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/aspects/natal_aspects.py +8 -3
  4. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/aspects/synastry_aspects.py +6 -2
  5. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/kerykeion_chart_svg.py +10 -5
  6. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/kr_types/settings_models.py +2 -2
  7. kerykeion-4.23.0/kerykeion/settings/config_constants.py +28 -0
  8. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/settings/kr.config.json +0 -20
  9. {kerykeion-4.22.0 → kerykeion-4.23.0}/pyproject.toml +1 -1
  10. {kerykeion-4.22.0 → kerykeion-4.23.0}/LICENSE +0 -0
  11. {kerykeion-4.22.0 → kerykeion-4.23.0}/README.md +0 -0
  12. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/__init__.py +0 -0
  13. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/aspects/__init__.py +0 -0
  14. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/astrological_subject.py +0 -0
  15. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/__init__.py +0 -0
  16. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/charts_utils.py +0 -0
  17. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/draw_planets.py +0 -0
  18. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/templates/aspect_grid_only.xml +0 -0
  19. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/templates/chart.xml +0 -0
  20. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/templates/wheel_only.xml +0 -0
  21. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/themes/classic.css +0 -0
  22. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/themes/dark-high-contrast.css +0 -0
  23. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/themes/dark.css +0 -0
  24. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/charts/themes/light.css +0 -0
  25. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/enums.py +0 -0
  26. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/ephemeris_data.py +0 -0
  27. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/fetch_geonames.py +0 -0
  28. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/kr_types/__init__.py +0 -0
  29. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/kr_types/chart_types.py +0 -0
  30. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/kr_types/kerykeion_exception.py +0 -0
  31. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/kr_types/kr_literals.py +0 -0
  32. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/kr_types/kr_models.py +0 -0
  33. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/relationship_score/__init__.py +0 -0
  34. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/relationship_score/relationship_score.py +0 -0
  35. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/relationship_score/relationship_score_factory.py +0 -0
  36. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/report.py +0 -0
  37. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/settings/__init__.py +0 -0
  38. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/settings/kerykeion_settings.py +0 -0
  39. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/sweph/README.md +0 -0
  40. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/sweph/seas_18.se1 +0 -0
  41. {kerykeion-4.22.0 → kerykeion-4.23.0}/kerykeion/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kerykeion
3
- Version: 4.22.0
3
+ Version: 4.23.0
4
4
  Summary: A python library for astrology.
5
5
  Home-page: https://www.kerykeion.net/
6
6
  License: AGPL-3.0
@@ -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
 
@@ -72,7 +73,7 @@ def planet_id_decoder(planets_settings: list[KerykeionSettingsCelestialPointMode
72
73
 
73
74
 
74
75
  def get_active_points_list(
75
- subject: Union[AstrologicalSubject, AstrologicalSubjectModel], settings: Union[KerykeionSettingsModel, dict]
76
+ subject: Union[AstrologicalSubject, AstrologicalSubjectModel], settings: Union[KerykeionSettingsModel, dict], active_points: list = []
76
77
  ) -> list:
77
78
  """
78
79
  Given an astrological subject and the settings, return a list of the active points.
@@ -85,7 +86,7 @@ def get_active_points_list(
85
86
  """
86
87
  point_list = []
87
88
  for planet in settings["celestial_points"]:
88
- if planet["is_active"] == True:
89
+ if planet["name"] in active_points:
89
90
  point_list.append(subject[planet["name"].lower()])
90
91
 
91
92
  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
14
  from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel
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
18
+
16
19
 
17
20
 
18
21
  AXES_LIST = [
@@ -31,6 +34,7 @@ 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)
34
38
 
35
39
  def __post_init__(self):
36
40
  self.settings = get_settings(self.new_settings_file)
@@ -38,6 +42,7 @@ class 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 = self.active_points
41
46
 
42
47
  @cached_property
43
48
  def all_aspects(self):
@@ -47,7 +52,7 @@ class NatalAspects:
47
52
  without repetitions.
48
53
  """
49
54
 
50
- active_points_list = get_active_points_list(self.user, self.settings)
55
+ active_points_list = get_active_points_list(self.user, self.settings, self.active_points)
51
56
 
52
57
  self.all_aspects_list = []
53
58
 
@@ -13,6 +13,8 @@ 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
14
  from kerykeion.kr_types.kr_models import AstrologicalSubjectModel, AspectModel
15
15
  from kerykeion.kr_types.settings_models import KerykeionSettingsModel
16
+ from kerykeion.settings.config_constants import DEFAULT_ACTIVE_POINTS
17
+ from kerykeion.kr_types.kr_literals import AxialCusps, Planet
16
18
  from typing import Union
17
19
 
18
20
 
@@ -26,6 +28,7 @@ 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,
29
32
  ):
30
33
  # Subjects
31
34
  self.first_user = kr_object_one
@@ -38,6 +41,7 @@ class SynastryAspects(NatalAspects):
38
41
  self.celestial_points = self.settings.celestial_points
39
42
  self.aspects_settings = self.settings.aspects
40
43
  self.axes_orbit_settings = self.settings.general_settings.axes_orbit
44
+ self.active_points = active_points
41
45
 
42
46
  # Private variables of the aspects
43
47
  self._all_aspects: Union[list, None] = None
@@ -55,8 +59,8 @@ class SynastryAspects(NatalAspects):
55
59
  return self._all_aspects
56
60
 
57
61
  # 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)
62
+ first_active_points_list = get_active_points_list(self.first_user, self.settings, self.active_points)
63
+ second_active_points_list = get_active_points_list(self.second_user, self.settings, self.active_points)
60
64
 
61
65
  self.all_aspects_list = []
62
66
 
@@ -16,7 +16,7 @@ from kerykeion.kr_types import KerykeionException, ChartType, KerykeionPointMode
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
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,8 @@ 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"]
65
67
  """
66
68
 
67
69
  # Constants
@@ -114,6 +116,7 @@ class KerykeionChartSVG:
114
116
  theme: Union[KerykeionChartTheme, None] = "classic",
115
117
  double_chart_aspect_grid_type: Literal["list", "table"] = "list",
116
118
  chart_language: KerykeionChartLanguage = "EN",
119
+ active_points: List[Union[Planet, AxialCusps]] = DEFAULT_ACTIVE_POINTS,
117
120
  ):
118
121
  # Directories:
119
122
  home_directory = Path.home()
@@ -133,8 +136,10 @@ class KerykeionChartSVG:
133
136
 
134
137
  self.available_planets_setting = []
135
138
  for body in self.planets_settings:
136
- if body['is_active'] == False:
139
+ if body["name"] not in active_points:
137
140
  continue
141
+ else:
142
+ body["is_active"] = True
138
143
 
139
144
  self.available_planets_setting.append(body)
140
145
 
@@ -149,7 +154,7 @@ class KerykeionChartSVG:
149
154
 
150
155
  # Makes the sign number list.
151
156
  if self.chart_type == "Natal" or self.chart_type == "ExternalNatal":
152
- natal_aspects_instance = NatalAspects(self.user, new_settings_file=self.new_settings_file)
157
+ natal_aspects_instance = NatalAspects(self.user, new_settings_file=self.new_settings_file, active_points=active_points)
153
158
  self.aspects_list = natal_aspects_instance.relevant_aspects
154
159
 
155
160
  if self.chart_type == "Transit" or self.chart_type == "Synastry":
@@ -160,7 +165,7 @@ class KerykeionChartSVG:
160
165
  self.t_user = second_obj
161
166
 
162
167
  # Aspects
163
- self.aspects_list = SynastryAspects(self.user, self.t_user, new_settings_file=self.new_settings_file).relevant_aspects
168
+ self.aspects_list = SynastryAspects(self.user, self.t_user, new_settings_file=self.new_settings_file, active_points=active_points).relevant_aspects
164
169
 
165
170
  self.t_available_kerykeion_celestial_points = []
166
171
  for body in available_celestial_points_names:
@@ -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
@@ -0,0 +1,28 @@
1
+ from kerykeion.kr_types.kr_literals import Planet, AxialCusps
2
+ from typing import List, Union
3
+
4
+ DEFAULT_ACTIVE_POINTS: List[Union[Planet, AxialCusps]] = [
5
+ "Sun",
6
+ "Moon",
7
+ "Mercury",
8
+ "Venus",
9
+ "Mars",
10
+ "Jupiter",
11
+ "Saturn",
12
+ "Uranus",
13
+ "Neptune",
14
+ "Pluto",
15
+ "Mean_Node",
16
+ # "True_Node",
17
+ "Chiron",
18
+ "Ascendant",
19
+ "Medium_Coeli",
20
+ # "Descendant",
21
+ # "Imum_Coeli",
22
+ "Mean_Lilith",
23
+ "Mean_South_Node",
24
+ # "True_South_Node"
25
+ ]
26
+ """
27
+ Default list of active points in the charts or aspects calculations.
28
+ """
@@ -536,7 +536,6 @@
536
536
  "id": 0,
537
537
  "name": "Sun",
538
538
  "color": "var(--kerykeion-chart-color-sun)",
539
- "is_active": true,
540
539
  "element_points": 40,
541
540
  "related_zodiac_signs": ["4"],
542
541
  "label": "Sun"
@@ -545,7 +544,6 @@
545
544
  "id": 1,
546
545
  "name": "Moon",
547
546
  "color": "var(--kerykeion-chart-color-moon)",
548
- "is_active": true,
549
547
  "element_points": 40,
550
548
  "related_zodiac_signs": ["3"],
551
549
  "label": "Moon"
@@ -554,7 +552,6 @@
554
552
  "id": 2,
555
553
  "name": "Mercury",
556
554
  "color": "var(--kerykeion-chart-color-mercury)",
557
- "is_active": true,
558
555
  "element_points": 15,
559
556
  "related_zodiac_signs": ["2", "5"],
560
557
  "label": "Mercury"
@@ -563,7 +560,6 @@
563
560
  "id": 3,
564
561
  "name": "Venus",
565
562
  "color": "var(--kerykeion-chart-color-venus)",
566
- "is_active": true,
567
563
  "element_points": 15,
568
564
  "related_zodiac_signs": ["1", "6"],
569
565
  "label": "Venus"
@@ -572,7 +568,6 @@
572
568
  "id": 4,
573
569
  "name": "Mars",
574
570
  "color": "var(--kerykeion-chart-color-mars)",
575
- "is_active": true,
576
571
  "element_points": 15,
577
572
  "related_zodiac_signs": ["0"],
578
573
  "label": "Mars"
@@ -581,7 +576,6 @@
581
576
  "id": 5,
582
577
  "name": "Jupiter",
583
578
  "color": "var(--kerykeion-chart-color-jupiter)",
584
- "is_active": true,
585
579
  "element_points": 10,
586
580
  "related_zodiac_signs": ["8"],
587
581
  "label": "Jupiter"
@@ -590,7 +584,6 @@
590
584
  "id": 6,
591
585
  "name": "Saturn",
592
586
  "color": "var(--kerykeion-chart-color-saturn)",
593
- "is_active": true,
594
587
  "element_points": 10,
595
588
  "related_zodiac_signs": ["9"],
596
589
  "label": "Saturn"
@@ -599,7 +592,6 @@
599
592
  "id": 7,
600
593
  "name": "Uranus",
601
594
  "color": "var(--kerykeion-chart-color-uranus)",
602
- "is_active": true,
603
595
  "element_points": 10,
604
596
  "related_zodiac_signs": ["10"],
605
597
  "label": "Uranus"
@@ -608,7 +600,6 @@
608
600
  "id": 8,
609
601
  "name": "Neptune",
610
602
  "color": "var(--kerykeion-chart-color-neptune)",
611
- "is_active": true,
612
603
  "element_points": 10,
613
604
  "related_zodiac_signs": ["11"],
614
605
  "label": "Neptune"
@@ -617,7 +608,6 @@
617
608
  "id": 9,
618
609
  "name": "Pluto",
619
610
  "color": "var(--kerykeion-chart-color-pluto)",
620
- "is_active": true,
621
611
  "element_points": 10,
622
612
  "related_zodiac_signs": ["7"],
623
613
  "label": "Pluto"
@@ -626,7 +616,6 @@
626
616
  "id": 10,
627
617
  "name": "Mean_Node",
628
618
  "color": "var(--kerykeion-chart-color-mean-node)",
629
- "is_active": true,
630
619
  "element_points": 0,
631
620
  "related_zodiac_signs": [],
632
621
  "label": "Mean_Node"
@@ -635,7 +624,6 @@
635
624
  "id": 11,
636
625
  "name": "True_Node",
637
626
  "color": "var(--kerykeion-chart-color-true-node)",
638
- "is_active": false,
639
627
  "element_points": 0,
640
628
  "related_zodiac_signs": [],
641
629
  "label": "True_Node"
@@ -644,7 +632,6 @@
644
632
  "id": 12,
645
633
  "name": "Chiron",
646
634
  "color": "var(--kerykeion-chart-color-chiron)",
647
- "is_active": true,
648
635
  "element_points": 0,
649
636
  "related_zodiac_signs": [],
650
637
  "label": "Chiron"
@@ -653,7 +640,6 @@
653
640
  "id": 13,
654
641
  "name": "Ascendant",
655
642
  "color": "var(--kerykeion-chart-color-first-house)",
656
- "is_active": true,
657
643
  "element_points": 40,
658
644
  "related_zodiac_signs": [],
659
645
  "label": "Asc"
@@ -662,7 +648,6 @@
662
648
  "id": 14,
663
649
  "name": "Medium_Coeli",
664
650
  "color": "var(--kerykeion-chart-color-tenth-house)",
665
- "is_active": true,
666
651
  "element_points": 20,
667
652
  "related_zodiac_signs": [],
668
653
  "label": "Mc"
@@ -671,7 +656,6 @@
671
656
  "id": 15,
672
657
  "name": "Descendant",
673
658
  "color": "var(--kerykeion-chart-color-seventh-house)",
674
- "is_active": false,
675
659
  "element_points": 0,
676
660
  "related_zodiac_signs": [],
677
661
  "label": "Dsc"
@@ -680,7 +664,6 @@
680
664
  "id": 16,
681
665
  "name": "Imum_Coeli",
682
666
  "color": "var(--kerykeion-chart-color-fourth-house)",
683
- "is_active": false,
684
667
  "element_points": 0,
685
668
  "related_zodiac_signs": [],
686
669
  "label": "Ic"
@@ -689,7 +672,6 @@
689
672
  "id": 17,
690
673
  "name": "Mean_Lilith",
691
674
  "color": "var(--kerykeion-chart-color-mean-lilith)",
692
- "is_active": true,
693
675
  "element_points": 0,
694
676
  "related_zodiac_signs": [],
695
677
  "label": "Mean_Lilith"
@@ -698,7 +680,6 @@
698
680
  "id": 18,
699
681
  "name": "Mean_South_Node",
700
682
  "color": "var(--kerykeion-chart-color-mean-node)",
701
- "is_active": true,
702
683
  "element_points": 0,
703
684
  "related_zodiac_signs": [],
704
685
  "label": "Mean_South_Node"
@@ -707,7 +688,6 @@
707
688
  "id": 19,
708
689
  "name": "True_South_Node",
709
690
  "color": "var(--kerykeion-chart-color-true-node)",
710
- "is_active": false,
711
691
  "element_points": 0,
712
692
  "related_zodiac_signs": [],
713
693
  "label": "True_South_Node"
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "kerykeion"
3
- version = "4.22.0"
3
+ version = "4.23.0"
4
4
  authors = ["Giacomo Battaglia <kerykeion.astrology@gmail.com>"]
5
5
  description = "A python library for astrology."
6
6
  license = "AGPL-3.0"
File without changes
File without changes