libaditya 0.2.0__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.
libaditya/__init__.py ADDED
@@ -0,0 +1,15 @@
1
+ import swisseph as swe
2
+ from dataclasses import replace
3
+
4
+ from libaditya.objects import *
5
+ from libaditya.calc import *
6
+ from libaditya.charts import *
7
+ from libaditya.hd import *
8
+ from libaditya import constants as const
9
+ from libaditya import utils
10
+ from libaditya import read
11
+ from libaditya import print_functions as printf
12
+
13
+ base_path = os.path.dirname(os.path.realpath(__file__))
14
+
15
+ swe.set_ephe_path(base_path + "/ephe/")
libaditya/constants.py ADDED
@@ -0,0 +1,509 @@
1
+ # This file is part of pyphemeris.
2
+ #
3
+ # Copyright (c) 2025 Josh Harper <humanhaven@substack.com>
4
+ #
5
+ # pyphemeris is free software: you can redistribute it and/or modify
6
+ # it under the terms of the GNU Affero General Public License as published by
7
+ # the Free Software Foundation, either version 3 of the License, or
8
+ # (at your option) any later version.
9
+ #
10
+ # pyphemeris is distributed in the hope that it will be useful,
11
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ # GNU Affero General Public License for more details.
14
+ #
15
+ # You should have received a copy of the GNU Affero General Public License
16
+ # along with pyphemeris. If not, see <https://www.gnu.org/licenses/>.
17
+
18
+ import swisseph as swe
19
+
20
+ import os
21
+
22
+ from libaditya import utils
23
+
24
+ base_path = os.path.dirname(os.path.realpath(__file__))
25
+
26
+ ECL = swe.FLG_TROPICAL
27
+ TROP = swe.FLG_TROPICAL
28
+ EQU = swe.FLG_EQUATORIAL
29
+ HELIO = swe.FLG_HELCTR
30
+ BARY = swe.FLG_BARYCTR
31
+ SID = swe.FLG_SIDEREAL
32
+ TOPO = swe.FLG_TOPOCTR
33
+ DRAC = -8
34
+
35
+
36
+ def sysflgstr(sflg):
37
+ if sflg == swe.FLG_TROPICAL:
38
+ return "Tropical"
39
+ if sflg == swe.FLG_EQUATORIAL:
40
+ return "Equatorial"
41
+ if sflg == swe.FLG_HELCTR:
42
+ return "Heliocentric"
43
+ if sflg == swe.FLG_BARYCTR:
44
+ return "Barycentric"
45
+ if sflg == swe.FLG_SIDEREAL:
46
+ return "Sidereal"
47
+ if sflg == swe.FLG_TOPOCTR:
48
+ return "Topocentric"
49
+ if sflg == (swe.FLG_SIDEREAL | swe.FLG_TOPOCTR):
50
+ return "Sidereal Topocentric"
51
+ if sflg == DRAC:
52
+ return "Draconic"
53
+
54
+
55
+ def ayanamsa_name(ayanamsa):
56
+ if ayanamsa == -1:
57
+ return "Tropical"
58
+ if ayanamsa == 98:
59
+ return "Dhruva GC mid-Mula Equatorial"
60
+ if ayanamsa == 99:
61
+ return "Eclitpic Vedanga Jyotisha"
62
+ if ayanamsa == 100:
63
+ return "Equatorial Vedanga Jyotisha"
64
+ swe.set_sid_mode(ayanamsa)
65
+ return swe.get_ayanamsa_name(ayanamsa)
66
+
67
+ def circle_name(circle) -> str:
68
+ from libaditya.objects import Circle
69
+ if circle == Circle.ADITYA:
70
+ return "Aditya Circle"
71
+ if circle == Circle.ZODIAC:
72
+ return "Zodiac Circle"
73
+
74
+
75
+ # constant constants
76
+
77
+ lords = {
78
+ 1: "Mars",
79
+ 2: "Venus",
80
+ 3: "Mercury",
81
+ 4: "Moon",
82
+ 5: "Sun",
83
+ 6: "Mercury",
84
+ 7: "Venus",
85
+ 8: "Mars",
86
+ 9: "Jupiter",
87
+ 10: "Saturn",
88
+ 11: "Saturn",
89
+ 12: "Jupiter"
90
+ }
91
+
92
+ rashi_aspects = {
93
+ "quadrant": {
94
+ 1: (2,5,8),
95
+ 2: (7,10,1),
96
+ 3: (6,9,12),
97
+ 4: (5,8,11),
98
+ 5: (10,1,4),
99
+ 6: (9,12,3),
100
+ 7: (8,11,2),
101
+ 8: (1,4,7),
102
+ 9: (12,3,6),
103
+ 10: (11,2,5),
104
+ 11: (4,7,10),
105
+ 12: (3,6,9)
106
+ },
107
+
108
+ "element": {
109
+ 1: (2,8,11),
110
+ 2: (7,4,1),
111
+ 3: (6,9,12),
112
+ 4: (5,2,11),
113
+ 5: (7,10,4),
114
+ 6: (9,12,3),
115
+ 7: (8,11,5),
116
+ 8: (1,10,7),
117
+ 9: (12,3,6),
118
+ 10: (11,2,8),
119
+ 11: (4,1,10),
120
+ 12: (3,6,9)
121
+ },
122
+
123
+ "conventional": {
124
+ 1: (5,8,11),
125
+ 2: (4,7,10),
126
+ 3: (6,9,12),
127
+ 4: (8,11,2),
128
+ 5: (7,10,1),
129
+ 6: (9,12,3),
130
+ 7: (11,2,5),
131
+ 8: (10,1,4),
132
+ 9: (12,3,6),
133
+ 10: (2,5,8),
134
+ 11: (1,4,7),
135
+ 12: (3,6,9)
136
+ }
137
+ }
138
+
139
+ karaka_glyphs = ["⨀","☾","♂","☿","♃","♀","♄"]
140
+ grahas_glyphs = ["⨀","☾","♂","☿","♃","♀","♄","☊","☋"]
141
+
142
+ glyphs = {
143
+ "Sun": "⨀",
144
+ "Moon": "☾",
145
+ "ercury": "☿",
146
+ "Venus": "♀",
147
+ "Mars": "♂",
148
+ "Jupiter": "♃",
149
+ "Saturn": "♄",
150
+ "Uranus": "⛢",
151
+ "Neptune": "♆",
152
+ "Pluto": "⯓",
153
+ "Rahu": "☊",
154
+ "Ketu": "☋",
155
+ "Earth": "⨁"
156
+ }
157
+
158
+ vimshottari_dashas = [("Ketu",7),("Venus",20),("Sun",6),("Moon",10),("Mars",7),("Rahu",18),("Jupiter",16),("Saturn",19),("Mercury",17)]
159
+
160
+ dasha_years = [
161
+ ("saura", 365.2422),
162
+ ("nakshatra", 359.0167),
163
+ ("savana", 360),
164
+ ("sidereal", 365.2564),
165
+ ("chandra", 364.2888),
166
+ ("lunar", 354.36708),
167
+ ]
168
+
169
+ nak = 13 + (1 / 3)
170
+ true_node = 11
171
+ rahu = 11
172
+ ketu = 10
173
+ earth = 12
174
+ calendardays = [
175
+ "Sunday",
176
+ "Monday",
177
+ "Tuesday",
178
+ "Wednesday",
179
+ "Thursday",
180
+ "Friday",
181
+ "Saturday",
182
+ ]
183
+
184
+ signglyph = ["♈︎", "♉︎", "♊︎", "♋︎", "♌︎", "♍︎", "♎︎", "♏︎", "♐︎", "♑︎", "♒︎", "♓︎"]
185
+
186
+
187
+ planet_names = [
188
+ "Sun",
189
+ "Moon",
190
+ "Mercury",
191
+ "Venus",
192
+ "Mars",
193
+ "Jupiter",
194
+ "Saturn",
195
+ "Uranus",
196
+ "Neptune",
197
+ "Pluto",
198
+ "Rahu",
199
+ "Ketu",
200
+ [],
201
+ [],
202
+ "Earth",
203
+ "Chiron",
204
+ ]
205
+
206
+ planet_names_abbreviated = [
207
+ "Su",
208
+ "Mo",
209
+ "Me",
210
+ "Ve",
211
+ "Ma",
212
+ "Ju",
213
+ "Sa",
214
+ "Ur",
215
+ "Ne",
216
+ "Pl",
217
+ "Ra",
218
+ "Ke",
219
+ [],
220
+ [],
221
+ "Ea",
222
+ "Ch",
223
+ ]
224
+
225
+ zodiac = [
226
+ "Aries",
227
+ "Taurus",
228
+ "Gemini",
229
+ "Cancer",
230
+ "Leo",
231
+ "Virgo",
232
+ "Libra",
233
+ "Scorpio",
234
+ "Sagittarius",
235
+ "Capricorn",
236
+ "Aquarius",
237
+ "Pisces",
238
+ ]
239
+ zodiac_abbreviated = [
240
+ "Ar",
241
+ "Ta",
242
+ "Ge",
243
+ "Ca",
244
+ "Le",
245
+ "Vi",
246
+ "Li",
247
+ "Sc",
248
+ "Sa",
249
+ "Ca",
250
+ "Aq",
251
+ "Pi",
252
+ ]
253
+
254
+ tithis = ["nanda", "bhadra", "jāya", "ṛkta", "pūrṇa"]
255
+
256
+ tithis_abbreviated = ["nan", "bha", "jāy", "ṛkt", "pūr"]
257
+
258
+ karanas = [
259
+ ["kiṃtughna", "bava"],
260
+ ["balava", "kaulava"],
261
+ ["taitila", "garija"],
262
+ ["vaṇija", "viṣṭi"],
263
+ ["bava", "balava"],
264
+ ["kaulava", "taitila"],
265
+ ["garija", "vaṇija"],
266
+ ["viṣṭi", "bava"],
267
+ ["balava", "kaulava"],
268
+ ["taitila", "garija"],
269
+ ["vaṇija", "viṣṭi"],
270
+ ["bava", "balava"],
271
+ ["kaulava", "taitila"],
272
+ ["garija", "vaṇija"],
273
+ ["viṣṭi", "bava"],
274
+ ["balava", "kaulava"],
275
+ ["taitila", "garija"],
276
+ ["vaṇija", "viṣṭi"],
277
+ ["bava", "balava"],
278
+ ["kaulava", "taitila"],
279
+ ["garija", "vaṇija"],
280
+ ["viṣṭi", "bava"],
281
+ ["balava", "kaulava"],
282
+ ["taitila", "garija"],
283
+ ["vaṇija", "viṣṭi"],
284
+ ["bava", "balava"],
285
+ ["kaulava", "taitila"],
286
+ ["garija", "vaṇija"],
287
+ ["viṣṭi", "śakuni"],
288
+ ["catuṣpada", "nāga"],
289
+ ]
290
+
291
+ karanas_abbreviated = [
292
+ ["kiṃ", "bav"],
293
+ ["bal", "kau"],
294
+ ["tai", "gar"],
295
+ ["vaṇ", "viṣ"],
296
+ ["bav", "bal"],
297
+ ["kau", "tai"],
298
+ ["gar", "vaṇ"],
299
+ ["viṣ", "bav"],
300
+ ["bal", "kau"],
301
+ ["tai", "gar"],
302
+ ["vaṇ", "viṣ"],
303
+ ["bav", "bal"],
304
+ ["kau", "tai"],
305
+ ["gar", "vaṇ"],
306
+ ["viṣ", "bav"],
307
+ ["bal", "kau"],
308
+ ["tai", "gar"],
309
+ ["vaṇ", "viṣ"],
310
+ ["bav", "bal"],
311
+ ["kau", "tai"],
312
+ ["gar", "vaṇ"],
313
+ ["viṣ", "bav"],
314
+ ["bal", "kau"],
315
+ ["tai", "gar"],
316
+ ["vaṇ", "viṣ"],
317
+ ["bav", "bal"],
318
+ ["kau", "tai"],
319
+ ["gar", "vaṇ"],
320
+ ["viṣ", "śak"],
321
+ ["cat", "nāg"],
322
+ ]
323
+
324
+ nakshatras = [
325
+ "aśvinī",
326
+ "bharaṇī",
327
+ "kṛttikā",
328
+ "rohiṇī",
329
+ "mṛgaśīrṣa",
330
+ "ārdrā",
331
+ "punarvasu",
332
+ "puṣya",
333
+ "āśleṣā",
334
+ "maghā",
335
+ "pūrvā phalgunī",
336
+ "uttarā phalgunī",
337
+ "hasta",
338
+ "citrā",
339
+ "svāti",
340
+ "viśākhā",
341
+ "anurādhā",
342
+ "jyeṣṭhā",
343
+ "mūla",
344
+ "pūrvāṣāḍhā",
345
+ "uttarāṣāḍhā",
346
+ "śravaṇa",
347
+ "dhaniṣṭhā",
348
+ "śatabhiṣa",
349
+ "pūrvabhādrapadā",
350
+ "uttarabhādrapadā",
351
+ "revatī",
352
+ ]
353
+
354
+ nakshatras_abbreviated = [
355
+ "aśv",
356
+ "bha",
357
+ "kṛt",
358
+ "roh",
359
+ "mṛg",
360
+ "ārd",
361
+ "pun",
362
+ "puṣ",
363
+ "āśl",
364
+ "mag",
365
+ "pph",
366
+ "uph",
367
+ "has",
368
+ "cit",
369
+ "svā",
370
+ "viś",
371
+ "anu",
372
+ "jye",
373
+ "mūl",
374
+ "pāṣ",
375
+ "uāṣ",
376
+ "śra",
377
+ "dha",
378
+ "śat",
379
+ "pdā",
380
+ "udā",
381
+ "rev",
382
+ ]
383
+
384
+ varas = [
385
+ "ravivāra",
386
+ "somavāra",
387
+ "maṅgalavāra",
388
+ "budhavāra",
389
+ "guruvāra",
390
+ "śukravāra",
391
+ "śanivāra",
392
+ ]
393
+
394
+ varas_abbreviated = [
395
+ "rav",
396
+ "som",
397
+ "maṅ",
398
+ "bud",
399
+ "gur",
400
+ "śuk",
401
+ "śan",
402
+ ]
403
+
404
+ yogas = [
405
+ "viṣkambha",
406
+ "prīti",
407
+ "āyuṣmān",
408
+ "saubhāgya",
409
+ "śobhana",
410
+ "atigaṇḍa",
411
+ "sukarma",
412
+ "dhṛti",
413
+ "śula",
414
+ "gaṇḍa",
415
+ "vṛddhi",
416
+ "dhruva",
417
+ "vyāghāta",
418
+ "harṣaṇa",
419
+ "vajra",
420
+ "siddhi",
421
+ "vyātipata",
422
+ "varīyas",
423
+ "parighā",
424
+ "śiva",
425
+ "siddha",
426
+ "sādhya",
427
+ "śubha",
428
+ "śukla",
429
+ "brahmā",
430
+ "indra",
431
+ "vaidhṛti",
432
+ ]
433
+
434
+ yogas_abbreviated = [
435
+ "viṣ",
436
+ "prī",
437
+ "āyu",
438
+ "sau",
439
+ "śob",
440
+ "ati",
441
+ "suk",
442
+ "dhṛ",
443
+ "śul",
444
+ "gaṇ",
445
+ "vṛd",
446
+ "dhr",
447
+ "vyā",
448
+ "har",
449
+ "vaj",
450
+ "sid",
451
+ "vyā",
452
+ "var",
453
+ "par",
454
+ "śiv",
455
+ "sid",
456
+ "sād",
457
+ "śub",
458
+ "śuk",
459
+ "bra",
460
+ "ind",
461
+ "vai",
462
+ ]
463
+
464
+ adityas = [
465
+ "dhātā",
466
+ "aryamā",
467
+ "mitra",
468
+ "varuṇa",
469
+ "indra",
470
+ "vivasvān",
471
+ "tvaṣṭā",
472
+ "viṣṇu",
473
+ "aṃśu",
474
+ "bhaga",
475
+ "pūṣā",
476
+ "parjanya",
477
+ ]
478
+
479
+ adityas_abbreviated = [
480
+ "dhā",
481
+ "ary",
482
+ "mit",
483
+ "var",
484
+ "ind",
485
+ "viv",
486
+ "tva",
487
+ "viṣ",
488
+ "aṃś",
489
+ "bha",
490
+ "pūṣ",
491
+ "par",
492
+ ]
493
+
494
+ sign_names = adityas
495
+ sign_names_abbreviated = adityas_abbreviated
496
+
497
+ names = planet_names,sign_names,nakshatras,tithis,karanas,varas,yogas
498
+ abbreviated_names = planet_names_abbreviated,sign_names_abbreviated,nakshatras_abbreviated,tithis_abbreviated,karanas_abbreviated,varas_abbreviated,yogas_abbreviated
499
+
500
+
501
+ # template comment box
502
+
503
+ ########################################################
504
+ # #
505
+ # #
506
+ # #
507
+ # #
508
+ # #
509
+ ########################################################
libaditya/legacy.py ADDED
@@ -0,0 +1,48 @@
1
+
2
+ def original_repr_Varga():
3
+ """
4
+ this is for every varga except the Rashi
5
+ the rashi is printed with nakshatras
6
+ the others are not
7
+
8
+ str prints a table with signs at the top
9
+ each object is printed under its sign
10
+ as "object in_sign_longitude"
11
+ the number of rows will be equal to the most objects that are in one sign
12
+
13
+ changed this to return mkheader(), to just see what it is, an id of sorts
14
+ """
15
+ output = PrettyTable()
16
+ # list of the sign names
17
+ output.field_names= list([sign for sign in [self.context.names.sign_names]][0])
18
+
19
+ # get the sign with the most objects, so we know how many rows to print
20
+ rows = self._signs.most_objects()
21
+
22
+ for r in range(0,rows):
23
+ # construct the row
24
+ row = []
25
+ # could also write for s in self._signs.signs().values()
26
+ # and then replace self._signs[s]._objects by s._objects
27
+ for s in self._signs.keys():
28
+ if len(self._signs[s]._objects) > r:
29
+ if not self.context.print_outer_planets and self._signs[s]._objects[r].object_type()=="Planet" and self._signs[s]._objects[r].is_outer_planet():
30
+ row.append("")
31
+ continue
32
+ if self._signs[s]._objects[r].identity() == "Sun" and self.context.sysflg == const.HELIO:
33
+ # dont print the Sun is using heliocentric coordinates
34
+ row.append("")
35
+ continue
36
+ rowstr = f"{self._signs[s]._objects[r].name()}\n{self._signs[s]._objects[r].in_sign_longitude()}\n"
37
+ # if this is a Rashi, print nakshatras, if that is specified
38
+ # unless it is barycentric or heliocentric
39
+ if isinstance(self,Rashi) and (self.context.sysflg != const.BARY and self.context.sysflg != const.HELIO):
40
+ # print nakshatras or not
41
+ if self.context.print_nakshatras:
42
+ rowstr += f"{self._signs[s]._objects[r].nakshatra_name()}\n{self._signs[s]._objects[r].nakshatra().elapsed()}\n"
43
+ row.append(rowstr)
44
+ else:
45
+ row.append("")
46
+ output.add_row(row)
47
+
48
+ ret = output.get_string(fields=list([sign for sign in [self.context.names.sign_names]][0]))