kerykeion 4.1.0__py3-none-any.whl → 4.1.1__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.

@@ -0,0 +1,185 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ This is part of Kerykeion (C) 2023 Giacomo Battaglia
4
+ """
5
+ # TODO: Better documentation and unit tests
6
+
7
+ from swisseph import difdeg2n
8
+ from typing import Union
9
+
10
+
11
+ def get_aspect_from_two_points(aspects_settings: dict, point_one: Union[float, int], point_two: Union[float, int]):
12
+ """
13
+ Utility function.
14
+ It calculates the aspects between the 2 points.
15
+ Args: first point, second point.
16
+ """
17
+
18
+ distance = abs(difdeg2n(point_one, point_two))
19
+ diff = abs(point_one - point_two)
20
+
21
+ if int(distance) <= aspects_settings[0]["orb"]:
22
+ name = aspects_settings[0]["name"]
23
+ aspect_degrees = aspects_settings[0]["degree"]
24
+ color = aspects_settings[0]["color"]
25
+ verdict = True
26
+ aid = 0
27
+
28
+ elif (
29
+ (aspects_settings[1]["degree"] - aspects_settings[1]["orb"])
30
+ <= int(distance)
31
+ <= (aspects_settings[1]["degree"] + aspects_settings[1]["orb"])
32
+ ):
33
+ name = aspects_settings[1]["name"]
34
+ aspect_degrees = aspects_settings[1]["degree"]
35
+ color = aspects_settings[1]["color"]
36
+ verdict = True
37
+ aid = 1
38
+
39
+ elif (
40
+ (aspects_settings[2]["degree"] - aspects_settings[2]["orb"])
41
+ <= int(distance)
42
+ <= (aspects_settings[2]["degree"] + aspects_settings[2]["orb"])
43
+ ):
44
+ name = aspects_settings[2]["name"]
45
+ aspect_degrees = aspects_settings[2]["degree"]
46
+ color = aspects_settings[2]["color"]
47
+ verdict = True
48
+ aid = 2
49
+
50
+ elif (
51
+ (aspects_settings[3]["degree"] - aspects_settings[3]["orb"])
52
+ <= int(distance)
53
+ <= (aspects_settings[3]["degree"] + aspects_settings[3]["orb"])
54
+ ):
55
+ name = aspects_settings[3]["name"]
56
+ aspect_degrees = aspects_settings[3]["degree"]
57
+ color = aspects_settings[3]["color"]
58
+ verdict = True
59
+ aid = 3
60
+
61
+ elif (
62
+ (aspects_settings[4]["degree"] - aspects_settings[4]["orb"])
63
+ <= int(distance)
64
+ <= (aspects_settings[4]["degree"] + aspects_settings[4]["orb"])
65
+ ):
66
+ name = aspects_settings[4]["name"]
67
+ aspect_degrees = aspects_settings[4]["degree"]
68
+ color = aspects_settings[4]["color"]
69
+ verdict = True
70
+ aid = 4
71
+
72
+ elif (
73
+ (aspects_settings[5]["degree"] - aspects_settings[5]["orb"])
74
+ <= int(distance)
75
+ <= (aspects_settings[5]["degree"] + aspects_settings[5]["orb"])
76
+ ):
77
+ name = aspects_settings[5]["name"]
78
+ aspect_degrees = aspects_settings[5]["degree"]
79
+ color = aspects_settings[5]["color"]
80
+ verdict = True
81
+ aid = 5
82
+
83
+ elif (
84
+ (aspects_settings[6]["degree"] - aspects_settings[6]["orb"])
85
+ <= int(distance)
86
+ <= (aspects_settings[6]["degree"] + aspects_settings[6]["orb"])
87
+ ):
88
+ name = aspects_settings[6]["name"]
89
+ aspect_degrees = aspects_settings[6]["degree"]
90
+ color = aspects_settings[6]["color"]
91
+ verdict = True
92
+ aid = 6
93
+
94
+ elif (
95
+ (aspects_settings[7]["degree"] - aspects_settings[7]["orb"])
96
+ <= int(distance)
97
+ <= (aspects_settings[7]["degree"] + aspects_settings[7]["orb"])
98
+ ):
99
+ name = aspects_settings[7]["name"]
100
+ aspect_degrees = aspects_settings[7]["degree"]
101
+ color = aspects_settings[7]["color"]
102
+ verdict = True
103
+ aid = 7
104
+
105
+ elif (
106
+ (aspects_settings[8]["degree"] - aspects_settings[8]["orb"])
107
+ <= int(distance)
108
+ <= (aspects_settings[8]["degree"] + aspects_settings[8]["orb"])
109
+ ):
110
+ name = aspects_settings[8]["name"]
111
+ aspect_degrees = aspects_settings[8]["degree"]
112
+ color = aspects_settings[8]["color"]
113
+ verdict = True
114
+ aid = 8
115
+
116
+ elif (
117
+ (aspects_settings[9]["degree"] - aspects_settings[9]["orb"])
118
+ <= int(distance)
119
+ <= (aspects_settings[9]["degree"] + aspects_settings[9]["orb"])
120
+ ):
121
+ name = aspects_settings[9]["name"]
122
+ aspect_degrees = aspects_settings[9]["degree"]
123
+ color = aspects_settings[9]["color"]
124
+ verdict = True
125
+ aid = 9
126
+
127
+ elif (
128
+ (aspects_settings[10]["degree"] - aspects_settings[10]["orb"])
129
+ <= int(distance)
130
+ <= (aspects_settings[10]["degree"] + aspects_settings[10]["orb"])
131
+ ):
132
+ name = aspects_settings[10]["name"]
133
+ aspect_degrees = aspects_settings[10]["degree"]
134
+ color = aspects_settings[10]["color"]
135
+ verdict = True
136
+ aid = 10
137
+
138
+ else:
139
+ verdict = False
140
+ name = None
141
+ distance = 0
142
+ aspect_degrees = 0
143
+ color = None
144
+ aid = None
145
+
146
+ return (
147
+ verdict,
148
+ name,
149
+ distance - aspect_degrees,
150
+ aspect_degrees,
151
+ color,
152
+ aid,
153
+ diff,
154
+ )
155
+
156
+
157
+ def planet_id_decoder(planets_settings: dict, name: str):
158
+ """
159
+ Check if the name of the planet is the same in the settings and return
160
+ the correct id for the planet.
161
+ """
162
+ str_name = str(name)
163
+ for planet in planets_settings:
164
+ if planet["name"] == str_name:
165
+ result = planet["id"]
166
+ return result
167
+
168
+
169
+ def filter_by_settings(planets_settings: dict, init_point_list: list):
170
+ """
171
+ Creates a list of all the desired
172
+ points filtering by the settings.
173
+ """
174
+
175
+ set_points_name = []
176
+ for p in planets_settings:
177
+ if p["is_active"]:
178
+ set_points_name.append(p["name"])
179
+
180
+ point_list = []
181
+ for l in init_point_list:
182
+ if l["name"] in set_points_name:
183
+ point_list.append(l)
184
+
185
+ return point_list
@@ -6,216 +6,35 @@
6
6
  from pathlib import Path
7
7
  from kerykeion import AstrologicalSubject
8
8
  from logging import getLogger, basicConfig
9
- from swisseph import difdeg2n
10
9
  from typing import Union
11
10
  from kerykeion.settings.kerykeion_settings import get_settings
11
+ from dataclasses import dataclass
12
+ from kerykeion.aspects.aspects_utils import filter_by_settings, planet_id_decoder, get_aspect_from_two_points
12
13
 
13
14
  logger = getLogger(__name__)
14
- basicConfig(
15
- format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
16
- level="INFO"
17
- )
15
+ basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level="INFO")
18
16
 
17
+
18
+ @dataclass
19
19
  class NatalAspects:
20
20
  """
