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

@@ -4,29 +4,12 @@
4
4
  """
5
5
 
6
6
 
7
- from pydantic import BaseModel, Field
7
+ from pydantic import Field
8
8
  from typing import List
9
+ from kerykeion.kr_types.kr_models import SubscriptableBaseModel
9
10
 
10
11
 
11
- class CustomBaseModel(BaseModel):
12
- """
13
- Extends the BaseModel class of Pydantic to add some useful methods.
14
- """
15
-
16
- def __init__(self, **data):
17
- super().__init__(**data)
18
-
19
- def __getitem__(self, item):
20
- return getattr(self, item)
21
-
22
- def __str__(self) -> str:
23
- return str(self.model_dump())
24
-
25
- def get(self, item, default=None):
26
- return getattr(self, item, default)
27
-
28
-
29
- class KerykeionSettingsCelestialPointModel(CustomBaseModel):
12
+ class KerykeionSettingsCelestialPointModel(SubscriptableBaseModel):
30
13
  """
31
14
  Defines the model for a celestial point data.
32
15
  """
@@ -41,7 +24,7 @@ class KerykeionSettingsCelestialPointModel(CustomBaseModel):
41
24
 
42
25
 
43
26
  # Chart Colors Settings
44
- class KerykeionSettingsChartColorsModel(CustomBaseModel):
27
+ class KerykeionSettingsChartColorsModel(SubscriptableBaseModel):
45
28
  """
46
29
  Defines the model for the chart colors.
47
30
  """
@@ -81,13 +64,15 @@ class KerykeionSettingsChartColorsModel(CustomBaseModel):
81
64
  zodiac_transit_ring_3: str = Field(title="Zodiac Transit Ring Color 3", description="Zodiac Transit Ring Color 3")
82
65
  houses_radix_line: str = Field(title="Houses Radix Line Color", description="Houses Radix Line Color")
83
66
  houses_transit_line: str = Field(title="Houses Transit Line Color", description="Houses Transit Line Color")
67
+
68
+ # Deprecated: Not used anymore
84
69
  lunar_phase_0: str = Field(title="Lunar Phase Color 0", description="Lunar Phase Color 0")
85
70
  lunar_phase_1: str = Field(title="Lunar Phase Color 1", description="Lunar Phase Color 1")
86
71
  lunar_phase_2: str = Field(title="Lunar Phase Color 2", description="Lunar Phase Color 2")
87
72
 
88
73
 
89
74
  # Aspect Settings
90
- class KerykeionSettingsAspectModel(CustomBaseModel):
75
+ class KerykeionSettingsAspectModel(SubscriptableBaseModel):
91
76
  """
92
77
  Defines the model for an aspect.
93
78
  """
@@ -103,7 +88,7 @@ class KerykeionSettingsAspectModel(CustomBaseModel):
103
88
 
104
89
 
105
90
  # Language Settings
106
- class KerykeionLanguageCelestialPointModel(CustomBaseModel):
91
+ class KerykeionLanguageCelestialPointModel(SubscriptableBaseModel):
107
92
  """
108
93
  This class is used to define the labels, show in the chart, for the celestial points.
109
94
  It is used to translate the celestial points in the language of the chart.
@@ -126,9 +111,10 @@ class KerykeionLanguageCelestialPointModel(CustomBaseModel):
126
111
  Mc: str = Field(title="Medium Coeli", description="The name of Medium Coeli in the chart, in the language")
127
112
  Dsc: str = Field(title="Descendant", description="The name of Descendant in the chart, in the language")
128
113
  Ic: str = Field(title="Imum Coeli", description="The name of Imum Coeli in the chart, in the language")
114
+ Mean_Lilith: str = Field(title="Mean Lilith", description="The name of Mean Lilith in the chart, in the language")
129
115
 
130
116
 
