kerykeion 4.17.0__tar.gz → 5.4.1__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.
- kerykeion-5.4.1/.coveragerc +17 -0
- kerykeion-5.4.1/.github/FUNDING.yml +13 -0
- kerykeion-5.4.1/.gitignore +75 -0
- kerykeion-5.4.1/.uv_cache/.gitignore +1 -0
- kerykeion-5.4.1/.uv_cache/.lock +0 -0
- kerykeion-5.4.1/.uv_cache/CACHEDIR.TAG +1 -0
- kerykeion-5.4.1/.uv_cache/interpreter-v4/7e11d242fb84b9e8/66d9843502616e2c.msgpack +0 -0
- kerykeion-5.4.1/.uv_cache/sdists-v9/.git +0 -0
- kerykeion-5.4.1/.uv_cache/sdists-v9/.gitignore +0 -0
- kerykeion-5.4.1/AI_AGENT_GUIDE.md +532 -0
- kerykeion-5.4.1/CHANGELOG.md +119 -0
- kerykeion-5.4.1/DEVELOPMENT.md +256 -0
- kerykeion-5.4.1/MANIFEST.in +5 -0
- kerykeion-5.4.1/MIGRATION_V4_TO_V5.md +390 -0
- kerykeion-5.4.1/PKG-INFO +1452 -0
- kerykeion-5.4.1/README.md +1412 -0
- kerykeion-5.4.1/TODO.md +54 -0
- kerykeion-5.4.1/docs/index.html +7 -0
- kerykeion-5.4.1/docs/kerykeion/aspects/aspects_utils.html +487 -0
- kerykeion-5.4.1/docs/kerykeion/aspects/natal_aspects.html +804 -0
- kerykeion-5.4.1/docs/kerykeion/aspects/synastry_aspects.html +744 -0
- kerykeion-5.4.1/docs/kerykeion/aspects/transits_time_range.html +422 -0
- kerykeion-5.4.1/docs/kerykeion/aspects.html +260 -0
- kerykeion-5.4.1/docs/kerykeion/astrological_subject.html +3487 -0
- kerykeion-5.4.1/docs/kerykeion/charts/charts_utils.html +3141 -0
- kerykeion-5.4.1/docs/kerykeion/charts/draw_planets.html +1083 -0
- kerykeion-5.4.1/docs/kerykeion/charts/kerykeion_chart_svg.html +3641 -0
- kerykeion-5.4.1/docs/kerykeion/charts.html +252 -0
- kerykeion-5.4.1/docs/kerykeion/composite_subject_factory.html +952 -0
- kerykeion-5.4.1/docs/kerykeion/enums.html +1152 -0
- kerykeion-5.4.1/docs/kerykeion/ephemeris_data.html +1238 -0
- kerykeion-5.4.1/docs/kerykeion/fetch_geonames.html +702 -0
- kerykeion-5.4.1/docs/kerykeion/kr_types/chart_types.html +1562 -0
- kerykeion-5.4.1/docs/kerykeion/kr_types/kerykeion_exception.html +323 -0
- kerykeion-5.4.1/docs/kerykeion/kr_types/kr_literals.html +797 -0
- kerykeion-5.4.1/docs/kerykeion/kr_types/kr_models.html +4076 -0
- kerykeion-5.4.1/docs/kerykeion/kr_types/settings_models.html +3267 -0
- kerykeion-5.4.1/docs/kerykeion/kr_types.html +257 -0
- kerykeion-5.4.1/docs/kerykeion/relationship_score/relationship_score.html +742 -0
- kerykeion-5.4.1/docs/kerykeion/relationship_score/relationship_score_factory.html +903 -0
- kerykeion-5.4.1/docs/kerykeion/relationship_score.html +244 -0
- kerykeion-5.4.1/docs/kerykeion/report.html +721 -0
- kerykeion-5.4.1/docs/kerykeion/settings/config_constants.html +325 -0
- kerykeion-5.4.1/docs/kerykeion/settings/kerykeion_settings.html +497 -0
- kerykeion-5.4.1/docs/kerykeion/settings.html +243 -0
- kerykeion-5.4.1/docs/kerykeion/transits_time_range.html +668 -0
- kerykeion-5.4.1/docs/kerykeion/utilities.html +1599 -0
- kerykeion-5.4.1/docs/kerykeion.html +13167 -0
- kerykeion-5.4.1/docs/search.js +46 -0
- kerykeion-5.4.1/examples/aspects_synastry.py +50 -0
- kerykeion-5.4.1/examples/composite_report_example.py +58 -0
- kerykeion-5.4.1/examples/context_serializer_example.py +181 -0
- kerykeion-5.4.1/examples/current_time_report.py +17 -0
- kerykeion-5.4.1/examples/dual_return_report_example.py +47 -0
- kerykeion-5.4.1/examples/house_comparison_context_example.py +73 -0
- kerykeion-5.4.1/examples/natal_report_example.py +31 -0
- kerykeion-5.4.1/examples/planetary_return.py +51 -0
- kerykeion-5.4.1/examples/quickstart_natal_chart.py +42 -0
- kerykeion-5.4.1/examples/solar_return_report_example.py +47 -0
- kerykeion-5.4.1/examples/subject_report_example.py +30 -0
- kerykeion-5.4.1/examples/synastry_report_example.py +51 -0
- kerykeion-5.4.1/examples/transit_report_example.py +51 -0
- kerykeion-5.4.1/examples/transits_time_range.py +69 -0
- kerykeion-5.4.1/kerykeion/__init__.py +65 -0
- {kerykeion-4.17.0 → kerykeion-5.4.1}/kerykeion/aspects/__init__.py +7 -4
- kerykeion-5.4.1/kerykeion/aspects/aspects_factory.py +612 -0
- kerykeion-5.4.1/kerykeion/aspects/aspects_utils.py +222 -0
- kerykeion-5.4.1/kerykeion/astrological_subject_factory.py +1920 -0
- kerykeion-5.4.1/kerykeion/backword.py +822 -0
- kerykeion-5.4.1/kerykeion/chart_data_factory.py +569 -0
- {kerykeion-4.17.0 → kerykeion-5.4.1}/kerykeion/charts/__init__.py +2 -2
- kerykeion-5.4.1/kerykeion/charts/chart_drawer.py +3088 -0
- kerykeion-5.4.1/kerykeion/charts/charts_utils.py +1959 -0
- kerykeion-5.4.1/kerykeion/charts/draw_planets.py +981 -0
- {kerykeion-4.17.0 → kerykeion-5.4.1}/kerykeion/charts/templates/aspect_grid_only.xml +337 -193
- kerykeion-4.17.0/kerykeion/charts/templates/wheel_only.xml → kerykeion-5.4.1/kerykeion/charts/templates/chart.xml +453 -211
- kerykeion-4.17.0/kerykeion/charts/templates/chart.xml → kerykeion-5.4.1/kerykeion/charts/templates/wheel_only.xml +362 -249
- kerykeion-5.4.1/kerykeion/charts/themes/black-and-white.css +148 -0
- kerykeion-5.4.1/kerykeion/charts/themes/classic.css +113 -0
- kerykeion-5.4.1/kerykeion/charts/themes/dark-high-contrast.css +159 -0
- kerykeion-5.4.1/kerykeion/charts/themes/dark.css +160 -0
- kerykeion-5.4.1/kerykeion/charts/themes/light.css +160 -0
- kerykeion-5.4.1/kerykeion/charts/themes/strawberry.css +158 -0
- kerykeion-5.4.1/kerykeion/composite_subject_factory.py +408 -0
- kerykeion-5.4.1/kerykeion/context_serializer.py +693 -0
- kerykeion-5.4.1/kerykeion/ephemeris_data_factory.py +443 -0
- kerykeion-5.4.1/kerykeion/fetch_geonames.py +199 -0
- kerykeion-5.4.1/kerykeion/house_comparison/__init__.py +6 -0
- kerykeion-5.4.1/kerykeion/house_comparison/house_comparison_factory.py +109 -0
- kerykeion-5.4.1/kerykeion/house_comparison/house_comparison_utils.py +198 -0
- kerykeion-5.4.1/kerykeion/kr_types/__init__.py +70 -0
- kerykeion-5.4.1/kerykeion/kr_types/chart_template_model.py +20 -0
- kerykeion-5.4.1/kerykeion/kr_types/kerykeion_exception.py +20 -0
- kerykeion-5.4.1/kerykeion/kr_types/kr_literals.py +20 -0
- kerykeion-5.4.1/kerykeion/kr_types/kr_models.py +20 -0
- kerykeion-5.4.1/kerykeion/kr_types/settings_models.py +20 -0
- kerykeion-5.4.1/kerykeion/planetary_return_factory.py +805 -0
- kerykeion-5.4.1/kerykeion/relationship_score_factory.py +303 -0
- kerykeion-5.4.1/kerykeion/report.py +816 -0
- kerykeion-5.4.1/kerykeion/schemas/__init__.py +106 -0
- kerykeion-5.4.1/kerykeion/schemas/chart_template_model.py +367 -0
- {kerykeion-4.17.0/kerykeion/kr_types → kerykeion-5.4.1/kerykeion/schemas}/kerykeion_exception.py +7 -1
- {kerykeion-4.17.0/kerykeion/kr_types → kerykeion-5.4.1/kerykeion/schemas}/kr_literals.py +87 -7
- kerykeion-5.4.1/kerykeion/schemas/kr_models.py +609 -0
- kerykeion-5.4.1/kerykeion/schemas/settings_models.py +188 -0
- kerykeion-5.4.1/kerykeion/settings/__init__.py +20 -0
- kerykeion-5.4.1/kerykeion/settings/chart_defaults.py +444 -0
- kerykeion-5.4.1/kerykeion/settings/config_constants.py +152 -0
- kerykeion-5.4.1/kerykeion/settings/kerykeion_settings.py +51 -0
- kerykeion-5.4.1/kerykeion/settings/translation_strings.py +1523 -0
- kerykeion-5.4.1/kerykeion/settings/translations.py +74 -0
- kerykeion-5.4.1/kerykeion/sweph/ast136/s136108s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/ast136/s136199s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/ast136/s136472s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/ast28/se28978s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/ast50/se50000s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/ast90/se90377s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/ast90/se90482s.se1 +0 -0
- kerykeion-5.4.1/kerykeion/sweph/sefstars.txt +1602 -0
- kerykeion-5.4.1/kerykeion/transits_time_range_factory.py +304 -0
- kerykeion-5.4.1/kerykeion/utilities.py +776 -0
- kerykeion-5.4.1/pyproject.toml +151 -0
- kerykeion-5.4.1/release_notes/V4.14.0.md +64 -0
- kerykeion-5.4.1/release_notes/V4.16.0.md +40 -0
- kerykeion-5.4.1/release_notes/V4.17.0.md +44 -0
- kerykeion-5.4.1/release_notes/V4.19.0.md +40 -0
- kerykeion-5.4.1/release_notes/V4.21.0.md +8 -0
- kerykeion-5.4.1/release_notes/V4.22.0.md +31 -0
- kerykeion-5.4.1/release_notes/V4.23.0.md +51 -0
- kerykeion-5.4.1/release_notes/V4.24.0.md +73 -0
- kerykeion-5.4.1/release_notes/V4.25.0.md +40 -0
- kerykeion-5.4.1/release_notes/V4.26.0.md +66 -0
- kerykeion-5.4.1/release_notes/v5.0.0.md +495 -0
- kerykeion-5.4.1/release_notes/v5.0.0a.md +40 -0
- kerykeion-5.4.1/release_notes/v5.0.0b.md +67 -0
- kerykeion-5.4.1/release_notes/v5.1.0.md +60 -0
- kerykeion-5.4.1/release_notes/v5.3.0.md +83 -0
- kerykeion-5.4.1/release_notes/v5.4.0.md +219 -0
- kerykeion-5.4.1/scripts/README.md +3 -0
- kerykeion-5.4.1/scripts/__init__.py +0 -0
- kerykeion-5.4.1/scripts/quality_check.py +44 -0
- kerykeion-5.4.1/scripts/regenerate_expected_aspects.py +94 -0
- kerykeion-5.4.1/scripts/regenerate_expected_subjects.py +170 -0
- kerykeion-5.4.1/scripts/regenerate_synastry_aspects.py +44 -0
- kerykeion-5.4.1/scripts/regenerate_synastry_from_test.py +41 -0
- kerykeion-5.4.1/scripts/regenerate_test_charts.py +549 -0
- kerykeion-5.4.1/scripts/regenerate_test_output.py +66 -0
- kerykeion-5.4.1/scripts/test_markdown_snippets.py +214 -0
- kerykeion-5.4.1/site/docs/aspects.md +1087 -0
- kerykeion-5.4.1/site/docs/astrological_subject_factory.md +1803 -0
- kerykeion-5.4.1/site/docs/chart_data_factory.md +1027 -0
- kerykeion-5.4.1/site/docs/charts.md +1089 -0
- kerykeion-5.4.1/site/docs/composite_subject_factory.md +584 -0
- kerykeion-5.4.1/site/docs/context_serializer.md +129 -0
- kerykeion-5.4.1/site/docs/element_quality_distribution.md +103 -0
- kerykeion-5.4.1/site/docs/ephemeris_data_factory.md +516 -0
- kerykeion-5.4.1/site/docs/house_comparison.md +194 -0
- kerykeion-5.4.1/site/docs/planetary_return_factory.md +892 -0
- kerykeion-5.4.1/site/docs/relationship_score_factory.md +825 -0
- kerykeion-5.4.1/site/docs/report.md +360 -0
- kerykeion-5.4.1/site/docs/transits_time_range_factory.md +975 -0
- kerykeion-5.4.1/site/docs/utilities.md +906 -0
- kerykeion-5.4.1/site/examples/birth-chart.md +72 -0
- kerykeion-5.4.1/site/examples/birth-data.md +42 -0
- kerykeion-5.4.1/site/examples/chart-language.md +56 -0
- kerykeion-5.4.1/site/examples/cusp-comparison.md +78 -0
- kerykeion-5.4.1/site/examples/dual-return-chart.md +84 -0
- kerykeion-5.4.1/site/examples/houses-systems.md +81 -0
- kerykeion-5.4.1/site/examples/minimalist-charts-and-spect-table.md +62 -0
- kerykeion-5.4.1/site/examples/perspective-type.md +383 -0
- kerykeion-5.4.1/site/examples/realationship-score.md +105 -0
- kerykeion-5.4.1/site/examples/report.md +249 -0
- kerykeion-5.4.1/site/examples/sidereal-modes.md +386 -0
- kerykeion-5.4.1/site/examples/synastry-chart.md +65 -0
- kerykeion-5.4.1/site/examples/theming.md +230 -0
- kerykeion-5.4.1/site/examples/transit-chart.md +95 -0
- kerykeion-5.4.1/tests/__init__.py +5 -0
- kerykeion-5.4.1/tests/aspects/__init__.py +0 -0
- kerykeion-5.4.1/tests/aspects/expected_natal_aspects.py +888 -0
- kerykeion-5.4.1/tests/aspects/expected_synastry_aspects.py +2316 -0
- kerykeion-5.4.1/tests/aspects/test_aspect_movement.py +56 -0
- kerykeion-5.4.1/tests/aspects/test_aspect_movement_comprehensive.py +137 -0
- kerykeion-5.4.1/tests/aspects/test_aspect_movement_enhanced.py +202 -0
- kerykeion-5.4.1/tests/aspects/test_natal_aspects.py +38 -0
- kerykeion-5.4.1/tests/aspects/test_synastry_aspects.py +36 -0
- kerykeion-5.4.1/tests/charts/__init__.py +0 -0
- kerykeion-5.4.1/tests/charts/compare_svg_lines.py +41 -0
- kerykeion-5.4.1/tests/charts/svg/Albert Einstein - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Amitabh Bachchan - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Angelina Jolie and Brad Pitt Composite Chart - Black and White Theme - Composite Chart.svg +898 -0
- kerykeion-5.4.1/tests/charts/svg/Angelina Jolie and Brad Pitt Composite Chart - Composite Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Antonio Banderas - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Cristiano Ronaldo - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Hua Chenyu - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Jeanne Moreau - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Natal Chart - Aspect Grid Only.svg +709 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Natal Chart - Wheel Only.svg +766 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Aspect Grid Only.svg +709 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Grid.svg +854 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - List.svg +854 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - All Active Points - Synastry Chart - Wheel Only.svg +766 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Aspect Grid Dark Synastry - Synastry Chart - Aspect Grid Only.svg +756 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Aspect Grid Dark Theme - Natal Chart - Aspect Grid Only.svg +756 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Aspect Grid Light Theme - Natal Chart - Aspect Grid Only.svg +756 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Aspect Grid Only - Natal Chart - Aspect Grid Only.svg +709 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Aspect Grid Synastry - Synastry Chart - Aspect Grid Only.svg +709 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Aspect Grid Transit - Transit Chart - Aspect Grid Only.svg +709 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Black and White Theme - DualReturnChart Chart - Solar Return.svg +898 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Black and White Theme - Natal Chart.svg +898 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Black and White Theme - Synastry Chart.svg +889 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Black and White Theme - Transit Chart.svg +898 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - DTS - Synastry Chart.svg +901 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Dark High Contrast Theme - Natal Chart.svg +909 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Dark Theme - Natal Chart.svg +910 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Dark Theme External - Natal Chart.svg +946 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return - No House Comparison.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - DualReturnChart Chart - Lunar Return.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return - No House Comparison.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - DualReturnChart Chart - Solar Return.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - ExternalNatal - Natal Chart.svg +899 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Heliocentric - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - House System Morinus - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Light Theme - Natal Chart.svg +910 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Minified - Natal Chart.svg +1 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Natal Chart - No Degree Indicators.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - SCTWL - Synastry Chart.svg +901 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Synastry Chart - No Degree Indicators.svg +854 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Synastry Chart - No House Comparison.svg +854 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - TCWTG - Transit Chart.svg +910 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Topocentric - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Transit Chart - No Degree Indicators.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Transit Chart - No House Comparison.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Transit Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Transparent Background - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - True Geocentric - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Wheel External Only - ExternalNatal Chart - Wheel Only.svg +802 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Wheel Only - Natal Chart - Wheel Only.svg +766 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Wheel Synastry Only - Synastry Chart - Wheel Only.svg +766 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon - Wheel Transit Only - Transit Chart - Wheel Only.svg +766 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon DeLuce - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Fagan-Bradley - Light Theme - Natal Chart - Wheel Only.svg +813 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Fagan-Bradley - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon J2000 - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Lahiri - Dark Theme - Natal Chart - Wheel Only.svg +813 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Lahiri - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Lunar Return - SingleReturnChart Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Solar Return - Black and White Theme - SingleReturnChart Chart.svg +898 -0
- kerykeion-5.4.1/tests/charts/svg/John Lennon Solar Return - SingleReturnChart Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Kanye - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Mehmet Oz - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Mikhail Bulgakov - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/svg/Moon Phases.svg +102 -0
- kerykeion-5.4.1/tests/charts/svg/Sophia Loren - Natal Chart.svg +863 -0
- kerykeion-5.4.1/tests/charts/test_charts.py +915 -0
- kerykeion-5.4.1/tests/charts/test_draw_planets.py +992 -0
- kerykeion-5.4.1/tests/charts/test_indicators_off.py +47 -0
- kerykeion-5.4.1/tests/charts/test_lunar_phase_svg.py +51 -0
- kerykeion-5.4.1/tests/data/__init__.py +11 -0
- kerykeion-5.4.1/tests/data/expected_astrological_subjects.py +692 -0
- kerykeion-5.4.1/tests/fixtures/new_moon_test_natal_report.txt +213 -0
- kerykeion-5.4.1/tests/settings/test_settings.py +58 -0
- kerykeion-5.4.1/tests/test_all_active_points.py +68 -0
- kerykeion-5.4.1/tests/test_astrological_subject.py +1531 -0
- kerykeion-5.4.1/tests/test_astrological_subject_jyotish.py +378 -0
- kerykeion-5.4.1/tests/test_backward_compatibility.py +177 -0
- kerykeion-5.4.1/tests/test_backword.py +179 -0
- kerykeion-5.4.1/tests/test_chart_data_factory.py +590 -0
- kerykeion-5.4.1/tests/test_chart_data_factory_complete.py +147 -0
- kerykeion-5.4.1/tests/test_chart_drawer_complete.py +493 -0
- kerykeion-5.4.1/tests/test_composite_subject_factory_complete.py +317 -0
- kerykeion-5.4.1/tests/test_context_serializer.py +434 -0
- kerykeion-5.4.1/tests/test_ephemeris_data.py +28 -0
- kerykeion-5.4.1/tests/test_ephemeris_data_factory_complete.py +373 -0
- kerykeion-5.4.1/tests/test_fetch_geonames.py +73 -0
- kerykeion-5.4.1/tests/test_json_dump.py +102 -0
- kerykeion-5.4.1/tests/test_planetary_return_factory_complete.py +483 -0
- kerykeion-5.4.1/tests/test_relationship_score.py +44 -0
- kerykeion-5.4.1/tests/test_relationship_score_factory_complete.py +392 -0
- kerykeion-5.4.1/tests/test_report.py +135 -0
- kerykeion-5.4.1/tests/test_report_output.py +32 -0
- kerykeion-5.4.1/tests/test_transits_time_range_factory_complete.py +203 -0
- kerykeion-5.4.1/tests/test_utc.py +43 -0
- kerykeion-5.4.1/tests/test_utilities.py +163 -0
- kerykeion-5.4.1/uv.lock +970 -0
- kerykeion-5.4.1/workspace/README.md +93 -0
- kerykeion-5.4.1/workspace/main.py +76 -0
- kerykeion-4.17.0/PKG-INFO +0 -393
- kerykeion-4.17.0/README.md +0 -355
- kerykeion-4.17.0/kerykeion/__init__.py +0 -17
- kerykeion-4.17.0/kerykeion/aspects/aspects_utils.py +0 -176
- kerykeion-4.17.0/kerykeion/aspects/natal_aspects.py +0 -144
- kerykeion-4.17.0/kerykeion/aspects/synastry_aspects.py +0 -118
- kerykeion-4.17.0/kerykeion/astrological_subject.py +0 -818
- kerykeion-4.17.0/kerykeion/charts/charts_utils.py +0 -1083
- kerykeion-4.17.0/kerykeion/charts/draw_planets.py +0 -407
- kerykeion-4.17.0/kerykeion/charts/kerykeion_chart_svg.py +0 -891
- kerykeion-4.17.0/kerykeion/charts/themes/classic.css +0 -82
- kerykeion-4.17.0/kerykeion/charts/themes/dark-high-contrast.css +0 -121
- kerykeion-4.17.0/kerykeion/charts/themes/dark.css +0 -121
- kerykeion-4.17.0/kerykeion/charts/themes/light.css +0 -117
- kerykeion-4.17.0/kerykeion/enums.py +0 -51
- kerykeion-4.17.0/kerykeion/ephemeris_data.py +0 -178
- kerykeion-4.17.0/kerykeion/fetch_geonames.py +0 -139
- kerykeion-4.17.0/kerykeion/kr_types/__init__.py +0 -10
- kerykeion-4.17.0/kerykeion/kr_types/chart_types.py +0 -88
- kerykeion-4.17.0/kerykeion/kr_types/kr_models.py +0 -168
- kerykeion-4.17.0/kerykeion/kr_types/settings_models.py +0 -169
- kerykeion-4.17.0/kerykeion/relationship_score.py +0 -206
- kerykeion-4.17.0/kerykeion/report.py +0 -94
- kerykeion-4.17.0/kerykeion/settings/__init__.py +0 -1
- kerykeion-4.17.0/kerykeion/settings/kerykeion_settings.py +0 -76
- kerykeion-4.17.0/kerykeion/settings/kr.config.json +0 -707
- kerykeion-4.17.0/kerykeion/utilities.py +0 -272
- kerykeion-4.17.0/pyproject.toml +0 -93
- {kerykeion-4.17.0 → kerykeion-5.4.1}/LICENSE +0 -0
- {kerykeion-4.17.0 → kerykeion-5.4.1}/kerykeion/sweph/README.md +0 -0
- {kerykeion-4.17.0 → kerykeion-5.4.1}/kerykeion/sweph/seas_18.se1 +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Coverage configuration file
|
|
2
|
+
# This file provides additional configuration options for coverage.py
|
|
3
|
+
# The main configuration is in pyproject.toml
|
|
4
|
+
|
|
5
|
+
[run]
|
|
6
|
+
# Additional run configuration can go here
|
|
7
|
+
# Most configuration is already in pyproject.toml
|
|
8
|
+
|
|
9
|
+
[html]
|
|
10
|
+
# HTML report configuration
|
|
11
|
+
title = "Kerykeion Test Coverage Report"
|
|
12
|
+
|
|
13
|
+
[report]
|
|
14
|
+
# Exclude patterns from coverage reports
|
|
15
|
+
exclude_lines =
|
|
16
|
+
pragma: no cover
|
|
17
|
+
^\s*if __name__ == ['"]__main__['"]:\s*$
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# These are supported funding model platforms
|
|
2
|
+
|
|
3
|
+
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
|
4
|
+
patreon: # Replace with a single Patreon username
|
|
5
|
+
open_collective: # Replace with a single Open Collective username
|
|
6
|
+
ko_fi: kerykeion
|
|
7
|
+
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
|
8
|
+
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
|
9
|
+
liberapay: # Replace with a single Liberapay username
|
|
10
|
+
issuehunt: # Replace with a single IssueHunt username
|
|
11
|
+
otechie: # Replace with a single Otechie username
|
|
12
|
+
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
|
13
|
+
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Compiled source #
|
|
2
|
+
###################
|
|
3
|
+
*.com
|
|
4
|
+
*.class
|
|
5
|
+
*.dll
|
|
6
|
+
*.exe
|
|
7
|
+
*.o
|
|
8
|
+
*.so
|
|
9
|
+
|
|
10
|
+
# Packages #
|
|
11
|
+
############
|
|
12
|
+
# it's better to unpack these files and commit the raw source
|
|
13
|
+
# git has its own built in compression methods
|
|
14
|
+
*.7z
|
|
15
|
+
*.dmg
|
|
16
|
+
*.gz
|
|
17
|
+
*.iso
|
|
18
|
+
*.jar
|
|
19
|
+
*.rar
|
|
20
|
+
*.tar
|
|
21
|
+
*.zip
|
|
22
|
+
|
|
23
|
+
# Logs and databases #
|
|
24
|
+
######################
|
|
25
|
+
*.log
|
|
26
|
+
*.sql
|
|
27
|
+
*.sqlite
|
|
28
|
+
|
|
29
|
+
# OS generated files #
|
|
30
|
+
######################
|
|
31
|
+
.DS_Store
|
|
32
|
+
.DS_Store?
|
|
33
|
+
._*
|
|
34
|
+
.Spotlight-V100
|
|
35
|
+
.Trashes
|
|
36
|
+
ehthumbs.db
|
|
37
|
+
Thumbs.db
|
|
38
|
+
|
|
39
|
+
# Folders #
|
|
40
|
+
###########
|
|
41
|
+
|
|
42
|
+
__pycache__
|
|
43
|
+
venv
|
|
44
|
+
.vscode
|
|
45
|
+
mecuriusastro.egg-info
|
|
46
|
+
kerykeion.egg-info
|
|
47
|
+
build/
|
|
48
|
+
dist/
|
|
49
|
+
.geonames_cache
|
|
50
|
+
.kerykeion
|
|
51
|
+
kr_venv
|
|
52
|
+
request_cache
|
|
53
|
+
Pipfile
|
|
54
|
+
.mypy_cache
|
|
55
|
+
|
|
56
|
+
# Coverage reports
|
|
57
|
+
htmlcov/
|
|
58
|
+
.coverage
|
|
59
|
+
.coverage.*
|
|
60
|
+
coverage.xml
|
|
61
|
+
*.cover
|
|
62
|
+
*.py,cover
|
|
63
|
+
.hypothesis/
|
|
64
|
+
.pytest_cache/
|
|
65
|
+
|
|
66
|
+
*.patch
|
|
67
|
+
|
|
68
|
+
# Personal workspace #
|
|
69
|
+
######################
|
|
70
|
+
# Ignore all files in workspace except README.md and main.py
|
|
71
|
+
workspace/*
|
|
72
|
+
!workspace/README.md
|
|
73
|
+
!workspace/main.py
|
|
74
|
+
.swp
|
|
75
|
+
John Lennon - Synastry Chart.svg
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
*
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Signature: 8a477f597d28d172789f06886806bc55
|
|
Binary file
|
|
File without changes
|
|
File without changes
|
|
@@ -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
|