21
21
  Generates an object with all the aspects of a birthcart.
22
22
  """
23
23
 
24
- def __init__(self, kr_object: AstrologicalSubject, new_settings_file: Union[Path, None] = None):
25
- self.user = kr_object
26
- self.new_settings_file = new_settings_file
27
- self._parse_json_settings()
28
-
29
- self.init_point_list = self.user.planets_list + self.user.houses_list
30
-
31
- self._all_aspects: list = None
32
- self._relevant_aspects: list = None
24
+ user: AstrologicalSubject
25
+ new_settings_file: Union[Path, None] = None
26
+ _all_aspects: Union[list, None] = None
27
+ _relevant_aspects: Union[list, None] = None
33
28
 
34
- def _parse_json_settings(self):
35
- # Load settings file
29
+ def __post_init__(self):
30
+ settings = get_settings(self.new_settings_file)
36
31
 
37
- settings = get_settings(self.new_settings_file,)
32
+ self.init_point_list = self.user.planets_list + self.user.houses_list
38
33
 
39
34
  self.planets_settings = settings["celestial_points"]
40
35
  self.aspects_settings = settings["aspects"]
41
36
  self.axes_orbit_settings = settings["general_settings"]["axes_orbit"]
42
37
 
43
- @staticmethod
44
- def get_aspect_from_two_points(aspects_settings, point_one, point_two):
45
- """
46
- Utility function.
47
- It calculates the aspects between the 2 points.
48
- Args: first point, second point.
49
- """
50
-
51
- distance = abs(difdeg2n(point_one, point_two))
52
- diff = abs(point_one - point_two)
53
-
54
- if int(distance) <= aspects_settings[0]["orb"]:
55
- name = aspects_settings[0]["name"]
56
- aspect_degrees = aspects_settings[0]["degree"]
57
- color = aspects_settings[0]["color"]
58
- verdict = True
59
- aid = 0
60
-
61
- elif (
62
- (aspects_settings[1]["degree"] - aspects_settings[1]["orb"])
63
- <= int(distance)
64
- <= (aspects_settings[1]["degree"] + aspects_settings[1]["orb"])
65
- ):
66
- name = aspects_settings[1]["name"]
67
- aspect_degrees = aspects_settings[1]["degree"]
68
- color = aspects_settings[1]["color"]
69
- verdict = True
70
- aid = 1
71
-
72
- elif (
73
- (aspects_settings[2]["degree"] - aspects_settings[2]["orb"])
74
- <= int(distance)
75
- <= (aspects_settings[2]["degree"] + aspects_settings[2]["orb"])
76
- ):
77
- name = aspects_settings[2]["name"]
78
- aspect_degrees = aspects_settings[2]["degree"]
79
- color = aspects_settings[2]["color"]
80
- verdict = True
81
- aid = 2
82
-
83
- elif (
84
- (aspects_settings[3]["degree"] - aspects_settings[3]["orb"])
85
- <= int(distance)
86
- <= (aspects_settings[3]["degree"] + aspects_settings[3]["orb"])
87
- ):
88
- name = aspects_settings[3]["name"]
89
- aspect_degrees = aspects_settings[3]["degree"]
90
- color = aspects_settings[3]["color"]
91
- verdict = True
92
- aid = 3
93
-
94
- elif (
95
- (aspects_settings[4]["degree"] - aspects_settings[4]["orb"])
96
- <= int(distance)
97
- <= (aspects_settings[4]["degree"] + aspects_settings[4]["orb"])
98
- ):
99
- name = aspects_settings[4]["name"]
100
- aspect_degrees = aspects_settings[4]["degree"]
101
- color = aspects_settings[4]["color"]
102
- verdict = True
103
- aid = 4
104
-
105
- elif (
106
- (aspects_settings[5]["degree"] - aspects_settings[5]["orb"])
107
- <= int(distance)
108
- <= (aspects_settings[5]["degree"] + aspects_settings[5]["orb"])
109
- ):
110
- name = aspects_settings[5]["name"]
111
- aspect_degrees = aspects_settings[5]["degree"]
112
- color = aspects_settings[5]["color"]
113
- verdict = True
114
- aid = 5
115
-
116
- elif (
117
- (aspects_settings[6]["degree"] - aspects_settings[6]["orb"])
118
- <= int(distance)
119
- <= (aspects_settings[6]["degree"] + aspects_settings[6]["orb"])
120
- ):
121
- name = aspects_settings[6]["name"]
122
- aspect_degrees = aspects_settings[6]["degree"]
123
- color = aspects_settings[6]["color"]
124
- verdict = True
125
- aid = 6
126
-
127
- elif (
128
- (aspects_settings[7]["degree"] - aspects_settings[7]["orb"])
129
- <= int(distance)
130
- <= (aspects_settings[7]["degree"] + aspects_settings[7]["orb"])
131
- ):
132
- name = aspects_settings[7]["name"]
133
- aspect_degrees = aspects_settings[7]["degree"]
134
- color = aspects_settings[7]["color"]
135
- verdict = True
136
- aid = 7
137
-
138
- elif (
139
- (aspects_settings[8]["degree"] - aspects_settings[8]["orb"])
140
- <= int(distance)
141
- <= (aspects_settings[8]["degree"] + aspects_settings[8]["orb"])
142
- ):
143
- name = aspects_settings[8]["name"]
144
- aspect_degrees = aspects_settings[8]["degree"]
145
- color = aspects_settings[8]["color"]
146
- verdict = True
147
- aid = 8
148
-
149
- elif (
150
- (aspects_settings[9]["degree"] - aspects_settings[9]["orb"])
151
- <= int(distance)
152
- <= (aspects_settings[9]["degree"] + aspects_settings[9]["orb"])
153
- ):
154
- name = aspects_settings[9]["name"]
155
- aspect_degrees = aspects_settings[9]["degree"]
156
- color = aspects_settings[9]["color"]
157
- verdict = True
158
- aid = 9
159
-
160
- elif (
161
- (aspects_settings[10]["degree"] - aspects_settings[10]["orb"])
162
- <= int(distance)
163
- <= (aspects_settings[10]["degree"] + aspects_settings[10]["orb"])
164
- ):
165
- name = aspects_settings[10]["name"]
166
- aspect_degrees = aspects_settings[10]["degree"]
167
- color = aspects_settings[10]["color"]
168
- verdict = True
169
- aid = 10
170
-
171
- else:
172
- verdict = False
173
- name = None
174
- distance = 0
175
- aspect_degrees = 0
176
- color = None
177
- aid = None
178
-
179
-
180
- return (
181
- verdict,
182
- name,
183
- distance - aspect_degrees,
184
- aspect_degrees,
185
- color,
186
- aid,
187
- diff,
188
- )
189
-
190
- def _p_id_decoder(self, name):
191
- """
192
- Check if the name of the planet is the same in the settings and return
193
- the correct id for the planet.
194
- """
195
- str_name = str(name)
196
- for planet in self.planets_settings:
197
- if planet["name"] == str_name:
198
- result = planet["id"]
199
- return result
200
-
201
- def _filter_by_settings(self, init_point_list):
202
- """
203
- Creates a list of all the desired
204
- points filtering by the settings.
205
- """
206
-
207
- set_points_name = []
208
- for p in self.planets_settings:
209
- if p["is_active"]:
210
- set_points_name.append(p["name"])
211
-
212
- point_list = []
213
- for l in init_point_list:
214
- if l["name"] in set_points_name:
215
- point_list.append(l)
216
-
217
- return point_list
218
-
219
38
  @property
220
39
  def all_aspects(self):
221
40
  """