131
- class KerykeionLanguageModel(CustomBaseModel):
117
+ class KerykeionLanguageModel(SubscriptableBaseModel):
132
118
  """
133
119
  This model is used to store the language settings for the chart,
134
120
  it's used to translate the celestial points and the other labels
@@ -157,17 +143,17 @@ class KerykeionLanguageModel(CustomBaseModel):
157
143
  celestial_points: KerykeionLanguageCelestialPointModel
158
144
 
159
145
 
160
- class KerykeionGeneralSettingsModel(CustomBaseModel):
146
+ class KerykeionGeneralSettingsModel(SubscriptableBaseModel):
161
147
  axes_orbit: int = Field(title="Axes Orbit", description="The orbit of the axes in the chart")
162
148
  planet_in_zodiac_extra_points: int = Field(title="Planet in Zodiac Extra Points", description="The extra points of the planet in the zodiac")
163
149
  language: str = Field(title="Language", description="The language of the chart")
164
150
 
165
- class KerykeionChartSettingsModel(CustomBaseModel):
151
+ class KerykeionChartSettingsModel(SubscriptableBaseModel):
166
152
  basic_chart_viewBox: str = Field(title="Basic Chart ViewBox", description="The viewbox of the basic chart")
167
153
  wide_chart_viewBox: str = Field(title="Wide Chart ViewBox", description="The viewbox of the wide chart")
168
154
 
169
155
  # Settings Model
170
- class KerykeionSettingsModel(CustomBaseModel):
156
+ class KerykeionSettingsModel(SubscriptableBaseModel):
171
157
  """
172
158
  This class is used to define the global settings for the Kerykeion.
173
159
  """
@@ -177,4 +163,4 @@ class KerykeionSettingsModel(CustomBaseModel):
177
163
  aspects: List[KerykeionSettingsAspectModel] = Field(title="Aspects", description="The list of the aspects of the chart")
178
164
  language_settings: dict[str, KerykeionLanguageModel] = Field(title="Language Settings", description="The language settings of the chart")
179
165
  general_settings: KerykeionGeneralSettingsModel = Field(title="General Settings", description="The general settings of the chart")
180
- chart_settings: KerykeionChartSettingsModel = Field(title="Chart Settings", description="The chart settings of the chart")
166
+ chart_settings: KerykeionChartSettingsModel = Field(title="Chart Settings", description="The chart settings of the chart")
@@ -38,7 +38,8 @@
38
38
  "Ic": "Ic",
39
39
  "True_Node": "North Node",
40
40
  "Mean_Node": "Mean Node",
41
- "Chiron": "Chiron"
41
+ "Chiron": "Chiron",
42
+ "Mean_Lilith": "Lilith"
42
43
  }
43
44
  },
44
45
  "FR": {
@@ -79,7 +80,8 @@
79
80
  "Ic": "Ic",
80
81
  "True_Node": "Noeud Nord",
81
82
  "Mean_Node": "Noeud Moyen",
82
- "Chiron": "Chiron"
83
+ "Chiron": "Chiron",
84
+ "Mean_Lilith": "Lilith"
83
85
  }
84
86
  },
85
87
  "PT": {
@@ -120,7 +122,8 @@
120
122
  "Ic": "Ic",
121
123
  "True_Node": "Nodo Norte",
122
124
  "Mean_Node": "Nodo Médio",
123
- "Chiron": "Quíron"
125
+ "Chiron": "Quíron",
126
+ "Mean_Lilith": "Lilith"
124
127
  }
125
128
  },
126
129
  "IT": {
@@ -161,7 +164,8 @@
161
164
  "Ic": "Ic",
162
165
  "True_Node": "Nodo Nord",
163
166
  "Mean_Node": "Nodo Medio",
164
- "Chiron": "Chirone"
167
+ "Chiron": "Chirone",
168
+ "Mean_Lilith": "Lilith"
165
169
  }
166
170
  },
167
171
  "CN": {
@@ -202,7 +206,8 @@
202
206
  "Ic": "下中天",
203
207
  "True_Node": "北交點",
204
208
  "Mean_Node": "平交點",
205
- "Chiron": "凱龍星"
209
+ "Chiron": "凱龍星",
210
+ "Mean_Lilith": "黑月亮"
206
211
  }
207
212
  }
208
213
  },
@@ -471,6 +476,15 @@
471
476
  "element_points": 0,
472
477
  "related_zodiac_signs": [],
473
478
  "label": "Ic"
479
+ },
480
+ {
481
+ "id": 17,
482
+ "name": "Mean_Lilith",
483
+ "color": "#000",
484
+ "is_active": true,
485
+ "element_points": 0,
486
+ "related_zodiac_signs": [],
487
+ "label": "Mean_Lilith"
474
488
  }
475
489
  ],
476
490
  "chart_colors": {
kerykeion/utilities.py CHANGED
@@ -1,47 +1,48 @@
1
1
  from kerykeion.kr_types import KerykeionPointModel, KerykeionException, KerykeionSettingsModel, AstrologicalSubjectModel
2
- from kerykeion.kr_types.kr_literals import LunarPhaseEmoji, LunarPhaseName
3
- from typing import Union, Literal
2
+ from kerykeion.kr_types.kr_literals import LunarPhaseEmoji, LunarPhaseName, PointType, Planet
3
+ from typing import Union
4
4
  import logging
5
5
  import math
6
6
 
7
7
 
8
8
 
9
- def get_number_from_name(name: str) -> int:
9
+ def get_number_from_name(name: Planet) -> int:
10
10
  """Utility function, gets planet id from the name."""
11
- name = name.lower()
12
11
 
13
- if name == "sun":
12
+ if name == "Sun":
14
13
  return 0
15
- elif name == "moon":
14
+ elif name == "Moon":
16
15
  return 1
17
- elif name == "mercury":
16
+ elif name == "Mercury":
18
17
  return 2
19
- elif name == "venus":
18
+ elif name == "Venus":
20
19
  return 3
21
- elif name == "mars":
20
+ elif name == "Mars":
22
21
  return 4
23
- elif name == "jupiter":
22
+ elif name == "Jupiter":
24
23
  return 5
25
- elif name == "saturn":
24
+ elif name == "Saturn":
26
25
  return 6
27
- elif name == "uranus":
26
+ elif name == "Uranus":
28
27
  return 7
29
- elif name == "neptune":
28
+ elif name == "Neptune":
30
29
  return 8
31
- elif name == "pluto":
30
+ elif name == "Pluto":
32
31
  return 9
33
- elif name == "mean_node":
32
+ elif name == "Mean_Node":
34
33
  return 10
35
- elif name == "true_node":
34
+ elif name == "True_Node":
36
35
  return 11
37
- elif name == "chiron":
36
+ elif name == "Chiron":
38
37
  return 15
38
+ elif name == "Mean_Lilith":
39
+ return 12
39
40
  else:
40
- return int(name)
41
+ raise KerykeionException(f"Error in getting number from name! Name: {name}")
41
42
 
42
43
 
43
44
  def calculate_position(
44
- degree: Union[int, float], number_name: str, point_type: Literal["Planet", "House"]
45
+ degree: Union[int, float], number_name: str, point_type: PointType
45
46
  ) -> KerykeionPointModel:
46
47
  """Utility function to create a dictionary dividing the houses or the planets list."""
47
48
 
@@ -214,14 +215,14 @@ def setup_logging(level: str) -> None:
214
215
  Args:
215
216
  level: Log level as a string, options: debug, info, warning, error
216
217
  """
