kerykeion 5.0.0a1__tar.gz → 5.0.0a3__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 (55) hide show
  1. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/PKG-INFO +117 -105
  2. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/README.md +116 -104
  3. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/__init__.py +1 -2
  4. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/charts_utils.py +119 -87
  5. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/kerykeion_chart_svg.py +62 -26
  6. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/templates/chart.xml +13 -6
  7. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/kr_types/chart_types.py +4 -2
  8. {kerykeion-5.0.0a1/kerykeion/relationship_score → kerykeion-5.0.0a3/kerykeion}/relationship_score_factory.py +3 -3
  9. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/pyproject.toml +1 -1
  10. kerykeion-5.0.0a1/kerykeion/relationship_score/__init__.py +0 -2
  11. kerykeion-5.0.0a1/kerykeion/relationship_score/relationship_score.py +0 -175
  12. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/LICENSE +0 -0
  13. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/aspects/__init__.py +0 -0
  14. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/aspects/aspects_utils.py +0 -0
  15. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/aspects/natal_aspects.py +0 -0
  16. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/aspects/synastry_aspects.py +0 -0
  17. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/aspects/transits_time_range.py +0 -0
  18. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/astrological_subject_factory.py +0 -0
  19. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/__init__.py +0 -0
  20. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/draw_planets.py +0 -0
  21. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/draw_planets_v2.py +0 -0
  22. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/templates/aspect_grid_only.xml +0 -0
  23. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/templates/wheel_only.xml +0 -0
  24. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/themes/classic.css +0 -0
  25. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/themes/dark-high-contrast.css +0 -0
  26. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/themes/dark.css +0 -0
  27. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/themes/light.css +0 -0
  28. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/charts/themes/strawberry.css +0 -0
  29. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/composite_subject_factory.py +0 -0
  30. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/enums.py +0 -0
  31. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/ephemeris_data.py +0 -0
  32. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/fetch_geonames.py +0 -0
  33. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/house_comparison/__init__.py +0 -0
  34. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/house_comparison/house_comparison_factory.py +0 -0
  35. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/house_comparison/house_comparison_models.py +0 -0
  36. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/house_comparison/house_comparison_utils.py +0 -0
  37. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/kr_types/__init__.py +0 -0
  38. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/kr_types/kerykeion_exception.py +0 -0
  39. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/kr_types/kr_literals.py +0 -0
  40. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/kr_types/kr_models.py +0 -0
  41. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/kr_types/settings_models.py +0 -0
  42. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/planetary_return_factory.py +0 -0
  43. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/report.py +0 -0
  44. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/__init__.py +0 -0
  45. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/config_constants.py +0 -0
  46. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/kerykeion_settings.py +0 -0
  47. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/kr.config.json +0 -0
  48. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/legacy/__init__.py +0 -0
  49. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/legacy/legacy_celestial_points_settings.py +0 -0
  50. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/legacy/legacy_chart_aspects_settings.py +0 -0
  51. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/settings/legacy/legacy_color_settings.py +0 -0
  52. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/sweph/README.md +0 -0
  53. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/sweph/seas_18.se1 +0 -0
  54. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/transits_time_range.py +0 -0
  55. {kerykeion-5.0.0a1 → kerykeion-5.0.0a3}/kerykeion/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: kerykeion
3
- Version: 5.0.0a1
3
+ Version: 5.0.0a3
4
4
  Summary: A python library for astrology.
5
5
  License: AGPL-3.0
6
6
  Keywords: astrology,ephemeris,astrology library,birtchart,svg,zodiac,zodiac-sing,astronomical-algorithms,synastry,astrology-calculator
@@ -79,8 +79,17 @@ Maintaining this project requires substantial time and effort. The Astrologer AP
79
79
 
80
80
  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/kerykeion)
81
81
 
82
+ ## ⚠️ Development Branch Notice
83
+
84
+ This branch (`next`) is **not the stable version** of Kerykeion. It is the **development branch for the upcoming V5 release**.
85
+
86
+ If you're looking for the latest stable version, please check out the [`master`](https://github.com/g-battaglia/kerykeion/tree/master) branch instead.
82
87
 
83
88
  ## Table of Contents
