kerykeion.kr_types.kr_models

This is part of Kerykeion (C) 2025 Giacomo Battaglia

  1# -*- coding: utf-8 -*-
  2"""
  3    This is part of Kerykeion (C) 2025 Giacomo Battaglia
  4"""
  5
  6
  7from typing import Union, Optional
  8from typing_extensions import TypedDict
  9from pydantic import BaseModel
 10from kerykeion.kr_types.kr_literals import AspectName
 11
 12from kerykeion.kr_types import (
 13    AxialCusps,
 14    LunarPhaseEmoji,
 15    LunarPhaseName,
 16    Planet,
 17    Houses,
 18    Quality,
 19    Element,
 20    Sign,
 21    ZodiacType,
 22    SignNumbers,
 23    PointType,
 24    SiderealMode,
 25    HousesSystemIdentifier,
 26    Houses,
 27    SignsEmoji,
 28    RelationshipScoreDescription,
 29    PerspectiveType
 30)
 31
 32
 33class SubscriptableBaseModel(BaseModel):
 34    """
 35    Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.
 36    """
 37
 38    def __getitem__(self, key):
 39        return getattr(self, key)
 40
 41    def __setitem__(self, key, value):
 42        setattr(self, key, value)
 43
 44    def __delitem__(self, key):
 45        delattr(self, key)
 46
 47    def get(self, key, default = None):
 48        return getattr(self, key, default)
 49
 50
 51class LunarPhaseModel(SubscriptableBaseModel):
 52    degrees_between_s_m: Union[float, int]
 53    moon_phase: int
 54    sun_phase: int
 55    moon_emoji: LunarPhaseEmoji
 56    moon_phase_name: LunarPhaseName
 57
 58
 59class KerykeionPointModel(SubscriptableBaseModel):
 60    """
 61    Kerykeion Point Model
 62    """
 63
 64    name: Union[Planet, Houses, AxialCusps]
 65    quality: Quality
 66    element: Element
 67    sign: Sign
 68    sign_num: SignNumbers
 69    position: float
 70    abs_pos: float
 71    emoji: str
 72    point_type: PointType
 73    house: Optional[Houses] = None
 74    retrograde: Optional[bool] = None
 75
 76
 77class AstrologicalSubjectModel(SubscriptableBaseModel):
 78    """
 79    Pydantic Model for Astrological Subject
 80    """
 81
 82    # Data
 83    name: str
 84    year: int
 85    month: int
 86    day: int
 87    hour: int
 88    minute: int
 89    city: str
 90    nation: str
 91    lng: float
 92    lat: float
 93    tz_str: str
 94    zodiac_type: ZodiacType
 95    sidereal_mode: Union[SiderealMode, None]
 96    houses_system_identifier: HousesSystemIdentifier
 97    houses_system_name: str
 98    perspective_type: PerspectiveType
 99    iso_formatted_local_datetime: str