@@ -223,21 +42,19 @@ class NatalAspects:
223
42
  first all the individual aspects of each planet, second the aspects
224
43
  without repetitions.
225
44
  """
226
-
45
+
227
46
  if self._all_aspects is not None:
228
47
  return self._all_aspects
229
48
 
230
- point_list = self._filter_by_settings(self.init_point_list)
49
+ point_list = filter_by_settings(self.planets_settings, self.init_point_list)
231
50
 
232
51
  self.all_aspects_list = []
233
52
 
234
53
  for first in range(len(point_list)):
235
54
  # Generates the aspects list without repetitions
236
55
  for second in range(first + 1, len(point_list)):
237
- verdict, name, orbit, aspect_degrees, color, aid, diff = self.get_aspect_from_two_points(
238
- self.aspects_settings,
239
- point_list[first]["abs_pos"],
240
- point_list[second]["abs_pos"]
56
+ verdict, name, orbit, aspect_degrees, color, aid, diff = get_aspect_from_two_points(
57
+ self.aspects_settings, point_list[first]["abs_pos"], point_list[second]["abs_pos"]
241
58
  )
242
59
 
243
60
  if verdict == True:
@@ -252,8 +69,9 @@ class NatalAspects:
252
69
  "color": color,
253
70
  "aid": aid,
254
71
  "diff": diff,
255
- "p1": self._p_id_decoder(point_list[first]["name"]),
256
- "p2": self._p_id_decoder(
72
+ "p1": planet_id_decoder(self.planets_settings, point_list[first]["name"]),
73
+ "p2": planet_id_decoder(
74
+ self.planets_settings,
257
75
  point_list[second]["name"],
258
76
  ),
259
77
  }
@@ -270,7 +88,7 @@ class NatalAspects:
270
88
  Set the list with set_points and creating a list with the names
271
89
  or the numbers of the houses.
272
90
  """