217
- logopt: dict[str, int] = {
218
+ logging_options: dict[str, int] = {
218
219
  "debug": logging.DEBUG,
219
220
  "info": logging.INFO,
220
221
  "warning": logging.WARNING,
221
222
  "error": logging.ERROR,
222
223
  }
223
224
  format: str = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
224
- loglevel: int = logopt.get(level, logging.INFO)
225
+ loglevel: int = logging_options.get(level, logging.INFO)
225
226
  logging.basicConfig(format=format, level=loglevel)
226
227
 
227
228
  def check_if_point_between(
@@ -286,7 +287,7 @@ def get_planet_house(planet_position_degree: Union[int, float], houses_degree_ut
286
287
  elif check_if_point_between(houses_degree_ut_list[11], houses_degree_ut_list[0], planet_position_degree) == True:
287
288
  house = "Twelfth_House"
288
289
  else:
289
- raise ValueError("Error in house calculation, planet: ", planet_position_degree)
290
+ raise ValueError("Error in house calculation, planet: ", planet_position_degree, "houses: ", houses_degree_ut_list)
290
291
 
291
292
  return house
292
293
 
@@ -354,4 +355,20 @@ def get_moon_phase_name_from_phase_int(phase: int) -> LunarPhaseName:
354
355
  else:
355
356
  raise KerykeionException(f"Error in moon name calculation! Phase: {phase}")
356
357
 
357
- return result
358
+ return result
359
+
360
+
361
+ def check_and_adjust_polar_latitude(latitude: float) -> float:
362
+ """
363
+ Utility function to check if the location is in the polar circle.
364
+ If it is, it sets the latitude to 66 or -66 degrees.
365
+ """
366
+ if latitude > 66.0:
367
+ latitude = 66.0
368
+ logging.info("Polar circle override for houses, using 66 degrees")
369
+
370
+ elif latitude < -66.0:
371
+ latitude = -66.0
372
+ logging.info("Polar circle override for houses, using -66 degrees")
373
+
374
+ return latitude
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kerykeion
3
- Version: 4.8.1
3
+ Version: 4.14.2
4
4
  Summary: A python library for astrology.
5
- Home-page: https://github.com/g-battaglia/kerykeion
5
+ Home-page: https://www.kerykeion.net/
6
6
  License: AGPL-3.0
7
7
  Keywords: astrology,ephemeris,astrology library,birtchart,svg,zodiac,zodiac-sing,astronomical-algorithms,synastry,astrology-calculator
8
8
  Author: Giacomo Battaglia
@@ -28,8 +28,8 @@ Classifier: Typing :: Typed
28
28
  Requires-Dist: pydantic (>=2.5,<3.0)
29
29
  Requires-Dist: pyswisseph (>=2.10.3.1,<3.0.0.0)
30
30
  Requires-Dist: pytz (>=2022.7,<2023.0)
31
- Requires-Dist: requests (>=2.28.1,<3.0.0)
32
- Requires-Dist: requests-cache (>=0.9.7,<0.10.0)
31
+ Requires-Dist: requests (>=2.32.3,<3.0.0)
32
+ Requires-Dist: requests-cache (>=1.2.1,<2.0.0)
33
33
  Requires-Dist: scour (>=0.38.2,<0.39.0)
34
34
  Requires-Dist: terminaltables (>=3.1.10,<4.0.0)
35
35
  Project-URL: Repository, https://github.com/g-battaglia/kerykeion
@@ -48,7 +48,7 @@ Description-Content-Type: text/markdown
48
48
  </a>
49
49
  <a href="https://pypi.org/project/kerykeion" target="_blank">
50
50
  <img src="https://visitor-badge.laobi.icu/badge?page_id=g-battaglia.kerykeion" alt="visitors"/>
51
- </a>
51
+ </a>
52
52
  <a href="https://pypi.org/project/kerykeion" target="_blank">
53
53
  <img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
54
54
  </a>
@@ -69,13 +69,13 @@ The core goal of this project is to provide a simple and easy approach to astrol
69
69
 
70
70
  Here's an example of a birthchart:
71
71
 
72
- ![Kanye Birth Chart](http://centuryboy.altervista.org/KanyeNatalChart.svg)
72
+ ![Kanye Birth Chart](https://www.kerykeion.net/assets/img/examples/birth-chart.svg)
73
73
 
74
74
  ## Web API
75
75
 
76
76
  If you want to use Kerykeion in a web application, I've created a web API for this purpose, you can find it here:
77
77
 
78
- **[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/)**
78
+ **[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/pricing)**
79
79
 
80
80
  It's [open source](https://github.com/g-battaglia/Astrologer-API), it's a way to support me and the project.
81
81
 
@@ -95,9 +95,11 @@ Kerykeion is a _Python 3.9_ package, make sure you have _Python 3.9_ or above in
95
95
  pip3 install kerykeion
96
96
  ```
97
97
 
98
- ## Usage
98
+ ## Basic Usage
99
+
100
+ The basic usage of the library is to create an instance of the AstrologicalSubject class and then access the properties of the instance to get the astrological information about the subject.
99
101
 
100
- Here some examples:
102
+ Here's an example:
101
103
 
102
104
  ```python
103
105
 
@@ -105,8 +107,8 @@ Here some examples:
105
107
  from kerykeion import AstrologicalSubject
106
108
 
107
109
  # Create a kerykeion instance:
108
- # Args: Name, year, month, day, hour, minuts, city, nation(optional)
109
- kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
110
+ # Args: Name, year, month, day, hour, minuts, city, nation
111
+ kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
110
112
 
111
113
  # Get the information about the sun in the chart:
112
114
  # (The position of the planets always starts at 0)
@@ -137,38 +139,68 @@ kanye = AstrologicalSubject(
137
139
  The difference is that you have to pass the longitude, latitude and the timezone string, instead of the city and nation.
138
140
  If you omit the nation, it will be set to "GB" by default, but the value is not used for calculations. It's better to set it to the correct value though.
139
141
 
140
- ## Generate a SVG Chart:
142
+ ## Generate a SVG Chart
143
+
144
+ ### Birth Chart
141
145
 
142
146
  ```python
143
147
  from kerykeion import AstrologicalSubject, KerykeionChartSVG
144
148
 
145
- first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
146
- second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")
149
+
150
+ birth_chart = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
151
+ birth_chart_svg = KerykeionChartSVG(birth_chart)
152
+
153
+ birth_chart_svg.makeSVG()
154
+ ```
155
+
156
+ The SVG file will be saved in the home directory.
157
+ ![John Lennon Birth Chart](https://www.kerykeion.net/assets/img/examples/birth-chart.svg)
158
+
159
+ ### Synastry Chart
160
+
161
+ ```python
162
+ from kerykeion import AstrologicalSubject, KerykeionChartSVG
163
+
164
+ first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
165
+ second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
147
166
 
148
167
  # Set the type, it can be Natal, Synastry or Transit
168
+ synastry_chart = KerykeionChartSVG(first, "Synastry", second)
169
+ synastry_chart.makeSVG()
149
170
 
150
- name = KerykeionChartSVG(first, chart_type="Synastry", second_obj=second)
151
- name.makeSVG()
152
- print(len(name.aspects_list))
171
+ ```
153
172
 
154
- #> Generating kerykeion object for Jack...
155
- #> Generating kerykeion object for Jane...
156
- #> Jack birth location: Roma, 41.89193, 12.51133
157
- #> SVG Generated Correctly
158
- #> 38
173
+ ![John Lennon and Paul McCartney Synastry](https://www.kerykeion.net/assets/img/examples/synastry-chart.svg)
159
174
 
175
+ ### Change the output directory
176
+
177
+ By default the output directory is the home directory, you can change it by passing the new_output_directory parameter to the KerykeionChartSVG class:
178
+
179
+ ```python
180
+ from kerykeion import AstrologicalSubject, KerykeionChartSVG
181
+
182
+ first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
183
+ second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
184
+
185
+ # Set the output directory to the current directory
186
+ synastry_chart = KerykeionChartSVG(first, "Synastry", second, new_output_directory=".")
187
+ synastry_chart.makeSVG()
160
188
  ```
161
189
 
162
- ![Synastry Chart](http://centuryboy.altervista.org/JackComposite_Chart.svg)
190
+ ### Change Language
191
+
192
+ To change the language of the chart you should create a new kr.config.js file and pass it to the BirthChartSVG class. So far the available languages are English, Portuguese, Italian, Spanish, French and Chinese.
163
193
 
164
- # Report
194
+ Some examples [here](https://www.kerykeion.net/docs/examples/change-language).
195
+
196
+ ## Report
165
197
 
166
198
  To print a report of all the data:
167
199
 
168
200
  ```python
169
201
  from kerykeion import Report, AstrologicalSubject
170
202
 
171
- kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta")
203
+ kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
172
204
  report = Report(kanye)
173
205
  report.print_report()
174
206
 
@@ -176,7 +208,7 @@ report.print_report()
176
208
 
177
209
  Returns:
178
210
 
179
- ```
211
+ ```txt
180
212
  +- Kerykeion report for Kanye -+
181
213
  +----------+------+-------------+-----------+----------+
182
214
  | Date | Time | Location | Longitude | Latitude |
@@ -222,17 +254,17 @@ Returns:
222
254
  And if you want to export it to a file:
223
255
 
224
256
  ```bash
225
- $ python3 your_script_name.py > file.txt
257
+ python3 your_script_name.py > file.txt
226
258
  ```
227
259
 
228
- ## Other exeples of possibles usecase
260
+ ## Other examples of possible use cases:
229
261
 
230
262
  ```python
231
263
  # Get all aspects between two persons:
232
264
 
233
265
  from kerykeion import SynastryAspects, AstrologicalSubject
234
- first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma")
235
- second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma")
266
+ first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma", "IT")
267
+ second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma", "IT")
236
268
 
237
269
  name = SynastryAspects(first, second)
238
270
  aspect_list = name.get_relevant_aspects()
@@ -244,10 +276,74 @@ print(aspect_list[0])
244
276
 
245
277
  ```
246
278
 
279
+ ## Ayanamsa (Sidereal Modes)
280
+
281
+ By default, the zodiac type is set to Tropic (Tropical).
282
+ You can set the zodiac type to Sidereal and the sidereal mode in the AstrologicalSubject class:
283
+
284
+ ```python
285
+ johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", zodiac_type="Sidereal", sidereal_mode="LAHIRI")
286
+ ```
287
+
288
+ More examples [here](https://www.kerykeion.net/docs/examples/sidereal-modes/).
289
+
290
+ Full list of supported sidereal modes [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#SiderealMode).
291
+
292
+ ## Houses Systems
293
+
294
+ By default, the houses system is set to Placidus.
295
+ You can set the houses system in the AstrologicalSubject class:
296
+
297
+ ```python
298
+ johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", houses_system="M")
299
+ ```
300
+
301
+ More examples [here](https://www.kerykeion.net/docs/examples/houses-systems/).
302
+
303
+ Full list of supported house systems [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#HousesSystem).
304
+
305
+ So far all the available houses system in the Swiss Ephemeris are supported but the Gauquelin Sectors.
306
+
307
+ ## Perspective Type
308
+
309
+ By default, the perspective type is set to Apparent Geocentric (the most common standard for astrology).
310
+ The perspective indicates the point of view from which the chart is calculated (Es. Apparent Geocentric, Heliocentric, etc.).
311
+ You can set the perspective type in the AstrologicalSubject class:
312
+
313
+ ```python
314
+ johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", perspective_type="Heliocentric")
315
+ ```
316
+
317
+ More examples [here](https://www.kerykeion.net/docs/examples/perspective-type/).
318
+
319
+ Full list of supported perspective types [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#PerspectiveType).
320
+
321
+ ## Alternative Initialization
322
+
323
+ You can initialize the AstrologicalSubject from a **UTC** ISO 8601 string:
324
+
325
+ ```python
326
+ subject = AstrologicalSubject.get_from_iso_utc_time(
327
+ "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US")
328
+ ```
329
+
330
+ Note : The default time zone is UTC, with Greenwich longitude and latitude.
331
+
332
+ The default online/offline mode is set to offline, if you set it online the default latitude and longitude will be ignored and
333
+ calculated from the city and nation. Remember to pass also the geonames_username parameter if you want to use the online mode, like this:
334
+
335
+ ```python
336
+ from kerykeion.astrological_subject import AstrologicalSubject
337
+
338
+ # Use the static method get_from_iso_utc_time to create an instance of AstrologicalSubject
339
+ subject = AstrologicalSubject.get_from_iso_utc_time(
340
+ "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True)
341
+ ```
342
+
247
343
  ## Documentation
248
344
 
249
345
  Most of the functions and the classes are self documented by the types and have docstrings.
250
- An auto-generated documentation [is available here](https://g-battaglia.github.io/kerykeion).
346
+ An auto-generated documentation [is available here](https://www.kerykeion.net/pydocs/kerykeion.html).
251
347
 
252
348
  Sooner or later I'll try to write an extensive documentation.
253
349
 
@@ -266,5 +362,5 @@ To understand how this impacts your use of the software, please see the [LICENSE
266
362
  If you have questions, you can reach out to me at my [email](mailto:battaglia.giacomo@yahoo.it?subject=Kerykeion) address.
267
363
  As a rule of thumb, if you are using this library in a project, you should open source the code of the project with a compatible license.
268
364
 
269
- You can implement the logic of kerkeion in your project and also keep it closed source by using a third party API, like the [AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/). The AstrologerAPI is AGPL-3.0 compliant. Subscribing to the API is also, currently, the best way to support the project.
365
+ You can implement the logic of kerykeion in your project and also keep it closed source by using a third party API, like the [AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/). The AstrologerAPI is AGPL-3.0 compliant. Subscribing to the API is also, currently, the best way to support the project.
270
366
 
@@ -0,0 +1,33 @@
1
+ LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
2
+ kerykeion/__init__.py,sha256=f4_J_hAh_OSLAUrabqVhrc1rH59I6X1LS9vuAEzE9PY,536
3
+ kerykeion/aspects/__init__.py,sha256=9FlDVI1ndCJga0-chNIhcLitjU_x3kbtAFfFqVp2ejc,293
4
+ kerykeion/aspects/aspects_utils.py,sha256=8zPbP4xTOiaSwJ8Yet6wh38Icsd0xUNVG-dptkuD-Ik,5409
5
+ kerykeion/aspects/natal_aspects.py,sha256=jzYItHWZcyaWqWJ6_akwFx3ct1eFesCcu0fE5l-1_uo,4691
6
+ kerykeion/aspects/synastry_aspects.py,sha256=uYzHZNSw7IckE5ngtyaQ7LhNzCfTB4VZOhKlly43-oc,4167
7
+ kerykeion/astrological_subject.py,sha256=zewCsuCdCyrhDRPgaNiwEPM4KaQPfKWFPFxj3Y76ZVk,35472
8
+ kerykeion/charts/__init__.py,sha256=Juxkduy2TaagWblh_7CE8Acrg3dHL27-WEddJhau_eQ,127
9
+ kerykeion/charts/charts_utils.py,sha256=A6ZHCM9en_BeCOAaoVmyH9yrm_TUD-vg9np4myvl-Rw,29448
10
+ kerykeion/charts/kerykeion_chart_svg.py,sha256=UaXFaZci4vzkGL-BzZDGspI6KiNzIRuqpjD4Q5-n1u0,49312
11
+ kerykeion/charts/templates/chart.xml,sha256=axmNWwAgPpuSNRDx-aaaArO29fZXQ9E8ODSFInOZuH8,68435
12
+ kerykeion/enums.py,sha256=Xp_0A6jBSW7SZvB5LlKfBObg0xTqB6hTq1IXjz-UWl4,997
13
+ kerykeion/ephemeris_data.py,sha256=8r-h4wPKFwfM--DFcxv5QouoqlYCJbaH78d5PKh8v_E,8085
14
+ kerykeion/fetch_geonames.py,sha256=NmyTErvKISjJCAxvRB1H35aVZI8_-_U-Cqb_rmqRseA,4563
15
+ kerykeion/kr_types/__init__.py,sha256=-qhGQikurdoHnGtuT1bsaEeZ-IwmZtIHMjGOPC9_oqQ,295
16
+ kerykeion/kr_types/chart_types.py,sha256=GmX7u7wDXax8y4ZbQZCrvvUzAquuILcjGFzTuk9WGkw,2110
17
+ kerykeion/kr_types/kerykeion_exception.py,sha256=G-7VFta78qBt10l54JZWvwH-3lUNKmDwuILXaVGVu9A,314
18
+ kerykeion/kr_types/kr_literals.py,sha256=o1yLhsWNOTSCd3O1pYGhQU4w9sUEF9mt_v6DWUqutyE,3156
19
+ kerykeion/kr_types/kr_models.py,sha256=nrH0GJAWQiAG8MECW3WUuy_DlB6aLET1zPqSFIBV2BE,3648
20
+ kerykeion/kr_types/settings_models.py,sha256=loWmKjqE4uOxFy_2Evuj8m32sChL5o9dHQGP43gFD00,12532
21
+ kerykeion/relationship_score.py,sha256=R9JugfK5_gJgr5ND-EghkqpqZcutzzKlJ-2JnYUMVv4,6794
22
+ kerykeion/report.py,sha256=kS5avIN119pJVapYjZOvabg77nEcA8sSrOuXbRifABk,2565
23
+ kerykeion/settings/__init__.py,sha256=QQNFCl7sgN27MKaVscqtpPk10HGz4wZS3I_7KEGMaVA,69
24
+ kerykeion/settings/kerykeion_settings.py,sha256=uRAbhJ0ZXAbGBPGJjhh5u8YX2phcXobEwJA646wMHcM,2347
25
+ kerykeion/settings/kr.config.json,sha256=3BNbPBfF-hCMx-LWtQxWCE7npf7lOrJ-AIOzowLwdgs,12646
26
+ kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
27
+ kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
28
+ kerykeion/utilities.py,sha256=s6zY1n25awevSy3qqsO03Bvnkh2Z7GMyinpYc9zU9Fs,11447
29
+ kerykeion-4.14.2.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
30
+ kerykeion-4.14.2.dist-info/METADATA,sha256=mQa3uimc4_Blmi8Ewy6JlO9Z4Fpcyst5jJDuDYXaxsM,14410
31
+ kerykeion-4.14.2.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
32
+ kerykeion-4.14.2.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
33
+ kerykeion-4.14.2.dist-info/RECORD,,
@@ -1,32 +0,0 @@
1
- LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
2
- kerykeion/__init__.py,sha256=Z2-gAp09RAl2_WwzPO-OTc4ZRDLh54kTduAoy891gQc,3917
3
- kerykeion/aspects/__init__.py,sha256=9FlDVI1ndCJga0-chNIhcLitjU_x3kbtAFfFqVp2ejc,293
4
- kerykeion/aspects/aspects_utils.py,sha256=Rdo3ITDSU80n6U7aazpzzK4ruv7Iui2PaI3zMGqu1NQ,5832
5
- kerykeion/aspects/natal_aspects.py,sha256=m3_v1dM6YXvENZ6iN_EJkikKxySZBeR5QKhGsaChERk,4507
6
- kerykeion/aspects/synastry_aspects.py,sha256=uwg7Lc7wKnpxW9ydOdBHqx9cvO_t0ydGfIGluBIDD7c,3993
7
- kerykeion/astrological_subject.py,sha256=Z9QUNqX6mrOm4ihxmhH0hiMv6ilp_-0HCQ4u_feE73g,22956
8
- kerykeion/charts/__init__.py,sha256=Juxkduy2TaagWblh_7CE8Acrg3dHL27-WEddJhau_eQ,127
9
- kerykeion/charts/charts_utils.py,sha256=45Ee0Hj5nb30q97ggYTQEShxkbCPq65gI0-sE32UxDM,15112
10
- kerykeion/charts/kerykeion_chart_svg.py,sha256=vtTYgwXELnZoPKvySpEQRLZSaYVzzpDQBcUk9DwnQjw,60764
11
- kerykeion/charts/templates/chart.xml,sha256=njaX-1vglR7PFInmteCNHcxwMTjsMJPkW56TlJq0qxw,70158
12
- kerykeion/enums.py,sha256=Ben9GLYkPucpYY2ZDpURzUbNCc9jzK2MuaffkgiXFdQ,965
13
- kerykeion/fetch_geonames.py,sha256=ZWB1DbcH54ab3fQhzPhLY0Dz0OaPJqiHFn2e7DRr1MM,4588
14
- kerykeion/kr_types/__init__.py,sha256=-qhGQikurdoHnGtuT1bsaEeZ-IwmZtIHMjGOPC9_oqQ,295
15
- kerykeion/kr_types/chart_types.py,sha256=g9z53FTOsb2rusUG8nK4dtFgvVa6RCwAfAbrxFb9KaM,2180
16
- kerykeion/kr_types/kerykeion_exception.py,sha256=G-7VFta78qBt10l54JZWvwH-3lUNKmDwuILXaVGVu9A,314
17
- kerykeion/kr_types/kr_literals.py,sha256=Kc7LfdeTqHi5uDGoQHWsB81GTBc5E-fGxTJqWKK1FFU,1267
18
- kerykeion/kr_types/kr_models.py,sha256=3gyT4z-J9EM6p5175HKJX9q9WVWQTDt5Y_m3m8lZu9s,4260
19
- kerykeion/kr_types/settings_models.py,sha256=V4iEj7egXZHrWiV1cGQIezbtVmOKbOB-BRzPwa8WVtc,12683
20
- kerykeion/relationship_score.py,sha256=R9JugfK5_gJgr5ND-EghkqpqZcutzzKlJ-2JnYUMVv4,6794
21
- kerykeion/report.py,sha256=kS5avIN119pJVapYjZOvabg77nEcA8sSrOuXbRifABk,2565
22
- kerykeion/settings/__init__.py,sha256=QQNFCl7sgN27MKaVscqtpPk10HGz4wZS3I_7KEGMaVA,69
23
- kerykeion/settings/kerykeion_settings.py,sha256=uRAbhJ0ZXAbGBPGJjhh5u8YX2phcXobEwJA646wMHcM,2347
24
- kerykeion/settings/kr.config.json,sha256=1Yhv9RGHom5U9e-JZZRWVfT2Ubllz2WrckdwadDWfyg,12282
25
- kerykeion/sweph/README.md,sha256=L7FtNAJTWtrZNGKa8MX87SjduFYPYxwWhaI5fmtzNZo,73
26
- kerykeion/sweph/seas_18.se1,sha256=X9nCqhZU43wJpq61WAdueVQJt9xL2UjrwPqn1Kdoa1s,223002
27
- kerykeion/utilities.py,sha256=ncoXHvzXhNjhdm-uU6hMirVo287laq2GAJElNE6cBZM,10822
28
- kerykeion-4.8.1.dist-info/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
29
- kerykeion-4.8.1.dist-info/METADATA,sha256=5KQpaw5C7-Ym6P1S6QJ8pIjMyOn4JlVh3cJrroZmluA,10351
30
- kerykeion-4.8.1.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
31
- kerykeion-4.8.1.dist-info/entry_points.txt,sha256=5SmANYscFDDTdeovHvGQ-cnj0hdFvGoxPaWLCpyDFnQ,49
32
- kerykeion-4.8.1.dist-info/RECORD,,