pandas-market-calendars 4.3.3__py3-none-any.whl → 4.6.0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. pandas_market_calendars/__init__.py +39 -38
  2. pandas_market_calendars/calendar_registry.py +57 -53
  3. pandas_market_calendars/calendar_utils.py +1200 -261
  4. pandas_market_calendars/calendars/asx.py +66 -66
  5. pandas_market_calendars/calendars/bmf.py +223 -206
  6. pandas_market_calendars/calendars/bse.py +421 -407
  7. pandas_market_calendars/calendars/cboe.py +145 -145
  8. pandas_market_calendars/calendars/cme.py +405 -402
  9. pandas_market_calendars/calendars/cme_globex_agriculture.py +172 -126
  10. pandas_market_calendars/calendars/cme_globex_base.py +119 -119
  11. pandas_market_calendars/calendars/cme_globex_crypto.py +160 -160
  12. pandas_market_calendars/calendars/cme_globex_energy_and_metals.py +216 -216
  13. pandas_market_calendars/calendars/cme_globex_equities.py +123 -123
  14. pandas_market_calendars/calendars/cme_globex_fixed_income.py +136 -136
  15. pandas_market_calendars/calendars/cme_globex_fx.py +101 -101
  16. pandas_market_calendars/calendars/eurex.py +131 -139
  17. pandas_market_calendars/calendars/eurex_fixed_income.py +98 -98
  18. pandas_market_calendars/calendars/hkex.py +429 -426
  19. pandas_market_calendars/calendars/ice.py +81 -81
  20. pandas_market_calendars/calendars/iex.py +151 -112
  21. pandas_market_calendars/calendars/jpx.py +113 -109
  22. pandas_market_calendars/calendars/lse.py +114 -114
  23. pandas_market_calendars/calendars/mirror.py +149 -130
  24. pandas_market_calendars/calendars/nyse.py +1466 -1324
  25. pandas_market_calendars/calendars/ose.py +116 -116
  26. pandas_market_calendars/calendars/sifma.py +354 -350
  27. pandas_market_calendars/calendars/six.py +132 -132
  28. pandas_market_calendars/calendars/sse.py +311 -311
  29. pandas_market_calendars/calendars/tase.py +220 -197
  30. pandas_market_calendars/calendars/tsx.py +181 -181
  31. pandas_market_calendars/holidays/cme.py +385 -385
  32. pandas_market_calendars/holidays/cme_globex.py +214 -214
  33. pandas_market_calendars/holidays/cn.py +1476 -1455
  34. pandas_market_calendars/holidays/jp.py +401 -398
  35. pandas_market_calendars/holidays/jpx_equinox.py +1 -0
  36. pandas_market_calendars/holidays/nyse.py +1536 -1531
  37. pandas_market_calendars/holidays/oz.py +63 -63
  38. pandas_market_calendars/holidays/sifma.py +350 -338
  39. pandas_market_calendars/holidays/us.py +376 -376
  40. pandas_market_calendars/market_calendar.py +1057 -895
  41. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/METADATA +13 -9
  42. pandas_market_calendars-4.6.0.dist-info/RECORD +50 -0
  43. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/WHEEL +1 -1
  44. pandas_market_calendars-4.3.3.dist-info/RECORD +0 -50
  45. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/LICENSE +0 -0
  46. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/NOTICE +0 -0
  47. {pandas_market_calendars-4.3.3.dist-info → pandas_market_calendars-4.6.0.dist-info}/top_level.txt +0 -0
