kerykeion 4.25.4__tar.gz → 4.26.0rc1__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.0rc1}/PKG-INFO +94 -114
  2. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/README.md +93 -113
  3. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/__init__.py +1 -0
  4. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/aspects/natal_aspects.py +2 -0
  5. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/aspects/synastry_aspects.py +2 -0
  6. kerykeion-4.26.0rc1/kerykeion/aspects/transits_time_range.py +41 -0
  7. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/ephemeris_data.py +74 -10
  8. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/kr_types/kr_models.py +44 -0
  9. kerykeion-4.26.0rc1/kerykeion/transits_time_range.py +124 -0
  10. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/pyproject.toml +1 -1
  11. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/LICENSE +0 -0
  12. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/aspects/__init__.py +0 -0
  13. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/aspects/aspects_utils.py +0 -0
  14. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/astrological_subject.py +0 -0
  15. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/__init__.py +0 -0
  16. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/charts_utils.py +0 -0
  17. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/draw_planets.py +0 -0
  18. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/kerykeion_chart_svg.py +0 -0
  19. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/templates/aspect_grid_only.xml +0 -0
  20. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/templates/chart.xml +0 -0
  21. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/templates/wheel_only.xml +0 -0
  22. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/themes/classic.css +0 -0
  23. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/themes/dark-high-contrast.css +0 -0
  24. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/themes/dark.css +0 -0
  25. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/charts/themes/light.css +0 -0
  26. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/composite_subject_factory.py +0 -0
  27. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/enums.py +0 -0
  28. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/fetch_geonames.py +0 -0
  29. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/kr_types/__init__.py +0 -0
  30. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/kr_types/chart_types.py +0 -0
  31. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/kr_types/kerykeion_exception.py +0 -0
  32. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/kr_types/kr_literals.py +0 -0
  33. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/kr_types/settings_models.py +0 -0
  34. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/relationship_score/__init__.py +0 -0
  35. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/relationship_score/relationship_score.py +0 -0
  36. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/relationship_score/relationship_score_factory.py +0 -0
  37. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/report.py +0 -0
  38. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/settings/__init__.py +0 -0
  39. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/settings/config_constants.py +0 -0
  40. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/settings/kerykeion_settings.py +0 -0
  41. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/settings/kr.config.json +0 -0
  42. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/sweph/README.md +0 -0
  43. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/kerykeion/sweph/seas_18.se1 +0 -0
  44. {kerykeion-4.25.4 → kerykeion-4.26.0rc1}/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.0rc1
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,49 @@ 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 (individual, synastry, composite), 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 AI applications. It is designed to work well as a backend for chatbots, recommendation systems, or personal assistants that require astrological insights. You can access structured data in JSON format, making it easy to combine with natural language processing models or knowledge-based systems.
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
66
  ## Web API
69
67
 
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:
68
+ If you want to use Kerykeion in a web application, you can try the dedicated web API:
71
69
 
