kerykeion 5.1.5__tar.gz → 5.5.3__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 (317) hide show
  1. kerykeion-5.5.3/.uv_cache/.gitignore +1 -0
  2. kerykeion-5.1.5/scripts/__init__.py → kerykeion-5.5.3/.uv_cache/.lock +0 -0
  3. kerykeion-5.5.3/.uv_cache/CACHEDIR.TAG +1 -0
  4. kerykeion-5.5.3/.uv_cache/interpreter-v4/7e11d242fb84b9e8/66d9843502616e2c.msgpack +0 -0
  5. kerykeion-5.5.3/AI_AGENT_GUIDE.md +532 -0
  6. kerykeion-5.5.3/MIGRATION_V4_TO_V5.md +390 -0
  7. {kerykeion-5.1.5 → kerykeion-5.5.3}/PKG-INFO +111 -450
  8. {kerykeion-5.1.5 → kerykeion-5.5.3}/README.md +110 -449
  9. kerykeion-5.5.3/examples/context_serializer_example.py +181 -0
  10. kerykeion-5.5.3/examples/house_comparison_context_example.py +73 -0
  11. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/planetary_return.py +1 -1
  12. kerykeion-5.5.3/examples/synastry_data_example.py +9 -0
  13. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/__init__.py +2 -0
  14. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/aspects/aspects_factory.py +60 -16
  15. kerykeion-5.5.3/kerykeion/aspects/aspects_utils.py +222 -0
  16. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/astrological_subject_factory.py +93 -70
  17. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/backword.py +46 -1
  18. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/chart_data_factory.py +18 -1
  19. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/chart_drawer.py +656 -125
  20. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/charts_utils.py +173 -0
  21. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/draw_planets.py +358 -36
  22. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/templates/chart.xml +22 -22
  23. kerykeion-5.5.3/kerykeion/context_serializer.py +700 -0
  24. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/ephemeris_data_factory.py +13 -4
  25. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/fetch_geonames.py +51 -13
  26. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/house_comparison/house_comparison_factory.py +7 -1
  27. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/house_comparison/house_comparison_utils.py +73 -1
  28. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/planetary_return_factory.py +77 -101
  29. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/relationship_score_factory.py +2 -0
  30. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/report.py +56 -4
  31. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/schemas/kr_literals.py +9 -3
  32. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/schemas/kr_models.py +8 -2
  33. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/schemas/settings_models.py +8 -0
  34. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/settings/kerykeion_settings.py +1 -1
  35. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/settings/translation_strings.py +46 -2
  36. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/transits_time_range_factory.py +2 -0
  37. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/utilities.py +121 -121
  38. {kerykeion-5.1.5 → kerykeion-5.5.3}/pyproject.toml +1 -1
  39. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/v5.0.0.md +76 -54
  40. kerykeion-5.5.3/release_notes/v5.3.0.md +83 -0
  41. kerykeion-5.5.3/release_notes/v5.4.0.md +219 -0
  42. kerykeion-5.5.3/release_notes/v5.5.0.md +29 -0
  43. kerykeion-5.5.3/scripts/__init__.py +0 -0
  44. kerykeion-5.5.3/scripts/regenerate_expected_subjects.py +170 -0
  45. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/regenerate_test_charts.py +236 -0
  46. kerykeion-5.5.3/scripts/regenerate_test_output.py +66 -0
  47. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/test_markdown_snippets.py +20 -4
  48. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/aspects.md +100 -88
  49. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/astrological_subject_factory.md +17 -11
  50. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/chart_data_factory.md +6 -0
  51. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/charts.md +12 -6
  52. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/composite_subject_factory.md +8 -2
  53. kerykeion-5.5.3/site/docs/context_serializer.md +135 -0
  54. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/element_quality_distribution.md +6 -0
  55. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/ephemeris_data_factory.md +6 -0
  56. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/house_comparison.md +24 -4
  57. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/planetary_return_factory.md +79 -57
  58. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/relationship_score_factory.md +6 -0
  59. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/report.md +68 -52
  60. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/transits_time_range_factory.md +32 -26
  61. {kerykeion-5.1.5/site-docs → kerykeion-5.5.3/site/docs}/utilities.md +6 -0
  62. kerykeion-5.5.3/site/examples/birth-chart.md +71 -0
  63. kerykeion-5.5.3/site/examples/birth-data.md +43 -0
  64. kerykeion-5.5.3/site/examples/chart-language.md +57 -0
  65. kerykeion-5.5.3/site/examples/cusp-comparison.md +79 -0
  66. kerykeion-5.5.3/site/examples/dual-return-chart.md +84 -0
  67. kerykeion-5.5.3/site/examples/houses-systems.md +82 -0
  68. kerykeion-5.5.3/site/examples/minimalist-charts-and-spect-table.md +63 -0
  69. kerykeion-5.5.3/site/examples/perspective-type.md +384 -0
  70. kerykeion-5.5.3/site/examples/realationship-score.md +106 -0
  71. kerykeion-5.5.3/site/examples/report.md +250 -0
  72. kerykeion-5.5.3/site/examples/sidereal-modes.md +387 -0
  73. kerykeion-5.5.3/site/examples/synastry-chart.md +66 -0
  74. kerykeion-5.5.3/site/examples/theming.md +231 -0
  75. kerykeion-5.5.3/site/examples/transit-chart.md +96 -0
  76. kerykeion-5.5.3/tests/aspects/__init__.py +0 -0
  77. kerykeion-5.5.3/tests/aspects/expected_natal_aspects.py +888 -0
  78. kerykeion-5.5.3/tests/aspects/expected_synastry_aspects.py +2316 -0
  79. kerykeion-5.5.3/tests/aspects/test_aspect_movement.py +56 -0
  80. kerykeion-5.5.3/tests/aspects/test_aspect_movement_comprehensive.py +137 -0
  81. kerykeion-5.5.3/tests/aspects/test_aspect_movement_enhanced.py +202 -0
  82. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/aspects/test_natal_aspects.py +2 -11
  83. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/aspects/test_synastry_aspects.py +2 -10
  84. kerykeion-5.5.3/tests/charts/__init__.py +0 -0
  85. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Albert Einstein - Natal Chart.svg +25 -25
  86. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Amitabh Bachchan - Natal Chart.svg +28 -28
  87. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Angelina Jolie and Brad Pitt Composite Chart - Black and White Theme - Composite Chart.svg +26 -26
  88. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Angelina Jolie and Brad Pitt Composite Chart - Composite Chart.svg +26 -26
  89. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Antonio Banderas - Natal Chart.svg +25 -25
  90. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Cristiano Ronaldo - Natal Chart.svg +28 -28
  91. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Hua Chenyu - Natal Chart.svg +28 -28
  92. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Jeanne Moreau - Natal Chart.svg +28 -28
  93. kerykeion-5.5.3/tests/charts/svg/John Lennon - All Active Points - Natal Chart - Wheel Only.svg +766 -0
  94. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - All Active Points - Natal Chart.svg +28 -28
  95. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Grid.svg +29 -29
  96. kerykeion-5.5.3/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - List.svg +854 -0
  97. kerykeion-5.5.3/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Wheel Only.svg +766 -0
  98. kerykeion-5.5.3/tests/charts/svg/John Lennon - Black and White Theme - DualReturnChart Chart - Solar Return.svg +898 -0
  99. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Black and White Theme - Natal Chart.svg +28 -28
  100. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Black and White Theme - Synastry Chart.svg +30 -30
  101. kerykeion-5.5.3/tests/charts/svg/John Lennon - Black and White Theme - Transit Chart.svg +898 -0
  102. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - DTS - Synastry Chart.svg +30 -30
  103. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Dark High Contrast Theme - Natal Chart.svg +28 -28
  104. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Dark Theme - Natal Chart.svg +28 -28
  105. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Dark Theme External - Natal Chart.svg +45 -45
  106. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return - Cusp Comparison Only.svg +863 -0
  107. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return - House Comparison Only.svg +863 -0
  108. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return - House and Cusp Comparison.svg +863 -0
  109. kerykeion-5.1.5/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return.svg → kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return - No House Comparison.svg +31 -31
  110. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return.svg +863 -0
  111. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return - Cusp Comparison Only.svg +863 -0
  112. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return - House Comparison Only.svg +863 -0
  113. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return - House and Cusp Comparison.svg +863 -0
  114. kerykeion-5.1.5/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return.svg → kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return - No House Comparison.svg +30 -30
  115. kerykeion-5.5.3/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return.svg +863 -0
  116. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - ExternalNatal - Natal Chart.svg +45 -45
  117. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Heliocentric - Natal Chart.svg +28 -28
  118. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - House System Morinus - Natal Chart.svg +28 -28
  119. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Light Theme - Natal Chart.svg +28 -28
  120. kerykeion-5.5.3/tests/charts/svg/John Lennon - Minified - Natal Chart.svg +1 -0
  121. kerykeion-5.1.5/tests/charts/svg/John Lennon - True Geocentric - Natal Chart.svg → kerykeion-5.5.3/tests/charts/svg/John Lennon - Natal Chart - No Degree Indicators.svg +31 -31
  122. kerykeion-5.5.3/tests/charts/svg/John Lennon - Natal Chart.svg +863 -0
  123. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - SCTWL - Synastry Chart.svg +30 -30
  124. kerykeion-5.5.3/tests/charts/svg/John Lennon - Synastry Chart - Cusp Comparison Only.svg +854 -0
  125. kerykeion-5.5.3/tests/charts/svg/John Lennon - Synastry Chart - House Comparison Only.svg +854 -0
  126. kerykeion-5.5.3/tests/charts/svg/John Lennon - Synastry Chart - House and Cusp Comparison.svg +854 -0
  127. kerykeion-5.5.3/tests/charts/svg/John Lennon - Synastry Chart - No Degree Indicators.svg +854 -0
  128. kerykeion-5.5.3/tests/charts/svg/John Lennon - Synastry Chart - No House Comparison.svg +854 -0
  129. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - TCWTG - Transit Chart.svg +31 -31
  130. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Topocentric - Natal Chart.svg +28 -28
  131. kerykeion-5.5.3/tests/charts/svg/John Lennon - Transit Chart - Cusp Comparison Only.svg +863 -0
  132. kerykeion-5.5.3/tests/charts/svg/John Lennon - Transit Chart - House Comparison Only.svg +863 -0
  133. kerykeion-5.5.3/tests/charts/svg/John Lennon - Transit Chart - House and Cusp Comparison.svg +863 -0
  134. kerykeion-5.1.5/tests/charts/svg/John Lennon - Transit Chart.svg → kerykeion-5.5.3/tests/charts/svg/John Lennon - Transit Chart - No Degree Indicators.svg +32 -32
  135. kerykeion-5.5.3/tests/charts/svg/John Lennon - Transit Chart - No House Comparison.svg +863 -0
  136. kerykeion-5.5.3/tests/charts/svg/John Lennon - Transit Chart.svg +863 -0
  137. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Transparent Background - Natal Chart.svg +28 -28
  138. kerykeion-5.1.5/tests/charts/svg/John Lennon - Natal Chart.svg → kerykeion-5.5.3/tests/charts/svg/John Lennon - True Geocentric - Natal Chart.svg +31 -31
  139. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Wheel External Only - ExternalNatal Chart - Wheel Only.svg +23 -23
  140. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Wheel Only - Natal Chart - Wheel Only.svg +6 -6
  141. kerykeion-5.5.3/tests/charts/svg/John Lennon - Wheel Synastry Only - Synastry Chart - Wheel Only.svg +766 -0
  142. kerykeion-5.5.3/tests/charts/svg/John Lennon - Wheel Transit Only - Transit Chart - Wheel Only.svg +766 -0
  143. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon DeLuce - Natal Chart.svg +28 -28
  144. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Fagan-Bradley - Light Theme - Natal Chart - Wheel Only.svg +6 -6
  145. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Fagan-Bradley - Natal Chart.svg +28 -28
  146. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon J2000 - Natal Chart.svg +28 -28
  147. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Lahiri - Dark Theme - Natal Chart - Wheel Only.svg +6 -6
  148. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Lahiri - Natal Chart.svg +28 -28
  149. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Lunar Return - SingleReturnChart Chart.svg +29 -29
  150. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Solar Return - Black and White Theme - SingleReturnChart Chart.svg +26 -26
  151. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon Solar Return - SingleReturnChart Chart.svg +26 -26
  152. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Kanye - Natal Chart.svg +28 -28
  153. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Mehmet Oz - Natal Chart.svg +25 -25
  154. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Mikhail Bulgakov - Natal Chart.svg +26 -26
  155. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Moon Phases.svg +15 -15
  156. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/Sophia Loren - Natal Chart.svg +28 -28
  157. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/test_charts.py +150 -10
  158. kerykeion-5.5.3/tests/charts/test_indicators_off.py +47 -0
  159. kerykeion-5.5.3/tests/data/__init__.py +11 -0
  160. kerykeion-5.5.3/tests/data/expected_astrological_subjects.py +692 -0
  161. kerykeion-5.5.3/tests/fixtures/new_moon_test_natal_report.txt +213 -0
  162. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_astrological_subject.py +10 -398
  163. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_astrological_subject_jyotish.py +4 -402
  164. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_chart_data_factory.py +5 -2
  165. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_chart_drawer_complete.py +56 -2
  166. kerykeion-5.5.3/tests/test_context_serializer.py +434 -0
  167. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_ephemeris_data.py +0 -10
  168. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_fetch_geonames.py +26 -10
  169. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_json_dump.py +1 -11
  170. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_planetary_return_factory_complete.py +81 -21
  171. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_relationship_score.py +0 -9
  172. kerykeion-5.5.3/tests/test_report_output.py +32 -0
  173. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_utc.py +0 -10
  174. kerykeion-5.5.3/tests/test_utilities.py +163 -0
  175. {kerykeion-5.1.5 → kerykeion-5.5.3}/uv.lock +1 -1
  176. kerykeion-5.1.5/kerykeion/aspects/aspects_utils.py +0 -164
  177. kerykeion-5.1.5/tests/aspects/expected_natal_aspects.py +0 -1565
  178. kerykeion-5.1.5/tests/aspects/expected_synastry_aspects.py +0 -3269
  179. kerykeion-5.1.5/tests/charts/svg/John Lennon - All Active Points - Natal Chart - Wheel Only.svg +0 -766
  180. kerykeion-5.1.5/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - List.svg +0 -854
  181. kerykeion-5.1.5/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Wheel Only.svg +0 -766
  182. kerykeion-5.1.5/tests/charts/svg/John Lennon - Black and White Theme - DualReturnChart Chart - Solar Return.svg +0 -898
  183. kerykeion-5.1.5/tests/charts/svg/John Lennon - Black and White Theme - Transit Chart.svg +0 -898
  184. kerykeion-5.1.5/tests/charts/svg/John Lennon - Minified - Natal Chart.svg +0 -1
  185. kerykeion-5.1.5/tests/charts/svg/John Lennon - Wheel Synastry Only - Synastry Chart - Wheel Only.svg +0 -766
  186. kerykeion-5.1.5/tests/charts/svg/John Lennon - Wheel Transit Only - Transit Chart - Wheel Only.svg +0 -766
  187. kerykeion-5.1.5/tests/test_utilities.py +0 -341
  188. {kerykeion-5.1.5 → kerykeion-5.5.3}/.coveragerc +0 -0
  189. {kerykeion-5.1.5 → kerykeion-5.5.3}/.github/FUNDING.yml +0 -0
  190. {kerykeion-5.1.5 → kerykeion-5.5.3}/.gitignore +0 -0
  191. /kerykeion-5.1.5/tests/aspects/__init__.py → /kerykeion-5.5.3/.uv_cache/sdists-v9/.git +0 -0
  192. /kerykeion-5.1.5/tests/charts/__init__.py → /kerykeion-5.5.3/.uv_cache/sdists-v9/.gitignore +0 -0
  193. {kerykeion-5.1.5 → kerykeion-5.5.3}/CHANGELOG.md +0 -0
  194. {kerykeion-5.1.5 → kerykeion-5.5.3}/DEVELOPMENT.md +0 -0
  195. {kerykeion-5.1.5 → kerykeion-5.5.3}/LICENSE +0 -0
  196. {kerykeion-5.1.5 → kerykeion-5.5.3}/MANIFEST.in +0 -0
  197. {kerykeion-5.1.5 → kerykeion-5.5.3}/TODO.md +0 -0
  198. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/index.html +0 -0
  199. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/aspects/aspects_utils.html +0 -0
  200. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/aspects/natal_aspects.html +0 -0
  201. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/aspects/synastry_aspects.html +0 -0
  202. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/aspects/transits_time_range.html +0 -0
  203. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/aspects.html +0 -0
  204. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/astrological_subject.html +0 -0
  205. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/charts/charts_utils.html +0 -0
  206. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/charts/draw_planets.html +0 -0
  207. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/charts/kerykeion_chart_svg.html +0 -0
  208. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/charts.html +0 -0
  209. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/composite_subject_factory.html +0 -0
  210. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/enums.html +0 -0
  211. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/ephemeris_data.html +0 -0
  212. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/fetch_geonames.html +0 -0
  213. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/kr_types/chart_types.html +0 -0
  214. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/kr_types/kerykeion_exception.html +0 -0
  215. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/kr_types/kr_literals.html +0 -0
  216. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/kr_types/kr_models.html +0 -0
  217. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/kr_types/settings_models.html +0 -0
  218. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/kr_types.html +0 -0
  219. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/relationship_score/relationship_score.html +0 -0
  220. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/relationship_score/relationship_score_factory.html +0 -0
  221. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/relationship_score.html +0 -0
  222. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/report.html +0 -0
  223. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/settings/config_constants.html +0 -0
  224. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/settings/kerykeion_settings.html +0 -0
  225. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/settings.html +0 -0
  226. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/transits_time_range.html +0 -0
  227. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion/utilities.html +0 -0
  228. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/kerykeion.html +0 -0
  229. {kerykeion-5.1.5 → kerykeion-5.5.3}/docs/search.js +0 -0
  230. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/aspects_synastry.py +0 -0
  231. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/composite_report_example.py +0 -0
  232. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/current_time_report.py +0 -0
  233. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/dual_return_report_example.py +0 -0
  234. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/natal_report_example.py +0 -0
  235. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/quickstart_natal_chart.py +0 -0
  236. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/solar_return_report_example.py +0 -0
  237. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/subject_report_example.py +0 -0
  238. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/synastry_report_example.py +0 -0
  239. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/transit_report_example.py +0 -0
  240. {kerykeion-5.1.5 → kerykeion-5.5.3}/examples/transits_time_range.py +0 -0
  241. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/aspects/__init__.py +0 -0
  242. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/__init__.py +0 -0
  243. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/templates/aspect_grid_only.xml +0 -0
  244. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/templates/wheel_only.xml +0 -0
  245. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/themes/black-and-white.css +0 -0
  246. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/themes/classic.css +0 -0
  247. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/themes/dark-high-contrast.css +0 -0
  248. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/themes/dark.css +0 -0
  249. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/themes/light.css +0 -0
  250. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/charts/themes/strawberry.css +0 -0
  251. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/composite_subject_factory.py +0 -0
  252. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/house_comparison/__init__.py +0 -0
  253. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/kr_types/__init__.py +0 -0
  254. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/kr_types/chart_template_model.py +0 -0
  255. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/kr_types/kerykeion_exception.py +0 -0
  256. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/kr_types/kr_literals.py +0 -0
  257. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/kr_types/kr_models.py +0 -0
  258. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/kr_types/settings_models.py +0 -0
  259. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/schemas/__init__.py +0 -0
  260. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/schemas/chart_template_model.py +0 -0
  261. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/schemas/kerykeion_exception.py +0 -0
  262. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/settings/__init__.py +0 -0
  263. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/settings/chart_defaults.py +0 -0
  264. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/settings/config_constants.py +0 -0
  265. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/settings/translations.py +0 -0
  266. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/README.md +0 -0
  267. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast136/s136108s.se1 +0 -0
  268. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast136/s136199s.se1 +0 -0
  269. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast136/s136472s.se1 +0 -0
  270. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast28/se28978s.se1 +0 -0
  271. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast50/se50000s.se1 +0 -0
  272. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast90/se90377s.se1 +0 -0
  273. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/ast90/se90482s.se1 +0 -0
  274. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/seas_18.se1 +0 -0
  275. {kerykeion-5.1.5 → kerykeion-5.5.3}/kerykeion/sweph/sefstars.txt +0 -0
  276. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.14.0.md +0 -0
  277. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.16.0.md +0 -0
  278. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.17.0.md +0 -0
  279. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.19.0.md +0 -0
  280. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.21.0.md +0 -0
  281. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.22.0.md +0 -0
  282. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.23.0.md +0 -0
  283. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.24.0.md +0 -0
  284. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.25.0.md +0 -0
  285. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/V4.26.0.md +0 -0
  286. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/v5.0.0a.md +0 -0
  287. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/v5.0.0b.md +0 -0
  288. {kerykeion-5.1.5 → kerykeion-5.5.3}/release_notes/v5.1.0.md +0 -0
  289. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/README.md +0 -0
  290. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/quality_check.py +0 -0
  291. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/regenerate_expected_aspects.py +0 -0
  292. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/regenerate_synastry_aspects.py +0 -0
  293. {kerykeion-5.1.5 → kerykeion-5.5.3}/scripts/regenerate_synastry_from_test.py +0 -0
  294. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/__init__.py +0 -0
  295. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/compare_svg_lines.py +0 -0
  296. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - All Active Points - Natal Chart - Aspect Grid Only.svg +0 -0
  297. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Aspect Grid Only.svg +0 -0
  298. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Aspect Grid Dark Synastry - Synastry Chart - Aspect Grid Only.svg +0 -0
  299. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Aspect Grid Dark Theme - Natal Chart - Aspect Grid Only.svg +0 -0
  300. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Aspect Grid Light Theme - Natal Chart - Aspect Grid Only.svg +0 -0
  301. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Aspect Grid Only - Natal Chart - Aspect Grid Only.svg +0 -0
  302. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Aspect Grid Synastry - Synastry Chart - Aspect Grid Only.svg +0 -0
  303. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/svg/John Lennon - Aspect Grid Transit - Transit Chart - Aspect Grid Only.svg +0 -0
  304. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/test_draw_planets.py +0 -0
  305. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/charts/test_lunar_phase_svg.py +0 -0
  306. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/settings/test_settings.py +0 -0
  307. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_all_active_points.py +0 -0
  308. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_backward_compatibility.py +0 -0
  309. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_backword.py +0 -0
  310. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_chart_data_factory_complete.py +0 -0
  311. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_composite_subject_factory_complete.py +0 -0
  312. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_ephemeris_data_factory_complete.py +0 -0
  313. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_relationship_score_factory_complete.py +0 -0
  314. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_report.py +0 -0
  315. {kerykeion-5.1.5 → kerykeion-5.5.3}/tests/test_transits_time_range_factory_complete.py +0 -0
  316. {kerykeion-5.1.5 → kerykeion-5.5.3}/workspace/README.md +0 -0
  317. {kerykeion-5.1.5 → kerykeion-5.5.3}/workspace/main.py +0 -0
