kerykeion 4.25.2__tar.gz → 4.25.3__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.
- {kerykeion-4.25.2 → kerykeion-4.25.3}/PKG-INFO +8 -7
- {kerykeion-4.25.2 → kerykeion-4.25.3}/README.md +7 -6
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/composite_subject_factory.py +12 -6
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/utilities.py +50 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/pyproject.toml +1 -1
- {kerykeion-4.25.2 → kerykeion-4.25.3}/LICENSE +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/__init__.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/aspects/__init__.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/aspects/aspects_utils.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/aspects/natal_aspects.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/aspects/synastry_aspects.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/astrological_subject.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/__init__.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/charts_utils.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/draw_planets.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/kerykeion_chart_svg.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/templates/aspect_grid_only.xml +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/templates/chart.xml +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/templates/wheel_only.xml +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/themes/classic.css +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/themes/dark-high-contrast.css +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/themes/dark.css +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/charts/themes/light.css +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/enums.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/ephemeris_data.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/fetch_geonames.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/kr_types/__init__.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/kr_types/chart_types.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/kr_types/kerykeion_exception.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/kr_types/kr_literals.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/kr_types/kr_models.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/kr_types/settings_models.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/relationship_score/__init__.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/relationship_score/relationship_score.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/relationship_score/relationship_score_factory.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/report.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/settings/__init__.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/settings/config_constants.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/settings/kerykeion_settings.py +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/settings/kr.config.json +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/sweph/README.md +0 -0
- {kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/sweph/seas_18.se1 +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: kerykeion
|
|
3
|
-
Version: 4.25.
|
|
3
|
+
Version: 4.25.3
|
|
4
4
|
Summary: A python library for astrology.
|
|
5
5
|
Home-page: https://www.kerykeion.net/
|
|
6
6
|
License: AGPL-3.0
|
|
@@ -39,15 +39,16 @@ Description-Content-Type: text/markdown
|
|
|
39
39
|
|
|
40
40
|
<h1 align=center>Kerykeion</h1>
|
|
41
41
|
<div align="center">
|
|
42
|
-
<img src="https://img.shields.io/github/contributors/g-battaglia/kerykeion?color=blue&logo=github" alt="contributors">
|
|
43
42
|
<img src="https://img.shields.io/github/stars/g-battaglia/kerykeion.svg?logo=github" alt="stars">
|
|
44
43
|
<img src="https://img.shields.io/github/forks/g-battaglia/kerykeion.svg?logo=github" alt="forks">
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
|
|
45
|
+
</div>
|
|
46
|
+
<div align="center">
|
|
47
|
+
<img src="https://static.pepy.tech/badge/kerykeion/month" alt="PyPI Downloads">
|
|
48
|
+
<img src="https://static.pepy.tech/badge/kerykeion/week" alt="PyPI Downloads">
|
|
49
|
+
<img src="https://img.shields.io/github/contributors/g-battaglia/kerykeion?color=blue&logo=github" alt="contributors">
|
|
47
50
|
<img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
|
|
48
51
|
<img src="https://img.shields.io/pypi/pyversions/kerykeion.svg" alt="Supported Python versions">
|
|
49
|
-
<img src="https://img.shields.io/github/license/g-battaglia/kerykeion" alt="License">
|
|
50
|
-
|
|
51
52
|
</div>
|
|
52
53
|
|
|
53
54
|
|
|
@@ -183,7 +184,7 @@ transit_chart.makeSVG()
|
|
|
183
184
|
### Composite Chart
|
|
184
185
|
|
|
185
186
|
```python
|
|
186
|
-
from kerykeion import
|
|
187
|
+
from kerykeion import CompositeSubjectFactory, AstrologicalSubject, KerykeionChartSVG
|
|
187
188
|
|
|
188
189
|
angelina = AstrologicalSubject("Angelina Jolie", 1975, 6, 4, 9, 9, "Los Angeles", "US", lng=-118.15, lat=34.03, tz_str="America/Los_Angeles")
|
|
189
190
|
brad = AstrologicalSubject("Brad Pitt", 1963, 12, 18, 6, 31, "Shawnee", "US", lng=-96.56, lat=35.20, tz_str="America/Chicago")
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<h1 align=center>Kerykeion</h1>
|
|
2
2
|
<div align="center">
|
|
3
|
-
<img src="https://img.shields.io/github/contributors/g-battaglia/kerykeion?color=blue&logo=github" alt="contributors">
|
|
4
3
|
<img src="https://img.shields.io/github/stars/g-battaglia/kerykeion.svg?logo=github" alt="stars">
|
|
5
4
|
<img src="https://img.shields.io/github/forks/g-battaglia/kerykeion.svg?logo=github" alt="forks">
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
|
|
6
|
+
</div>
|
|
7
|
+
<div align="center">
|
|
8
|
+
<img src="https://static.pepy.tech/badge/kerykeion/month" alt="PyPI Downloads">
|
|
9
|
+
<img src="https://static.pepy.tech/badge/kerykeion/week" alt="PyPI Downloads">
|
|
10
|
+
<img src="https://img.shields.io/github/contributors/g-battaglia/kerykeion?color=blue&logo=github" alt="contributors">
|
|
8
11
|
<img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
|
|
9
12
|
<img src="https://img.shields.io/pypi/pyversions/kerykeion.svg" alt="Supported Python versions">
|
|
10
|
-
<img src="https://img.shields.io/github/license/g-battaglia/kerykeion" alt="License">
|
|
11
|
-
|
|
12
13
|
</div>
|
|
13
14
|
|
|
14
15
|
|
|
@@ -144,7 +145,7 @@ transit_chart.makeSVG()
|
|
|
144
145
|
### Composite Chart
|
|
145
146
|
|
|
146
147
|
```python
|
|
147
|
-
from kerykeion import
|
|
148
|
+
from kerykeion import CompositeSubjectFactory, AstrologicalSubject, KerykeionChartSVG
|
|
148
149
|
|
|
149
150
|
angelina = AstrologicalSubject("Angelina Jolie", 1975, 6, 4, 9, 9, "Los Angeles", "US", lng=-118.15, lat=34.03, tz_str="America/Los_Angeles")
|
|
150
151
|
brad = AstrologicalSubject("Brad Pitt", 1963, 12, 18, 6, 31, "Shawnee", "US", lng=-96.56, lat=35.20, tz_str="America/Chicago")
|
|
@@ -8,7 +8,8 @@ from kerykeion.utilities import (
|
|
|
8
8
|
get_kerykeion_point_from_degree,
|
|
9
9
|
get_planet_house,
|
|
10
10
|
circular_mean,
|
|
11
|
-
calculate_moon_phase
|
|
11
|
+
calculate_moon_phase,
|
|
12
|
+
circular_sort
|
|
12
13
|
)
|
|
13
14
|
|
|
14
15
|
|
|
@@ -132,17 +133,22 @@ class CompositeSubjectFactory:
|
|
|
132
133
|
house_degree_list_ut = []
|
|
133
134
|
for house in self.first_subject.houses_names_list:
|
|
134
135
|
house_lower = house.lower()
|
|
135
|
-
|
|
136
|
+
house_degree_list_ut.append(
|
|
136
137
|
circular_mean(
|
|
137
138
|
self.first_subject[house_lower]["abs_pos"],
|
|
138
139
|
self.second_subject[house_lower]["abs_pos"]
|
|
139
|
-
)
|
|
140
|
-
|
|
140
|
+
)
|
|
141
|
+
)
|
|
142
|
+
house_degree_list_ut = circular_sort(house_degree_list_ut)
|
|
143
|
+
|
|
144
|
+
for house_index, house_name in enumerate(self.first_subject.houses_names_list):
|
|
145
|
+
house_lower = house_name.lower()
|
|
146
|
+
self[house_lower] = get_kerykeion_point_from_degree(
|
|
147
|
+
house_degree_list_ut[house_index],
|
|
148
|
+
house_name,
|
|
141
149
|
"House"
|
|
142
150
|
)
|
|
143
|
-
house_degree_list_ut.append(self[house_lower]["abs_pos"])
|
|
144
151
|
|
|
145
|
-
house_degree_list_ut = sorted(house_degree_list_ut)
|
|
146
152
|
|
|
147
153
|
# Planets
|
|
148
154
|
common_planets = []
|
|
@@ -390,3 +390,53 @@ def calculate_moon_phase(moon_abs_pos: float, sun_abs_pos: float) -> LunarPhaseM
|
|
|
390
390
|
}
|
|
391
391
|
|
|
392
392
|
return LunarPhaseModel(**lunar_phase_dictionary)
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
def circular_sort(degrees: list[Union[int, float]]) -> list[Union[int, float]]:
|
|
396
|
+
"""
|
|
397
|
+
Sort a list of degrees in a circular manner, starting from the first element
|
|
398
|
+
and progressing clockwise around the circle.
|
|
399
|
+
|
|
400
|
+
Args:
|
|
401
|
+
degrees: A list of numeric values representing degrees
|
|
402
|
+
|
|
403
|
+
Returns:
|
|
404
|
+
A list sorted based on circular clockwise progression from the first element
|
|
405
|
+
|
|
406
|
+
Raises:
|
|
407
|
+
ValueError: If the list is empty or contains non-numeric values
|
|
408
|
+
"""
|
|
409
|
+
# Input validation
|
|
410
|
+
if not degrees:
|
|
411
|
+
raise ValueError("Input list cannot be empty")
|
|
412
|
+
|
|
413
|
+
if not all(isinstance(degree, (int, float)) for degree in degrees):
|
|
414
|
+
invalid = next(d for d in degrees if not isinstance(d, (int, float)))
|
|
415
|
+
raise ValueError(f"All elements must be numeric, found: {invalid} of type {type(invalid).__name__}")
|
|
416
|
+
|
|
417
|
+
# If list has 0 or 1 element, return it as is
|
|
418
|
+
if len(degrees) <= 1:
|
|
419
|
+
return degrees.copy()
|
|
420
|
+
|
|
421
|
+
# Save the first element as the reference
|
|
422
|
+
reference = degrees[0]
|
|
423
|
+
|
|
424
|
+
# Define a function to calculate clockwise distance from reference
|
|
425
|
+
def clockwise_distance(angle: Union[int, float]) -> Union[int, float]:
|
|
426
|
+
# Normalize angles to 0-360 range
|
|
427
|
+
ref_norm = reference % 360
|
|
428
|
+
angle_norm = angle % 360
|
|
429
|
+
|
|
430
|
+
# Calculate clockwise distance
|
|
431
|
+
distance = angle_norm - ref_norm
|
|
432
|
+
if distance < 0:
|
|
433
|
+
distance += 360
|
|
434
|
+
|
|
435
|
+
return distance
|
|
436
|
+
|
|
437
|
+
# Sort the rest of the elements based on circular distance
|
|
438
|
+
remaining = degrees[1:]
|
|
439
|
+
sorted_remaining = sorted(remaining, key=clockwise_distance)
|
|
440
|
+
|
|
441
|
+
# Return the reference followed by the sorted remaining elements
|
|
442
|
+
return [reference] + sorted_remaining
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{kerykeion-4.25.2 → kerykeion-4.25.3}/kerykeion/relationship_score/relationship_score_factory.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|