100    iso_formatted_utc_datetime: str
101    julian_day: float
102
103    # Deprecated properties -->
104    utc_time: float
105    local_time: float
106    # <-- Deprecated properties
107
108
109    # Planets
110    sun: KerykeionPointModel
111    moon: KerykeionPointModel
112    mercury: KerykeionPointModel
113    venus: KerykeionPointModel
114    mars: KerykeionPointModel
115    jupiter: KerykeionPointModel
116    saturn: KerykeionPointModel
117    uranus: KerykeionPointModel
118    neptune: KerykeionPointModel
119    pluto: KerykeionPointModel
120
121    # Axes
122    ascendant: KerykeionPointModel
123    descendant: KerykeionPointModel
124    medium_coeli: KerykeionPointModel
125    imum_coeli: KerykeionPointModel
126
127    # Optional Planets:
128    chiron: Union[KerykeionPointModel, None]
129    mean_lilith: Union[KerykeionPointModel, None]
130
131    # Houses
132    first_house: KerykeionPointModel
133    second_house: KerykeionPointModel
134    third_house: KerykeionPointModel
135    fourth_house: KerykeionPointModel
136    fifth_house: KerykeionPointModel
137    sixth_house: KerykeionPointModel
138    seventh_house: KerykeionPointModel
139    eighth_house: KerykeionPointModel
140    ninth_house: KerykeionPointModel
141    tenth_house: KerykeionPointModel
142    eleventh_house: KerykeionPointModel
143    twelfth_house: KerykeionPointModel
144
145    # Nodes
146    mean_node: KerykeionPointModel
147    true_node: KerykeionPointModel
148    mean_south_node: KerykeionPointModel
149    true_south_node: KerykeionPointModel
150
151    planets_names_list: list[Planet]
152    """Ordered list of available planets names"""
153
154    axial_cusps_names_list: list[AxialCusps]
155    """Ordered list of available axes names"""
156
157    houses_names_list: list[Houses]
158    """Ordered list of houses names"""
159
160    lunar_phase: LunarPhaseModel
161    """Lunar phase model"""
162
163
164class EphemerisDictModel(SubscriptableBaseModel):
165    date: str
166    planets: list[KerykeionPointModel]
167    houses: list[KerykeionPointModel]
168
169
170class AspectModel(SubscriptableBaseModel):
171    p1_name: str
172    p1_owner: str
173    p1_abs_pos: float
174    p2_name: str
175    p2_owner: str
176    p2_abs_pos: float
177    aspect: str
178    orbit: float
179    aspect_degrees: int
180    diff: float
181    p1: int
182    p2: int
183
184
185class ZodiacSignModel(SubscriptableBaseModel):
186    sign: Sign
187    quality: Quality
188    element: Element
189    emoji: SignsEmoji
190    sign_num: SignNumbers
191
192
193class RelationshipScoreAspectModel(SubscriptableBaseModel):
194    p1_name: str
195    p2_name: str
196    aspect: str
197    orbit: float
198
199
200class RelationshipScoreModel(SubscriptableBaseModel):
201    score_value: int
202    score_description: RelationshipScoreDescription
203    is_destiny_sign: bool
204    aspects: list[RelationshipScoreAspectModel]
205    subjects: list[AstrologicalSubjectModel]
206
207
208class CompositeSubjectModel(SubscriptableBaseModel):
209    """
210    Pydantic Model for Composite Subject
211    """
212
213    # Data
214    name: str
215    first_subject: AstrologicalSubjectModel
216    second_subject: AstrologicalSubjectModel
217    composite_chart_type: str
218
219    zodiac_type: ZodiacType
220    sidereal_mode: Union[SiderealMode, None]
221    houses_system_identifier: HousesSystemIdentifier
222    houses_system_name: str
223    perspective_type: PerspectiveType
224
225    # Planets
226    sun: KerykeionPointModel
227    moon: KerykeionPointModel
228    mercury: KerykeionPointModel
229    venus: KerykeionPointModel
230    mars: KerykeionPointModel
231    jupiter: KerykeionPointModel
232    saturn: KerykeionPointModel
233    uranus: KerykeionPointModel
234    neptune: KerykeionPointModel
235    pluto: KerykeionPointModel
236
237    # Axes
238    ascendant: KerykeionPointModel
239    descendant: KerykeionPointModel
240    medium_coeli: KerykeionPointModel
241    imum_coeli: KerykeionPointModel
242
243    # Optional Planets:
244    chiron: Union[KerykeionPointModel, None]
245    mean_lilith: Union[KerykeionPointModel, None]
246
247    # Houses
248    first_house: KerykeionPointModel
249    second_house: KerykeionPointModel
250    third_house: KerykeionPointModel
251    fourth_house: KerykeionPointModel
252    fifth_house: KerykeionPointModel
253    sixth_house: KerykeionPointModel
254    seventh_house: KerykeionPointModel
255    eighth_house: KerykeionPointModel
256    ninth_house: KerykeionPointModel
257    tenth_house: KerykeionPointModel
258    eleventh_house: KerykeionPointModel
259    twelfth_house: KerykeionPointModel
260
261    # Nodes
262    mean_node: KerykeionPointModel
263    true_node: KerykeionPointModel
264    mean_south_node: KerykeionPointModel
265    true_south_node: KerykeionPointModel
266
267    planets_names_list: list[Planet]
268    """Ordered list of available planets names"""
269
270    axial_cusps_names_list: list[AxialCusps]
271    """Ordered list of available axes names"""
272
273    houses_names_list: list[Houses]
274    """Ordered list of houses names"""
275
276    lunar_phase: LunarPhaseModel
277    """Lunar phase model"""
278
279
280class ActiveAspect(TypedDict):
281    name: AspectName
282    orb: int
283
284
285class TransitMomentModel(SubscriptableBaseModel):
286    """
287    Model representing a snapshot of astrological transits at a specific moment in time.
288
289    Captures all active aspects between moving celestial bodies and
290    the fixed positions in a person's natal chart at a specific date and time.
291
292    Attributes:
293        date: ISO 8601 formatted date and time of the transit moment.
294        aspects: List of astrological aspects active at this specific moment.
295    """
296
297    date: str
298    """ISO 8601 formatted date and time of the transit moment."""
299
300    aspects: list[AspectModel]
301    """List of aspects active at this specific moment."""
302
303
304class TransitsTimeRangeModel(SubscriptableBaseModel):
305    """
306    Model representing a collection of transit moments for an astrological subject.
307
308    This model holds a time series of transit snapshots, allowing analysis of
309    planetary movements and their aspects to a natal chart over a period of time.
310
311    Attributes:
312        transits: List of transit moments occurring during the specified time period.
313        subject: The astrological subject model for whom the transits are calculated.
314        dates: List of all dates in ISO 8601 format for which transits were calculated.
315    """
316
317    transits: list[TransitMomentModel]
318    """List of transit moments."""
319
320    subject: Optional[AstrologicalSubjectModel]
321    """Astrological subject data."""
322
323    dates: Optional[list[str]]
324    """ISO 8601 formatted dates of all transit moments."""
class SubscriptableBaseModel(pydantic.main.BaseModel):
34class SubscriptableBaseModel(BaseModel):
35    """
36    Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.
37    """
38
39    def __getitem__(self, key):
40        return getattr(self, key)
41
42    def __setitem__(self, key, value):
43        setattr(self, key, value)
44
45    def __delitem__(self, key):
46        delattr(self, key)
47
48    def get(self, key, default = None):
49        return getattr(self, key, default)

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