273
-
91
+
274
92
  if self._relevant_aspects is not None:
275
93
  logger.debug("Relevant aspects already calculated, returning cached value")
276
94
  return self._relevant_aspects
@@ -311,17 +129,15 @@ class NatalAspects:
311
129
 
312
130
 
313
131
  if __name__ == "__main__":
314
- basicConfig(
315
- level="DEBUG",
316
- force=True,
317
- )
132
+ basicConfig(level="DEBUG", force=True)
318
133
  johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US")
319
134
 
320
135
  # All aspects
321
136
  aspects = NatalAspects(johnny)
137
+ print(aspects.all_aspects)
322
138
 
323
139
  print("\n")
324
140
 
325
141
  # Relevant aspects
326
142
  aspects = NatalAspects(johnny)
327
-
143
+ print(aspects.relevant_aspects)
@@ -8,6 +8,8 @@ from pathlib import Path
8
8
  from typing import Union
9
9
 
10
10
  from kerykeion.aspects.natal_aspects import NatalAspects
11
+ from kerykeion.settings.kerykeion_settings import get_settings
12
+ from kerykeion.aspects.aspects_utils import filter_by_settings, planet_id_decoder, get_aspect_from_two_points
11
13
 
12
14
 
13
15
  class SynastryAspects(NatalAspects):
