kerykeion 5.1.10__py3-none-any.whl → 5.1.12__py3-none-any.whl
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/aspects/aspects_factory.py +37 -13
- kerykeion/aspects/aspects_utils.py +159 -52
- kerykeion/astrological_subject_factory.py +75 -56
- kerykeion/charts/chart_drawer.py +149 -107
- kerykeion/charts/templates/chart.xml +22 -22
- kerykeion/report.py +0 -1
- kerykeion/schemas/kr_literals.py +8 -2
- kerykeion/schemas/kr_models.py +2 -2
- {kerykeion-5.1.10.dist-info → kerykeion-5.1.12.dist-info}/METADATA +8 -392
- {kerykeion-5.1.10.dist-info → kerykeion-5.1.12.dist-info}/RECORD +12 -12
- {kerykeion-5.1.10.dist-info → kerykeion-5.1.12.dist-info}/WHEEL +0 -0
- {kerykeion-5.1.10.dist-info → kerykeion-5.1.12.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: kerykeion
|
|
3
|
-
Version: 5.1.
|
|
3
|
+
Version: 5.1.12
|
|
4
4
|
Summary: A Python library for astrological calculations, including natal charts, houses, planetary aspects, and SVG chart generation.
|
|
5
5
|
Project-URL: Homepage, https://www.kerykeion.net/
|
|
6
6
|
Project-URL: Repository, https://github.com/g-battaglia/kerykeion
|
|
@@ -126,18 +126,6 @@ Maintaining this project requires substantial time and effort. The Astrologer AP
|
|
|
126
126
|
- [Factory-Centered Architecture](#factory-centered-architecture)
|
|
127
127
|
- [Pydantic 2 Models \& Type Safety](#pydantic-2-models--type-safety)
|
|
128
128
|
- [Enhanced Features](#enhanced-features)
|
|
129
|
-
- [🚨 Breaking Changes](#-breaking-changes)
|
|
130
|
-
- [1. Removed Legacy Classes](#1-removed-legacy-classes)
|
|
131
|
-
- [2. Import Changes](#2-import-changes)
|
|
132
|
-
- [3. Type Aliases Unified](#3-type-aliases-unified)
|
|
133
|
-
- [4. Lunar Nodes Naming](#4-lunar-nodes-naming)
|
|
134
|
-
- [5. Axis Orb Filtering](#5-axis-orb-filtering)
|
|
135
|
-
- [6. Chart Generation Changes](#6-chart-generation-changes)
|
|
136
|
-
- [7. Aspects API Changes](#7-aspects-api-changes)
|
|
137
|
-
- [🔄 Migration Guide](#-migration-guide)
|
|
138
|
-
- [Using the Backward Compatibility Layer](#using-the-backward-compatibility-layer)
|
|
139
|
-
- [Step-by-Step Migration](#step-by-step-migration)
|
|
140
|
-
- [Automated Migration Script](#automated-migration-script)
|
|
141
129
|
- [📦 Other Notable Changes](#-other-notable-changes)
|
|
142
130
|
- [🎨 New Themes](#-new-themes)
|
|
143
131
|
- [📚 Resources](#-resources)
|
|
@@ -191,7 +179,7 @@ Use the same pattern for synastry, composite, transit, or return charts by swapp
|
|
|
191
179
|
|
|
192
180
|
## Documentation Map
|
|
193
181
|
|
|
194
|
-
- **README (this file):** Quick start, common recipes, and v5 migration
|
|
182
|
+
- **README (this file):** Quick start, common recipes, and v5 overview. Full migration guide: [MIGRATION_V4_TO_V5.md](MIGRATION_V4_TO_V5.md).
|
|
195
183
|
- **`site-docs/` (offline Markdown guides):** Deep dives for each factory (`chart_data_factory.md`, `charts.md`, `planetary_return_factory.md`, etc.) with runnable snippets. Run `python scripts/test_markdown_snippets.py site-docs` to validate them locally.
|
|
196
184
|
- **[Auto-generated API Reference](https://www.kerykeion.net/pydocs/kerykeion.html):** Detailed model and function signatures straight from the codebase.
|
|
197
185
|
- **[Kerykeion website](https://www.kerykeion.net/docs/):** Rendered documentation with additional context, tutorials, and showcase material.
|
|
@@ -689,7 +677,7 @@ chart_data = ChartDataFactory.create_synastry_chart_data(first, second)
|
|
|
689
677
|
# Step 3: Create visualization with custom output directory
|
|
690
678
|
synastry_chart = ChartDrawer(chart_data=chart_data)
|
|
691
679
|
|
|
692
|
-
output_dir = Path("
|
|
680
|
+
output_dir = Path("charts_output")
|
|
693
681
|
output_dir.mkdir(exist_ok=True)
|
|
694
682
|
synastry_chart.save_svg(output_path=output_dir)
|
|
695
683
|
print("Saved to", (output_dir / f"{synastry_chart.first_obj.name} - Synastry Chart.svg").resolve())
|
|
@@ -1273,6 +1261,8 @@ Clone the repository or download the ZIP via the GitHub interface.
|
|
|
1273
1261
|
|
|
1274
1262
|
Kerykeion v5 is a **complete redesign** that modernizes the library with a data-first approach, factory-based architecture, and Pydantic 2 models. This version brings significant improvements in API design, type safety, and extensibility.
|
|
1275
1263
|
|
|
1264
|
+
Looking to upgrade from v4? See the dedicated migration guide: [MIGRATION_V4_TO_V5.md](MIGRATION_V4_TO_V5.md).
|
|
1265
|
+
|
|
1276
1266
|
### 🎯 Key Highlights
|
|
1277
1267
|
|
|
1278
1268
|
#### Factory-Centered Architecture
|
|
@@ -1359,378 +1349,7 @@ All models support:
|
|
|
1359
1349
|
- **Axis Orb Control**: Chart axes now share the same orb as planets by default; pass the keyword-only `axis_orb_limit` to return to a traditional, tighter axis filtering when you need it.
|
|
1360
1350
|
- **Element Weight Strategies**: Element and quality stats now default to a curated weighted balance; pass `distribution_method` or `custom_distribution_weights` when you need equal counts or bespoke weightings (including a `__default__` fallback) across any chart factory helper.
|
|
1361
1351
|
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
#### 1. Removed Legacy Classes
|
|
1365
|
-
|
|
1366
|
-
The following classes have been **completely removed** and must be replaced:
|
|
1367
|
-
|
|
1368
|
-
| Removed (v4) | Replacement (v5) |
|
|
1369
|
-
| ---------------------- | ---------------------------------------------- |
|
|
1370
|
-
| `AstrologicalSubject` | `AstrologicalSubjectFactory.from_birth_data()` |
|
|
1371
|
-
| `KerykeionChartSVG` | `ChartDrawer` + `ChartDataFactory` |
|
|
1372
|
-
| `NatalAspects` | `AspectsFactory.single_chart_aspects()` |
|
|
1373
|
-
| `SynastryAspects` | `AspectsFactory.dual_chart_aspects()` |
|
|
1374
|
-
| `relationship_score()` | `RelationshipScoreFactory` |
|
|
1375
|
-
|
|
1376
|
-
**Note**: The `kerykeion.backword` module provides temporary wrappers for `AstrologicalSubject` and `KerykeionChartSVG` with deprecation warnings. These will be **removed in v6.0**.
|
|
1377
|
-
|
|
1378
|
-
#### 2. Import Changes
|
|
1379
|
-
|
|
1380
|
-
Module structure has been completely reorganized:
|
|
1381
|
-
|
|
1382
|
-
**Old imports (v4):**
|
|
1383
|
-
|
|
1384
|
-
```python
|
|
1385
|
-
from kerykeion import AstrologicalSubject, KerykeionChartSVG
|
|
1386
|
-
from kerykeion.kr_types import KerykeionException
|
|
1387
|
-
from kerykeion.kr_types.kr_literals import Planet, AxialCusps
|
|
1388
|
-
```
|
|
1389
|
-
|
|
1390
|
-
**New imports (v5):**
|
|
1391
|
-
|
|
1392
|
-
```python
|
|
1393
|
-
from kerykeion import AstrologicalSubjectFactory, ChartDataFactory, ChartDrawer
|
|
1394
|
-
from kerykeion.schemas import KerykeionException
|
|
1395
|
-
from kerykeion.schemas.kr_literals import AstrologicalPoint
|
|
1396
|
-
```
|
|
1397
|
-
|
|
1398
|
-
**Backward compatibility (v5 only, removed in v6.0):**
|
|
1399
|
-
|
|
1400
|
-
```python
|
|
1401
|
-
# Old kr_types imports still work with deprecation warnings
|
|
1402
|
-
from kerykeion.kr_types import Planet, AxialCusps # Shows warning
|
|
1403
|
-
from kerykeion.schemas import Planet, AxialCusps # Works, no warning
|
|
1404
|
-
```
|
|
1405
|
-
|
|
1406
|
-
#### 3. Type Aliases Unified
|
|
1407
|
-
|
|
1408
|
-
**Old (v4):** `Planet` and `AxialCusps` were separate types
|
|
1409
|
-
**New (v5):** Unified as `AstrologicalPoint`
|
|
1410
|
-
|
|
1411
|
-
```python
|
|
1412
|
-
# v4
|
|
1413
|
-
from kerykeion.kr_types.kr_literals import Planet, AxialCusps
|
|
1414
|
-
|
|
1415
|
-
# v5 (recommended)
|
|
1416
|
-
from kerykeion.schemas.kr_literals import AstrologicalPoint
|
|
1417
|
-
|
|
1418
|
-
# v5 (transition, uses aliases)
|
|
1419
|
-
from kerykeion.schemas import Planet, AxialCusps # Still available
|
|
1420
|
-
```
|
|
1421
|
-
|
|
1422
|
-
#### 4. Lunar Nodes Naming
|
|
1423
|
-
|
|
1424
|
-
All lunar node fields have been renamed for clarity:
|
|
1425
|
-
|
|
1426
|
-
| Old Name (v4) | New Name (v5) |
|
|
1427
|
-
| ----------------- | ----------------------- |
|
|
1428
|
-
| `Mean_Node` | `Mean_North_Lunar_Node` |
|
|
1429
|
-
| `True_Node` | `True_North_Lunar_Node` |
|
|
1430
|
-
| `Mean_South_Node` | `Mean_South_Lunar_Node` |
|
|
1431
|
-
| `True_South_Node` | `True_South_Lunar_Node` |
|
|
1432
|
-
|
|
1433
|
-
**Migration example:**
|
|
1434
|
-
|
|
1435
|
-
```python
|
|
1436
|
-
from kerykeion import AstrologicalSubject, AstrologicalSubjectFactory
|
|
1437
|
-
|
|
1438
|
-
# v4 alias (still available, emits DeprecationWarning)
|
|
1439
|
-
legacy_subject = AstrologicalSubject(
|
|
1440
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1441
|
-
lng=-0.1276,
|
|
1442
|
-
lat=51.5074,
|
|
1443
|
-
tz_str="Europe/London",
|
|
1444
|
-
online=False,
|
|
1445
|
-
)
|
|
1446
|
-
print(legacy_subject.mean_node)
|
|
1447
|
-
|
|
1448
|
-
# v5 canonical name
|
|
1449
|
-
modern_subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1450
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1451
|
-
lng=-0.1276,
|
|
1452
|
-
lat=51.5074,
|
|
1453
|
-
tz_str="Europe/London",
|
|
1454
|
-
online=False,
|
|
1455
|
-
)
|
|
1456
|
-
print(modern_subject.mean_north_lunar_node)
|
|
1457
|
-
```
|
|
1458
|
-
|
|
1459
|
-
#### 5. Axis Orb Filtering
|
|
1460
|
-
|
|
1461
|
-
Modern default orbs now treat chart axes (ASC, MC, DSC, IC) exactly like planets. If you prefer a traditional, constrained approach, every public aspect factory exposes the keyword-only `axis_orb_limit` parameter so you can set a dedicated threshold when needed.
|
|
1462
|
-
|
|
1463
|
-
#### 6. Chart Generation Changes
|
|
1464
|
-
|
|
1465
|
-
The two-step process (data + rendering) is now required:
|
|
1466
|
-
|
|
1467
|
-
**Old v4:**
|
|
1468
|
-
|
|
1469
|
-
```python
|
|
1470
|
-
from pathlib import Path
|
|
1471
|
-
from kerykeion import AstrologicalSubject, KerykeionChartSVG
|
|
1472
|
-
|
|
1473
|
-
output_dir = Path("charts_output")
|
|
1474
|
-
output_dir.mkdir(exist_ok=True)
|
|
1475
|
-
|
|
1476
|
-
subject = AstrologicalSubject(
|
|
1477
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1478
|
-
lng=-0.1276,
|
|
1479
|
-
lat=51.5074,
|
|
1480
|
-
tz_str="Europe/London",
|
|
1481
|
-
online=False,
|
|
1482
|
-
)
|
|
1483
|
-
chart = KerykeionChartSVG(subject, new_output_directory=output_dir)
|
|
1484
|
-
chart.makeSVG()
|
|
1485
|
-
```
|
|
1486
|
-
|
|
1487
|
-
**New v5:**
|
|
1488
|
-
|
|
1489
|
-
```python
|
|
1490
|
-
from pathlib import Path
|
|
1491
|
-
from kerykeion import AstrologicalSubjectFactory, ChartDataFactory
|
|
1492
|
-
from kerykeion.charts.chart_drawer import ChartDrawer
|
|
1493
|
-
|
|
1494
|
-
subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1495
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1496
|
-
lng=-0.1276,
|
|
1497
|
-
lat=51.5074,
|
|
1498
|
-
tz_str="Europe/London",
|
|
1499
|
-
online=False,
|
|
1500
|
-
)
|
|
1501
|
-
chart_data = ChartDataFactory.create_natal_chart_data(subject)
|
|
1502
|
-
drawer = ChartDrawer(chart_data=chart_data)
|
|
1503
|
-
|
|
1504
|
-
output_dir = Path("charts_output")
|
|
1505
|
-
output_dir.mkdir(exist_ok=True)
|
|
1506
|
-
drawer.save_svg(output_path=output_dir, filename="john-v5-demo")
|
|
1507
|
-
```
|
|
1508
|
-
|
|
1509
|
-
#### 7. Aspects API Changes
|
|
1510
|
-
|
|
1511
|
-
Aspects are now calculated through the factory:
|
|
1512
|
-
|
|
1513
|
-
**Old v4:**
|
|
1514
|
-
|
|
1515
|
-
```python
|
|
1516
|
-
from kerykeion import AstrologicalSubjectFactory, NatalAspects, SynastryAspects
|
|
1517
|
-
|
|
1518
|
-
subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1519
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1520
|
-
lng=-0.1276,
|
|
1521
|
-
lat=51.5074,
|
|
1522
|
-
tz_str="Europe/London",
|
|
1523
|
-
online=False,
|
|
1524
|
-
)
|
|
1525
|
-
subject1 = subject
|
|
1526
|
-
subject2 = AstrologicalSubjectFactory.from_birth_data(
|
|
1527
|
-
"Jane", 1990, 6, 5, 8, 30,
|
|
1528
|
-
lng=-0.1276,
|
|
1529
|
-
lat=51.5074,
|
|
1530
|
-
tz_str="Europe/London",
|
|
1531
|
-
online=False,
|
|
1532
|
-
)
|
|
1533
|
-
|
|
1534
|
-
natal_aspects = NatalAspects(subject)
|
|
1535
|
-
synastry_aspects = SynastryAspects(subject1, subject2)
|
|
1536
|
-
```
|
|
1537
|
-
|
|
1538
|
-
**New v5:**
|
|
1539
|
-
|
|
1540
|
-
```python
|
|
1541
|
-
from kerykeion import AstrologicalSubjectFactory, AspectsFactory
|
|
1542
|
-
|
|
1543
|
-
subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1544
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1545
|
-
lng=-0.1276,
|
|
1546
|
-
lat=51.5074,
|
|
1547
|
-
tz_str="Europe/London",
|
|
1548
|
-
online=False,
|
|
1549
|
-
)
|
|
1550
|
-
subject1 = subject
|
|
1551
|
-
subject2 = AstrologicalSubjectFactory.from_birth_data(
|
|
1552
|
-
"Jane", 1990, 6, 5, 8, 30,
|
|
1553
|
-
lng=-0.1276,
|
|
1554
|
-
lat=51.5074,
|
|
1555
|
-
tz_str="Europe/London",
|
|
1556
|
-
online=False,
|
|
1557
|
-
)
|
|
1558
|
-
|
|
1559
|
-
natal_aspects = AspectsFactory.single_chart_aspects(subject)
|
|
1560
|
-
synastry_aspects = AspectsFactory.dual_chart_aspects(subject1, subject2)
|
|
1561
|
-
```
|
|
1562
|
-
|
|
1563
|
-
Note (v5.1): The two lists `relevant_aspects` and `all_aspects` were unified into a single, cleaned list: `aspects`. If you previously used either property, switch to `aspects`. The legacy properties still work via the backward-compatibility layer but both return the same unified list.
|
|
1564
|
-
|
|
1565
|
-
### 🔄 Migration Guide
|
|
1566
|
-
|
|
1567
|
-
#### Using the Backward Compatibility Layer
|
|
1568
|
-
|
|
1569
|
-
For a gradual migration, use the `kerykeion.backword` module:
|
|
1570
|
-
|
|
1571
|
-
```python
|
|
1572
|
-
from kerykeion import AstrologicalSubject # Legacy wrapper
|
|
1573
|
-
|
|
1574
|
-
subject = AstrologicalSubject(
|
|
1575
|
-
"John Doe", 1990, 1, 1, 12, 0,
|
|
1576
|
-
lng=-0.1276,
|
|
1577
|
-
lat=51.5074,
|
|
1578
|
-
tz_str="Europe/London",
|
|
1579
|
-
online=False,
|
|
1580
|
-
)
|
|
1581
|
-
|
|
1582
|
-
# These still work but show DeprecationWarnings
|
|
1583
|
-
print(subject.mean_node) # Maps to mean_north_lunar_node
|
|
1584
|
-
print(subject.true_node) # Maps to true_north_lunar_node
|
|
1585
|
-
```
|
|
1586
|
-
|
|
1587
|
-
**⚠️ Warning**: This compatibility layer will be **removed in v6.0**.
|
|
1588
|
-
|
|
1589
|
-
#### Step-by-Step Migration
|
|
1590
|
-
|
|
1591
|
-
1. **Update imports**
|
|
1592
|
-
|
|
1593
|
-
```python
|
|
1594
|
-
# Old (v4)
|
|
1595
|
-
from kerykeion import AstrologicalSubject, KerykeionChartSVG
|
|
1596
|
-
|
|
1597
|
-
# New (v5)
|
|
1598
|
-
from kerykeion import AstrologicalSubjectFactory, ChartDataFactory, ChartDrawer
|
|
1599
|
-
```
|
|
1600
|
-
|
|
1601
|
-
2. **Update subject creation**
|
|
1602
|
-
|
|
1603
|
-
```python
|
|
1604
|
-
from kerykeion import AstrologicalSubject, AstrologicalSubjectFactory
|
|
1605
|
-
|
|
1606
|
-
# Old (v4)
|
|
1607
|
-
subject = AstrologicalSubject(
|
|
1608
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1609
|
-
lng=-0.1276,
|
|
1610
|
-
lat=51.5074,
|
|
1611
|
-
tz_str="Europe/London",
|
|
1612
|
-
online=False,
|
|
1613
|
-
)
|
|
1614
|
-
|
|
1615
|
-
# New (v5)
|
|
1616
|
-
subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1617
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1618
|
-
lng=-0.1276,
|
|
1619
|
-
lat=51.5074,
|
|
1620
|
-
tz_str="Europe/London",
|
|
1621
|
-
online=False,
|
|
1622
|
-
)
|
|
1623
|
-
```
|
|
1624
|
-
|
|
1625
|
-
3. **Update chart generation**
|
|
1626
|
-
|
|
1627
|
-
```python
|
|
1628
|
-
from pathlib import Path
|
|
1629
|
-
from kerykeion import AstrologicalSubject, AstrologicalSubjectFactory, ChartDataFactory, KerykeionChartSVG
|
|
1630
|
-
from kerykeion.charts.chart_drawer import ChartDrawer
|
|
1631
|
-
|
|
1632
|
-
# Old (v4)
|
|
1633
|
-
legacy_subject = AstrologicalSubject(
|
|
1634
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1635
|
-
lng=-0.1276,
|
|
1636
|
-
lat=51.5074,
|
|
1637
|
-
tz_str="Europe/London",
|
|
1638
|
-
online=False,
|
|
1639
|
-
)
|
|
1640
|
-
output_dir = Path("charts_output")
|
|
1641
|
-
output_dir.mkdir(exist_ok=True)
|
|
1642
|
-
|
|
1643
|
-
chart = KerykeionChartSVG(legacy_subject, new_output_directory=output_dir)
|
|
1644
|
-
chart.makeSVG()
|
|
1645
|
-
|
|
1646
|
-
# New (v5)
|
|
1647
|
-
modern_subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1648
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1649
|
-
lng=-0.1276,
|
|
1650
|
-
lat=51.5074,
|
|
1651
|
-
tz_str="Europe/London",
|
|
1652
|
-
online=False,
|
|
1653
|
-
)
|
|
1654
|
-
chart_data = ChartDataFactory.create_natal_chart_data(modern_subject)
|
|
1655
|
-
drawer = ChartDrawer(chart_data=chart_data)
|
|
1656
|
-
drawer.save_svg(output_path=output_dir, filename="john-v5-migration")
|
|
1657
|
-
```
|
|
1658
|
-
|
|
1659
|
-
4. **Update field access** (lunar nodes)
|
|
1660
|
-
|
|
1661
|
-
```python
|
|
1662
|
-
from kerykeion import AstrologicalSubject, AstrologicalSubjectFactory
|
|
1663
|
-
|
|
1664
|
-
# Old (v4)
|
|
1665
|
-
legacy_subject = AstrologicalSubject(
|
|
1666
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1667
|
-
lng=-0.1276,
|
|
1668
|
-
lat=51.5074,
|
|
1669
|
-
tz_str="Europe/London",
|
|
1670
|
-
online=False,
|
|
1671
|
-
)
|
|
1672
|
-
legacy_mean_node = legacy_subject.mean_node
|
|
1673
|
-
print(getattr(legacy_mean_node, "position", "Legacy mean node not active"))
|
|
1674
|
-
|
|
1675
|
-
# New (v5)
|
|
1676
|
-
modern_subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1677
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1678
|
-
lng=-0.1276,
|
|
1679
|
-
lat=51.5074,
|
|
1680
|
-
tz_str="Europe/London",
|
|
1681
|
-
online=False,
|
|
1682
|
-
)
|
|
1683
|
-
modern_mean_node = modern_subject.mean_north_lunar_node
|
|
1684
|
-
print(getattr(modern_mean_node, "position", "Modern mean node not active"))
|
|
1685
|
-
```
|
|
1686
|
-
|
|
1687
|
-
5. **Update aspects**
|
|
1688
|
-
|
|
1689
|
-
```python
|
|
1690
|
-
from kerykeion import AstrologicalSubject, AstrologicalSubjectFactory, NatalAspects, AspectsFactory
|
|
1691
|
-
|
|
1692
|
-
# Old (v4)
|
|
1693
|
-
legacy_subject = AstrologicalSubject(
|
|
1694
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1695
|
-
lng=-0.1276,
|
|
1696
|
-
lat=51.5074,
|
|
1697
|
-
tz_str="Europe/London",
|
|
1698
|
-
online=False,
|
|
1699
|
-
)
|
|
1700
|
-
legacy_aspects = NatalAspects(legacy_subject)
|
|
1701
|
-
print(f"Legacy aspects count: {len(legacy_aspects.relevant_aspects)}")
|
|
1702
|
-
|
|
1703
|
-
# New (v5)
|
|
1704
|
-
modern_subject = AstrologicalSubjectFactory.from_birth_data(
|
|
1705
|
-
"John", 1990, 1, 1, 12, 0,
|
|
1706
|
-
lng=-0.1276,
|
|
1707
|
-
lat=51.5074,
|
|
1708
|
-
tz_str="Europe/London",
|
|
1709
|
-
online=False,
|
|
1710
|
-
)
|
|
1711
|
-
modern_aspects = AspectsFactory.single_chart_aspects(modern_subject)
|
|
1712
|
-
print(f"Modern aspects count: {len(modern_aspects.aspects)}")
|
|
1713
|
-
```
|
|
1714
|
-
|
|
1715
|
-
#### Automated Migration Script
|
|
1716
|
-
|
|
1717
|
-
Use this sed script to update Python files automatically:
|
|
1718
|
-
|
|
1719
|
-
```bash
|
|
1720
|
-
# Update lunar node references
|
|
1721
|
-
find . -name "*.py" -type f -exec sed -i.bak \
|
|
1722
|
-
-e 's/\.mean_node/.mean_north_lunar_node/g' \
|
|
1723
|
-
-e 's/\.true_node/.true_north_lunar_node/g' \
|
|
1724
|
-
-e 's/\.mean_south_node/.mean_south_lunar_node/g' \
|
|
1725
|
-
-e 's/\.true_south_node/.true_south_lunar_node/g' \
|
|
1726
|
-
-e 's/"Mean_Node"/"Mean_North_Lunar_Node"/g' \
|
|
1727
|
-
-e 's/"True_Node"/"True_North_Lunar_Node"/g' \
|
|
1728
|
-
-e 's/"Mean_South_Node"/"Mean_South_Lunar_Node"/g' \
|
|
1729
|
-
-e 's/"True_South_Node"/"True_South_Lunar_Node"/g' \
|
|
1730
|
-
{} \;
|
|
1731
|
-
```
|
|
1732
|
-
|
|
1733
|
-
**Note**: Always review automated changes and test thoroughly before committing.
|
|
1352
|
+
<!-- Migration details moved to MIGRATION_V4_TO_V5.md -->
|
|
1734
1353
|
|
|
1735
1354
|
### 📦 Other Notable Changes
|
|
1736
1355
|
|
|
@@ -1755,15 +1374,12 @@ Additional chart themes added:
|
|
|
1755
1374
|
### 📚 Resources
|
|
1756
1375
|
|
|
1757
1376
|
- **Full Release Notes**: [v5.0.0.md](release_notes/v5.0.0b1.md)
|
|
1377
|
+
- **Migration Guide (v4 → v5)**: [MIGRATION_V4_TO_V5.md](MIGRATION_V4_TO_V5.md)
|
|
1758
1378
|
- **Documentation**: [kerykeion.readthedocs.io](https://kerykeion.readthedocs.io)
|
|
1759
1379
|
- **API Reference**: [kerykeion.net/pydocs](https://www.kerykeion.net/pydocs/kerykeion.html)
|
|
1760
1380
|
- **Examples**: See the `examples/` folder for runnable code
|
|
1761
1381
|
- **Support**: [GitHub Discussions](https://github.com/g-battaglia/kerykeion/discussions)
|
|
1762
|
-
|
|
1763
|
-
**Migration Timeline:**
|
|
1764
|
-
|
|
1765
|
-
- **v5.0**: Current - Backward compatibility layer available
|
|
1766
|
-
- **v6.0**: Future - Compatibility layer will be removed
|
|
1382
|
+
-
|
|
1767
1383
|
|
|
1768
1384
|
## Integrating Kerykeion into Your Project
|
|
1769
1385
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
kerykeion/__init__.py,sha256=7gI_kWXhsmEK4SvNV6CkRmI0yjA3r7EO8UfQc_44UZU,1963
|
|
2
|
-
kerykeion/astrological_subject_factory.py,sha256=
|
|
2
|
+
kerykeion/astrological_subject_factory.py,sha256=WMxgEPP3D4-iJDD-UwKkjKa5U9GKcHUB6JkvQ-ZBbk8,94965
|
|
3
3
|
kerykeion/backword.py,sha256=aZrC6gRhLuewv3PvpHWlPvqrDGxspCEN2mMAh8tLtfM,34500
|
|
4
4
|
kerykeion/chart_data_factory.py,sha256=gtAlZs_IjPMUJUitLjkRFCESmAj-wEOlYdCPQ2b8XwA,25123
|
|
5
5
|
kerykeion/composite_subject_factory.py,sha256=eUtjThDlYr6SQsEi02_CgO1kEMUMYgQGzR5rX91GEwY,17120
|
|
@@ -7,18 +7,18 @@ kerykeion/ephemeris_data_factory.py,sha256=UKgoJQSqiyy4U0jNw23NI_BP0kbZblJU5mtBn
|
|
|
7
7
|
kerykeion/fetch_geonames.py,sha256=37q5SwLEEvz7UMtmwk4dsH5QOQXfY5MCbnRO0u0ZKtE,6881
|
|
8
8
|
kerykeion/planetary_return_factory.py,sha256=bIVPqa2gs7hYHi8aaMfVr4U99xWZk3LmYqZI9KG6ACo,37572
|
|
9
9
|
kerykeion/relationship_score_factory.py,sha256=pVrsRlFs__bfVe8K3cOirsnRtdBOW2DbnKqPa7jCWF0,11396
|
|
10
|
-
kerykeion/report.py,sha256=
|
|
10
|
+
kerykeion/report.py,sha256=oTdMLg54hnedF7RlDTH-mL99aYDdf_ldTqxUe0ypRo0,31443
|
|
11
11
|
kerykeion/transits_time_range_factory.py,sha256=YRSFVa2MIZFQMPbEL2njKd-P7p431zoAsINrddZz5Yw,13934
|
|
12
12
|
kerykeion/utilities.py,sha256=AqcJ9zmVEcwiurMfN63MDSeegJ1dJ4L1sQVJeoNIGOE,24016
|
|
13
13
|
kerykeion/aspects/__init__.py,sha256=csJmxvLdBu-bHuW676f3dpY__Qyc6LwRyrpWVTh3n1A,287
|
|
14
|
-
kerykeion/aspects/aspects_factory.py,sha256=
|
|
15
|
-
kerykeion/aspects/aspects_utils.py,sha256=
|
|
14
|
+
kerykeion/aspects/aspects_factory.py,sha256=09w6uJb8b0alsJtY1vFtxCZIOWGI1TRsB0IQLhW-wqc,25684
|
|
15
|
+
kerykeion/aspects/aspects_utils.py,sha256=3Zs4rVp7H4KDWRq1fthl12bRBhLLE-qCssG8h17tpB8,9856
|
|
16
16
|
kerykeion/charts/__init__.py,sha256=i9NMZ7LdkllPlqQSi1or9gTobHbROGDKmJhBDO4R0mA,128
|
|
17
|
-
kerykeion/charts/chart_drawer.py,sha256=
|
|
17
|
+
kerykeion/charts/chart_drawer.py,sha256=SD6hnorRGfAfsZMUOo3j1jaUnU5YA9zSSlIjbnBEtow,133552
|
|
18
18
|
kerykeion/charts/charts_utils.py,sha256=iwgDhVc_GwKuQBZ6JNmn6RWVILD5KIcjbrnDTR3wrAc,70911
|
|
19
19
|
kerykeion/charts/draw_planets.py,sha256=tIj3FeLLomVSbCaZUxfw_qBEB3pxi4EIEhqaeTgTyTY,29061
|
|
20
20
|
kerykeion/charts/templates/aspect_grid_only.xml,sha256=v3QtNMjk-kBdUTfB0r6thg--Ta_tNFdRQCzdk5PAycY,86429
|
|
21
|
-
kerykeion/charts/templates/chart.xml,sha256=
|
|
21
|
+
kerykeion/charts/templates/chart.xml,sha256=vFy6mUpjOGSH8-Ff5AtDFkNqgRII0npl2Y1GqjN4vdU,92618
|
|
22
22
|
kerykeion/charts/templates/wheel_only.xml,sha256=05k2KiVMP-5NW0e8PZrTX-VPn5x-SaNzEYPgU1_OKa0,87775
|
|
23
23
|
kerykeion/charts/themes/black-and-white.css,sha256=IIoy9wyB4znrvPvmallKmgDW4HMJPywTv5IZsolaEp4,6543
|
|
24
24
|
kerykeion/charts/themes/classic.css,sha256=xvBiI4DtY5fMaA7ilxGl26VEDY1VzkOTWm1XOs9n-ec,5158
|
|
@@ -38,8 +38,8 @@ kerykeion/kr_types/settings_models.py,sha256=xtpsrhjmhdowDSBeQ7TEMR53-uEEspCoXKC
|
|
|
38
38
|
kerykeion/schemas/__init__.py,sha256=EcwbnoYPKLq3m7n5s2cEZ8UyWpxdmHXbvM23hLNBNBI,2376
|
|
39
39
|
kerykeion/schemas/chart_template_model.py,sha256=fQ_EZ8ccOgNd4gXu5KilF1dUH9B2RVCDLHc09YkYLyY,8978
|
|
40
40
|
kerykeion/schemas/kerykeion_exception.py,sha256=vTYdwj_mL-Q-MqHJvEzzBXxQ5YI2kAwUC6ImoWxMKXc,454
|
|
41
|
-
kerykeion/schemas/kr_literals.py,sha256=
|
|
42
|
-
kerykeion/schemas/kr_models.py,sha256=
|
|
41
|
+
kerykeion/schemas/kr_literals.py,sha256=m2qZ0yHnh1Vuxn3ktVV9YeIbwGby1j4O7IDBPbvw2lo,5809
|
|
42
|
+
kerykeion/schemas/kr_models.py,sha256=KZplSmppo_QaaqMABTqV4eNe4eAP2dEfdujrWN4Qhv0,21904
|
|
43
43
|
kerykeion/schemas/settings_models.py,sha256=NBbtT7s0GzpWxLVygSszaCmefKP8yQyAIPxgr2Y-93Y,17927
|
|
44
44
|
kerykeion/settings/__init__.py,sha256=IJUqkYTpvmbKecVeCbsiL1qU_4xWc78u4OrvN_T3ZAI,624
|
|
45
45
|
kerykeion/settings/chart_defaults.py,sha256=TSm2hXCxym3I7XpIqIMBLWM253Z0dCGbhPi2MpWbD_0,12490
|
|
@@ -57,7 +57,7 @@ kerykeion/sweph/ast28/se28978s.se1,sha256=nU2Qp-ELc_tzFnRc1QT6uVueWXEipvhYDgfQRX
|
|
|
57
57
|
kerykeion/sweph/ast50/se50000s.se1,sha256=9jTrPlIrZMOBWC9cNgwzcfz0KBHdXFZoY9-NZ_HtECo,15748
|
|
58
58
|
kerykeion/sweph/ast90/se90377s.se1,sha256=bto2x4LtBv8b1ej1XhVFYq-kfHO9cczbKV9U1f9UVu4,10288
|
|
59
59
|
kerykeion/sweph/ast90/se90482s.se1,sha256=uHxz6bP4K8zgtQFrlWFwxrYfmqm5kXxsg6OYhAIUbAA,16173
|
|
60
|
-
kerykeion-5.1.
|
|
61
|
-
kerykeion-5.1.
|
|
62
|
-
kerykeion-5.1.
|
|
63
|
-
kerykeion-5.1.
|
|
60
|
+
kerykeion-5.1.12.dist-info/METADATA,sha256=NOJ-zkVvbqASXhKbgqvyNaGz7h90VcMB3xOrK1V-uxI,51041
|
|
61
|
+
kerykeion-5.1.12.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
62
|
+
kerykeion-5.1.12.dist-info/licenses/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
|
|
63
|
+
kerykeion-5.1.12.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|