def get(self, key, default=None):
48    def get(self, key, default = None):
49        return getattr(self, key, default)
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
class LunarPhaseModel(SubscriptableBaseModel):
52class LunarPhaseModel(SubscriptableBaseModel):
53    degrees_between_s_m: Union[float, int]
54    moon_phase: int
55    sun_phase: int
56    moon_emoji: LunarPhaseEmoji
57    moon_phase_name: LunarPhaseName

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

degrees_between_s_m: Union[float, int]
moon_phase: int
sun_phase: int
moon_emoji: Literal['🌑', '🌒', '🌓', '🌔', '🌕', '🌖', '🌗', '🌘']
moon_phase_name: Literal['New Moon', 'Waxing Crescent', 'First Quarter', 'Waxing Gibbous', 'Full Moon', 'Waning Gibbous', 'Last Quarter', 'Waning Crescent']
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class KerykeionPointModel(SubscriptableBaseModel):
60class KerykeionPointModel(SubscriptableBaseModel):
61    """
62    Kerykeion Point Model
63    """
64
65    name: Union[Planet, Houses, AxialCusps]
66    quality: Quality
67    element: Element
68    sign: Sign
69    sign_num: SignNumbers
70    position: float
71    abs_pos: float
72    emoji: str
73    point_type: PointType
74    house: Optional[Houses] = None
75    retrograde: Optional[bool] = None

Kerykeion Point Model