89
+ - [**Web API**](#web-api)
90
+ - [**Donate**](#donate)
91
+ - [⚠️ Development Branch Notice](#️-development-branch-notice)
92
+ - [Table of Contents](#table-of-contents)
84
93
  - [Installation](#installation)
85
94
  - [Basic Usage](#basic-usage)
86
95
  - [Generate a SVG Chart](#generate-a-svg-chart)
@@ -127,34 +136,34 @@ pip3 install kerykeion
127
136
  Below is a simple example illustrating the creation of an astrological subject and retrieving astrological details:
128
137
 
129
138
  ```python
130
- from kerykeion import AstrologicalSubject
139
+ from kerykeion import AstrologicalSubjectFactory
131
140
 
132
- # Create an instance of the AstrologicalSubject class.
141
+ # Create an instance of the AstrologicalSubjectFactory class.
133
142
  # Arguments: Name, year, month, day, hour, minutes, city, nation
134
- kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
143
+ john = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
135
144
 
136
145
  # Retrieve information about the Sun:
137
- kanye.sun
138
- # > {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, ...}
146
+ print(john.sun.model_dump_json())
147
+ # > {"name":"Sun","quality":"Cardinal","element":"Air","sign":"Lib","sign_num":6,"position":16.26789199474399,"abs_pos":196.267891994744,"emoji":"♎️","point_type":"AstrologicalPoint","house":"Sixth_House","retrograde":false}
139
148
 
140
149
  # Retrieve information about the first house:
141
- kanye.first_house
142
- # > {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', ...}
150
+ print(john.first_house.model_dump_json())
151
+ # > {"name":"First_House","quality":"Cardinal","element":"Fire","sign":"Ari","sign_num":0,"position":19.74676624176799,"abs_pos":19.74676624176799,"emoji":"♈️","point_type":"House","house":null,"retrograde":null}
143
152
 
144
153
  # Retrieve the element of the Moon sign:
145
- kanye.moon.element
146
- # > 'Water'
154
+ print(john.moon.element)
155
+ # > 'Air'
147
156
  ```
148
157
 
149
158
  **To avoid using GeoNames online, specify longitude, latitude, and timezone instead of city and nation:**
150
159
 
151
160
  ```python
152
- kanye = AstrologicalSubject(
153
- "Kanye", 1977, 6, 8, 8, 45,
154
- lng=50,
155
- lat=50,
156
- tz_str="Europe/Rome",
157
- city="Rome"
161
+ john = AstrologicalSubjectFactory.from_birth_data(
162
+ "John Lennon", 1940, 10, 9, 18, 30,
163
+ lng=-2.9833, # Longitude for Liverpool
164
+ lat=53.4000, # Latitude for Liverpool
165
+ tz_str="Europe/London", # Timezone for Liverpool
166
+ city="Liverpool",
158
167
  )
159
168
  ```
160
169
 
@@ -169,9 +178,9 @@ To improve compatibility across different applications, you can use the `remove_
169
178
  ### Birth Chart
170
179
 
171
180
  ```python
172
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
181
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
173
182
 
174
- john = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
183
+ john = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
175
184
  birth_chart_svg = KerykeionChartSVG(john)
176
185
  birth_chart_svg.makeSVG()
177
186
  ```
@@ -186,8 +195,8 @@ The SVG file will be saved in the home directory.
186
195
  ### External Birth Chart
187
196
 
188
197
  ```python
189
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
190
- birth_chart = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
198
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
199
+ birth_chart = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
191
200
  birth_chart_svg = KerykeionChartSVG(birth_chart, chart_type="ExternalNatal")
192
201
  birth_chart_svg.makeSVG()
193
202
  ```
@@ -196,10 +205,10 @@ birth_chart_svg.makeSVG()
196
205
  ### Synastry Chart
197
206
 
198
207
  ```python
199
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
208
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
200
209
 
201
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
202
- second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
210
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
211
+ second = AstrologicalSubjectFactory.from_birth_data("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
203
212
 
204
213
  synastry_chart = KerykeionChartSVG(first, "Synastry", second)
205
214
  synastry_chart.makeSVG()
@@ -211,10 +220,10 @@ synastry_chart.makeSVG()
211
220
  ### Transit Chart
212
221
 
213
222
  ```python
214
- from kerykeion import AstrologicalSubject
223
+ from kerykeion import AstrologicalSubjectFactory
215
224
 
216
- transit = AstrologicalSubject("Transit", 2025, 6, 8, 8, 45, "Atlanta", "US")
217
- subject = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
225
+ transit = AstrologicalSubjectFactory.from_birth_data("Transit", 2025, 6, 8, 8, 45, "Atlanta", "US")
226
+ subject = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
218
227
 
219
228
  transit_chart = KerykeionChartSVG(subject, "Transit", transit)
220
229
  transit_chart.makeSVG()
@@ -225,11 +234,11 @@ transit_chart.makeSVG()
225
234
  ### Composite Chart
226
235
 
227
236
  ```python
228
- from kerykeion import CompositeSubjectFactory, AstrologicalSubject, KerykeionChartSVG
237
+ from kerykeion import CompositeSubjectFactory, AstrologicalSubjectFactory, KerykeionChartSVG
229
238
 
230
- angelina = AstrologicalSubject("Angelina Jolie", 1975, 6, 4, 9, 9, "Los Angeles", "US", lng=-118.15, lat=34.03, tz_str="America/Los_Angeles")
239
+ angelina = AstrologicalSubjectFactory.from_birth_data("Angelina Jolie", 1975, 6, 4, 9, 9, "Los Angeles", "US", lng=-118.15, lat=34.03, tz_str="America/Los_Angeles")
231
240
 
232
- brad = AstrologicalSubject("Brad Pitt", 1963, 12, 18, 6, 31, "Shawnee", "US", lng=-96.56, lat=35.20, tz_str="America/Chicago")
241
+ brad = AstrologicalSubjectFactory.from_birth_data("Brad Pitt", 1963, 12, 18, 6, 31, "Shawnee", "US", lng=-96.56, lat=35.20, tz_str="America/Chicago")
233
242
 
234
243
  factory = CompositeSubjectFactory(angelina, brad)
235
244
  composite_model = factory.get_midpoint_composite_subject_model()
@@ -246,9 +255,9 @@ For *all* the charts, you can generate a wheel-only chart by using the method `m
246
255
 
247
256
  ### Birth Chart
248
257
  ```python
249
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
258
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
250
259
 
251
- birth_chart = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
260
+ birth_chart = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
252
261
  birth_chart_svg = KerykeionChartSVG(birth_chart)
253
262
  birth_chart_svg.makeWheelOnlySVG()
254
263
  ```
@@ -257,8 +266,8 @@ birth_chart_svg.makeWheelOnlySVG()
257
266
  ### Wheel Only Birth Chart (External)
258
267
 
259
268
  ```python
260
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
261
- birth_chart = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
269
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
270
+ birth_chart = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
262
271
  birth_chart_svg = KerykeionChartSVG(birth_chart, chart_type="ExternalNatal")
263
272
  birth_chart_svg.makeWheelOnlySVG(
264
273
  wheel_only=True,
@@ -270,9 +279,9 @@ birth_chart_svg.makeWheelOnlySVG(
270
279
 
271
280
  ### Synastry Chart
272
281
  ```python
273
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
274
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
275
- second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
282
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
283
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
284
+ second = AstrologicalSubjectFactory.from_birth_data("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
276
285
  synastry_chart = KerykeionChartSVG(
277
286
  first, "Synastry", second
278
287
  )
@@ -286,10 +295,10 @@ synastry_chart.makeWheelOnlySVG()
286
295
  To save the SVG file in a custom location, specify `new_output_directory`:
287
296
 
288
297
  ```python
289
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
298
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
290
299
 
291
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
292
- second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
300
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
301
+ second = AstrologicalSubjectFactory.from_birth_data("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
293
302
 
294
303
  synastry_chart = KerykeionChartSVG(
295
304
  first, "Synastry", second,
@@ -303,9 +312,9 @@ synastry_chart.makeSVG()
303
312
  You can switch chart language by passing `chart_language` to the `KerykeionChartSVG` class:
304
313
 
305
314
  ```python
306
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
315
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
307
316
 
308
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
317
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
309
318
  birth_chart_svg = KerykeionChartSVG(
310
319
  birth_chart,
311
320
  chart_language="IT" # Change to Italian
@@ -331,8 +340,8 @@ The available languages are:
331
340
  To generate a minified SVG, set `minify_svg=True` in the `makeSVG()` method:
332
341
 
333
342
  ```python
334
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
335
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
343
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
344
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
336
345
  birth_chart_svg = KerykeionChartSVG(birth_chart)
337
346
  birth_chart_svg.makeSVG(
338
347
  minify=True
@@ -343,9 +352,9 @@ birth_chart_svg.makeSVG(
343
352
  To generate an SVG without CSS variables, set `remove_css_variables=True` in the `makeSVG()` method:
344
353
 
345
354
  ```python
346
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
355
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
347
356
 
348
- first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
357
+ first = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
349
358
  birth_chart_svg = KerykeionChartSVG(birth_chart)
350
359
  birth_chart_svg.makeSVG(
351
360
  remove_css_variables=True
@@ -359,8 +368,8 @@ This will inline all styles and eliminate CSS variables, resulting in an SVG tha
359
368
  It's possible to generate a grid-only SVG, useful for creating a custom layout. To do this, use the `makeGridOnlySVG()` method:
360
369
 
361
370
  ```python
362
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
363
- birth_chart = AstrologicalSubject("John Lennon - Aspect Grid Dark Synastry", 1977, 6, 8, 8, 45, "Atlanta", "US")
371
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
372
+ birth_chart = AstrologicalSubjectFactory.from_birth_data("John Lennon - Aspect Grid Dark Synastry", 1977, 6, 8, 8, 45, "Atlanta", "US")
364
373
  aspect_grid_dark_synastry_chart = KerykeionChartSVG(aspect_grid_dark_synastry_subject, "Synastry", second, theme="dark")
365
374
  aspect_grid_dark_synastry_chart.makeAspectGridOnlySVG()
366
375
  ```
@@ -369,57 +378,62 @@ aspect_grid_dark_synastry_chart.makeAspectGridOnlySVG()
369
378
  ## Report
370
379
 
371
380
  ```python
372
- from kerykeion import Report, AstrologicalSubject
373
-
374
- kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
375
- report = Report(kanye)
381
+ from kerykeion import Report, AstrologicalSubjectFactory
382
+
383
+ john = AstrologicalSubjectFactory.from_birth_data(
384
+ "John Lennon", 1940, 10, 9, 18, 30,
385
+ lng=-2.9833, # Longitude for Liverpool
386
+ lat=53.4000, # Latitude for Liverpool
387
+ tz_str="Europe/London", # Timezone for Liverpool
388
+ city="Liverpool",
389
+ )
390
+ report = Report(john)
376
391
  report.print_report()
377
392
  ```
378
393
 
379
- Returns:
380
-
381
- ```txt
382
- +- Kerykeion report for Kanye -+
383
- +----------+------+-------------+-----------+----------+
384
- | Date | Time | Location | Longitude | Latitude |
385
- +----------+------+-------------+-----------+----------+
386
- | 8/6/1977 | 8:45 | Atlanta, US | -84.38798 | 33.749 |
387
- +----------+------+-------------+-----------+----------+
388
- +-----------------+------+-------+------+----------------+
389
- | Planet | Sign | Pos. | Ret. | House |
390
- +-----------------+------+-------+------+----------------+
391
- | Sun | Gem | 17.6 | - | Twelfth_House |
392
- | Moon | Pis | 16.43 | - | Ninth_House |
393
- | Mercury | Tau | 26.29 | - | Eleventh_House |
394
- | Venus | Tau | 2.03 | - | Tenth_House |
395
- | Mars | Tau | 1.79 | - | Tenth_House |
396
- | Jupiter | Gem | 14.61 | - | Eleventh_House |
397
- | Saturn | Leo | 12.8 | - | Second_House |
398
- | Uranus | Sco | 8.27 | R | Fourth_House |
399
- | Neptune | Sag | 14.69 | R | Fifth_House |
400
- | Pluto | Lib | 11.45 | R | Fourth_House |
401
- | Mean_Node | Lib | 21.49 | R | Fourth_House |
402
- | True_Node | Lib | 22.82 | R | Fourth_House |
403
- | Mean_South_Node | Ari | 21.49 | R | Tenth_House |
404
- | True_South_Node | Ari | 22.82 | R | Tenth_House |
405
- | Chiron | Tau | 4.17 | - | Tenth_House |
406
- +-----------------+------+-------+------+----------------+
394
+ Report output:
395
+ ```plaintext
396
+ +- Kerykeion report for John Lennon -+
397
+ +-----------+-------+---------------+-----------+----------+
398
+ | Date | Time | Location | Longitude | Latitude |
399
+ +-----------+-------+---------------+-----------+----------+
400
+ | 9/10/1940 | 18:30 | Liverpool, GB | -2.9833 | 53.4 |
401
+ +-----------+-------+---------------+-----------+----------+
402
+ +-------------------+------+-------+------+----------------+
403
+ | AstrologicalPoint | Sign | Pos. | Ret. | House |
404
+ +-------------------+------+-------+------+----------------+
405
+ | Sun | Lib | 16.27 | - | Sixth_House |
406
+ | Moon | Aqu | 3.55 | - | Eleventh_House |
407
+ | Mercury | Sco | 8.56 | - | Seventh_House |
408
+ | Venus | Vir | 3.22 | - | Sixth_House |
409
+ | Mars | Lib | 2.66 | - | Sixth_House |
410
+ | Jupiter | Tau | 13.69 | R | First_House |
411
+ | Saturn | Tau | 13.22 | R | First_House |
412
+ | Uranus | Tau | 25.55 | R | First_House |
413
+ | Neptune | Vir | 26.03 | - | Sixth_House |
414
+ | Pluto | Leo | 4.19 | - | Fifth_House |
415
+ | Mean_Node | Lib | 10.58 | R | Sixth_House |
416
+ | Mean_South_Node | Ari | 10.58 | R | Twelfth_House |
417
+ | Mean_Lilith | Ari | 13.37 | - | Twelfth_House |
418
+ | Chiron | Leo | 0.57 | - | Fifth_House |
419
+ +-------------------+------+-------+------+----------------+
407
420
  +----------------+------+----------+
408
421
  | House | Sign | Position |
409
422
  +----------------+------+----------+
410
- | First_House | Can | 18.0 |
411
- | Second_House | Leo | 9.51 |
412
- | Third_House | Vir | 4.02 |
413
- | Fourth_House | Lib | 3.98 |
414
- | Fifth_House | Sco | 9.39 |
415
- | Sixth_House | Sag | 15.68 |
416
- | Seventh_House | Cap | 18.0 |
417
- | Eighth_House | Aqu | 9.51 |
418
- | Ninth_House | Pis | 4.02 |
419
- | Tenth_House | Ari | 3.98 |
420
- | Eleventh_House | Tau | 9.39 |
421
- | Twelfth_House | Gem | 15.68 |
423
+ | First_House | Ari | 19.72 |
424
+ | Second_House | Tau | 29.52 |
425
+ | Third_House | Gem | 20.23 |
426
+ | Fourth_House | Can | 7.07 |
427
+ | Fifth_House | Can | 25.31 |
428
+ | Sixth_House | Leo | 22.11 |
429
+ | Seventh_House | Lib | 19.72 |
430
+ | Eighth_House | Sco | 29.52 |
431
+ | Ninth_House | Sag | 20.23 |
432
+ | Tenth_House | Cap | 7.07 |
433
+ | Eleventh_House | Cap | 25.31 |
434
+ | Twelfth_House | Aqu | 22.11 |
422
435
  +----------------+------+----------+
436
+ ```
423
437
 
424
438
  To export to a file:
425
439
 
@@ -432,8 +446,8 @@ python3 your_script_name.py > file.txt
432
446
  ```python
433
447
  from kerykeion import SynastryAspects, AstrologicalSubject
434
448
 
435
- first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma", "IT")
436
- second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 0, "Roma", "IT")
449
+ first = AstrologicalSubjectFactory.from_birth_data("Jack", 1990, 6, 15, 15, 15, "Roma", "IT")
450
+ second = AstrologicalSubjectFactory.from_birth_data("Jane", 1991, 10, 25, 21, 0, "Roma", "IT")
437
451
 
438
452
  name = SynastryAspects(first, second)
439
453
  aspect_list = name.get_relevant_aspects()
@@ -447,7 +461,7 @@ print(aspect_list[0])
447
461
  By default, the zodiac type is **Tropical**. To use **Sidereal**, specify the sidereal mode:
448
462
 
449
463
  ```python
450
- johnny = AstrologicalSubject(
464
+ johnny = AstrologicalSubjectFactory.from_birth_data(
451
465
  "Johnny Depp", 1963, 6, 9, 0, 0,
452
466
  "Owensboro", "US",
453
467
  zodiac_type="Sidereal",
@@ -464,7 +478,7 @@ Full list of supported sidereal modes [here](https://www.kerykeion.net/pydocs/ke
464
478
  By default, houses are calculated using **Placidus**. Configure a different house system as follows:
465
479
 
466
480
  ```python
467
- johnny = AstrologicalSubject(
481
+ johnny = AstrologicalSubjectFactory.from_birth_data(
468
482
  "Johnny Depp", 1963, 6, 9, 0, 0,
469
483
  "Owensboro", "US",
470
484
  houses_system="M"
@@ -482,7 +496,7 @@ So far all the available houses system in the Swiss Ephemeris are supported but
482
496
  By default, Kerykeion uses the **Apparent Geocentric** perspective (the most standard in astrology). Other perspectives (e.g., **Heliocentric**) can be set this way:
483
497
 
484
498
  ```python
485
- johnny = AstrologicalSubject(
499
+ johnny = AstrologicalSubjectFactory.from_birth_data(
486
500
  "Johnny Depp", 1963, 6, 9, 0, 0,
487
501
  "Owensboro", "US",
488
502
  perspective_type="Heliocentric"
@@ -507,9 +521,9 @@ Each theme offers a distinct visual style, allowing you to choose the one that b
507
521
  Here's an example of how to set the theme:
508
522
 
509
523
  ```python
510
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
524
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
511
525
 
512
- dark_theme_subject = AstrologicalSubject("John Lennon - Dark Theme", 1940, 10, 9, 18, 30, "Liverpool", "GB")
526
+ dark_theme_subject = AstrologicalSubjectFactory.from_birth_data("John Lennon - Dark Theme", 1940, 10, 9, 18, 30, "Liverpool", "GB")
513
527
  dark_theme_natal_chart = KerykeionChartSVG(dark_high_contrast_theme_subject, theme="dark_high_contrast")
514
528
  dark_theme_natal_chart.makeSVG()
515
529
  ```
@@ -529,7 +543,7 @@ subject = AstrologicalSubject.get_from_iso_utc_time(
529
543
  If you set `online=True`, provide a `geonames_username` to allow city-based geolocation:
530
544
 
531
545
  ```python
532
- from kerykeion.astrological_subject import AstrologicalSubject
546
+ from kerykeion.astrological_subject import AstrologicalSubjectFactory
533
547
 
534
548
  subject = AstrologicalSubject.get_from_iso_utc_time(
535
549
  "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True
@@ -545,16 +559,14 @@ Kerykeion supports both **True** and **Mean** Lunar Nodes:
545
559
  - **Mean North Lunar Node**: `"mean_node"` (name kept without "north" for backward compatibility).
546
560
  - **Mean South Lunar Node**: `"mean_south_node"`.
547
561
 
548
- In instances of the AstrologicalSubject class, all of them are active by default.
549
-
550
562
  In instances of the classes used to generate aspects and SVG charts, only the mean nodes are active. To activate the true nodes, you need to pass the `active_points` parameter to the `KerykeionChartSVG` class.
551
563
 
552
564
  Example:
553
565
 
554
566
  ```python
555
- from kerykeion import AstrologicalSubject, KerykeionChartSVG
567
+ from kerykeion import AstrologicalSubjectFactory, KerykeionChartSVG
556
568
 
557
- subject = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
569
+ subject = AstrologicalSubjectFactory.from_birth_data("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
558
570
 
559
571
  chart = KerykeionChartSVG(
560
572
  subject,
@@ -587,9 +599,9 @@ chart.makeSVG()
587
599
  You can serialize the astrological subject (the base data used throughout the library) to JSON:
588
600
 
589
601
  ```python
590
- from kerykeion import AstrologicalSubject
602
+ from kerykeion import AstrologicalSubjectFactory
591
603
 
592
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US")
604
+ johnny = AstrologicalSubjectFactory.from_birth_data("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US")
593
605
 
594
606
  print(johnny.json(dump=False, indent=2))
595
607
  ```