72
70
  **[AstrologerAPI](https://rapidapi.com/gbattaglia/api/astrologer/pricing)**
73
71
 
74
- It's [open source](https://github.com/g-battaglia/Astrologer-API), it's a way to support me and the project.
72
+ It is [open source](https://github.com/g-battaglia/Astrologer-API) and directly supports this project.
75
73
 
76
74
  ## Donate
77
75
 
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.
79
-
80
- If you want to support me, you can do it here:
76
+ 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
77
 
82
78
  [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/kerykeion)
83
79
 
84
80
  ## Installation
85
81
 
86
- Kerykeion is a _Python 3.9_ package, make sure you have _Python 3.9_ or above installed on your system.
82
+ Kerykeion requires **Python 3.9** or higher.
87
83
 
88
84
  ```bash
89
85
  pip3 install kerykeion
@@ -91,48 +87,40 @@ pip3 install kerykeion
91
87
 
92
88
  ## Basic Usage
93
89
 
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:
90
+ Below is a simple example illustrating the creation of an astrological subject and retrieving astrological details:
97
91
 
98
92
  ```python
99
-
100
- # Import the main class for creating a kerykeion instance:
101
93
  from kerykeion import AstrologicalSubject
102
94
 
103
- # Create a kerykeion instance:
104
- # Args: Name, year, month, day, hour, minuts, city, nation
95
+ # Create an instance of the AstrologicalSubject class.
96
+ # Arguments: Name, year, month, day, hour, minutes, city, nation
105
97
  kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
106
98
 
107
- # Get the information about the sun in the chart:
108
- # (The position of the planets always starts at 0)
99
+ # Retrieve information about the Sun:
109
100
  kanye.sun
101
+ # > {'name': 'Sun', 'quality': 'Mutable', 'element': 'Air', 'sign': 'Gem', 'sign_num': 2, ...}
110
102
 
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:
103
+ # Retrieve information about the first house:
114
104
  kanye.first_house
105
+ # > {'name': 'First_House', 'quality': 'Cardinal', 'element': 'Water', 'sign': 'Can', ...}
115
106
 
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:
107
+ # Retrieve the element of the Moon sign:
119
108
  kanye.moon.element
120
-
121
- #> 'Water'
122
-
109
+ # > 'Water'
123
110
  ```
124
111
 
125
- **To avoid connecting to GeoNames (eg. avoiding hourly limit or no internet connection) you should instance kerykeion like this:**
112
+ **To avoid using GeoNames online, specify longitude, latitude, and timezone instead of city and nation:**
126
113
 
127
114
  ```python
128
115
  kanye = AstrologicalSubject(
129
- "Kanye", 1977, 6, 8, 8, 45, lng=50, lat=50, tz_str="Europe/Rome", city="Rome"
116
+ "Kanye", 1977, 6, 8, 8, 45,
117
+ lng=50,
118
+ lat=50,
119
+ tz_str="Europe/Rome",
120
+ city="Rome"
130
121
  )
131
122
  ```
132
123
 
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
124
  ## Generate a SVG Chart
137
125
 
138
126
  ### Birth Chart
@@ -140,10 +128,8 @@ If you omit the nation, it will be set to "GB" by default, but the value is not
140
128
  ```python
141
129
  from kerykeion import AstrologicalSubject, KerykeionChartSVG
142
130
 
143
-
144
131
  birth_chart = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
145
132
  birth_chart_svg = KerykeionChartSVG(birth_chart)
146
-
147
133
  birth_chart_svg.makeSVG()
148
134
  ```
149
135
 
@@ -158,10 +144,8 @@ from kerykeion import AstrologicalSubject, KerykeionChartSVG
158
144
  first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
159
145
  second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
160
146
 
161
- # Set the type, it can be Natal, Synastry or Transit
162
- synastry_chart = KerykeionChartSVG(first, "Synastry", second)
147
+ synastry_chart = KerykeionChartSVG(first, "Synastry", second)
163
148
  synastry_chart.makeSVG()
164
-
165
149
  ```
166
150
 
167
151
  ![John Lennon and Paul McCartney Synastry](https://www.kerykeion.net/img/examples/synastry-chart.svg)
@@ -187,20 +171,21 @@ transit_chart.makeSVG()
187
171
  from kerykeion import CompositeSubjectFactory, AstrologicalSubject, KerykeionChartSVG
188
172
 
189
173
  angelina = AstrologicalSubject("Angelina Jolie", 1975, 6, 4, 9, 9, "Los Angeles", "US", lng=-118.15, lat=34.03, tz_str="America/Los_Angeles")
174
+
190
175
  brad = AstrologicalSubject("Brad Pitt", 1963, 12, 18, 6, 31, "Shawnee", "US", lng=-96.56, lat=35.20, tz_str="America/Chicago")
191
176
 
192
- composite_subject_factory = CompositeSubjectFactory(angelina, brad)
193
- composite_subject_model = composite_subject_factory.get_midpoint_composite_subject_model()
177
+ factory = CompositeSubjectFactory(angelina, brad)
178
+ composite_model = factory.get_midpoint_composite_subject_model()
194
179
 
195
- composite_chart = KerykeionChartSVG(composite_subject_model, "Composite")
180
+ composite_chart = KerykeionChartSVG(composite_model, "Composite")
196
181
  composite_chart.makeSVG()
197
182
  ```
198
183
 
199
184
  ![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
185
 
201
- ### Change the output directory
186
+ ### Change the Output Directory
202
187
 
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:
188
+ To save the SVG file in a custom location, specify `new_output_directory`:
204
189
 
205
190
  ```python
206
191
  from kerykeion import AstrologicalSubject, KerykeionChartSVG
@@ -208,23 +193,24 @@ from kerykeion import AstrologicalSubject, KerykeionChartSVG
208
193
  first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB")
209
194
  second = AstrologicalSubject("Paul McCartney", 1942, 6, 18, 15, 30, "Liverpool", "GB")
210
195
 
211
- # Set the output directory to the current directory
212
- synastry_chart = KerykeionChartSVG(first, "Synastry", second, new_output_directory=".")
196
+ synastry_chart = KerykeionChartSVG(
197
+ first, "Synastry", second,
198
+ new_output_directory="."
199
+ )
213
200
  synastry_chart.makeSVG()
214
201
  ```
215
202
 
216
203
  ### Change Language
217
204
 
218
- You can change the language of the SVG by passing the `chart_language` parameter to the KerykeionChartSVG class:
205
+ You can switch chart language by passing `chart_language` to the `AstrologicalSubject` or `KerykeionChartSVG` classes:
219
206
 
220
207
  ```python
221
208
  first = AstrologicalSubject("John Lennon", 1940, 10, 9, 18, 30, "Liverpool", "GB", chart_language="ES")
222
209
  ```
223
- More details [here](https://www.kerykeion.net/docs/examples/chart-language).
224
210
 
225
- ## Report
211
+ More details [here](https://www.kerykeion.net/docs//chart-language).
226
212
 
227
- To print a report of all the data:
213
+ ## Report
228
214
 
229
215
  ```python
230
216
  from kerykeion import Report, AstrologicalSubject
@@ -232,7 +218,6 @@ from kerykeion import Report, AstrologicalSubject
232
218
  kanye = AstrologicalSubject("Kanye", 1977, 6, 8, 8, 45, "Atlanta", "US")
233
219
  report = Report(kanye)
234
220
  report.print_report()
235
-
236
221
  ```
237
222
 
238
223
  Returns:
@@ -280,56 +265,57 @@ Returns:
280
265
  | Twelfth_House | Gem | 15.68 |
281
266
  +----------------+------+----------+
282
267
 
283
- ```
284
-
285
- And if you want to export it to a file:
268
+ To export to a file:
286
269
 
287
270
  ```bash
288
271
  python3 your_script_name.py > file.txt
289
272
  ```
290
273
 
291
- ## Other examples of possible use cases:
274
+ ## Example: Retrieving Aspects
292
275
 
293
276
  ```python
294
- # Get all aspects between two persons:
295
-
296
277
  from kerykeion import SynastryAspects, AstrologicalSubject
278
+
297
279
  first = AstrologicalSubject("Jack", 1990, 6, 15, 15, 15, "Roma", "IT")
298
- second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 00, "Roma", "IT")
280
+ second = AstrologicalSubject("Jane", 1991, 10, 25, 21, 0, "Roma", "IT")
299
281
 
300
282
  name = SynastryAspects(first, second)
301
283
  aspect_list = name.get_relevant_aspects()
302
284
  print(aspect_list[0])
303
-
304
- #> Generating kerykeion object for Jack...
305
- #> Generating kerykeion object for Jane...
306
285
  #> {'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
286
 
308
287
  ```
309
288
 
310
289
  ## Ayanamsa (Sidereal Modes)
311
290
 
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:
291
+ By default, the zodiac type is **Tropical**. To use **Sidereal**, specify the sidereal mode:
314
292
 
315
293
  ```python
316
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", zodiac_type="Sidereal", sidereal_mode="LAHIRI")
294
+ johnny = AstrologicalSubject(
295
+ "Johnny Depp", 1963, 6, 9, 0, 0,
296
+ "Owensboro", "US",
297
+ zodiac_type="Sidereal",
298
+ sidereal_mode="LAHIRI"
299
+ )
317
300
  ```
318
301
 
319
- More examples [here](https://www.kerykeion.net/docs/examples/sidereal-modes/).
302
+ More examples [here](https://www.kerykeion.net/docs//sidereal-modes/).
320
303
 
321
304
  Full list of supported sidereal modes [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#SiderealMode).
322
305
 
323
- ## Houses Systems
306
+ ## House Systems
324
307
 
325
- By default, the houses system is set to Placidus.
326
- You can set the houses system in the AstrologicalSubject class:
308
+ By default, houses are calculated using **Placidus**. Configure a different house system as follows:
327
309
 
328
310
  ```python
329
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", houses_system="M")
311
+ johnny = AstrologicalSubject(
312
+ "Johnny Depp", 1963, 6, 9, 0, 0,
313
+ "Owensboro", "US",
314
+ houses_system="M"
315
+ )
330
316
  ```
331
317
 
332
- More examples [here](https://www.kerykeion.net/docs/examples/houses-systems/).
318
+ More examples [here](https://www.kerykeion.net/docs//houses-systems/).
333
319
 
334
320
  Full list of supported house systems [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#HousesSystem).
335
321
 
@@ -337,28 +323,30 @@ So far all the available houses system in the Swiss Ephemeris are supported but
337
323
 
338
324
  ## Perspective Type
339
325
 
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:
326
+ By default, Kerykeion uses the **Apparent Geocentric** perspective (the most standard in astrology). Other perspectives (e.g., **Heliocentric**) can be set this way:
343
327
 
344
328
  ```python
345
- johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US", perspective_type="Heliocentric")
329
+ johnny = AstrologicalSubject(
330
+ "Johnny Depp", 1963, 6, 9, 0, 0,
331
+ "Owensboro", "US",
332
+ perspective_type="Heliocentric"
333
+ )
346
334
  ```
347
335
 
348
- More examples [here](https://www.kerykeion.net/docs/examples/perspective-type/).
336
+ More examples [here](https://www.kerykeion.net/docs//perspective-type/).
349
337
 
350
338
  Full list of supported perspective types [here](https://www.kerykeion.net/pydocs/kerykeion/kr_types/kr_literals.html#PerspectiveType).
351
339
 
352
340
  ## Themes
353
341
 
354
- You can now personalize your astrological charts with different themes! Four themes are available:
342
+ Kerykeion provides several chart themes:
355
343
 
356
344
  - **Classic** (default)
357
345
  - **Dark**
358
346
  - **Dark High Contrast**
359
347
  - **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)
348
+
349
+ 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
350
 
363
351
  Here's an example of how to set the theme:
364
352
 
@@ -370,28 +358,26 @@ dark_theme_natal_chart = KerykeionChartSVG(dark_high_contrast_theme_subject, the
370
358
  dark_theme_natal_chart.makeSVG()
371
359
  ```
372
360
 
373
- ![John Lennon](https://www.kerykeion.net/assets/img/showcase/John%20Lennon%20-%20Dark%20-%20Natal%20Chart.svg)
361
+ ![John Lennon](https://www.kerykeion.net/img/showcase/John%20Lennon%20-%20Dark%20-%20Natal%20Chart.svg)
374
362
 
375
363
  ## Alternative Initialization
376
364
 
377
- You can initialize the AstrologicalSubject from a **UTC** ISO 8601 string:
365
+ Create an `AstrologicalSubject` from a UTC ISO 8601 string:
378
366
 
379
367
  ```python
380
368
  subject = AstrologicalSubject.get_from_iso_utc_time(
381
- "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US")
369
+ "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US"
370
+ )
382
371
  ```
383
372
 
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:
373
+ If you set `online=True`, provide a `geonames_username` to allow city-based geolocation:
388
374
 
389
375
  ```python
390
376
  from kerykeion.astrological_subject import AstrologicalSubject
391
377
 
392
- # Use the static method get_from_iso_utc_time to create an instance of AstrologicalSubject
393
378
  subject = AstrologicalSubject.get_from_iso_utc_time(
394
- "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True)
379
+ "Johnny Depp", "1963-06-09T05:00:00Z", "Owensboro", "US", online=True
380
+ )
395
381
  ```
396
382
 
397
383
  ## Lunar Nodes (Rahu & Ketu)
@@ -427,7 +413,7 @@ To display them, you need to edit the configuration file (kr.config.json).
427
413
 
428
414
  ## JSON Support
429
415
 
430
- The astrological subject, which is the base of data used in the library, can be easily serialized to JSON with the `json` method.
416
+ You can serialize the astrological subject (the base data used throughout the library) to JSON:
431
417
 
432
418
  ```python
433
419
  from kerykeion import AstrologicalSubject
@@ -437,31 +423,25 @@ johnny = AstrologicalSubject("Johnny Depp", 1963, 6, 9, 0, 0, "Owensboro", "US")
437
423
  print(johnny.json(dump=False, indent=2))
438
424
  ```
439
425
 
440
- ## Documentation
441
-
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).
426
+ ## Auto Generated Documentation
444
427
 
445
- Sooner or later I'll try to write an extensive documentation.
428
+ You can find auto-generated documentation [here](https://www.kerykeion.net/pydocs/kerykeion.html). Most classes and functions include docstrings.
446
429
 
447
430
  ## Development
448
431
 
449
- You can clone this repository or download a zip file using the right side buttons.
432
+ Clone the repository or download the ZIP via the GitHub interface.
450
433
 
451
- ## Integrate Kerykeion Functionalities in Your Project
434
+ ## Integrating Kerykeion into Your Project
452
435
 
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.
436
+ 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
437
 
455
438
  ## License
456
439
 
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.
440
+ 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).
461
441
 
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.
442
+ 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.
463
443
 
464
444
  ## Contributing
465
445
 
466
- Feel free to contribute to the code!
446
+ Contributions are welcome! Feel free to submit pull requests or report issues.
467
447