name: Union[Literal['Sun', 'Moon', 'Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Mean_Node', 'True_Node', 'Mean_South_Node', 'True_South_Node', 'Chiron', 'Mean_Lilith'], Literal['First_House', 'Second_House', 'Third_House', 'Fourth_House', 'Fifth_House', 'Sixth_House', 'Seventh_House', 'Eighth_House', 'Ninth_House', 'Tenth_House', 'Eleventh_House', 'Twelfth_House'], Literal['Ascendant', 'Medium_Coeli', 'Descendant', 'Imum_Coeli']]
quality: Literal['Cardinal', 'Fixed', 'Mutable']
element: Literal['Air', 'Fire', 'Earth', 'Water']
sign: Literal['Ari', 'Tau', 'Gem', 'Can', 'Leo', 'Vir', 'Lib', 'Sco', 'Sag', 'Cap', 'Aqu', 'Pis']
sign_num: Literal[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
position: float
abs_pos: float
emoji: str
point_type: Literal['Planet', 'House', 'AxialCusps']
house: Optional[Literal['First_House', 'Second_House', 'Third_House', 'Fourth_House', 'Fifth_House', 'Sixth_House', 'Seventh_House', 'Eighth_House', 'Ninth_House', 'Tenth_House', 'Eleventh_House', 'Twelfth_House']]
retrograde: Optional[bool]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class AstrologicalSubjectModel(SubscriptableBaseModel):
 78class AstrologicalSubjectModel(SubscriptableBaseModel):
 79    """
 80    Pydantic Model for Astrological Subject
 81    """
 82
 83    # Data
 84    name: str
 85    year: int
 86    month: int
 87    day: int
 88    hour: int
 89    minute: int
 90    city: str
 91    nation: str
 92    lng: float
 93    lat: float
 94    tz_str: str
 95    zodiac_type: ZodiacType
 96    sidereal_mode: Union[SiderealMode, None]
 97    houses_system_identifier: HousesSystemIdentifier
 98    houses_system_name: str
 99    perspective_type: PerspectiveType
100    iso_formatted_local_datetime: str
101    iso_formatted_utc_datetime: str
102    julian_day: float
103
104    # Deprecated properties -->
105    utc_time: float
106    local_time: float
107    # <-- Deprecated properties
108
109
110    # Planets
111    sun: KerykeionPointModel
112    moon: KerykeionPointModel
113    mercury: KerykeionPointModel
114    venus: KerykeionPointModel
115    mars: KerykeionPointModel
116    jupiter: KerykeionPointModel
117    saturn: KerykeionPointModel
118    uranus: KerykeionPointModel
119    neptune: KerykeionPointModel
120    pluto: KerykeionPointModel
121
122    # Axes
123    ascendant: KerykeionPointModel
124    descendant: KerykeionPointModel
125    medium_coeli: KerykeionPointModel
126    imum_coeli: KerykeionPointModel
127
128    # Optional Planets:
129    chiron: Union[KerykeionPointModel, None]
130    mean_lilith: Union[KerykeionPointModel, None]
131
132    # Houses
133    first_house: KerykeionPointModel
134    second_house: KerykeionPointModel
135    third_house: KerykeionPointModel
136    fourth_house: KerykeionPointModel
137    fifth_house: KerykeionPointModel
138    sixth_house: KerykeionPointModel
139    seventh_house: KerykeionPointModel
140    eighth_house: KerykeionPointModel
141    ninth_house: KerykeionPointModel
142    tenth_house: KerykeionPointModel
143    eleventh_house: KerykeionPointModel
144    twelfth_house: KerykeionPointModel
145
146    # Nodes
147    mean_node: KerykeionPointModel
148    true_node: KerykeionPointModel
149    mean_south_node: KerykeionPointModel
150    true_south_node: KerykeionPointModel
151
152    planets_names_list: list[Planet]
153    """Ordered list of available planets names"""
154
155    axial_cusps_names_list: list[AxialCusps]
156    """Ordered list of available axes names"""
157
158    houses_names_list: list[Houses]
159    """Ordered list of houses names"""
160
161    lunar_phase: LunarPhaseModel
162    """Lunar phase model"""

Pydantic Model for Astrological Subject

name: str
year: int
month: int
day: int
hour: int
minute: int
city: str
nation: str
lng: float
lat: float
tz_str: str
zodiac_type: Literal['Tropic', 'Sidereal']
sidereal_mode: Optional[Literal['FAGAN_BRADLEY', 'LAHIRI', 'DELUCE', 'RAMAN', 'USHASHASHI', 'KRISHNAMURTI', 'DJWHAL_KHUL', 'YUKTESHWAR', 'JN_BHASIN', 'BABYL_KUGLER1', 'BABYL_KUGLER2', 'BABYL_KUGLER3', 'BABYL_HUBER', 'BABYL_ETPSC', 'ALDEBARAN_15TAU', 'HIPPARCHOS', 'SASSANIAN', 'J2000', 'J1900', 'B1950']]
houses_system_identifier: Literal['A', 'B', 'C', 'D', 'F', 'H', 'I', 'i', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y']
houses_system_name: str
perspective_type: Literal['Apparent Geocentric', 'Heliocentric', 'Topocentric', 'True Geocentric']
iso_formatted_local_datetime: str
iso_formatted_utc_datetime: str
julian_day: float
utc_time: float
local_time: float
ascendant: KerykeionPointModel
descendant: KerykeionPointModel
medium_coeli: KerykeionPointModel
imum_coeli: KerykeionPointModel
chiron: Optional[KerykeionPointModel]
mean_lilith: Optional[KerykeionPointModel]
first_house: KerykeionPointModel
second_house: KerykeionPointModel
third_house: KerykeionPointModel
fourth_house: KerykeionPointModel
fifth_house: KerykeionPointModel
sixth_house: KerykeionPointModel
seventh_house: KerykeionPointModel
eighth_house: KerykeionPointModel
ninth_house: KerykeionPointModel
tenth_house: KerykeionPointModel
eleventh_house: KerykeionPointModel
twelfth_house: KerykeionPointModel
mean_node: KerykeionPointModel
true_node: KerykeionPointModel
mean_south_node: KerykeionPointModel
true_south_node: KerykeionPointModel
planets_names_list: list[typing.Literal['Sun', 'Moon', 'Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Mean_Node', 'True_Node', 'Mean_South_Node', 'True_South_Node', 'Chiron', 'Mean_Lilith']]

Ordered list of available planets names

axial_cusps_names_list: list[typing.Literal['Ascendant', 'Medium_Coeli', 'Descendant', 'Imum_Coeli']]

Ordered list of available axes names

houses_names_list: list[typing.Literal['First_House', 'Second_House', 'Third_House', 'Fourth_House', 'Fifth_House', 'Sixth_House', 'Seventh_House', 'Eighth_House', 'Ninth_House', 'Tenth_House', 'Eleventh_House', 'Twelfth_House']]

Ordered list of houses names

lunar_phase: LunarPhaseModel

Lunar phase model

model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class EphemerisDictModel(SubscriptableBaseModel):
165class EphemerisDictModel(SubscriptableBaseModel):
166    date: str
167    planets: list[KerykeionPointModel]
168    houses: list[KerykeionPointModel]

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

date: str
planets: list[KerykeionPointModel]
houses: list[KerykeionPointModel]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class AspectModel(SubscriptableBaseModel):
171class AspectModel(SubscriptableBaseModel):
172    p1_name: str
173    p1_owner: str
174    p1_abs_pos: float
175    p2_name: str
176    p2_owner: str
177    p2_abs_pos: float
178    aspect: str
179    orbit: float
180    aspect_degrees: int
181    diff: float
182    p1: int
183    p2: int

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

p1_name: str
p1_owner: str
p1_abs_pos: float
p2_name: str
p2_owner: str
p2_abs_pos: float
aspect: str
orbit: float
aspect_degrees: int
diff: float
p1: int
p2: int
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class ZodiacSignModel(SubscriptableBaseModel):
186class ZodiacSignModel(SubscriptableBaseModel):
187    sign: Sign
188    quality: Quality
189    element: Element
190    emoji: SignsEmoji
191    sign_num: SignNumbers

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

sign: Literal['Ari', 'Tau', 'Gem', 'Can', 'Leo', 'Vir', 'Lib', 'Sco', 'Sag', 'Cap', 'Aqu', 'Pis']
quality: Literal['Cardinal', 'Fixed', 'Mutable']
element: Literal['Air', 'Fire', 'Earth', 'Water']
emoji: Literal['♈️', '♉️', '♊️', '♋️', '♌️', '♍️', '♎️', '♏️', '♐️', '♑️', '♒️', '♓️']
sign_num: Literal[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class RelationshipScoreAspectModel(SubscriptableBaseModel):
194class RelationshipScoreAspectModel(SubscriptableBaseModel):
195    p1_name: str
196    p2_name: str
197    aspect: str
198    orbit: float

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

p1_name: str
p2_name: str
aspect: str
orbit: float
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class RelationshipScoreModel(SubscriptableBaseModel):
201class RelationshipScoreModel(SubscriptableBaseModel):
202    score_value: int
203    score_description: RelationshipScoreDescription
204    is_destiny_sign: bool
205    aspects: list[RelationshipScoreAspectModel]
206    subjects: list[AstrologicalSubjectModel]

Pydantic BaseModel with subscriptable support, so you can access the fields as if they were a dictionary.

score_value: int
score_description: Literal['Minimal', 'Medium', 'Important', 'Very Important', 'Exceptional', 'Rare Exceptional']
is_destiny_sign: bool
subjects: list[AstrologicalSubjectModel]
model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class CompositeSubjectModel(SubscriptableBaseModel):
209class CompositeSubjectModel(SubscriptableBaseModel):
210    """
211    Pydantic Model for Composite Subject
212    """
213
214    # Data
215    name: str
216    first_subject: AstrologicalSubjectModel
217    second_subject: AstrologicalSubjectModel
218    composite_chart_type: str
219
220    zodiac_type: ZodiacType
221    sidereal_mode: Union[SiderealMode, None]
222    houses_system_identifier: HousesSystemIdentifier
223    houses_system_name: str
224    perspective_type: PerspectiveType
225
226    # Planets
227    sun: KerykeionPointModel
228    moon: KerykeionPointModel
229    mercury: KerykeionPointModel
230    venus: KerykeionPointModel
231    mars: KerykeionPointModel
232    jupiter: KerykeionPointModel
233    saturn: KerykeionPointModel
234    uranus: KerykeionPointModel
235    neptune: KerykeionPointModel
236    pluto: KerykeionPointModel
237
238    # Axes
239    ascendant: KerykeionPointModel
240    descendant: KerykeionPointModel
241    medium_coeli: KerykeionPointModel
242    imum_coeli: KerykeionPointModel
243
244    # Optional Planets:
245    chiron: Union[KerykeionPointModel, None]
246    mean_lilith: Union[KerykeionPointModel, None]
247
248    # Houses
249    first_house: KerykeionPointModel
250    second_house: KerykeionPointModel
251    third_house: KerykeionPointModel
252    fourth_house: KerykeionPointModel
253    fifth_house: KerykeionPointModel
254    sixth_house: KerykeionPointModel
255    seventh_house: KerykeionPointModel
256    eighth_house: KerykeionPointModel
257    ninth_house: KerykeionPointModel
258    tenth_house: KerykeionPointModel
259    eleventh_house: KerykeionPointModel
260    twelfth_house: KerykeionPointModel
261
262    # Nodes
263    mean_node: KerykeionPointModel
264    true_node: KerykeionPointModel
265    mean_south_node: KerykeionPointModel
266    true_south_node: KerykeionPointModel
267
268    planets_names_list: list[Planet]
269    """Ordered list of available planets names"""
270
271    axial_cusps_names_list: list[AxialCusps]
272    """Ordered list of available axes names"""
273
274    houses_names_list: list[Houses]
275    """Ordered list of houses names"""
276
277    lunar_phase: LunarPhaseModel
278    """Lunar phase model"""

Pydantic Model for Composite Subject

name: str
first_subject: AstrologicalSubjectModel
second_subject: AstrologicalSubjectModel
composite_chart_type: str
zodiac_type: Literal['Tropic', 'Sidereal']
sidereal_mode: Optional[Literal['FAGAN_BRADLEY', 'LAHIRI', 'DELUCE', 'RAMAN', 'USHASHASHI', 'KRISHNAMURTI', 'DJWHAL_KHUL', 'YUKTESHWAR', 'JN_BHASIN', 'BABYL_KUGLER1', 'BABYL_KUGLER2', 'BABYL_KUGLER3', 'BABYL_HUBER', 'BABYL_ETPSC', 'ALDEBARAN_15TAU', 'HIPPARCHOS', 'SASSANIAN', 'J2000', 'J1900', 'B1950']]
houses_system_identifier: Literal['A', 'B', 'C', 'D', 'F', 'H', 'I', 'i', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y']
houses_system_name: str
perspective_type: Literal['Apparent Geocentric', 'Heliocentric', 'Topocentric', 'True Geocentric']
ascendant: KerykeionPointModel
descendant: KerykeionPointModel
medium_coeli: KerykeionPointModel
imum_coeli: KerykeionPointModel
chiron: Optional[KerykeionPointModel]
mean_lilith: Optional[KerykeionPointModel]
first_house: KerykeionPointModel
second_house: KerykeionPointModel
third_house: KerykeionPointModel
fourth_house: KerykeionPointModel
fifth_house: KerykeionPointModel
sixth_house: KerykeionPointModel
seventh_house: KerykeionPointModel
eighth_house: KerykeionPointModel
ninth_house: KerykeionPointModel
tenth_house: KerykeionPointModel
eleventh_house: KerykeionPointModel
twelfth_house: KerykeionPointModel
mean_node: KerykeionPointModel
true_node: KerykeionPointModel
mean_south_node: KerykeionPointModel
true_south_node: KerykeionPointModel
planets_names_list: list[typing.Literal['Sun', 'Moon', 'Mercury', 'Venus', 'Mars', 'Jupiter', 'Saturn', 'Uranus', 'Neptune', 'Pluto', 'Mean_Node', 'True_Node', 'Mean_South_Node', 'True_South_Node', 'Chiron', 'Mean_Lilith']]

Ordered list of available planets names

axial_cusps_names_list: list[typing.Literal['Ascendant', 'Medium_Coeli', 'Descendant', 'Imum_Coeli']]

Ordered list of available axes names

houses_names_list: list[typing.Literal['First_House', 'Second_House', 'Third_House', 'Fourth_House', 'Fifth_House', 'Sixth_House', 'Seventh_House', 'Eighth_House', 'Ninth_House', 'Tenth_House', 'Eleventh_House', 'Twelfth_House']]

Ordered list of houses names

lunar_phase: LunarPhaseModel

Lunar phase model

model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class ActiveAspect(typing_extensions.TypedDict):
281class ActiveAspect(TypedDict):
282    name: AspectName
283    orb: int
name: Literal['conjunction', 'semi-sextile', 'semi-square', 'sextile', 'quintile', 'square', 'trine', 'sesquiquadrate', 'biquintile', 'quincunx', 'opposition']
orb: int
Inherited Members
builtins.dict
get
setdefault
pop
popitem
keys
items
values
update
fromkeys
clear
copy
class TransitMomentModel(SubscriptableBaseModel):
286class TransitMomentModel(SubscriptableBaseModel):
287    """
288    Model representing a snapshot of astrological transits at a specific moment in time.
289
290    Captures all active aspects between moving celestial bodies and
291    the fixed positions in a person's natal chart at a specific date and time.
292
293    Attributes:
294        date: ISO 8601 formatted date and time of the transit moment.
295        aspects: List of astrological aspects active at this specific moment.
296    """
297
298    date: str
299    """ISO 8601 formatted date and time of the transit moment."""
300
301    aspects: list[AspectModel]
302    """List of aspects active at this specific moment."""

Model representing a snapshot of astrological transits at a specific moment in time.

Captures all active aspects between moving celestial bodies and the fixed positions in a person's natal chart at a specific date and time.

Attributes: date: ISO 8601 formatted date and time of the transit moment. aspects: List of astrological aspects active at this specific moment.

date: str

ISO 8601 formatted date and time of the transit moment.

aspects: list[AspectModel]

List of aspects active at this specific moment.

model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get
class TransitsTimeRangeModel(SubscriptableBaseModel):
305class TransitsTimeRangeModel(SubscriptableBaseModel):
306    """
307    Model representing a collection of transit moments for an astrological subject.
308
309    This model holds a time series of transit snapshots, allowing analysis of
310    planetary movements and their aspects to a natal chart over a period of time.
311
312    Attributes:
313        transits: List of transit moments occurring during the specified time period.
314        subject: The astrological subject model for whom the transits are calculated.
315        dates: List of all dates in ISO 8601 format for which transits were calculated.
316    """
317
318    transits: list[TransitMomentModel]
319    """List of transit moments."""
320
321    subject: Optional[AstrologicalSubjectModel]
322    """Astrological subject data."""
323
324    dates: Optional[list[str]]
325    """ISO 8601 formatted dates of all transit moments."""

Model representing a collection of transit moments for an astrological subject.

This model holds a time series of transit snapshots, allowing analysis of planetary movements and their aspects to a natal chart over a period of time.

Attributes: transits: List of transit moments occurring during the specified time period. subject: The astrological subject model for whom the transits are calculated. dates: List of all dates in ISO 8601 format for which transits were calculated.

transits: list[TransitMomentModel]

List of transit moments.

subject: Optional[AstrologicalSubjectModel]

Astrological subject data.

dates: Optional[list[str]]

ISO 8601 formatted dates of all transit moments.

model_config: ClassVar[pydantic.config.ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Inherited Members
pydantic.main.BaseModel
BaseModel
model_extra
model_fields_set
model_construct
model_copy
model_dump
model_dump_json
model_json_schema
model_parametrized_name
model_post_init
model_rebuild
model_validate
model_validate_json
model_validate_strings
dict
json
parse_obj
parse_raw
parse_file
from_orm
construct
copy
schema
schema_json
validate
update_forward_refs
model_fields
model_computed_fields
SubscriptableBaseModel
get