kerykeion 5.1.0__py3-none-any.whl → 5.1.1__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.

@@ -159,10 +159,10 @@ class ChartDataFactory:
159
159
  )
160
160
 
161
161
  # Calculate aspects based on chart type
162
- aspects: Union[SingleChartAspectsModel, DualChartAspectsModel]
162
+ aspects_model: Union[SingleChartAspectsModel, DualChartAspectsModel]
163
163
  if chart_type in ["Natal", "Composite", "SingleReturnChart"]:
164
164
  # Single chart aspects
165
- aspects = AspectsFactory.single_chart_aspects(
165
+ aspects_model = AspectsFactory.single_chart_aspects(
166
166
  first_subject,
167
167
  active_points=effective_active_points,
168
168
  active_aspects=active_aspects,
@@ -172,7 +172,7 @@ class ChartDataFactory:
172
172
  # Dual chart aspects - second_subject is guaranteed to exist here due to validation above
173
173
  if second_subject is None:
174
174
  raise KerykeionException(f"Second subject is required for {chart_type} charts.")
175
- aspects = AspectsFactory.dual_chart_aspects(
175
+ aspects_model = AspectsFactory.dual_chart_aspects(
176
176
  first_subject,
177
177
  second_subject,
178
178
  active_points=effective_active_points,
@@ -301,7 +301,7 @@ class ChartDataFactory:
301
301
  return SingleChartDataModel(
302
302
  chart_type=cast(Literal["Natal", "Composite", "SingleReturnChart"], chart_type),
303
303
  subject=first_subject,
304
- aspects=cast(SingleChartAspectsModel, aspects),
304
+ aspects=cast(SingleChartAspectsModel, aspects_model).aspects,
305
305
  element_distribution=element_distribution,
306
306
  quality_distribution=quality_distribution,
307
307
  active_points=effective_active_points,
@@ -315,7 +315,7 @@ class ChartDataFactory:
315
315
  chart_type=cast(Literal["Transit", "Synastry", "DualReturnChart"], chart_type),
316
316
  first_subject=first_subject,
317
317
  second_subject=second_subject,
318
- aspects=cast(DualChartAspectsModel, aspects),
318
+ aspects=cast(DualChartAspectsModel, aspects_model).aspects,
319
319
  house_comparison=house_comparison,
320
320
  relationship_score=relationship_score,
321
321
  element_distribution=element_distribution,
@@ -542,8 +542,11 @@ if __name__ == "__main__":
542
542
 
543
543
  print(f"Chart Type: {natal_data.chart_type}")
544
544
  print(f"Active Points: {len(natal_data.active_points)}")
545
- print(f"Aspects: {len(natal_data.aspects.aspects)}")
545
+ print(f"Aspects: {len(natal_data.aspects)}")
546
546
  print(f"Fire: {natal_data.element_distribution.fire_percentage}%")
547
547
  print(f"Earth: {natal_data.element_distribution.earth_percentage}%")
548
548
  print(f"Air: {natal_data.element_distribution.air_percentage}%")
549
549
  print(f"Water: {natal_data.element_distribution.water_percentage}%")
550
+
551
+ print("\n---\n")
552
+ print(natal_data.model_dump_json(indent=4))
@@ -343,7 +343,7 @@ class ChartDrawer:
343
343
  # --- NATAL CHART SETUP ---
344
344
 
345
345
  # Extract aspects from pre-computed chart data
346
- self.aspects_list = chart_data.aspects.aspects
346
+ self.aspects_list = chart_data.aspects
347
347
 
348
348
  # Screen size
349
349
  self.height = self._DEFAULT_HEIGHT
@@ -366,7 +366,7 @@ class ChartDrawer:
366
366
  # --- COMPOSITE CHART SETUP ---
367
367
 
368
368
  # Extract aspects from pre-computed chart data
369
- self.aspects_list = chart_data.aspects.aspects
369
+ self.aspects_list = chart_data.aspects
370
370
 
371
371
  # Screen size
372
372
  self.height = self._DEFAULT_HEIGHT
@@ -384,7 +384,7 @@ class ChartDrawer:
384
384
  # --- TRANSIT CHART SETUP ---
385
385
 
386
386
  # Extract aspects from pre-computed chart data
387
- self.aspects_list = chart_data.aspects.aspects
387
+ self.aspects_list = chart_data.aspects
388
388
 
389
389
  # Screen size
390
390
  self.height = self._DEFAULT_HEIGHT
@@ -405,7 +405,7 @@ class ChartDrawer:
405
405
  # --- SYNASTRY CHART SETUP ---
406
406
 
407
407
  # Extract aspects from pre-computed chart data
408
- self.aspects_list = chart_data.aspects.aspects
408
+ self.aspects_list = chart_data.aspects
409
409
 
410
410
  # Screen size
411
411
  self.height = self._DEFAULT_HEIGHT
@@ -423,7 +423,7 @@ class ChartDrawer:
423
423
  # --- RETURN CHART SETUP ---
424
424
 
425
425
  # Extract aspects from pre-computed chart data
426
- self.aspects_list = chart_data.aspects.aspects
426
+ self.aspects_list = chart_data.aspects
427
427
 
428
428
  # Screen size
429
429
  self.height = self._DEFAULT_HEIGHT
@@ -441,7 +441,7 @@ class ChartDrawer:
441
441
  # --- SINGLE WHEEL RETURN CHART SETUP ---
442
442
 
443
443
  # Extract aspects from pre-computed chart data
444
- self.aspects_list = chart_data.aspects.aspects
444
+ self.aspects_list = chart_data.aspects
445
445
 
446
446
  # Screen size
447
447
  self.height = self._DEFAULT_HEIGHT
kerykeion/report.py CHANGED
@@ -510,8 +510,7 @@ class ReportGenerator:
510
510
  if not self._chart_data or not getattr(self._chart_data, "aspects", None):
511
511
  return ""
512
512
 
513
- aspects_model = self._chart_data.aspects
514
- aspects_list = list(getattr(aspects_model, "aspects", []))
513
+ aspects_list = list(self._chart_data.aspects)
515
514
 
516
515
  if not aspects_list:
517
516
  return "No aspects data available."
@@ -536,7 +536,7 @@ class SingleChartDataModel(SubscriptableBaseModel):
536
536
  subject: Union["AstrologicalSubjectModel", "CompositeSubjectModel", "PlanetReturnModel"]
537
537
 
538
538
  # Internal aspects analysis
539
- aspects: "SingleChartAspectsModel"
539
+ aspects: List[AspectModel]
540
540
 
541
541
  # Element and quality distributions
542
542
  element_distribution: "ElementDistributionModel"
@@ -582,7 +582,7 @@ class DualChartDataModel(SubscriptableBaseModel):
582
582
  second_subject: Union["AstrologicalSubjectModel", "PlanetReturnModel"]
583
583
 
584
584
  # Inter-chart aspects analysis
585
- aspects: "DualChartAspectsModel"
585
+ aspects: List[AspectModel]
586
586
 
587
587
  # House comparison analysis
588
588
  house_comparison: Optional["HouseComparisonModel"] = None
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kerykeion
3
- Version: 5.1.0
3
+ Version: 5.1.1
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
@@ -1336,7 +1336,7 @@ All data structures are now strongly typed Pydantic models:
1336
1336
 
1337
1337
  - **`AstrologicalSubjectModel`**: Subject data with full validation
1338
1338
  - **`ChartDataModel`**: Enriched chart data with elements, qualities, aspects
1339
- - **`SingleChartAspectsModel` / `DualChartAspectsModel`**: Typed aspect collections
1339
+ - **`AspectModel` list**: Raw aspect entries directly on `ChartDataModel.aspects`
1340
1340
  - **`PlanetReturnModel`**: Planetary return data
1341
1341
  - **`ElementDistributionModel`**: Element statistics (fire, earth, air, water)
1342
1342
  - **`QualityDistributionModel`**: Quality statistics (cardinal, fixed, mutable)
@@ -1,20 +1,20 @@
1
1
  kerykeion/__init__.py,sha256=7gI_kWXhsmEK4SvNV6CkRmI0yjA3r7EO8UfQc_44UZU,1963
2
2
  kerykeion/astrological_subject_factory.py,sha256=KaNuPSgVOgAva9z83fTuCpvIfEm3hsJro-z_mFPU1Q4,94604
3
3
  kerykeion/backword.py,sha256=zqsFWE0xI7vwXnFT2vngufFaJueI3qCIDCVgG-alzCM,32860
4
- kerykeion/chart_data_factory.py,sha256=dHPovXgWR_LxeyjVp4_g02wGB7QDPqL_xh7-XCi_Lv0,25015
4
+ kerykeion/chart_data_factory.py,sha256=gtAlZs_IjPMUJUitLjkRFCESmAj-wEOlYdCPQ2b8XwA,25123
5
5
  kerykeion/composite_subject_factory.py,sha256=eUtjThDlYr6SQsEi02_CgO1kEMUMYgQGzR5rX91GEwY,17120
6
6
  kerykeion/ephemeris_data_factory.py,sha256=uwEhVqqkB56HbxKueMAvSAbEKkYTJ9GH3mVLDNxIQnc,20358
7
7
  kerykeion/fetch_geonames.py,sha256=SPI4fSvD59C-IVpaoeOHuD7_kjGbTLo2fypO2x57-p4,5432
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=0JfbvIvHkLUjtbfgTeHuhVWR6jId1UU6IA2r_O7NKV4,31476
10
+ kerykeion/report.py,sha256=MK5_E_DkG09kEdFMueyQ45J_6JJg3QvkYSA0tywehx4,31414
11
11
  kerykeion/transits_time_range_factory.py,sha256=YRSFVa2MIZFQMPbEL2njKd-P7p431zoAsINrddZz5Yw,13934
12
12
  kerykeion/utilities.py,sha256=LKljXx0HSjlT5pspvG4VIY1po_xG1dLGNNfEWg0G5Fs,24391
13
13
  kerykeion/aspects/__init__.py,sha256=csJmxvLdBu-bHuW676f3dpY__Qyc6LwRyrpWVTh3n1A,287
14
14
  kerykeion/aspects/aspects_factory.py,sha256=XCuOOpo0ZW7sihYT2f50bLVpebEk19b9EtEjXonwte0,24156
15
15
  kerykeion/aspects/aspects_utils.py,sha256=00-MMLEGChpceab8sHKB1_qg6EG4ycTG2u2vYZcyLmQ,5784
16
16
  kerykeion/charts/__init__.py,sha256=i9NMZ7LdkllPlqQSi1or9gTobHbROGDKmJhBDO4R0mA,128
17
- kerykeion/charts/chart_drawer.py,sha256=tfE7QoaB0_CoFEBFlLyUDm9aYTVoCKo9DxUzHxOpqFU,122288
17
+ kerykeion/charts/chart_drawer.py,sha256=VCk2s6kUT2AhNWhVdepuhp2_6qHk3Fiq0d4EMq0pvZQ,122240
18
18
  kerykeion/charts/charts_utils.py,sha256=JzPnbZJnH4lrIENb5saRtbHn_GbyaElXVBwKdyP90Dg,70110
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
@@ -39,7 +39,7 @@ kerykeion/schemas/__init__.py,sha256=EcwbnoYPKLq3m7n5s2cEZ8UyWpxdmHXbvM23hLNBNBI
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
41
  kerykeion/schemas/kr_literals.py,sha256=p0lm598ut0GyeT-sRzWNcp5BFk9-FdYme4XjEUFJ3cA,5656
42
- kerykeion/schemas/kr_models.py,sha256=osrUyT8K8ShhsPJownujtks9U2M0DZAQv6b7mF-GEXQ,21959
42
+ kerykeion/schemas/kr_models.py,sha256=e1PQxUqC437IWIVKrOi71NVR5bEV7KGhF_JAaxs9zN0,21945
43
43
  kerykeion/schemas/settings_models.py,sha256=NlOW9T7T5kD5Dzna1UOdb7XPQeQnzMOu0y4-ApERxPw,17619
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.0.dist-info/METADATA,sha256=dn3Vl-7eaFCNN54IoT58fM9WJZ6PsJvfwcRs-S3xThI,61447
61
- kerykeion-5.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
- kerykeion-5.1.0.dist-info/licenses/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
63
- kerykeion-5.1.0.dist-info/RECORD,,
60
+ kerykeion-5.1.1.dist-info/METADATA,sha256=Ec1Bzr2pPHj_k2Y_1QpZVIE0bHRRHFmJgQCvK3FgFpg,61445
61
+ kerykeion-5.1.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
62
+ kerykeion-5.1.1.dist-info/licenses/LICENSE,sha256=UTLH8EdbAsgQei4PA2PnBCPGLSZkq5J-dhkyJuXgWQU,34273
63
+ kerykeion-5.1.1.dist-info/RECORD,,