kerykeion 4.25.4__tar.gz → 4.26.0__tar.gz

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

Potentially problematic release.


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

Files changed (44) hide show
  1. {kerykeion-4.25.4 → kerykeion-4.26.0}/PKG-INFO +126 -116
  2. {kerykeion-4.25.4 → kerykeion-4.26.0}/README.md +125 -115
  3. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/__init__.py +1 -0
  4. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/aspects/natal_aspects.py +2 -0
  5. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/aspects/synastry_aspects.py +2 -0
  6. kerykeion-4.26.0/kerykeion/aspects/transits_time_range.py +41 -0
  7. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/ephemeris_data.py +74 -10
  8. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/kr_types/kr_models.py +44 -0
  9. kerykeion-4.26.0/kerykeion/transits_time_range.py +124 -0
  10. {kerykeion-4.25.4 → kerykeion-4.26.0}/pyproject.toml +1 -1
  11. {kerykeion-4.25.4 → kerykeion-4.26.0}/LICENSE +0 -0
  12. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/aspects/__init__.py +0 -0
  13. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/aspects/aspects_utils.py +0 -0
  14. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/astrological_subject.py +0 -0
  15. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/__init__.py +0 -0
  16. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/charts_utils.py +0 -0
  17. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/draw_planets.py +0 -0
  18. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/kerykeion_chart_svg.py +0 -0
  19. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/templates/aspect_grid_only.xml +0 -0
  20. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/templates/chart.xml +0 -0
  21. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/templates/wheel_only.xml +0 -0
  22. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/themes/classic.css +0 -0
  23. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/themes/dark-high-contrast.css +0 -0
  24. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/themes/dark.css +0 -0
  25. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/charts/themes/light.css +0 -0
  26. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/composite_subject_factory.py +0 -0
  27. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/enums.py +0 -0
  28. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/fetch_geonames.py +0 -0
  29. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/kr_types/__init__.py +0 -0
  30. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/kr_types/chart_types.py +0 -0
  31. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/kr_types/kerykeion_exception.py +0 -0
  32. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/kr_types/kr_literals.py +0 -0
  33. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/kr_types/settings_models.py +0 -0
  34. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/relationship_score/__init__.py +0 -0
  35. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/relationship_score/relationship_score.py +0 -0
  36. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/relationship_score/relationship_score_factory.py +0 -0
  37. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/report.py +0 -0
  38. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/settings/__init__.py +0 -0
  39. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/settings/config_constants.py +0 -0
  40. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/settings/kerykeion_settings.py +0 -0
  41. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/settings/kr.config.json +0 -0
  42. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/sweph/README.md +0 -0
  43. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/sweph/seas_18.se1 +0 -0
  44. {kerykeion-4.25.4 → kerykeion-4.26.0}/kerykeion/utilities.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: kerykeion
3
- Version: 4.25.4
3
+ Version: 4.26.0
4
4
  Summary: A python library for astrology.
5
5
  Home-page: https://www.kerykeion.net/
6
6
  License: AGPL-3.0
@@ -37,53 +37,77 @@ Requires-Dist: typing-extensions (>=4.12.2,<5.0.0)
37
37
  Project-URL: Repository, https://github.com/g-battaglia/kerykeion
38
38
  Description-Content-Type: text/markdown
39
39
 
40
- <h1 align=center>Kerykeion</h1>
40
+ <h1 align="center">Kerykeion</h1>
41
+
41
42
  <div align="center">
42
- <img src="https://img.shields.io/github/stars/g-battaglia/kerykeion.svg?logo=github" alt="stars">
43
- <img src="https://img.shields.io/github/forks/g-battaglia/kerykeion.svg?logo=github" alt="forks">
44
-
43
+ <img src="https://img.shields.io/github/stars/g-battaglia/kerykeion.svg?logo=github" alt="stars">
44
+ <img src="https://img.shields.io/github/forks/g-battaglia/kerykeion.svg?logo=github" alt="forks">
45
45
  </div>
46
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">
50
- <img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
51
- <img src="https://img.shields.io/pypi/pyversions/kerykeion.svg" alt="Supported Python versions">
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">
50
+ <img src="https://img.shields.io/pypi/v/kerykeion?label=pypi%20package" alt="Package version">
51
+ <img src="https://img.shields.io/pypi/pyversions/kerykeion.svg" alt="Supported Python versions">
52
52
  </div>
