python-hebrewdate 0.9__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.
- hebrewdate/__init__.py +29 -0
- hebrewdate/hebrewdate.py +542 -0
- hebrewdate/hebrewholiday.py +433 -0
- hebrewdate/torahschedule.py +490 -0
- python_hebrewdate-0.9.dist-info/METADATA +12 -0
- python_hebrewdate-0.9.dist-info/RECORD +9 -0
- python_hebrewdate-0.9.dist-info/WHEEL +5 -0
- python_hebrewdate-0.9.dist-info/licenses/LICENSE +674 -0
- python_hebrewdate-0.9.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,433 @@
|
|
|
1
|
+
from enum import IntEnum
|
|
2
|
+
|
|
3
|
+
from date import Weekday
|
|
4
|
+
from hebrewdate import HebrewDate, HebrewMonth
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class HebrewHolidayId(IntEnum):
|
|
8
|
+
NONE = 0
|
|
9
|
+
PESACH = 1
|
|
10
|
+
PESACH_VII = 3
|
|
11
|
+
YOM_HASHOAH = 5
|
|
12
|
+
YOM_HAZIKARON = 6
|
|
13
|
+
YOM_HAATZMAUT = 7
|
|
14
|
+
PESACH_SHENI = 8
|
|
15
|
+
LAG_BOMER = 9
|
|
16
|
+
YOM_YERUSHALAYIM = 10
|
|
17
|
+
SHAVUOT = 11
|
|
18
|
+
FAST_OF_TAMMUZ = 13
|
|
19
|
+
FAST_OF_AV = 14
|
|
20
|
+
TU_BAV = 15
|
|
21
|
+
ROSH_HASHANA = 16
|
|
22
|
+
ROSH_HASHANA_II = 17
|
|
23
|
+
TZOM_GEDALIAH = 18
|
|
24
|
+
YOM_KIPPUR = 19
|
|
25
|
+
SUKKOT = 20
|
|
26
|
+
HOSHANA_RABA = 22
|
|
27
|
+
SHEMINI_ATZERET = 23
|
|
28
|
+
SIMCHAT_TORAH = 24
|
|
29
|
+
SIMCHAT_TORAH_SHEMINI_ATZERETH = 25
|
|
30
|
+
CHANUKKA_I = 26
|
|
31
|
+
CHANUKKA_II = 27
|
|
32
|
+
CHANUKKA_III = 28
|
|
33
|
+
CHANUKKA_IV = 29
|
|
34
|
+
CHANUKKA_V = 30
|
|
35
|
+
CHANUKKA_VI = 31
|
|
36
|
+
CHANUKKA_VII = 32
|
|
37
|
+
CHANUKKA_VIII = 33
|
|
38
|
+
FAST_OF_TEVET = 34
|
|
39
|
+
TU_BSHEVAT = 35
|
|
40
|
+
FAST_OF_ESTHER = 36
|
|
41
|
+
PURIM = 37
|
|
42
|
+
SHUSHAN_PURIM = 38
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class DiasporaHolidayId(IntEnum):
|
|
46
|
+
PESACH_II = 2
|
|
47
|
+
SUKKOT_II = 21
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class HebrewSecondYomTovId(IntEnum):
|
|
51
|
+
PESACH_VIII = 4
|
|
52
|
+
SHAVUOT_II = 12
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class HebrewHoliday:
|
|
56
|
+
def __init__(self, hebrewDate):
|
|
57
|
+
year = hebrewDate.year
|
|
58
|
+
month = hebrewDate.month
|
|
59
|
+
day = hebrewDate.day
|
|
60
|
+
|
|
61
|
+
self.hebrewDate = hebrewDate
|
|
62
|
+
self.id = HebrewHolidayId.NONE
|
|
63
|
+
|
|
64
|
+
if month == HebrewMonth.NISAN:
|
|
65
|
+
if day == 15:
|
|
66
|
+
self.id = HebrewHolidayId.PESACH
|
|
67
|
+
elif day == 21:
|
|
68
|
+
self.id = HebrewHolidayId.PESACH_VII
|
|
69
|
+
else:
|
|
70
|
+
# 27 Nisan can only ever fall on Sun/Tue/Thu/Fri.
|
|
71
|
+
# Friday -> advance to Thursday (26); Sunday -> postpone to Monday (28);
|
|
72
|
+
# Tue/Thu -> observed on the 27th itself.
|
|
73
|
+
testDate = HebrewDate(year, HebrewMonth.NISAN, 27)
|
|
74
|
+
if testDate.dayofweek == Weekday.FRIDAY:
|
|
75
|
+
if day == 26:
|
|
76
|
+
self.id = HebrewHolidayId.YOM_HASHOAH
|
|
77
|
+
elif year >= 5757 and testDate.dayofweek == Weekday.SUNDAY:
|
|
78
|
+
if day == 28:
|
|
79
|
+
self.id = HebrewHolidayId.YOM_HASHOAH
|
|
80
|
+
elif day == 27:
|
|
81
|
+
self.id = HebrewHolidayId.YOM_HASHOAH
|
|
82
|
+
|
|
83
|
+
if month == HebrewMonth.IYAR:
|
|
84
|
+
# 4 Iyar can only ever fall on Sun/Tue/Thu/Fri.
|
|
85
|
+
# Tuesday-Wednesday: normative, no shift (4/5 Iyar).
|
|
86
|
+
# Thursday-Friday: advance one day to avoid running into Shabbat (3/4 Iyar).
|
|
87
|
+
# Friday-Saturday: advance two days (2/3 Iyar).
|
|
88
|
+
# Sunday-Monday (since 5764): postpone one day to avoid Motzei-Shabbat
|
|
89
|
+
# preparations (5/6 Iyar); before the reform, observed 4/5 Iyar as normal.
|
|
90
|
+
nominal4 = HebrewDate(year, HebrewMonth.IYAR, 4).dayofweek
|
|
91
|
+
if nominal4 == Weekday.THURSDAY:
|
|
92
|
+
zikaronDay, atzmautDay = 3, 4
|
|
93
|
+
elif nominal4 == Weekday.FRIDAY:
|
|
94
|
+
zikaronDay, atzmautDay = 2, 3
|
|
95
|
+
elif nominal4 == Weekday.SUNDAY and year >= 5764:
|
|
96
|
+
zikaronDay, atzmautDay = 5, 6
|
|
97
|
+
else:
|
|
98
|
+
zikaronDay, atzmautDay = 4, 5
|
|
99
|
+
|
|
100
|
+
if day == zikaronDay:
|
|
101
|
+
self.id = HebrewHolidayId.YOM_HAZIKARON
|
|
102
|
+
elif day == atzmautDay:
|
|
103
|
+
self.id = HebrewHolidayId.YOM_HAATZMAUT
|
|
104
|
+
|
|
105
|
+
if day == 14:
|
|
106
|
+
self.id = HebrewHolidayId.PESACH_SHENI
|
|
107
|
+
elif day == 18:
|
|
108
|
+
self.id = HebrewHolidayId.LAG_BOMER
|
|
109
|
+
elif day == 28:
|
|
110
|
+
self.id = HebrewHolidayId.YOM_YERUSHALAYIM
|
|
111
|
+
|
|
112
|
+
if month == HebrewMonth.SIVAN:
|
|
113
|
+
if day == 6:
|
|
114
|
+
self.id = HebrewHolidayId.SHAVUOT
|
|
115
|
+
|
|
116
|
+
if month == HebrewMonth.TAMMUZ:
|
|
117
|
+
# 17 Tammuz never falls on Friday, but can fall on Shabbat; postpone to Sunday.
|
|
118
|
+
fastDate = HebrewDate(year, HebrewMonth.TAMMUZ, 17)
|
|
119
|
+
if fastDate.dayofweek == Weekday.SATURDAY:
|
|
120
|
+
if day == 18:
|
|
121
|
+
self.id = HebrewHolidayId.FAST_OF_TAMMUZ
|
|
122
|
+
elif day == 17:
|
|
123
|
+
self.id = HebrewHolidayId.FAST_OF_TAMMUZ
|
|
124
|
+
|
|
125
|
+
if month == HebrewMonth.AV:
|
|
126
|
+
# 9 Av never falls on Friday, but can fall on Shabbat; postpone to Sunday.
|
|
127
|
+
fastDate = HebrewDate(year, HebrewMonth.AV, 9)
|
|
128
|
+
if fastDate.dayofweek == Weekday.SATURDAY:
|
|
129
|
+
if day == 10:
|
|
130
|
+
self.id = HebrewHolidayId.FAST_OF_AV
|
|
131
|
+
elif day == 9:
|
|
132
|
+
self.id = HebrewHolidayId.FAST_OF_AV
|
|
133
|
+
if day == 15:
|
|
134
|
+
self.id = HebrewHolidayId.TU_BAV
|
|
135
|
+
|
|
136
|
+
if month == HebrewMonth.TISHREI:
|
|
137
|
+
if day == 1:
|
|
138
|
+
self.id = HebrewHolidayId.ROSH_HASHANA
|
|
139
|
+
elif day == 2:
|
|
140
|
+
self.id = HebrewHolidayId.ROSH_HASHANA_II
|
|
141
|
+
else:
|
|
142
|
+
# 3 Tishrei never falls on Friday, but can fall on Shabbat; postpone to Sunday.
|
|
143
|
+
tzomDate = HebrewDate(year, HebrewMonth.TISHREI, 3)
|
|
144
|
+
if tzomDate.dayofweek == Weekday.SATURDAY:
|
|
145
|
+
if day == 4:
|
|
146
|
+
self.id = HebrewHolidayId.TZOM_GEDALIAH
|
|
147
|
+
elif day == 3:
|
|
148
|
+
self.id = HebrewHolidayId.TZOM_GEDALIAH
|
|
149
|
+
|
|
150
|
+
if day == 10:
|
|
151
|
+
self.id = HebrewHolidayId.YOM_KIPPUR
|
|
152
|
+
elif day == 15:
|
|
153
|
+
self.id = HebrewHolidayId.SUKKOT
|
|
154
|
+
elif day == 21:
|
|
155
|
+
self.id = HebrewHolidayId.HOSHANA_RABA
|
|
156
|
+
elif day == 22:
|
|
157
|
+
self.id = HebrewHolidayId.SIMCHAT_TORAH_SHEMINI_ATZERETH
|
|
158
|
+
|
|
159
|
+
if month in (HebrewMonth.KISLEV, HebrewMonth.TEVET):
|
|
160
|
+
if month == HebrewMonth.KISLEV and day >= 25:
|
|
161
|
+
self.id = HebrewHolidayId(HebrewHolidayId.CHANUKKA_I + (day - 25))
|
|
162
|
+
|
|
163
|
+
if month == HebrewMonth.TEVET:
|
|
164
|
+
if day == 10:
|
|
165
|
+
self.id = HebrewHolidayId.FAST_OF_TEVET
|
|
166
|
+
kislevDays = HebrewDate.numdaysinmonth(year, HebrewMonth.KISLEV)
|
|
167
|
+
if kislevDays == 29 and day <= 3:
|
|
168
|
+
self.id = HebrewHolidayId(HebrewHolidayId.CHANUKKA_I + (4 + day))
|
|
169
|
+
if kislevDays == 30 and day <= 2:
|
|
170
|
+
self.id = HebrewHolidayId(HebrewHolidayId.CHANUKKA_I + (5 + day))
|
|
171
|
+
|
|
172
|
+
if month == HebrewMonth.SHEVAT and day == 15:
|
|
173
|
+
self.id = HebrewHolidayId.TU_BSHEVAT
|
|
174
|
+
|
|
175
|
+
monthEsther = HebrewDate.numMonthInYear(year)
|
|
176
|
+
if month == monthEsther:
|
|
177
|
+
# 13 Adar never falls on Friday, but can fall on Shabbat; advance to Thursday.
|
|
178
|
+
fastDate = HebrewDate(year, monthEsther, 13)
|
|
179
|
+
if fastDate.dayofweek == Weekday.SATURDAY:
|
|
180
|
+
if day == 11:
|
|
181
|
+
self.id = HebrewHolidayId.FAST_OF_ESTHER
|
|
182
|
+
elif day == 13:
|
|
183
|
+
self.id = HebrewHolidayId.FAST_OF_ESTHER
|
|
184
|
+
if day == 14:
|
|
185
|
+
self.id = HebrewHolidayId.PURIM
|
|
186
|
+
elif day == 15:
|
|
187
|
+
self.id = HebrewHolidayId.SHUSHAN_PURIM
|
|
188
|
+
|
|
189
|
+
@property
|
|
190
|
+
def is_shabbat(self):
|
|
191
|
+
return self.hebrewDate.dayofweek == 7
|
|
192
|
+
|
|
193
|
+
@property
|
|
194
|
+
def is_rest_day(self):
|
|
195
|
+
if self.hebrewDate.dayofweek == 7:
|
|
196
|
+
return True
|
|
197
|
+
return self.id in (
|
|
198
|
+
HebrewHolidayId.ROSH_HASHANA,
|
|
199
|
+
HebrewHolidayId.ROSH_HASHANA_II,
|
|
200
|
+
HebrewHolidayId.YOM_KIPPUR,
|
|
201
|
+
HebrewHolidayId.SUKKOT,
|
|
202
|
+
HebrewHolidayId.PESACH,
|
|
203
|
+
HebrewHolidayId.PESACH_VII,
|
|
204
|
+
HebrewHolidayId.SHAVUOT,
|
|
205
|
+
HebrewHolidayId.SIMCHAT_TORAH_SHEMINI_ATZERETH,
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
@property
|
|
209
|
+
def is_festive(self):
|
|
210
|
+
return self.id in (
|
|
211
|
+
HebrewHolidayId.PURIM,
|
|
212
|
+
HebrewHolidayId.SHUSHAN_PURIM,
|
|
213
|
+
HebrewHolidayId.LAG_BOMER,
|
|
214
|
+
HebrewHolidayId.TU_BAV,
|
|
215
|
+
HebrewHolidayId.CHANUKKA_I,
|
|
216
|
+
HebrewHolidayId.CHANUKKA_II,
|
|
217
|
+
HebrewHolidayId.CHANUKKA_III,
|
|
218
|
+
HebrewHolidayId.CHANUKKA_IV,
|
|
219
|
+
HebrewHolidayId.CHANUKKA_V,
|
|
220
|
+
HebrewHolidayId.CHANUKKA_VI,
|
|
221
|
+
HebrewHolidayId.CHANUKKA_VII,
|
|
222
|
+
HebrewHolidayId.CHANUKKA_VIII,
|
|
223
|
+
)
|
|
224
|
+
|
|
225
|
+
@property
|
|
226
|
+
def is_fast(self):
|
|
227
|
+
return self.id in (
|
|
228
|
+
HebrewHolidayId.FAST_OF_TAMMUZ,
|
|
229
|
+
HebrewHolidayId.FAST_OF_AV,
|
|
230
|
+
HebrewHolidayId.TZOM_GEDALIAH,
|
|
231
|
+
HebrewHolidayId.FAST_OF_TEVET,
|
|
232
|
+
HebrewHolidayId.FAST_OF_ESTHER,
|
|
233
|
+
HebrewHolidayId.YOM_KIPPUR,
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
@property
|
|
237
|
+
def is_national(self):
|
|
238
|
+
return self.id in (
|
|
239
|
+
HebrewHolidayId.YOM_HASHOAH,
|
|
240
|
+
HebrewHolidayId.YOM_HAZIKARON,
|
|
241
|
+
HebrewHolidayId.YOM_HAATZMAUT,
|
|
242
|
+
HebrewHolidayId.YOM_YERUSHALAYIM,
|
|
243
|
+
)
|
|
244
|
+
|
|
245
|
+
@property
|
|
246
|
+
def moed(self):
|
|
247
|
+
month = self.hebrewDate.month
|
|
248
|
+
day = self.hebrewDate.day
|
|
249
|
+
if month == HebrewMonth.NISAN and 15 <= day <= 21:
|
|
250
|
+
return HebrewHoliday(HebrewDate(self.hebrewDate.year, HebrewMonth.NISAN, 15))
|
|
251
|
+
if month == HebrewMonth.TISHREI and 15 <= day <= 21:
|
|
252
|
+
return HebrewHoliday(HebrewDate(self.hebrewDate.year, HebrewMonth.TISHREI, 15))
|
|
253
|
+
return None
|
|
254
|
+
|
|
255
|
+
@property
|
|
256
|
+
def erev(self):
|
|
257
|
+
if HebrewHoliday(self.hebrewDate.next).id in (
|
|
258
|
+
HebrewHolidayId.PESACH,
|
|
259
|
+
HebrewHolidayId.SHAVUOT,
|
|
260
|
+
HebrewHolidayId.ROSH_HASHANA,
|
|
261
|
+
HebrewHolidayId.YOM_KIPPUR,
|
|
262
|
+
HebrewHolidayId.SUKKOT,
|
|
263
|
+
HebrewHolidayId.FAST_OF_AV,
|
|
264
|
+
HebrewHolidayId.YOM_HAZIKARON,
|
|
265
|
+
HebrewHolidayId.YOM_HAATZMAUT,
|
|
266
|
+
):
|
|
267
|
+
return HebrewHoliday(self.hebrewDate.next)
|
|
268
|
+
return None
|
|
269
|
+
|
|
270
|
+
@property
|
|
271
|
+
def diaspora(self):
|
|
272
|
+
month = self.hebrewDate.month
|
|
273
|
+
day = self.hebrewDate.day
|
|
274
|
+
|
|
275
|
+
if month == HebrewMonth.NISAN:
|
|
276
|
+
if day == 16:
|
|
277
|
+
return DiasporaHolidayId.PESACH_II
|
|
278
|
+
if day == 22:
|
|
279
|
+
return HebrewSecondYomTovId.PESACH_VIII
|
|
280
|
+
|
|
281
|
+
if month == HebrewMonth.SIVAN and day == 7:
|
|
282
|
+
return HebrewSecondYomTovId.SHAVUOT_II
|
|
283
|
+
|
|
284
|
+
if month == HebrewMonth.TISHREI and day == 16:
|
|
285
|
+
return DiasporaHolidayId.SUKKOT_II
|
|
286
|
+
|
|
287
|
+
return self.id
|
|
288
|
+
|
|
289
|
+
@property
|
|
290
|
+
def is_solemn(self):
|
|
291
|
+
return self.id in (
|
|
292
|
+
HebrewHolidayId.YOM_HASHOAH,
|
|
293
|
+
HebrewHolidayId.YOM_HAZIKARON,
|
|
294
|
+
)
|
|
295
|
+
|
|
296
|
+
def __repr__(self):
|
|
297
|
+
return f"HebrewHoliday({self.id.name})"
|
|
298
|
+
|
|
299
|
+
@staticmethod
|
|
300
|
+
def holidays(year):
|
|
301
|
+
first = HebrewDate(year, HebrewMonth.TISHREI, 1)
|
|
302
|
+
last = HebrewDate(year + 1, HebrewMonth.TISHREI, 1)
|
|
303
|
+
dates = []
|
|
304
|
+
h = first
|
|
305
|
+
while h.ordinal < last.ordinal:
|
|
306
|
+
if HebrewHoliday(h).id != HebrewHolidayId.NONE:
|
|
307
|
+
dates.append(h)
|
|
308
|
+
h = h.next
|
|
309
|
+
return dates
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
class HolidayNames:
|
|
313
|
+
NAMES_EN = [
|
|
314
|
+
"",
|
|
315
|
+
"Pesach",
|
|
316
|
+
"Pesach II",
|
|
317
|
+
"Pesach VII",
|
|
318
|
+
"Pesach VIII",
|
|
319
|
+
"Yom HaShoah",
|
|
320
|
+
"Yom HaZikaron",
|
|
321
|
+
"Yom HaAtzmaut",
|
|
322
|
+
"Pesach Sheni",
|
|
323
|
+
"Lag BaOmer",
|
|
324
|
+
"Yom Yerushalayim",
|
|
325
|
+
"Shavuot",
|
|
326
|
+
"Shavuot II",
|
|
327
|
+
"Fast of Tammuz",
|
|
328
|
+
"Fast of Av",
|
|
329
|
+
"Tu B'Av",
|
|
330
|
+
"Rosh Hashanah",
|
|
331
|
+
"Rosh Hashanah II",
|
|
332
|
+
"Fast of Gedaliah",
|
|
333
|
+
"Yom Kippur",
|
|
334
|
+
"Sukkot",
|
|
335
|
+
"Sukkot II",
|
|
336
|
+
"Hoshana Rabbah",
|
|
337
|
+
"Shemini Atzeret",
|
|
338
|
+
"Simchat Torah",
|
|
339
|
+
"Simchat Torah / Shemini Atzeret",
|
|
340
|
+
"Chanukkah I",
|
|
341
|
+
"Chanukkah II",
|
|
342
|
+
"Chanukkah III",
|
|
343
|
+
"Chanukkah IV",
|
|
344
|
+
"Chanukkah V",
|
|
345
|
+
"Chanukkah VI",
|
|
346
|
+
"Chanukkah VII",
|
|
347
|
+
"Chanukkah VIII",
|
|
348
|
+
"Fast of Tevet",
|
|
349
|
+
"Tu BiShvat",
|
|
350
|
+
"Fast of Esther",
|
|
351
|
+
"Purim",
|
|
352
|
+
"Shushan Purim",
|
|
353
|
+
]
|
|
354
|
+
NAMES_HE = [
|
|
355
|
+
"",
|
|
356
|
+
"פסח",
|
|
357
|
+
"פסח שני (גלות)",
|
|
358
|
+
"פסח שביעי",
|
|
359
|
+
"פסח שמיני (גלות)",
|
|
360
|
+
"יום השואה",
|
|
361
|
+
"יום הזיכרון",
|
|
362
|
+
"יום העצמאות",
|
|
363
|
+
"פסח שני",
|
|
364
|
+
"ל״ג בעומר",
|
|
365
|
+
"יום ירושלים",
|
|
366
|
+
"שבועות",
|
|
367
|
+
"שבועות שני (גלות)",
|
|
368
|
+
"תענית תמוז",
|
|
369
|
+
"תענית אב",
|
|
370
|
+
"ט״ו באב",
|
|
371
|
+
"ראש השנה",
|
|
372
|
+
"ראש השנה ב׳",
|
|
373
|
+
"צום גדליה",
|
|
374
|
+
"יום כיפור",
|
|
375
|
+
"סוכות",
|
|
376
|
+
"סוכות שני (גלות)",
|
|
377
|
+
"הושענא רבה",
|
|
378
|
+
"שמיני עצרת",
|
|
379
|
+
"שמחת תורה",
|
|
380
|
+
"שמחת תורה / שמיני עצרת",
|
|
381
|
+
"חנוכה א׳",
|
|
382
|
+
"חנוכה ב׳",
|
|
383
|
+
"חנוכה ג׳",
|
|
384
|
+
"חנוכה ד׳",
|
|
385
|
+
"חנוכה ה׳",
|
|
386
|
+
"חנוכה ו׳",
|
|
387
|
+
"חנוכה ז׳",
|
|
388
|
+
"חנוכה ח׳",
|
|
389
|
+
"תענית טבת",
|
|
390
|
+
"ט״ו בשבט",
|
|
391
|
+
"תענית אסתר",
|
|
392
|
+
"פורים",
|
|
393
|
+
"שושן פורים",
|
|
394
|
+
]
|
|
395
|
+
|
|
396
|
+
def __init__(self, lang, id):
|
|
397
|
+
self.lang = lang
|
|
398
|
+
self.id = id
|
|
399
|
+
|
|
400
|
+
def name(self):
|
|
401
|
+
if self.lang == 'en':
|
|
402
|
+
return self.NAMES_EN[self.id]
|
|
403
|
+
return self.NAMES_HE[self.id]
|
|
404
|
+
|
|
405
|
+
|
|
406
|
+
if __name__ == "__main__":
|
|
407
|
+
import time as _systime
|
|
408
|
+
from date import Date
|
|
409
|
+
|
|
410
|
+
now = _systime.localtime()
|
|
411
|
+
today = Date(now.tm_year, now.tm_mon, now.tm_mday)
|
|
412
|
+
hToday = HebrewDate.fromdate(today)
|
|
413
|
+
|
|
414
|
+
year = hToday.year
|
|
415
|
+
|
|
416
|
+
yearStart = HebrewDate(year, HebrewMonth.TISHREI, 1)
|
|
417
|
+
yearEnd = HebrewDate(year + 1, HebrewMonth.TISHREI, 1)
|
|
418
|
+
|
|
419
|
+
print(f"Holidays in Hebrew year {year}")
|
|
420
|
+
print()
|
|
421
|
+
|
|
422
|
+
hDate = yearStart
|
|
423
|
+
while hDate.ordinal < yearEnd.ordinal:
|
|
424
|
+
holiday = HebrewHoliday(hDate)
|
|
425
|
+
diasporaId = holiday.diaspora
|
|
426
|
+
if holiday.id != HebrewHolidayId.NONE or diasporaId != holiday.id:
|
|
427
|
+
gDate = Date.fromordinal(hDate.ordinal)
|
|
428
|
+
localName = HolidayNames('en', holiday.id).name() if holiday.id != HebrewHolidayId.NONE else ""
|
|
429
|
+
line = f"{gDate.year}-{gDate.month:02d}-{gDate.day:02d} {localName}"
|
|
430
|
+
if diasporaId != holiday.id:
|
|
431
|
+
line += f"{HolidayNames('en', diasporaId).name()} (diaspora)"
|
|
432
|
+
print(line)
|
|
433
|
+
hDate = hDate.next
|