@@ -0,0 +1 @@
1
+ *
@@ -0,0 +1 @@
1
+ Signature: 8a477f597d28d172789f06886806bc55
@@ -0,0 +1,532 @@
1
+ # Kerykeion AI Agent Guide
2
+
3
+ **Comprehensive reference for AI agents using the Kerykeion Astrological Library**
4
+
5
+ ## Quick Overview
6
+
7
+ Kerykeion is a Python library for astrological calculations using Swiss Ephemeris. It provides:
8
+
9
+ - Planetary position calculations (tropical/sidereal)
10
+ - Chart generation (Natal, Synastry, Transit, Composite, Returns)
11
+ - Aspect analysis and element/quality distributions
12
+ - SVG chart visualization
13
+ - Multiple house systems and coordinate perspectives
14
+
15
+ ## Core Architecture
16
+
17
+ ```
18
+ AstrologicalSubjectFactory → Creates subjects with planetary positions
19
+
20
+ ChartDataFactory → Organizes data, calculates aspects/distributions
21
+
22
+ ChartDrawer → Generates SVG visualizations
23
+ ```
24
+
25
+ ## Essential Imports
26
+
27
+ ```python
28
+ from kerykeion import (
29
+ AstrologicalSubjectFactory,
30
+ ChartDataFactory,
31
+ ChartDrawer,
32
+ CompositeSubjectFactory,
33
+ PlanetaryReturnFactory,
34
+ to_context # AI-readable text serializer
35
+ )
36
+ ```
37
+
38
+ ## 1. Creating Astrological Subjects
39
+
40
+ ### Basic Natal Chart (Offline - Recommended)
41
+
42
+ ```python
43
+ subject = AstrologicalSubjectFactory.from_birth_data(
44
+ name="John Doe",
45
+ year=1990, month=6, day=15,
46
+ hour=14, minute=30,
47
+ lng=12.4964, # Longitude (E+, W-)
48
+ lat=41.9028, # Latitude (N+, S-)
49
+ tz_str="Europe/Rome", # IANA timezone
50
+ online=False
51
+ )
52
+ ```
53
+
54
+ ### Online Mode (Requires GeoNames)
55
+
56
+ ```python
57
+ subject = AstrologicalSubjectFactory.from_birth_data(
58
+ name="Jane Doe",
59
+ year=1990, month=6, day=15,
60
+ hour=14, minute=30,
61
+ city="Rome",
62
+ nation="IT",
63
+ geonames_username="your_username",
64
+ online=True
65
+ )
66
+ ```
67
+
68
+ ### Current Time / Horary
69
+
70
+ ```python
71
+ now = AstrologicalSubjectFactory.from_current_time(
72
+ name="Current Transits",
73
+ lng=12.4964,
74
+ lat=41.9028,
75
+ tz_str="Europe/Rome",
76
+ online=False
77
+ )
78
+ ```
79
+
80
+ ## 2. Configuration Options
81
+
82
+ ### Zodiac Systems
83
+
84
+ ```python
85
+ # Tropical (default - Western astrology)
86
+ zodiac_type="Tropical"
87
+
88
+ # Sidereal (Vedic astrology)
89
+ zodiac_type="Sidereal",
90
+ sidereal_mode="LAHIRI" # or RAMAN, FAGAN_BRADLEY, KRISHNAMURTI
91
+ ```
92
+
93
+ ### House Systems
94
+
95
+ ```python
96
+ houses_system_identifier="P" # Placidus (default)
97
+ # "W" = Whole Sign, "K" = Koch, "A" = Equal, "C" = Campanus, "R" = Regiomontanus
98
+ ```
99
+
100
+ ### Active Points (Performance Optimization)
101
+
102
+ ```python
103
+ active_points=["Sun", "Moon", "Mercury", "Venus", "Mars", "Jupiter", "Saturn", "Ascendant"]
104
+ ```
105
+
106
+ ### Perspective Types
107
+
108
+ ```python
109
+ perspective_type="Apparent Geocentric" # Default, standard astrology
110
+ # "True Geocentric", "Heliocentric", "Topocentric"
111
+ ```
112
+
113
+ ## 3. Accessing Data
114
+
115
+ ### Planetary Positions
116
+
117
+ ```python
118
+ subject = AstrologicalSubjectFactory.from_birth_data(
119
+ "Example", 1990, 6, 15, 14, 30,
120
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
121
+ )
122
+ sun = subject.sun
123
+ print(f"{sun.name}: {sun.sign} {sun.abs_pos:.2f}° (House {sun.house})")
124
+ print(f"Retrograde: {sun.retrograde}")
125
+ ```
126
+
127
+ ### House Cusps
128
+
129
+ ```python
130
+ subject = AstrologicalSubjectFactory.from_birth_data(
131
+ "Example", 1990, 6, 15, 14, 30,
132
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
133
+ )
134
+ asc = subject.first_house # Ascendant
135
+ mc = subject.tenth_house # Midheaven
136
+ print(f"Ascendant: {asc.sign} {asc.abs_pos:.2f}°")
137
+ ```
138
+
139
+ ### Lunar Phase
140
+
141
+ ```python
142
+ subject = AstrologicalSubjectFactory.from_birth_data(
143
+ "Example", 1990, 6, 15, 14, 30,
144
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
145
+ )
146
+ if subject.lunar_phase:
147
+ phase = subject.lunar_phase
148
+ print(f"Phase: {phase.moon_phase_name}")
149
+ print(f"Emoji: {phase.moon_emoji}")
150
+ ```
151
+
152
+ ## 4. Chart Data Factory
153
+
154
+ ### Natal Chart Data
155
+
156
+ ```python
157
+ subject = AstrologicalSubjectFactory.from_birth_data(
158
+ "Example", 1990, 6, 15, 14, 30,
159
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
160
+ )
161
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
162
+
163
+ # Access structured data
164
+ print(f"Chart Type: {chart_data.chart_type}")
165
+ print(f"Aspects: {len(chart_data.aspects)}")
166
+ print(f"Fire: {chart_data.element_distribution.fire_percentage}%")
167
+ ```
168
+
169
+ ### Synastry (Relationship Analysis)
170
+
171
+ ```python
172
+ person1 = AstrologicalSubjectFactory.from_birth_data(
173
+ "Person1", 1990, 6, 15, 14, 30,
174
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
175
+ )
176
+ person2 = AstrologicalSubjectFactory.from_birth_data(
177
+ "Person2", 1992, 12, 25, 16, 45,
178
+ lng=9.19, lat=45.4642, tz_str="Europe/Rome", online=False
179
+ )
180
+ synastry = ChartDataFactory.create_synastry_chart_data(
181
+ first_subject=person1,
182
+ second_subject=person2,
183
+ include_house_comparison=True,
184
+ include_relationship_score=True
185
+ )
186
+
187
+ if synastry.relationship_score:
188
+ print(f"Compatibility: {synastry.relationship_score.score_value}")
189
+ ```
190
+
191
+ ### Transits
192
+
193
+ ```python
194
+ natal = AstrologicalSubjectFactory.from_birth_data(
195
+ "Natal", 1990, 6, 15, 14, 30,
196
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
197
+ )
198
+ now = AstrologicalSubjectFactory.from_current_time(
199
+ "Now", lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
200
+ )
201
+ transits = ChartDataFactory.create_transit_chart_data(
202
+ natal_subject=natal,
203
+ transit_subject=now
204
+ )
205
+ ```
206
+
207
+ ### Composite
208
+
209
+ ```python
210
+ person1 = AstrologicalSubjectFactory.from_birth_data(
211
+ "Person1", 1990, 6, 15, 14, 30,
212
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
213
+ )
214
+ person2 = AstrologicalSubjectFactory.from_birth_data(
215
+ "Person2", 1992, 12, 25, 16, 45,
216
+ lng=9.19, lat=45.4642, tz_str="Europe/Rome", online=False
217
+ )
218
+ composite_factory = CompositeSubjectFactory(person1, person2)
219
+ composite_subject = composite_factory.get_midpoint_composite_subject_model()
220
+ composite_data = ChartDataFactory.create_composite_chart_data(composite_subject)
221
+ ```
222
+
223
+ ### Custom Aspects
224
+
225
+ ```python
226
+ subject = AstrologicalSubjectFactory.from_birth_data(
227
+ "Example", 1990, 6, 15, 14, 30,
228
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
229
+ )
230
+ custom_aspects = [
231
+ {"name": "conjunction", "orb": 10},
232
+ {"name": "opposition", "orb": 10},
233
+ {"name": "trine", "orb": 8},
234
+ {"name": "square", "orb": 6},
235
+ ]
236
+
237
+ chart_data = ChartDataFactory.create_natal_chart_data(
238
+ subject,
239
+ active_aspects=custom_aspects
240
+ )
241
+ ```
242
+
243
+ ## 5. SVG Chart Generation
244
+
245
+ ### Basic Chart
246
+
247
+ ```python
248
+ subject = AstrologicalSubjectFactory.from_birth_data(
249
+ "Example", 1990, 6, 15, 14, 30,
250
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
251
+ )
252
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
253
+ drawer = ChartDrawer(chart_data=chart_data)
254
+
255
+ # Get SVG as string (recommended for web apps)
256
+ svg_string = drawer.generate_svg_string()
257
+
258
+ # Or save to file
259
+ from pathlib import Path
260
+ output_dir = Path("charts")
261
+ output_dir.mkdir(exist_ok=True)
262
+ drawer.save_svg(output_path=output_dir)
263
+ ```
264
+
265
+ ### Themes & Languages
266
+
267
+ ```python
268
+ subject = AstrologicalSubjectFactory.from_birth_data(
269
+ "Example", 1990, 6, 15, 14, 30,
270
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
271
+ )
272
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
273
+ drawer = ChartDrawer(
274
+ chart_data=chart_data,
275
+ theme="dark", # "classic", "light", "strawberry", "dark-high-contrast"
276
+ chart_language="IT", # "EN", "FR", "ES", "PT", "CN", "RU", "TR", "DE", "HI"
277
+ transparent_background=True
278
+ )
279
+ ```
280
+
281
+ ### Output Variants
282
+
283
+ ```python
284
+ subject = AstrologicalSubjectFactory.from_birth_data(
285
+ "Example", 1990, 6, 15, 14, 30,
286
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
287
+ )
288
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
289
+ drawer = ChartDrawer(chart_data=chart_data)
290
+ full_chart = drawer.generate_svg_string() # Complete chart
291
+ wheel_only = drawer.generate_wheel_only_svg_string() # Just the wheel
292
+ aspects_only = drawer.generate_aspect_grid_only_svg_string() # Just aspects
293
+ ```
294
+
295
+ ## 6. AI Context Serialization
296
+
297
+ Convert any Kerykeion model to AI-readable text:
298
+
299
+ ```python
300
+ from kerykeion import to_context
301
+
302
+ subject = AstrologicalSubjectFactory.from_birth_data(
303
+ "Example", 1990, 6, 15, 14, 30,
304
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
305
+ )
306
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
307
+
308
+ # Serialize subject
309
+ text = to_context(subject)
310
+
311
+ # Serialize chart data
312
+ text = to_context(chart_data)
313
+
314
+ # Serialize specific components
315
+ text = to_context(subject.sun)
316
+ if subject.lunar_phase:
317
+ text = to_context(subject.lunar_phase)
318
+ ```
319
+
320
+ **Output format:** Factual, non-qualitative text descriptions optimized for AI interpretation.
321
+
322
+ ## 7. Complete Workflow Examples
323
+
324
+ ### Simple Natal Chart
325
+
326
+ ```python
327
+ from kerykeion import AstrologicalSubjectFactory, ChartDataFactory, ChartDrawer
328
+
329
+ subject = AstrologicalSubjectFactory.from_birth_data(
330
+ "John", 1990, 6, 15, 14, 30,
331
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
332
+ )
333
+
334
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
335
+ drawer = ChartDrawer(chart_data)
336
+ svg = drawer.generate_svg_string()
337
+ ```
338
+
339
+ ### Relationship Compatibility
340
+
341
+ ```python
342
+ person1 = AstrologicalSubjectFactory.from_birth_data(
343
+ "Person1", 1990, 6, 15, 14, 30,
344
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
345
+ )
346
+ person2 = AstrologicalSubjectFactory.from_birth_data(
347
+ "Person2", 1992, 12, 25, 16, 45,
348
+ lng=9.19, lat=45.4642, tz_str="Europe/Rome", online=False
349
+ )
350
+
351
+ synastry = ChartDataFactory.create_synastry_chart_data(person1, person2)
352
+ score = synastry.relationship_score.score_value if synastry.relationship_score else None
353
+ ```
354
+
355
+ ### Current Transits
356
+
357
+ ```python
358
+ natal = AstrologicalSubjectFactory.from_birth_data(
359
+ "Natal", 1990, 6, 15, 14, 30,
360
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
361
+ )
362
+
363
+ now = AstrologicalSubjectFactory.from_current_time(
364
+ "Now", lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
365
+ )
366
+
367
+ transits = ChartDataFactory.create_transit_chart_data(natal, now)
368
+ ```
369
+
370
+ ## 8. Data Models Reference
371
+
372
+ ### Key Pydantic Models
373
+
374
+ - `AstrologicalSubjectModel`: Complete subject with all positions
375
+ - `KerykeionPointModel`: Individual planetary/point data
376
+ - `AspectModel`: Aspect between two points
377
+ - `LunarPhaseModel`: Lunar phase information
378
+ - `SingleChartDataModel`: Natal/Composite/Return chart data
379
+ - `DualChartDataModel`: Synastry/Transit chart data
380
+ - `ElementDistributionModel`: Element percentages
381
+ - `QualityDistributionModel`: Quality/mode percentages
382
+
383
+ ### Available Points
384
+
385
+ Planets: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto
386
+ Nodes: Mean_Node, True_Node, Mean_South_Node, True_South_Node
387
+ Asteroids: Ceres, Pallas, Juno, Vesta, Chiron
388
+ Angles: Ascendant, Medium_Coeli, Descendant, Imum_Coeli
389
+ Arabic Parts: Pars_Fortunae, Pars_Spiritus, Pars_Amoris, Pars_Fidei
390
+ Fixed Stars: Regulus, Spica
391
+ Others: Mean_Lilith, True_Lilith, Earth, Vertex, Anti_Vertex
392
+
393
+ ### Aspect Types
394
+
395
+ Major: conjunction (0°), opposition (180°), trine (120°), square (90°), sextile (60°)
396
+ Minor: semi-sextile (30°), semi-square (45°), sesquiquadrate (135°), quincunx (150°)
397
+ Special: quintile (72°), biquintile (144°)
398
+
399
+ ## 9. Error Handling
400
+
401
+ ```python
402
+ try:
403
+ subject = AstrologicalSubjectFactory.from_birth_data(
404
+ "Subject", 1990, 6, 15, 14, 30,
405
+ city="Rome", nation="IT",
406
+ geonames_username="your_username"
407
+ )
408
+ except Exception as e:
409
+ print(f"Error: {e}")
410
+ # Fallback to offline mode
411
+ subject = AstrologicalSubjectFactory.from_birth_data(
412
+ "Subject", 1990, 6, 15, 14, 30,
413
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
414
+ )
415
+ ```
416
+
417
+ ## 10. Performance Tips
418
+
419
+ 1. **Use offline mode** when coordinates are known (faster, more reliable)
420
+ 2. **Limit active_points** for batch processing
421
+ 3. **Disable optional features** when not needed:
422
+ ```python
423
+ calculate_lunar_phase=False
424
+ include_house_comparison=False
425
+ include_relationship_score=False
426
+ ```
427
+ 4. **Reuse chart_data objects** for multiple output formats
428
+
429
+ ## 11. Common Patterns
430
+
431
+ ### Vedic Chart
432
+
433
+ ```python
434
+ subject = AstrologicalSubjectFactory.from_birth_data(
435
+ "Vedic", 1990, 6, 15, 14, 30,
436
+ lng=82.9739, lat=25.3176, tz_str="Asia/Kolkata",
437
+ zodiac_type="Sidereal",
438
+ sidereal_mode="LAHIRI",
439
+ houses_system_identifier="W", # Whole Sign
440
+ online=False
441
+ )
442
+ ```
443
+
444
+ ### Horary Question
445
+
446
+ ```python
447
+ horary = AstrologicalSubjectFactory.from_current_time(
448
+ name="Will I get the job?",
449
+ lng=-0.1276, lat=51.5074, tz_str="Europe/London",
450
+ online=False
451
+ )
452
+ ```
453
+
454
+ ### Batch Processing
455
+
456
+ ```python
457
+ subjects = []
458
+ for year in range(1980, 1990):
459
+ s = AstrologicalSubjectFactory.from_birth_data(
460
+ f"Person_{year}", year, 1, 1, 12, 0,
461
+ lng=0, lat=51.5, tz_str="UTC",
462
+ active_points=["Sun", "Moon", "Ascendant"],
463
+ calculate_lunar_phase=False,
464
+ online=False
465
+ )
466
+ subjects.append(s)
467
+ ```
468
+
469
+ ## 12. Data Export
470
+
471
+ ### JSON Export
472
+
473
+ ```python
474
+ import json
475
+
476
+ subject = AstrologicalSubjectFactory.from_birth_data(
477
+ "Example", 1990, 6, 15, 14, 30,
478
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
479
+ )
480
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
481
+
482
+ # Pydantic models have .model_dump()
483
+ data_dict = chart_data.model_dump()
484
+ json_str = json.dumps(data_dict, indent=2, default=str)
485
+ ```
486
+
487
+ ### AI-Readable Text
488
+
489
+ ```python
490
+ from kerykeion import to_context
491
+
492
+ subject = AstrologicalSubjectFactory.from_birth_data(
493
+ "Example", 1990, 6, 15, 14, 30,
494
+ lng=12.4964, lat=41.9028, tz_str="Europe/Rome", online=False
495
+ )
496
+ chart_data = ChartDataFactory.create_natal_chart_data(subject)
497
+
498
+ ai_text = to_context(chart_data)
499
+ # Non-qualitative, factual description for LLM processing
500
+ ```
501
+
502
+ ## Dependencies
503
+
504
+ - **Swiss Ephemeris**: Core astronomical calculations
505
+ - **pytz**: Timezone handling
506
+ - **GeoNames API**: Optional online location lookup (requires username)
507
+ - **Python 3.8+**: Minimum version
508
+
509
+ ## Environment Variables
510
+
511
+ ```bash
512
+ export KERYKEION_GEONAMES_USERNAME="your_username" # For online mode
513
+ ```
514
+
515
+ ## Quick Reference Table
516
+
517
+ | Task | Factory | Key Parameter |
518
+ | ---------------- | ------------------------------ | ---------------- |
519
+ | Natal Chart | `from_birth_data()` | Basic birth data |
520
+ | Current Transits | `from_current_time()` | Location only |
521
+ | Event Chart | `from_iso_utc_time()` | ISO timestamp |
522
+ | Synastry | `create_synastry_chart_data()` | Two subjects |
523
+ | Composite | `CompositeSubjectFactory` | Two subjects |
524
+ | Returns | `PlanetaryReturnFactory` | Planet type |
525
+ | SVG Chart | `ChartDrawer` | chart_data |
526
+ | AI Text | `to_context()` | Any model |
527
+
528
+ ---
529
+
530
+ **Version**: Kerykeion 5.x+
531
+ **Documentation**: https://github.com/g-battaglia/kerykeion
532
+ **License**: AGPL-3.0