@@ -1,350 +1,354 @@
1
- from datetime import time
2
-
3
- from pandas.tseries.holiday import AbstractHolidayCalendar
4
- from pytz import timezone
5
- from itertools import chain
6
-
7
- ########################################################################################################################
8
- # SIFMA Financial Markets Calendar for US, UK, JP
9
- #
10
- # https://www.sifma.com/
11
- #
12
- # US: SIFMAUSExchangeCalendar() ['SIFMAUS', 'SIFMA_US', "Capital_Markets_US", "Financial_Markets_US", "Bond_Markets_US"]
13
- # UK: SIFMAUKExchangeCalendar() ['SIFMAUK', 'SIFMA_UK', "Capital_Markets_UK", "Financial_Markets_UK", "Bond_Markets_UK"]
14
- # JP: SIFMAJPExchangeCalendar() ['SIFMAJP', 'SIFMA_JP', "Capital_Markets_JP", "Financial_Markets_JP", "Bond_Markets_JP"]
15
- #
16
- # Trading Hours:
17
- # US: 7:00 to 17:30
18
- # UK: 8:00 to 17:00
19
- # JP: 8:30 to 18:30
20
- ########################################################################################################################
21
-
22
-
23
- from pandas_market_calendars.holidays.sifma import (
24
- # US Holidays
25
- USNewYearsDay, # Not observed if a Saturday
26
- USNewYearsEve2pmEarlyClose,
27
- MartinLutherKingJr,
28
- USPresidentsDay,
29
- GoodFridayThru2020,
30
- DayBeforeGoodFriday2pmEarlyCloseThru2020,
31
- GoodFridayAdHoc,
32
- GoodFriday2pmEarlyCloseAdHoc,
33
- DayBeforeGoodFriday2pmEarlyCloseAdHoc,
34
- DayBeforeUSMemorialDay2pmEarlyClose,
35
- USMemorialDay,
36
- USJuneteenthAfter2022,
37
- USIndependenceDay,
38
- DayBeforeUSIndependenceDay2pmEarlyClose,
39
- ThursdayBeforeUSIndependenceDay2pmEarlyClose,
40
- USLaborDay,
41
- USColumbusDay,
42
- USVeteransDay,
43
- USThanksgivingDay,
44
- DayAfterThanksgiving2pmEarlyClose,
45
- Christmas,
46
- ChristmasEve2pmEarlyClose,
47
- ChristmasEveThursday2pmEarlyClose,
48
- # UK Specific Holidays
49
- UKNewYearsDay, # Saturdays observed on Monday
50
- UKGoodFriday,
51
- UKEasterMonday,
52
- UKMayDay,
53
- UKSpringBankAdHoc, # Usually follows US Memorial Day but not always
54
- UKSummerBank,
55
- UKChristmas,
56
- UKChristmaEve,
57
- UKWeekendChristmas, # Observed Tuesday when Boxing Day is on Monday
58
- UKBoxingDay,
59
- UKWeekendBoxingDay,
60
- UKPlatinumJubilee2022,
61
- )
62
- from pandas_market_calendars.market_calendar import MarketCalendar
63
-
64
-
65
- ########################################################################################################################
66
- # SIFMA Financial Markets Calendar for US, UK, JP
67
- #
68
- # https://www.sifma.com/
69
- #
70
- # US: SIFMAUSExchangeCalendar() ['SIFMAUS', 'SIFMA_US', "Capital_Markets_US", "Financial_Markets_US", "Bond_Markets_US"]
71
- # UK: SIFMAUKExchangeCalendar() ['SIFMAUK', 'SIFMA_UK', "Capital_Markets_UK", "Financial_Markets_UK", "Bond_Markets_UK"]
72
- # JP: SIFMAJPExchangeCalendar() ['SIFMAJP', 'SIFMA_JP', "Capital_Markets_JP", "Financial_Markets_JP", "Bond_Markets_JP"]
73
- #
74
- # Trading Hours:
75
- # US: 7:00 to 17:30
76
- # UK: 8:00 to 17:00
77
- # JP: 8:30 to 18:30
78
- ########################################################################################################################
79
-
80
- # AbstractHolidayCalendar.start_date = '1998-01-01'
81
-
82
- ############################################################
83
- # US
84
- ############################################################
85
-
86
-
87
- class SIFMAUSExchangeCalendar(MarketCalendar):
88
- """
89
- Exchange calendar for SIFMA United States
90
-
91
- https://www.sifma.org/resources/general/holiday-schedule/#US
92
-
93
- """
94
-
95
- aliases = [
96
- "SIFMAUS",
97
- "SIFMA_US",
98
- "Capital_Markets_US",
99
- "Financial_Markets_US",
100
- "Bond_Markets_US",
101
- ]
102
-
103
- regular_market_times = {
104
- "market_open": ((None, time(7)),),
105
- "market_close": ((None, time(17, 30)),),
106
- }
107
-
108
- @property
109
- def name(self):
110
- return "SIFMA_US"
111
-
112
- @property
113
- def tz(self):
114
- return timezone("America/New_York")
115
-
116
- @property
117
- def regular_holidays(self):
118
- return AbstractHolidayCalendar(
119
- rules=[
120
- USNewYearsDay,
121
- MartinLutherKingJr,
122
- USPresidentsDay,
123
- GoodFridayThru2020,
124
- USMemorialDay,
125
- USJuneteenthAfter2022,
126
- USIndependenceDay,
127
- USLaborDay,
128
- USColumbusDay,
129
- USVeteransDay,
130
- USThanksgivingDay,
131
- Christmas,
132
- ]
133
- )
134
-
135
- @property
136
- def adhoc_holidays(self):
137
- return list(
138
- chain(
139
- GoodFridayAdHoc,
140
- )
141
- )
142
-
143
- @property
144
- def special_closes(self):
145
- return [
146
- (
147
- time(14),
148
- AbstractHolidayCalendar(
149
- rules=[
150
- DayBeforeGoodFriday2pmEarlyCloseThru2020,
151
- DayBeforeUSMemorialDay2pmEarlyClose,
152
- DayBeforeUSIndependenceDay2pmEarlyClose,
153
- ThursdayBeforeUSIndependenceDay2pmEarlyClose,
154
- DayAfterThanksgiving2pmEarlyClose,
155
- ChristmasEve2pmEarlyClose,
156
- ChristmasEveThursday2pmEarlyClose,
157
- USNewYearsEve2pmEarlyClose,
158
- ]
159
- ),
160
- )
161
- ]
162
-
163
- @property
164
- def special_closes_adhoc(self):
165
- return [
166
- (
167
- time(14, tzinfo=timezone("America/New_York")),
168
- GoodFriday2pmEarlyCloseAdHoc # list
169
- + DayBeforeGoodFriday2pmEarlyCloseAdHoc,
170
- ),
171
- ]
172
-
173
-
174
- ############################################################
175
- # UK
176
- ############################################################
177
-
178
-
179
- class SIFMAUKExchangeCalendar(MarketCalendar):
180
- """
181
- Exchange calendar for SIFMA United Kingdom
182
-
183
- https://www.sifma.org/resources/general/holiday-schedule/#UK
184
-
185
- """
186
-
187
- aliases = [
188
- "SIFMAUK",
189
- "SIFMA_UK",
190
- "Capital_Markets_UK",
191
- "Financial_Markets_UK",
192
- "Bond_Markets_UK",
193
- ]
194
-
195
- regular_market_times = {
196
- "market_open": ((None, time(8)),),
197
- "market_close": ((None, time(17)),),
198
- }
199
-
200
- @property
201
- def name(self):
202
- return "SIFMA_UK"
203
-
204
- @property
205
- def tz(self):
206
- return timezone("Europe/London")
207
-
208
- @property
209
- def regular_holidays(self):
210
- return AbstractHolidayCalendar(
211
- rules=[
212
- UKNewYearsDay,
213
- MartinLutherKingJr,
214
- USPresidentsDay,
215
- UKGoodFriday,
216
- UKEasterMonday,
217
- UKMayDay,
218
- USMemorialDay,
219
- USJuneteenthAfter2022,
220
- USIndependenceDay,
221
- UKSummerBank,
222
- USLaborDay,
223
- USColumbusDay,
224
- USVeteransDay,
225
- USThanksgivingDay,
226
- UKChristmas,
227
- UKChristmaEve,
228
- UKWeekendChristmas,
229
- UKBoxingDay,
230
- UKWeekendBoxingDay,
231
- ]
232
- )
233
-
234
- @property
235
- def adhoc_holidays(self):
236
- return list(
237
- chain(
238
- UKSpringBankAdHoc,
239
- UKPlatinumJubilee2022,
240
- )
241
- )
242
-
243
-
244
- ############################################################
245
- # Japan
246
- ############################################################
247
- from pandas_market_calendars.holidays.jp import (
248
- JapanComingOfAgeDay,
249
- JapanNationalFoundationDay,
250
- JapanEmperorsBirthday,
251
- JapanVernalEquinox,
252
- JapanShowaDay,
253
- JapanConstitutionMemorialDay,
254
- JapanGreeneryDay,
255
- JapanChildrensDay,
256
- JapanMarineDay,
257
- JapanMountainDay,
258
- JapanRespectForTheAgedDay,
259
- JapanAutumnalEquinox,
260
- JapanHealthAndSportsDay2000To2019,
261
- JapanSportsDay2020,
262
- JapanSportsDay,
263
- JapanCultureDay,
264
- JapanLaborThanksgivingDay,
265
- )
266
-
267
-
268
- class SIFMAJPExchangeCalendar(MarketCalendar):
269
- """
270
- Exchange calendar for SIFMA Japan
271
-
272
- https://www.sifma.org/resources/general/holiday-schedule/#JP
273
-
274
- """
275
-
276
- aliases = [
277
- "SIFMAJP",
278
- "SIFMA_JP",
279
- "Capital_Markets_JP",
280
- "Financial_Markets_JP",
281
- "Bond_Markets_JP",
282
- ]
283
-
284
- regular_market_times = {
285
- "market_open": ((None, time(8, 30)),),
286
- "market_close": ((None, time(18, 30)),),
287
- }
288
-
289
- @property
290
- def name(self):
291
- return "SIFMA_JP"
292
-
293
- @property
294
- def tz(self):
295
- return timezone("Asia/Tokyo")
296
-
297
- @property
298
- def regular_holidays(self):
299
- return AbstractHolidayCalendar(
300
- rules=[
301
- UKNewYearsDay,
302
- JapanComingOfAgeDay,
303
- MartinLutherKingJr,
304
- JapanNationalFoundationDay,
305
- USPresidentsDay,
306
- JapanEmperorsBirthday,
307
- JapanVernalEquinox,
308
- UKGoodFriday,
309
- UKEasterMonday,
310
- JapanShowaDay,
311
- JapanConstitutionMemorialDay,
312
- JapanGreeneryDay,
313
- JapanChildrensDay,
314
- USMemorialDay,
315
- USJuneteenthAfter2022,
316
- USIndependenceDay,
317
- JapanMarineDay,
318
- JapanMountainDay,
319
- UKSummerBank,
320
- USLaborDay,
321
- JapanRespectForTheAgedDay,
322
- JapanAutumnalEquinox,
323
- JapanSportsDay,
324
- JapanSportsDay2020,
325
- JapanHealthAndSportsDay2000To2019,
326
- JapanCultureDay,
327
- USVeteransDay,
328
- JapanLaborThanksgivingDay,
329
- USThanksgivingDay,
330
- UKChristmas,
331
- UKChristmaEve,
332
- UKBoxingDay,
333
- UKWeekendBoxingDay,
334
- ]
335
- )
336
-
337
- @property
338
- def adhoc_holidays(self):
339
- return list(
340
- chain(
341
- UKSpringBankAdHoc,
342
- UKPlatinumJubilee2022,
343
- )
344
- )
345
-
346
- @property
347
- def special_closes(self):
348
- return [
349
- (time(15), AbstractHolidayCalendar(rules=[UKMayDay, UKWeekendChristmas]))
350
- ]
1
+ from datetime import time
2
+
3
+ from pandas.tseries.holiday import AbstractHolidayCalendar
4
+ from pytz import timezone
5
+ from itertools import chain
6
+
7
+ ########################################################################################################################
8
+ # SIFMA Financial Markets Calendar for US, UK, JP
9
+ #
10
+ # https://www.sifma.com/
11
+ #
12
+ # US: SIFMAUSExchangeCalendar() ['SIFMAUS', 'SIFMA_US', "Capital_Markets_US", "Financial_Markets_US", "Bond_Markets_US"]
13
+ # UK: SIFMAUKExchangeCalendar() ['SIFMAUK', 'SIFMA_UK', "Capital_Markets_UK", "Financial_Markets_UK", "Bond_Markets_UK"]
14
+ # JP: SIFMAJPExchangeCalendar() ['SIFMAJP', 'SIFMA_JP', "Capital_Markets_JP", "Financial_Markets_JP", "Bond_Markets_JP"]
15
+ #
16
+ # Trading Hours:
17
+ # US: 7:00 to 17:30
18
+ # UK: 8:00 to 17:00
19
+ # JP: 8:30 to 18:30
20
+ ########################################################################################################################
21
+
22
+
23
+ from pandas_market_calendars.holidays.sifma import (
24
+ # US Holidays
25
+ USNewYearsDay, # Not observed if a Saturday
26
+ USNewYearsEve2pmEarlyClose,
27
+ MartinLutherKingJr,
28
+ USPresidentsDay,
29
+ GoodFridayThru2020,
30
+ DayBeforeGoodFriday2pmEarlyCloseThru2020,
31
+ GoodFridayAdHoc,
32
+ GoodFriday2pmEarlyCloseAdHoc,
33
+ DayBeforeGoodFriday2pmEarlyCloseAdHoc,
34
+ DayBeforeUSMemorialDay2pmEarlyClose,
35
+ USMemorialDay,
36
+ USJuneteenthAfter2022,
37
+ USIndependenceDay,
38
+ DayBeforeUSIndependenceDay2pmEarlyClose,
39
+ ThursdayBeforeUSIndependenceDay2pmEarlyClose,
40
+ USLaborDay,
41
+ USColumbusDay,
42
+ USVeteransDay2022,
43
+ USVeteransDay,
44
+ USThanksgivingDay,
45
+ DayAfterThanksgiving2pmEarlyClose,
46
+ Christmas,
47
+ ChristmasEve2pmEarlyClose,
48
+ ChristmasEveThursday2pmEarlyClose,
49
+ # UK Specific Holidays
50
+ UKNewYearsDay, # Saturdays observed on Monday
51
+ UKGoodFriday,
52
+ UKEasterMonday,
53
+ UKMayDay,
54
+ UKSpringBankAdHoc, # Usually follows US Memorial Day but not always
55
+ UKSummerBank,
56
+ UKChristmas,
57
+ UKChristmaEve,
58
+ UKWeekendChristmas, # Observed Tuesday when Boxing Day is on Monday
59
+ UKBoxingDay,
60
+ UKWeekendBoxingDay,
61
+ UKPlatinumJubilee2022,
62
+ )
63
+ from pandas_market_calendars.market_calendar import MarketCalendar
64
+
65
+
66
+ ########################################################################################################################
67
+ # SIFMA Financial Markets Calendar for US, UK, JP
68
+ #
69
+ # https://www.sifma.com/
70
+ #
71
+ # US: SIFMAUSExchangeCalendar() ['SIFMAUS', 'SIFMA_US', "Capital_Markets_US", "Financial_Markets_US", "Bond_Markets_US"]
72
+ # UK: SIFMAUKExchangeCalendar() ['SIFMAUK', 'SIFMA_UK', "Capital_Markets_UK", "Financial_Markets_UK", "Bond_Markets_UK"]
73
+ # JP: SIFMAJPExchangeCalendar() ['SIFMAJP', 'SIFMA_JP', "Capital_Markets_JP", "Financial_Markets_JP", "Bond_Markets_JP"]
74
+ #
75
+ # Trading Hours:
76
+ # US: 7:00 to 17:30
77
+ # UK: 8:00 to 17:00
78
+ # JP: 8:30 to 18:30
79
+ ########################################################################################################################
80
+
81
+ # AbstractHolidayCalendar.start_date = '1998-01-01'
82
+
83
+ ############################################################
84
+ # US
85
+ ############################################################
86
+
87
+
88
+ class SIFMAUSExchangeCalendar(MarketCalendar):
89
+ """
90
+ Exchange calendar for SIFMA United States
91
+
92
+ https://www.sifma.org/resources/general/holiday-schedule/#US
93
+
94
+ """
95
+
96
+ aliases = [
97
+ "SIFMAUS",
98
+ "SIFMA_US",
99
+ "Capital_Markets_US",
100
+ "Financial_Markets_US",
101
+ "Bond_Markets_US",
102
+ ]
103
+
104
+ regular_market_times = {
105
+ "market_open": ((None, time(7)),),
106
+ "market_close": ((None, time(17, 30)),),
107
+ }
108
+
109
+ @property
110
+ def name(self):
111
+ return "SIFMA_US"
112
+
113
+ @property
114
+ def tz(self):
115
+ return timezone("America/New_York")
116
+
117
+ @property
118
+ def regular_holidays(self):
119
+ return AbstractHolidayCalendar(
120
+ rules=[
121
+ USNewYearsDay,
122
+ MartinLutherKingJr,
123
+ USPresidentsDay,
124
+ GoodFridayThru2020,
125
+ USMemorialDay,
126
+ USJuneteenthAfter2022,
127
+ USIndependenceDay,
128
+ USLaborDay,
129
+ USColumbusDay,
130
+ USVeteransDay2022,
131
+ USVeteransDay,
132
+ USThanksgivingDay,
133
+ Christmas,
134
+ ]
135
+ )
136
+
137
+ @property
138
+ def adhoc_holidays(self):
139
+ return list(
140
+ chain(
141
+ GoodFridayAdHoc,
142
+ )
143
+ )
144
+
145
+ @property
146
+ def special_closes(self):
147
+ return [
148
+ (
149
+ time(14),
150
+ AbstractHolidayCalendar(
151
+ rules=[
152
+ DayBeforeGoodFriday2pmEarlyCloseThru2020,
153
+ DayBeforeUSMemorialDay2pmEarlyClose,
154
+ DayBeforeUSIndependenceDay2pmEarlyClose,
155
+ ThursdayBeforeUSIndependenceDay2pmEarlyClose,
156
+ DayAfterThanksgiving2pmEarlyClose,
157
+ ChristmasEve2pmEarlyClose,
158
+ ChristmasEveThursday2pmEarlyClose,
159
+ USNewYearsEve2pmEarlyClose,
160
+ ]
161
+ ),
162
+ )
163
+ ]
164
+
165
+ @property
166
+ def special_closes_adhoc(self):
167
+ return [
168
+ (
169
+ time(14, tzinfo=timezone("America/New_York")),
170
+ GoodFriday2pmEarlyCloseAdHoc # list
171
+ + DayBeforeGoodFriday2pmEarlyCloseAdHoc,
172
+ ),
173
+ ]
174
+
175
+
176
+ ############################################################
177
+ # UK
178
+ ############################################################
179
+
180
+
181
+ class SIFMAUKExchangeCalendar(MarketCalendar):
182
+ """
183
+ Exchange calendar for SIFMA United Kingdom
184
+
185
+ https://www.sifma.org/resources/general/holiday-schedule/#UK
186
+
187
+ """
188
+
189
+ aliases = [
190
+ "SIFMAUK",
191
+ "SIFMA_UK",
192
+ "Capital_Markets_UK",
193
+ "Financial_Markets_UK",
194
+ "Bond_Markets_UK",
195
+ ]
196
+
197
+ regular_market_times = {
198
+ "market_open": ((None, time(8)),),
199
+ "market_close": ((None, time(17)),),
200
+ }
201
+
202
+ @property
203
+ def name(self):
204
+ return "SIFMA_UK"
205
+
206
+ @property
207
+ def tz(self):
208
+ return timezone("Europe/London")
209
+
210
+ @property
211
+ def regular_holidays(self):
212
+ return AbstractHolidayCalendar(
213
+ rules=[
214
+ UKNewYearsDay,
215
+ MartinLutherKingJr,
216
+ USPresidentsDay,
217
+ UKGoodFriday,
218
+ UKEasterMonday,
219
+ UKMayDay,
220
+ USMemorialDay,
221
+ USJuneteenthAfter2022,
222
+ USIndependenceDay,
223
+ UKSummerBank,
224
+ USLaborDay,
225
+ USColumbusDay,
226
+ USVeteransDay2022,
227
+ USVeteransDay,
228
+ USThanksgivingDay,
229
+ UKChristmas,
230
+ UKChristmaEve,
231
+ UKWeekendChristmas,
232
+ UKBoxingDay,
233
+ UKWeekendBoxingDay,
234
+ ]
235
+ )
236
+
237
+ @property
238
+ def adhoc_holidays(self):
239
+ return list(
240
+ chain(
241
+ UKSpringBankAdHoc,
242
+ UKPlatinumJubilee2022,
243
+ )
244
+ )
245
+
246
+
247
+ ############################################################
248
+ # Japan
249
+ ############################################################
250
+ from pandas_market_calendars.holidays.jp import (
251
+ JapanComingOfAgeDay,
252
+ JapanNationalFoundationDay,
253
+ JapanEmperorsBirthday,
254
+ JapanVernalEquinox,
255
+ JapanShowaDay,
256
+ JapanConstitutionMemorialDay,
257
+ JapanGreeneryDay,
258
+ JapanChildrensDay,
259
+ JapanMarineDay,
260
+ JapanMountainDay,
261
+ JapanRespectForTheAgedDay,
262
+ JapanAutumnalEquinox,
263
+ JapanHealthAndSportsDay2000To2019,
264
+ JapanSportsDay2020,
265
+ JapanSportsDay,
266
+ JapanCultureDay,
267
+ JapanLaborThanksgivingDay,
268
+ )
269
+
270
+
271
+ class SIFMAJPExchangeCalendar(MarketCalendar):
272
+ """
273
+ Exchange calendar for SIFMA Japan
274
+
275
+ https://www.sifma.org/resources/general/holiday-schedule/#JP
276
+
277
+ """
278
+
279
+ aliases = [
280
+ "SIFMAJP",
281
+ "SIFMA_JP",
282
+ "Capital_Markets_JP",
283
+ "Financial_Markets_JP",
284
+ "Bond_Markets_JP",
285
+ ]
286
+
287
+ regular_market_times = {
288
+ "market_open": ((None, time(8, 30)),),
289
+ "market_close": ((None, time(18, 30)),),
290
+ }
291
+
292
+ @property
293
+ def name(self):
294
+ return "SIFMA_JP"
295
+
296
+ @property
297
+ def tz(self):
298
+ return timezone("Asia/Tokyo")
299
+
300
+ @property
301
+ def regular_holidays(self):
302
+ return AbstractHolidayCalendar(
303
+ rules=[
304
+ UKNewYearsDay,
305
+ JapanComingOfAgeDay,
306
+ MartinLutherKingJr,
307
+ JapanNationalFoundationDay,
308
+ USPresidentsDay,
309
+ JapanEmperorsBirthday,
310
+ JapanVernalEquinox,
311
+ UKGoodFriday,
312
+ UKEasterMonday,
313
+ JapanShowaDay,
314
+ JapanConstitutionMemorialDay,
315
+ JapanGreeneryDay,
316
+ JapanChildrensDay,
317
+ USMemorialDay,
318
+ USJuneteenthAfter2022,
319
+ USIndependenceDay,
320
+ JapanMarineDay,
321
+ JapanMountainDay,
322
+ UKSummerBank,
323
+ USLaborDay,
324
+ JapanRespectForTheAgedDay,
325
+ JapanAutumnalEquinox,
326
+ JapanSportsDay,
327
+ JapanSportsDay2020,
328
+ JapanHealthAndSportsDay2000To2019,
329
+ JapanCultureDay,
330
+ USVeteransDay2022,
331
+ USVeteransDay,
332
+ JapanLaborThanksgivingDay,
333
+ USThanksgivingDay,
334
+ UKChristmas,
335
+ UKChristmaEve,
336
+ UKBoxingDay,
337
+ UKWeekendBoxingDay,
338
+ ]
339
+ )
340
+
341
+ @property
342
+ def adhoc_holidays(self):
343
+ return list(
344
+ chain(
345
+ UKSpringBankAdHoc,
346
+ UKPlatinumJubilee2022,
347
+ )
348
+ )
349
+
350
+ @property
351
+ def special_closes(self):
352
+ return [
353
+ (time(15), AbstractHolidayCalendar(rules=[UKMayDay, UKWeekendChristmas]))
354
+ ]