@@ -25,13 +27,18 @@ class SynastryAspects(NatalAspects):
25
27
  self.second_user = kr_object_two
26
28
 
27
29
  self.new_settings_file = new_settings_file
28
- self._parse_json_settings()
29
30
 
30
31
  self.first_init_point_list = self.first_user.planets_list + self.first_user.houses_list
31
32
  self.second_init_point_list = self.second_user.planets_list + self.second_user.houses_list
32
-
33
- self._all_aspects: list = None
34
- self._relevant_aspects: list = None
33
+
34
+ self._all_aspects: Union[list, None] = None
35
+ self._relevant_aspects: Union[list, None] = None
36
+
37
+ settings = get_settings(self.new_settings_file)
38
+
39
+ self.planets_settings = settings["celestial_points"]
40
+ self.aspects_settings = settings["aspects"]
41
+ self.axes_orbit_settings = settings["general_settings"]["axes_orbit"]
35
42
 
36
43
  @property
37
44
  def all_aspects(self):
@@ -40,22 +47,21 @@ class SynastryAspects(NatalAspects):
40
47
  first all the individual aspects of each planet, second the aspects
41
48
  whiteout repetitions.
42
49
  """
43
-
50
+
44
51
  if self._all_aspects is not None:
45
52
  return self._all_aspects
46
53
 
47
- f_1 = self._filter_by_settings(self.first_init_point_list)
48
- f_2 = self._filter_by_settings(self.second_init_point_list)
54
+ f_1 = filter_by_settings(self.planets_settings, self.first_init_point_list)
55
+
56
+ f_2 = filter_by_settings(self.planets_settings, self.second_init_point_list)
49
57
 
50
58
  self.all_aspects_list = []
51
59
 
52
60
  for first in range(len(f_1)):
53
61
  # Generates the aspects list whitout repetitions
54
62
  for second in range(len(f_2)):
55
- verdict, name, orbit, aspect_degrees, color, aid, diff = self.get_aspect_from_two_points(
56
- self.aspects_settings,
57
- f_1[first]["abs_pos"],
58
- f_2[second]["abs_pos"]
63
+ verdict, name, orbit, aspect_degrees, color, aid, diff = get_aspect_from_two_points(
64
+ self.aspects_settings, f_1[first]["abs_pos"], f_2[second]["abs_pos"]
59
65
  )
60
66
 
61
67
  if verdict == True:
@@ -70,8 +76,9 @@ class SynastryAspects(NatalAspects):
70
76
  "color": color,
71
77
  "aid": aid,
72
78
  "diff": diff,
73
- "p1": self._p_id_decoder(f_1[first]["name"]),
74
- "p2": self._p_id_decoder(
79
+ "p1": planet_id_decoder(self.planets_settings, f_1[first]["name"]),
80
+ "p2": planet_id_decoder(
81
+ self.planets_settings,
75
82
  f_2[second]["name"],
76
83
  ),
77
84
  }
@@ -145,7 +145,6 @@ class AstrologicalSubject:
145
145
  )
146
146
  )
147
147
 
148
-
149
148
  self.name = name
150
149
  self.year = year
151
150
  self.month = month
@@ -160,7 +159,8 @@ class AstrologicalSubject:
160
159
  self.zodiac_type = zodiac_type
161
160
  self.online = online
162
161
  self.json_dir = Path.home()
163
-
162
+ self.geonames_username = geonames_username
163
+
164
164
  # This message is set to encourage the user to set a custom geonames username
165
165
  if geonames_username is None and online:
166
166
  logger.info(
@@ -179,6 +179,7 @@ class AstrologicalSubject:
179
179
  "\n" + \
180
180
  "********"
181
181
  )
182
+
182
183
  self.geonames_username = DEFAULT_GEONAMES_USERNAME
183
184
 
184
185
  if not self.city:
@@ -263,7 +264,50 @@ class AstrologicalSubject:
263
264
  self.julian_day = float(swe.julday(self.utc.year, self.utc.month, self.utc.day, self.utc_time))
264
265
 
265
266
  def _houses(self) -> None:
266
- """Calculate positions and store them in dictionaries"""
267
+ """
268
+ Calculate positions and store them in dictionaries
269
+
270
+ https://www.astro.com/faq/fq_fh_owhouse_e.htm
271
+ https://github.com/jwmatthys/pd-swisseph/blob/master/swehouse.c#L685
272
+ hsys = letter code for house system;
273
+ A equal
274
+ E equal
275
+ B Alcabitius
276
+ C Campanus
277
+ D equal (MC)
278
+ F Carter "Poli-Equatorial"
279
+ G 36 Gauquelin sectors
280
+ H horizon / azimut
281
+ I Sunshine solution Treindl
282
+ i Sunshine solution Makransky
283
+ K Koch
284
+ L Pullen SD "sinusoidal delta", ex Neo-Porphyry
285
+ M Morinus
286
+ N equal/1=Aries
287
+ O Porphyry
288
+ P Placidus
289
+ Q Pullen SR "sinusoidal ratio"
290
+ R Regiomontanus
291
+ S Sripati
292
+ T Polich/Page ("topocentric")
293
+ U Krusinski-Pisa-Goelzer
294
+ V equal Vehlow
295
+ W equal, whole sign
296
+ X axial rotation system/ Meridian houses
297
+ Y APC houses
298
+ """
299
+
300
+ if self.zodiac_type == "Sidereal":
301
+ self.houses_degree_ut = swe.houses_ex(
302
+ tjdut=self.julian_day, lat=self.lat, lon=self.lng, hsys=str.encode('P'), flags=swe.FLG_SIDEREAL
303
+ )[0]
304
+ elif self.zodiac_type == "Tropic":
305
+ self.houses_degree_ut = swe.houses(
306
+ tjdut=self.julian_day, lat=self.lat, lon=self.lng, hsys=str.encode('P')
307
+ )[0]
308
+ else:
309
+ raise KerykeionException("Zodiac type not recognized! Please use 'Tropic' or 'Sidereal'")
310
+
267
311
  point_type: Literal["Planet", "House"] = "House"
268
312
  # creates the list of the house in 360°
269
313
  self.houses_degree_ut = swe.houses(self.julian_day, self.lat, self.lng)[0]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kerykeion
3
- Version: 4.1.0
3
+ Version: 4.1.1
4
4
  Summary: A python library for astrology.
5
5
  Home-page: https://github.com/g-battaglia/kerykeion
6
6
  License: AGPL-3.0
@@ -1,9 +1,9 @@
1
- LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
2
1
  kerykeion/__init__.py,sha256=UpftP5JxYSfeRAAmXbRas1XGw4V6dNA-FllcFbKlCbo,3874
3
2
  kerykeion/aspects/__init__.py,sha256=KAGLkC41PRsRqiV6Ii38HIME-rfTrefiKOOzC5d7Ub0,292
4
- kerykeion/aspects/natal_aspects.py,sha256=WtBBxhe935WGMoD5sPeaDTEUjOzj-jvNLJE48Q2A3Fg,10791
5
- kerykeion/aspects/synastry_aspects.py,sha256=osigGqQyeUGQv9Tz1U7Zyg4mZywQIPpG0KrCOqGxWbc,3125
6
- kerykeion/astrological_subject.py,sha256=PfyPjE8Q1notfbSl7IFYYxfnQeU0fa2zQEIWa3115sE,22098
3
+ kerykeion/aspects/aspects_utils.py,sha256=TIYh-4xgRWb-5ZPSlhCGHdyPyP8hSTvUsPlt9HML1JQ,5521
4
+ kerykeion/aspects/natal_aspects.py,sha256=BMDuruu4b0Gy2bv0UivFlHDtsBS9Eoe20QIICMQerNY,4907
5
+ kerykeion/aspects/synastry_aspects.py,sha256=lbffXrySvICCVtsXjOtyjQphoDO3HoCmAmFGnp8JMck,3583
6
+ kerykeion/astrological_subject.py,sha256=LsVKt1VEIl-JksNzu0wBF2KWesu7tqlpvnGZAFYSNs8,23682
7
7
  kerykeion/charts/__init__.py,sha256=3WzR2n9dr6MDzjTbEQOYpXSFlhfMfga5YWNsPawdbRw,127
8
8
  kerykeion/charts/charts_utils.py,sha256=qQMXu5XZCCjvyqL62fzh4JnKLzd_G6u9pcMk6f1DpIc,3197
9
9
  kerykeion/charts/kerykeion_chart_svg.py,sha256=DTD1rXc9jm6GLPPsbsTNXbFThy8sQ4Zu-zBTAjT4iwg,66327
@@ -23,8 +23,7 @@ kerykeion/settings/kr.config.json,sha256=AtRKIRqstmtoCBqhMviXHjqYBzVL8qdCEyHsl3f
23
23
  kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
24
24
  kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
25
25
  kerykeion/utilities.py,sha256=l2IuKGP687USF5uzRHJFrNmvzHMSFzZEWliWSIHUjlU,5707
26
- kerykeion-4.1.0.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
27
- kerykeion-4.1.0.dist-info/METADATA,sha256=7gHGqZCIBPR9i3Q4LZY7jO_QSB4ks-jPIUlG-JLEYCA,9409
28
- kerykeion-4.1.0.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
29
- kerykeion-4.1.0.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
30
- kerykeion-4.1.0.dist-info/RECORD,,
26
+ kerykeion-4.1.1.dist-info/METADATA,sha256=jqrolNmt4Dnu_yubV_kVhhN-Iq0_1MaaXlrdX4aDJPk,9409
27
+ kerykeion-4.1.1.dist-info/WHEEL,sha256=Zb28QaM1gQi8f4VCBhsUklF61CTlNYfs9YAZn-TOGFk,88
28
+ kerykeion-4.1.1.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
29
+ kerykeion-4.1.1.dist-info/RECORD,,