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_abs_pos: float
173    p2_name: str
174    p2_abs_pos: float
175    aspect: str
176    orbit: float
177    aspect_degrees: int
178    diff: float
179    p1: int
180    p2: int
181
182
183class ZodiacSignModel(SubscriptableBaseModel):
184    sign: Sign
185    quality: Quality
186    element: Element
187    emoji: SignsEmoji
188    sign_num: SignNumbers
189
190
191class RelationshipScoreAspectModel(SubscriptableBaseModel):
192    p1_name: str
193    p2_name: str
194    aspect: str
195    orbit: float
196
197
198class RelationshipScoreModel(SubscriptableBaseModel):
199    score_value: int
200    score_description: RelationshipScoreDescription
201    is_destiny_sign: bool
202    aspects: list[RelationshipScoreAspectModel]
203    subjects: list[AstrologicalSubjectModel]
204
205
206class CompositeSubjectModel(SubscriptableBaseModel):
207    """
208    Pydantic Model for Composite Subject
209    """
210
211    # Data
212    name: str
213    first_subject: AstrologicalSubjectModel
214    second_subject: AstrologicalSubjectModel
215    composite_chart_type: str
216
217    zodiac_type: ZodiacType
218    sidereal_mode: Union[SiderealMode, None]
219    houses_system_identifier: HousesSystemIdentifier
220    houses_system_name: str
221    perspective_type: PerspectiveType
222
223    # Planets
224    sun: KerykeionPointModel
225    moon: KerykeionPointModel
226    mercury: KerykeionPointModel
227    venus: KerykeionPointModel
228    mars: KerykeionPointModel
229    jupiter: KerykeionPointModel
230    saturn: KerykeionPointModel
231    uranus: KerykeionPointModel
232    neptune: KerykeionPointModel
233    pluto: KerykeionPointModel
234
235    # Axes
236    ascendant: KerykeionPointModel
237    descendant: KerykeionPointModel
238    medium_coeli: KerykeionPointModel
239    imum_coeli: KerykeionPointModel
240
241    # Optional Planets:
242    chiron: Union[KerykeionPointModel, None]
243    mean_lilith: Union[KerykeionPointModel, None]
244
245    # Houses
246    first_house: KerykeionPointModel
247    second_house: KerykeionPointModel
248    third_house: KerykeionPointModel
249    fourth_house: KerykeionPointModel
250    fifth_house: KerykeionPointModel
251    sixth_house: KerykeionPointModel
252    seventh_house: KerykeionPointModel
253    eighth_house: KerykeionPointModel
254    ninth_house: KerykeionPointModel
255    tenth_house: KerykeionPointModel
256    eleventh_house: KerykeionPointModel
257    twelfth_house: KerykeionPointModel
258
259    # Nodes
260    mean_node: KerykeionPointModel
261    true_node: KerykeionPointModel
262    mean_south_node: KerykeionPointModel
263    true_south_node: KerykeionPointModel
264
265    planets_names_list: list[Planet]
266    """Ordered list of available planets names"""
267
268    axial_cusps_names_list: list[AxialCusps]
269    """Ordered list of available axes names"""
270
271    houses_names_list: list[Houses]
272    """Ordered list of houses names"""
273
274    lunar_phase: LunarPhaseModel
275    """Lunar phase model"""
276
277
278class ActiveAspect(TypedDict):
279    name: AspectName
280    orb: int
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_abs_pos: float
174    p2_name: str
175    p2_abs_pos: float
176    aspect: str
177    orbit: float
178    aspect_degrees: int
179    diff: float
180    p1: int
181    p2: int

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

p1_name: str
p1_abs_pos: float
p2_name: 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):
184class ZodiacSignModel(SubscriptableBaseModel):
185    sign: Sign
186    quality: Quality
187    element: Element
188    emoji: SignsEmoji
189    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):
192class RelationshipScoreAspectModel(SubscriptableBaseModel):
193    p1_name: str
194    p2_name: str
195    aspect: str
196    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):
199class RelationshipScoreModel(SubscriptableBaseModel):
200    score_value: int
201    score_description: RelationshipScoreDescription
202    is_destiny_sign: bool
203    aspects: list[RelationshipScoreAspectModel]
204    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):
207class CompositeSubjectModel(SubscriptableBaseModel):
208    """
209    Pydantic Model for Composite Subject
210    """
211
212    # Data
213    name: str
214    first_subject: AstrologicalSubjectModel
215    second_subject: AstrologicalSubjectModel
216    composite_chart_type: str
217
218    zodiac_type: ZodiacType
219    sidereal_mode: Union[SiderealMode, None]
220    houses_system_identifier: HousesSystemIdentifier
221    houses_system_name: str
222    perspective_type: PerspectiveType
223
224    # Planets
225    sun: KerykeionPointModel
226    moon: KerykeionPointModel
227    mercury: KerykeionPointModel
228    venus: KerykeionPointModel
229    mars: KerykeionPointModel
230    jupiter: KerykeionPointModel
231    saturn: KerykeionPointModel
232    uranus: KerykeionPointModel
233    neptune: KerykeionPointModel
234    pluto: KerykeionPointModel
235
236    # Axes
237    ascendant: KerykeionPointModel
238    descendant: KerykeionPointModel
239    medium_coeli: KerykeionPointModel
240    imum_coeli: KerykeionPointModel
241
242    # Optional Planets:
243    chiron: Union[KerykeionPointModel, None]
244    mean_lilith: Union[KerykeionPointModel, None]
245
246    # Houses
247    first_house: KerykeionPointModel
248    second_house: KerykeionPointModel
249    third_house: KerykeionPointModel
250    fourth_house: KerykeionPointModel
251    fifth_house: KerykeionPointModel
252    sixth_house: KerykeionPointModel
253    seventh_house: KerykeionPointModel
254    eighth_house: KerykeionPointModel
255    ninth_house: KerykeionPointModel
256    tenth_house: KerykeionPointModel
257    eleventh_house: KerykeionPointModel
258    twelfth_house: KerykeionPointModel
259
260    # Nodes
261    mean_node: KerykeionPointModel
262    true_node: KerykeionPointModel
263    mean_south_node: KerykeionPointModel
264    true_south_node: KerykeionPointModel
265
266    planets_names_list: list[Planet]
267    """Ordered list of available planets names"""
268
269    axial_cusps_names_list: list[AxialCusps]
270    """Ordered list of available axes names"""
271
272    houses_names_list: list[Houses]
273    """Ordered list of houses names"""
274
275    lunar_phase: LunarPhaseModel
276    """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):
279class ActiveAspect(TypedDict):
280    name: AspectName
281    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