53
53
 
54
54
  &nbsp;
55
55
 
56
- Kerykeion is a python library for Astrology.
57
- It can calculate all the planet and house position,
58
- also it can calculate the aspects of a single persone or between two, you can set how many planets you
59
- need in the settings in the utility module.
60
- It also can generate an SVG of a birthchart, a synastry chart or a transit chart.
56
+ Kerykeion is a Python library for astrology. It computes planetary and house positions, detects aspects, and generates SVG charts—including birth, synastry, transit, and composite charts. You can also customize which planets to include in your calculations.
57
+
58
+ The main goal of this project is to offer a clean, data-driven approach to astrology, making it accessible and programmable.
61
59
 
62
- The core goal of this project is to provide a simple and easy approach to astrology in a data driven way.
60
+ Kerykeion also integrates seamlessly with LLM and AI applications.
63
61
 
64
- Here's an example of a birthchart:
62
+ Here is an example of a birthchart:
65
63
 
66
64
  ![John Lenon Chart](https://raw.githubusercontent.com/g-battaglia/kerykeion/refs/heads/master/tests/charts/svg/John%20Lennon%20-%20Dark%20Theme%20-%20Natal%20Chart.svg)
67
65
 
68
- ## Web API
66
+ **Web API**
67
+ ---
69
68
 
70
- If you want to use Kerykeion in a web application, I've created a web API for this purpose, you can find it here:
69
+ If you want to use Kerykeion in a web application, you can try the dedicated web API:
71
70
 
72
71
  **[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/pricing)**
73
72
 
74
- It's [open source](https://github.com/g-battaglia/Astrologer-API), it's a way to support me and the project.
75
-
76
- ## Donate
73
+ It is [open source](https://github.com/g-battaglia/Astrologer-API) and directly supports this project.
77
74
 
78
- Maintaining this project is a lot of work, the Astrologer API doesn't nearly cover the costs of a software engineer working on this project full time. I do this because I love it, but until I can make this my full time job, I won't be able to spend as much time on it.
75
+ **Donate**
76
+ --
79
77
 
80
- If you want to support me, you can do it here:
78
+ Maintaining this project requires substantial time and effort. The Astrologer API alone cannot cover the costs of full-time development. If you find Kerykeion valuable and would like to support further development, please consider donating:
81
79
 
82
80
  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/kerykeion)
83
81
 
82
+
83
+ ## Table of Contents
84
+ - [Installation](#installation)
85
+ - [Basic Usage](#basic-usage)
86
+ - [Generate a SVG Chart](#generate-a-svg-chart)
87
+ - [Birth Chart](#birth-chart)
88
+ - [Synastry Chart](#synastry-chart)
89
+ - [Transit Chart](#transit-chart)
90
+ - [Composite Chart](#composite-chart)
91
+ - [Change the Output Directory](#change-the-output-directory)
92
+ - [Change Language](#change-language)
93
+ - [Report](#report)
94
+ - [Example: Retrieving Aspects](#example-retrieving-aspects)
95
+ - [Ayanamsa (Sidereal Modes)](#ayanamsa-sidereal-modes)
96
+ - [House Systems](#house-systems)
97
+ - [Perspective Type](#perspective-type)
98
+ - [Themes](#themes)
99
+ - [Alternative Initialization](#alternative-initialization)
100
+ - [Lunar Nodes (Rahu \& Ketu)](#lunar-nodes-rahu--ketu)
101
+ - [JSON Support](#json-support)
102
+ - [Auto Generated Documentation](#auto-generated-documentation)
103
+ - [Development](#development)
104
+ - [Integrating Kerykeion into Your Project](#integrating-kerykeion-into-your-project)
105
+ - [License](#license)
106
+ - [Contributing](#contributing)
107
+
84
108
  ## Installation
85
109
 
86
- Kerykeion is a _Python 3.9_ package, make sure you have _Python 3.9_ or above installed on your system.
110
+ Kerykeion requires **Python 3.9** or higher.
87
111
 
88
112
  ```bash
89
113
  pip3 install kerykeion
@@ -91,48 +115,40 @@ pip3 install kerykeion
91
115
 
92
116
  ## Basic Usage
93
117
 
94
- 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.
95
-
96
- Here's an example:
118
+ Below is a simple example illustrating the creation of an astrological subject and retrieving astrological details:
97
119
 
98
120
  ```python
99
-
100
- # Import the main class for creating a kerykeion instance:
101
121
  from kerykeion import AstrologicalSubject
102
122
 
103
- # Create a kerykeion instance:
104
- # Args: Name, year, month, day, hour, minuts, city, nation
123
+ # Create an instance of the AstrologicalSubject class.
124
+ # Arguments: Name, year, month, day, hour, minutes, city, nation
105
125
  kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
106
126
 
107
- # Get the information about the sun in the chart:
108
- # (The position of the planets always starts at 0)
127
+ # Retrieve information about the Sun:
109
128
  kanye.sun
129
+ # > {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, ...}
110
130
 
111
- #> {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, 'pos': 17.598992059774275, 'abs_pos': 77.59899205977428, 'emoji': '♊️', 'house': '12th House', 'retrograde': False}
112
-
113
- # Get information about the first house:
131
+ # Retrieve information about the first house:
114
132
  kanye.first_house
133
+ # > {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', ...}
115
134
 
116
- #> {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', 'sign_num': 3, 'pos': 17.995779673209114, 'abs_pos': 107.99577967320911, 'emoji': '♋️'}
117
-
118
- # Get element of the moon sign:
135
+ # Retrieve the element of the Moon sign:
119
136
  kanye.moon.element
120
-
121
- #> 'Water'
122
-
137
+ # > 'Water'
123
138
  ```
124
139
 
125
- **To avoid connecting to GeoNames (eg. avoiding hourly limit or no internet connection) you should instance kerykeion like this:**
140
+ **To avoid using GeoNames online, specify longitude, latitude, and timezone instead of city and nation:**
126
141
 
127
142
  ```python
128
143
  kanye = AstrologicalSubject(
129
- "Kanye", 1977, 6, 8, 8, 45, lng=50, lat=50, tz_str="Europe/Rome", city="Rome"
144
+ "Kanye", 1977, 6, 8, 8, 45,
145
+ lng=50,
146
+ lat=50,
147
+ tz_str="Europe/Rome",
148
+ city="Rome"
130
149
  )
131
150
  ```
132
151
 
133
- The difference is that you have to pass the longitude, latitude and the timezone string, instead of the city and nation.
134
- 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.
135
-
136
152
  ## Generate a SVG Chart
137
153
 
138
154
  ### Birth Chart
@@ -140,10 +156,8 @@ If you omit the nation, it will be set to "GB" by default, but the value is not
140
156
  ```python
141
157
  from kerykeion import AstrologicalSubject, KerykeionChartSVG
142
158
 
143
-
144
159
  birth_chart = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
145
160
  birth_chart_svg = KerykeionChartSVG(birth_chart)
146
-
147
161
  birth_chart_svg.makeSVG()
148
162
  ```
149
163
 
@@ -158,10 +172,8 @@ from kerykeion import AstrologicalSubject, KerykeionChartSVG
158
172
  first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
159
173
  second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
160
174
 
161
- # Set the type, it can be Natal, Synastry or Transit
162
- synastry_chart = KerykeionChartSVG(first, "Synastry", second)
175
+ synastry_chart = KerykeionChartSVG(first, "Synastry", second)
163
176
  synastry_chart.makeSVG()
164
-
165
177
  ```
166
178
 
167
179
  ![John Lennon and Paul McCartney Synastry](https://www.kerykeion.net/img/examples/synastry-chart.svg)
@@ -187,20 +199,21 @@ transit_chart.makeSVG()
187
199
  from kerykeion import CompositeSubjectFactory, AstrologicalSubject, KerykeionChartSVG
188
200
 
189
201
  angelina = AstrologicalSubject("Angelina Jolie", 1975, 6, 4, 9, 9, "Los Angeles", "US", lng=-118.15, lat=34.03, tz_str="America/Los_Angeles")
202
+
190
203
  brad = AstrologicalSubject("Brad Pitt", 1963, 12, 18, 6, 31, "Shawnee", "US", lng=-96.56, lat=35.20, tz_str="America/Chicago")
191
204
 
192
- composite_subject_factory = CompositeSubjectFactory(angelina, brad)
193
- composite_subject_model = composite_subject_factory.get_midpoint_composite_subject_model()
205
+ factory = CompositeSubjectFactory(angelina, brad)
206
+ composite_model = factory.get_midpoint_composite_subject_model()
194
207
 
195
- composite_chart = KerykeionChartSVG(composite_subject_model, "Composite")
208
+ composite_chart = KerykeionChartSVG(composite_model, "Composite")
196
209
  composite_chart.makeSVG()
197
210
  ```
198
211
 
199
212
  ![Angelina Jolie and Brad Pitt Composite Chart](https://raw.githubusercontent.com/g-battaglia/kerykeion/refs/heads/master/tests/charts/svg/Angelina%20Jolie%20and%20Brad%20Pitt%20Composite%20Chart%20-%20Composite%20Chart.svg)
200
213
 
201
- ### Change the output directory
214
+ ### Change the Output Directory
202
215
 
203
- By default the output directory is the home directory, you can change it by passing the new_output_directory parameter to the KerykeionChartSVG class:
216
+ To save the SVG file in a custom location, specify `new_output_directory`:
204
217
 
205
218
  ```python
206
219
  from kerykeion import AstrologicalSubject, KerykeionChartSVG
@@ -208,23 +221,24 @@ from kerykeion import AstrologicalSubject, KerykeionChartSVG
208
221
  first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
209
222
  second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
210
223
 
211
- # Set the output directory to the current directory
212
- synastry_chart = KerykeionChartSVG(first, "Synastry", second, new_output_directory=".")
224
+ synastry_chart = KerykeionChartSVG(
225
+ first, "Synastry", second,
226
+ new_output_directory="."
227
+ )
213
228
  synastry_chart.makeSVG()
214
229
  ```
215
230
 
216
231
  ### Change Language
217
232
 
218
- You can change the language of the SVG by passing the `chart_language` parameter to the KerykeionChartSVG class:
233
+ You can switch chart language by passing `chart_language` to the `AstrologicalSubject` or `KerykeionChartSVG` classes:
219
234
 
220
235
  ```python
221
236
  first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB", chart_language="ES")
222
237
  ```
223
- More details [here](https://www.kerykeion.net/docs/examples/chart-language).
224
238
 
225
- ## Report
239
+ More details [here](https://www.kerykeion.net/docs//chart-language).
226
240
 
227
- To print a report of all the data:
241
+ ## Report
228
242
 
229
243
  ```python
230
244
  from kerykeion import Report, AstrologicalSubject
@@ -232,7 +246,6 @@ from kerykeion import Report, AstrologicalSubject
232
246
  kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
233
247
  report = Report(kanye)
234
248
  report.print_report()
235
-
236
249
  ```
237
250
 
238
251
  Returns:
@@ -280,56 +293,57 @@ Returns:
280
293
  | Twelfth_House | Gem | 15.68 |
281
294
  +----------------+------+----------+
282
295
 
283
- ```
284
-
285
- And if you want to export it to a file:
296
+ To export to a file:
286
297
 
287
298
  ```bash
288
299
  python3 your_script_name.py > file.txt
289
300
  ```
290
301
 
291
- ## Other examples of possible use cases:
302
+ ## Example: Retrieving Aspects
292
303
 
293
304
  ```python
294
- # Get all aspects between two persons:
295
-
296
305
  from kerykeion import SynastryAspects, AstrologicalSubject
306
+
297
307
  first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma", "IT")
298
- second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma", "IT")
308
+ second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 0, "Roma", "IT")
299
309
 
300
310
  name = SynastryAspects(first, second)
301
311
  aspect_list = name.get_relevant_aspects()
302
312
  print(aspect_list[0])
303
-
304
- #> Generating kerykeion object for Jack...
305
- #> Generating kerykeion object for Jane...
306
313
  #> {'p1_name': 'Sun', 'p1_abs_pos': 84.17867971515636, 'p2_name': 'Sun', 'p2_abs_pos': 211.90472999502984, 'aspect': 'trine', 'orbit': 7.726050279873476, 'aspect_degrees': 120, 'color': '#36d100', 'aid': 6, 'diff': 127.72605027987348, 'p1': 0, 'p2': 0}
307
314
 
308
315
  ```
309
316
 
310
317
  ## Ayanamsa (Sidereal Modes)
311
318
 
312
- By default, the zodiac type is set to Tropic (Tropical).
313
- You can set the zodiac type to Sidereal and the sidereal mode in the AstrologicalSubject class:
319
+ By default, the zodiac type is **Tropical**. To use **Sidereal**, specify the sidereal mode:
314
320
 
315
321
  ```python
316
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", zodiac_type="Sidereal", sidereal_mode="LAHIRI")
322
+ johnny = AstrologicalSubject(
323
+ "Johnny Depp", 1963, 6, 9, 0, 0,
324
+ "Owensboro", "US",
325
+ zodiac_type="Sidereal",
326
+ sidereal_mode="LAHIRI"
327
+ )
317
328
  ```
318
329
 
319
- More examples [here](https://www.kerykeion.net/docs/examples/sidereal-modes/).
330
+ More examples [here](https://www.kerykeion.net/docs//sidereal-modes/).
320
331
 
321
332
  Full list of supported sidereal modes [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#SiderealMode).
322
333
 
323
- ## Houses Systems
334
+ ## House Systems
324
335
 
325
- By default, the houses system is set to Placidus.
326
- You can set the houses system in the AstrologicalSubject class:
336
+ By default, houses are calculated using **Placidus**. Configure a different house system as follows:
327
337
 
328
338
  ```python
329
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", houses_system="M")
339
+ johnny = AstrologicalSubject(
340
+ "Johnny Depp", 1963, 6, 9, 0, 0,
341
+ "Owensboro", "US",
342
+ houses_system="M"
343
+ )
330
344
  ```
331
345
 
332
- More examples [here](https://www.kerykeion.net/docs/examples/houses-systems/).
346
+ More examples [here](https://www.kerykeion.net/docs//houses-systems/).
333
347
 
334
348
  Full list of supported house systems [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#HousesSystem).
335
349
 
@@ -337,28 +351,30 @@ So far all the available houses system in the Swiss Ephemeris are supported but
337
351
 
338
352
  ## Perspective Type
339
353
 
340
- By default, the perspective type is set to Apparent Geocentric (the most common standard for astrology).
341
- The perspective indicates the point of view from which the chart is calculated (Es. Apparent Geocentric, Heliocentric, etc.).
342
- You can set the perspective type in the AstrologicalSubject class:
354
+ By default, Kerykeion uses the **Apparent Geocentric** perspective (the most standard in astrology). Other perspectives (e.g., **Heliocentric**) can be set this way:
343
355
 
344
356
  ```python
345
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", perspective_type="Heliocentric")
357
+ johnny = AstrologicalSubject(
358
+ "Johnny Depp", 1963, 6, 9, 0, 0,
359
+ "Owensboro", "US",
360
+ perspective_type="Heliocentric"
361
+ )
346
362
  ```
347
363
 
348
- More examples [here](https://www.kerykeion.net/docs/examples/perspective-type/).
364
+ More examples [here](https://www.kerykeion.net/docs//perspective-type/).
349
365
 
350
366
  Full list of supported perspective types [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#PerspectiveType).
351
367
 
352
368
  ## Themes
353
369
 
354
- You can now personalize your astrological charts with different themes! Four themes are available:
370
+ Kerykeion provides several chart themes:
355
371
 
356
372
  - **Classic** (default)
357
373
  - **Dark**
358
374
  - **Dark High Contrast**
359
375
  - **Light**
360
-
361
- Each theme offers a distinct visual style, allowing you to choose the one that best suits your preferences or presentation needs. If you prefer more control over the appearance, you can opt not to set any theme, making it easier to customize the chart by overriding the default CSS variables. For more detailed instructions on how to apply themes, check the [documentation](https://www.kerykeion.net/docs/examples/theming)
376
+
377
+ Each theme offers a distinct visual style, allowing you to choose the one that best suits your preferences or presentation needs. If you prefer more control over the appearance, you can opt not to set any theme, making it easier to customize the chart by overriding the default CSS variables. For more detailed instructions on how to apply themes, check the [documentation](https://www.kerykeion.net/docs/theming)
362
378
 
363
379
  Here's an example of how to set the theme:
364
380
 
@@ -370,28 +386,26 @@ dark_theme_natal_chart = KerykeionChartSVG(dark_high_contrast_theme_subject, the
370
386
  dark_theme_natal_chart.makeSVG()
371
387
  ```
372
388
 
373
- ![John Lennon](https://www.kerykeion.net/assets/img/showcase/John%20Lennon%20-%20Dark%20-%20Natal%20Chart.svg)
389
+ ![John Lennon](https://www.kerykeion.net/img/showcase/John%20Lennon%20-%20Dark%20-%20Natal%20Chart.svg)
374
390
 
375
391
  ## Alternative Initialization
376
392
 
377
- You can initialize the AstrologicalSubject from a **UTC** ISO 8601 string:
393
+ Create an `AstrologicalSubject` from a UTC ISO 8601 string:
378
394
 
379
395
  ```python
380
396
  subject = AstrologicalSubject.get_from_iso_utc_time(
381
- "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US")
397
+ "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US"
398
+ )
382
399
  ```
383
400
 
384
- Note : The default time zone is UTC, with Greenwich longitude and latitude.
385
-
386
- The default online/offline mode is set to offline, if you set it online the default latitude and longitude will be ignored and
387
- calculated from the city and nation. Remember to pass also the geonames_username parameter if you want to use the online mode, like this:
401
+ If you set `online=True`, provide a `geonames_username` to allow city-based geolocation:
388
402
 
389
403
  ```python
390
404
  from kerykeion.astrological_subject import AstrologicalSubject
391
405
 
392
- # Use the static method get_from_iso_utc_time to create an instance of AstrologicalSubject
393
406
  subject = AstrologicalSubject.get_from_iso_utc_time(
394
- "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True)
407
+ "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True
408
+ )
395
409
  ```
396
410
 
397
411
  ## Lunar Nodes (Rahu & Ketu)
@@ -427,7 +441,7 @@ To display them, you need to edit the configuration file (kr.config.json).
427
441
 
428
442
  ## JSON Support
429
443
 
430
- The astrological subject, which is the base of data used in the library, can be easily serialized to JSON with the `json` method.
444
+ You can serialize the astrological subject (the base data used throughout the library) to JSON:
431
445
 
432
446
  ```python
433
447
  from kerykeion import AstrologicalSubject
@@ -437,31 +451,27 @@ johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US")
437
451
  print(johnny.json(dump=False, indent=2))
438
452
  ```
439
453
 
440
- ## Documentation
454
+ ## Auto Generated Documentation
441
455
 
442
- Most of the functions and the classes are self documented by the types and have docstrings.
443
- An auto-generated documentation [is available here](https://www.kerykeion.net/pydocs/kerykeion.html).
444
-
445
- Sooner or later I'll try to write an extensive documentation.
456
+ You can find auto-generated documentation [here](https://www.kerykeion.net/pydocs/kerykeion.html). Most classes and functions include docstrings.
446
457
 
447
458
  ## Development
448
459
 
449
- You can clone this repository or download a zip file using the right side buttons.
460
+ Clone the repository or download the ZIP via the GitHub interface.
450
461
 
451
- ## Integrate Kerykeion Functionalities in Your Project
462
+ ## Integrating Kerykeion into Your Project
452
463
 
453
- If you are interested in integrating Kerykeion's astrological functionalities into your project, I would be happy to collaborate with you. Whether you need custom features, support, or consultation, feel free to reach out to me at my [email](mailto:kerykeion.astrology@gmail.com?subject=Integration%20Request) address.
464
+ If you would like to incorporate Kerykeions astrological features into your application, please reach out via [email](mailto:kerykeion.astrology@gmail.com?subject=Integration%20Request). Whether you need custom features, support, or specialized consulting, I am happy to discuss potential collaborations.
454
465
 
455
466
  ## License
456
467
 
457
- This project is licensed under the AGPL-3.0 License.
458
- To understand how this impacts your use of the software, please see the [LICENSE](LICENSE) file for details.
459
- If you have questions, you can reach out to me at my [email](mailto:kerykeion.astrology@gmail.com?subject=Kerykeion) address.
460
- 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.
468
+ This project is covered under the AGPL-3.0 License. For detailed information, please see the [LICENSE](LICENSE) file. If you have questions, feel free to contact me at [kerykeion.astrology@gmail.com](mailto:kerykeion.astrology@gmail.com?subject=Kerykeion).
469
+
470
+ As a rule of thumb, if you use this library in a project, you should open-source that project under a compatible license. Alternatively, if you wish to keep your source closed, consider using the [AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/), which is AGPL-3.0 compliant and also helps support the project.
461
471
 
462
- 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.
472
+ Since the AstrologerAPI is an external third-party service, using it does *not* require your code to be open-source.
463
473
 
464
474
  ## Contributing
465
475
 
466
- Feel free to contribute to the code!
476
+ Contributions are welcome! Feel free to submit pull requests or report issues.
467
477