-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnumerology.py
More file actions
131 lines (97 loc) · 4.25 KB
/
numerology.py
File metadata and controls
131 lines (97 loc) · 4.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
"""Numerology category client."""
from __future__ import annotations
from astroapi.categories.base import BaseCategoryClient
from astroapi.types.requests import (
NumerologyCompatibilityRequest,
NumerologyRequest,
)
from astroapi.types.responses import GenericResponse, NumerologyResponse
from astroapi.utils.validators import validate_subject
class NumerologyClient(BaseCategoryClient):
"""Client for numerology endpoints.
Provides numerology calculations including life path, expression,
soul urge, and other core numbers.
"""
API_PREFIX = "/api/v3/numerology"
def get_analysis(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get complete numerology analysis.
Args:
request: Numerology request parameters
Returns:
Numerology analysis response
Raises:
AstrologyError: If validation fails or API request fails
"""
validate_subject(request.subject)
url = self._build_url("analysis")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_life_path_number(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get life path number.
Args:
request: Numerology request parameters
Returns:
Life path number response
Raises:
AstrologyError: If validation fails or API request fails
"""
validate_subject(request.subject)
url = self._build_url("life-path")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_expression_number(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get expression number.
Args:
request: Numerology request parameters
Returns:
Expression number response
Raises:
AstrologyError: If validation fails or API request fails
"""
validate_subject(request.subject)
url = self._build_url("expression")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_soul_urge_number(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get soul urge number.
Args:
request: Numerology request parameters
Returns:
Soul urge number response
Raises:
AstrologyError: If validation fails or API request fails
"""
validate_subject(request.subject)
url = self._build_url("soul-urge")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_personality_number(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get personality number.
Args:
request: Numerology request parameters
Returns:
Personality number response
Raises:
AstrologyError: If validation fails or API request fails
"""
validate_subject(request.subject)
url = self._build_url("personality")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_core_numbers(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get core numbers analysis."""
validate_subject(request.subject)
url = self._build_url("core-numbers")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_comprehensive(self, request: NumerologyRequest) -> NumerologyResponse:
"""Get comprehensive numerology analysis."""
validate_subject(request.subject)
url = self._build_url("comprehensive")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return NumerologyResponse(**data)
def get_compatibility(self, request: NumerologyCompatibilityRequest) -> GenericResponse:
"""Get numerology compatibility analysis."""
url = self._build_url("compatibility")
data = self._http.post(url, json=request.model_dump(exclude_none=True))
return GenericResponse(**data)