holidays 0.86__py3-none-any.whl → 0.88__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.
Files changed (69) hide show
  1. holidays/calendars/chinese.py +44 -6
  2. holidays/calendars/hindu.py +85 -1
  3. holidays/constants.py +1 -0
  4. holidays/countries/american_samoa.py +2 -0
  5. holidays/countries/bangladesh.py +13 -9
  6. holidays/countries/belarus.py +4 -2
  7. holidays/countries/brazil.py +27 -1
  8. holidays/countries/chile.py +2 -3
  9. holidays/countries/germany.py +75 -74
  10. holidays/countries/guam.py +2 -0
  11. holidays/countries/india.py +5 -3
  12. holidays/countries/macau.py +39 -45
  13. holidays/countries/malaysia.py +171 -71
  14. holidays/countries/new_zealand.py +4 -3
  15. holidays/countries/northern_mariana_islands.py +2 -0
  16. holidays/countries/puerto_rico.py +4 -2
  17. holidays/countries/sweden.py +35 -11
  18. holidays/countries/taiwan.py +6 -5
  19. holidays/countries/turks_and_caicos_islands.py +13 -3
  20. holidays/countries/united_states.py +434 -133
  21. holidays/countries/united_states_minor_outlying_islands.py +2 -0
  22. holidays/countries/united_states_virgin_islands.py +2 -0
  23. holidays/countries/uzbekistan.py +12 -1
  24. holidays/countries/venezuela.py +113 -23
  25. holidays/financial/__init__.py +1 -0
  26. holidays/financial/bombay_stock_exchange.py +33 -0
  27. holidays/financial/national_stock_exchange_of_india.py +1 -1
  28. holidays/financial/ny_stock_exchange.py +591 -89
  29. holidays/groups/chinese.py +11 -18
  30. holidays/groups/hindu.py +24 -0
  31. holidays/holiday_base.py +2 -1
  32. holidays/locale/bn/LC_MESSAGES/BD.mo +0 -0
  33. holidays/locale/de/LC_MESSAGES/DE.mo +0 -0
  34. holidays/locale/en_IN/LC_MESSAGES/XBOM.mo +0 -0
  35. holidays/locale/en_TC/LC_MESSAGES/TC.mo +0 -0
  36. holidays/locale/en_US/LC_MESSAGES/BD.mo +0 -0
  37. holidays/locale/en_US/LC_MESSAGES/BR.mo +0 -0
  38. holidays/locale/en_US/LC_MESSAGES/DE.mo +0 -0
  39. holidays/locale/en_US/LC_MESSAGES/MY.mo +0 -0
  40. holidays/locale/en_US/LC_MESSAGES/SE.mo +0 -0
  41. holidays/locale/en_US/LC_MESSAGES/TC.mo +0 -0
  42. holidays/locale/en_US/LC_MESSAGES/US.mo +0 -0
  43. holidays/locale/en_US/LC_MESSAGES/VE.mo +0 -0
  44. holidays/locale/en_US/LC_MESSAGES/XBOM.mo +0 -0
  45. holidays/locale/es/LC_MESSAGES/VE.mo +0 -0
  46. holidays/locale/gu/LC_MESSAGES/IN.mo +0 -0
  47. holidays/locale/gu/LC_MESSAGES/XBOM.mo +0 -0
  48. holidays/locale/gu/LC_MESSAGES/XNSE.mo +0 -0
  49. holidays/locale/hi/LC_MESSAGES/XBOM.mo +0 -0
  50. holidays/locale/ms_MY/LC_MESSAGES/MY.mo +0 -0
  51. holidays/locale/pt_BR/LC_MESSAGES/BR.mo +0 -0
  52. holidays/locale/sv/LC_MESSAGES/SE.mo +0 -0
  53. holidays/locale/th/LC_MESSAGES/DE.mo +0 -0
  54. holidays/locale/th/LC_MESSAGES/MY.mo +0 -0
  55. holidays/locale/th/LC_MESSAGES/SE.mo +0 -0
  56. holidays/locale/th/LC_MESSAGES/US.mo +0 -0
  57. holidays/locale/uk/LC_MESSAGES/BR.mo +0 -0
  58. holidays/locale/uk/LC_MESSAGES/DE.mo +0 -0
  59. holidays/locale/uk/LC_MESSAGES/SE.mo +0 -0
  60. holidays/locale/uk/LC_MESSAGES/VE.mo +0 -0
  61. holidays/registry.py +1 -0
  62. holidays/utils.py +62 -1
  63. holidays/version.py +3 -1
  64. {holidays-0.86.dist-info → holidays-0.88.dist-info}/METADATA +30 -16
  65. {holidays-0.86.dist-info → holidays-0.88.dist-info}/RECORD +69 -60
  66. {holidays-0.86.dist-info → holidays-0.88.dist-info}/licenses/CONTRIBUTORS +6 -0
  67. {holidays-0.86.dist-info → holidays-0.88.dist-info}/WHEEL +0 -0
  68. {holidays-0.86.dist-info → holidays-0.88.dist-info}/licenses/LICENSE +0 -0
  69. {holidays-0.86.dist-info → holidays-0.88.dist-info}/top_level.txt +0 -0
@@ -13,7 +13,6 @@
13
13
  from datetime import date
14
14
 
15
15
  from holidays.calendars.chinese import _ChineseLunisolar, CHINESE_CALENDAR
16
- from holidays.calendars.gregorian import APR
17
16
  from holidays.groups.eastern import EasternCalendarHolidays
18
17
 
19
18
 
@@ -38,12 +37,9 @@ class ChineseCalendarHolidays(EasternCalendarHolidays):
38
37
  @property
39
38
  def _qingming_festival(self):
40
39
  """
41
- Return Qingming Festival (15th day after the Spring Equinox) date.
40
+ Return Qingming Festival (5th solar term) date.
42
41
  """
43
- day = 5
44
- if (self._year % 4 < 1) or (self._year % 4 < 2 and self._year >= 2009):
45
- day = 4
46
- return date(self._year, APR, day)
42
+ return self._chinese_calendar.qingming_date(self._year)[0]
47
43
 
48
44
  @property
49
45
  def _mid_autumn_festival(self):
@@ -74,13 +70,6 @@ class ChineseCalendarHolidays(EasternCalendarHolidays):
74
70
  """
75
71
  return self._chinese_calendar.double_ninth_date(self._year)[0]
76
72
 
77
- @property
78
- def _dongzhi_festival(self):
79
- """
80
- Return Dongzhi Festival (Chinese Winter Solstice) date.
81
- """
82
- return self._chinese_calendar.winter_solstice_date(self._year)[0]
83
-
84
73
  def _add_chinese_calendar_holiday(
85
74
  self, name: str, dt_estimated: tuple[date | None, bool], days_delta: int = 0
86
75
  ) -> date | None:
@@ -199,14 +188,16 @@ class ChineseCalendarHolidays(EasternCalendarHolidays):
199
188
 
200
189
  def _add_dongzhi_festival(self, name) -> date | None:
201
190
  """
202
- Add Dongzhi Festival (Chinese Winter Solstice).
191
+ Add Dongzhi Festival (22nd solar term, Winter Solstice).
203
192
 
204
193
  The Dongzhi Festival or Winter Solstice Festival is a traditional
205
194
  Chinese festival celebrated during the Dongzhi solar term
206
195
  (winter solstice), which falls between December 21 and 23.
207
196
  https://en.wikipedia.org/wiki/Dongzhi_Festival
208
197
  """
209
- return self._add_holiday(name, self._dongzhi_festival)
198
+ return self._add_chinese_calendar_holiday(
199
+ name, self._chinese_calendar.winter_solstice_date(self._year)
200
+ )
210
201
 
211
202
  def _add_hanshi_festival(self, name) -> date | None:
212
203
  """
@@ -221,15 +212,17 @@ class ChineseCalendarHolidays(EasternCalendarHolidays):
221
212
  name, self._chinese_calendar.winter_solstice_date(self._year - 1), days_delta=+105
222
213
  )
223
214
 
224
- def _add_qingming_festival(self, name) -> date:
215
+ def _add_qingming_festival(self, name) -> date | None:
225
216
  """
226
- Add Qingming Festival (15th day after the Spring Equinox).
217
+ Add Qingming Festival (5th solar term of the Chinese lunisolar calendar).
227
218
 
228
219
  The Qingming festival or Ching Ming Festival, also known as
229
220
  Tomb-Sweeping Day in English, is a traditional Chinese festival.
230
221
  https://en.wikipedia.org/wiki/Qingming_Festival
231
222
  """
232
- return self._add_holiday(name, self._qingming_festival)
223
+ return self._add_chinese_calendar_holiday(
224
+ name, self._chinese_calendar.qingming_date(self._year)
225
+ )
233
226
 
234
227
  def _add_double_ninth_festival(self, name) -> date | None:
235
228
  """
holidays/groups/hindu.py CHANGED
@@ -59,6 +59,18 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
59
59
  days_delta=days_delta,
60
60
  )
61
61
 
62
+ def _add_bathukamma(self, name) -> date | None:
63
+ """
64
+ Add Bathukamma Festival.
65
+
66
+ Bathukamma is a floral festival celebrated predominantly in Telangana
67
+ and some parts of Andhra Pradesh. It starts on Mahalaya Amavasya.
68
+ https://en.wikipedia.org/wiki/Bathukamma
69
+ """
70
+ return self._add_hindu_calendar_holiday(
71
+ name, self._hindu_calendar.bathukamma_date(self._year)
72
+ )
73
+
62
74
  def _add_bhai_dooj(self, name) -> date | None:
63
75
  """
64
76
  Add Bhai Dooj.
@@ -301,6 +313,18 @@ class HinduCalendarHolidays(EasternCalendarHolidays):
301
313
  name, self._hindu_calendar.maha_shivaratri_date(self._year)
302
314
  )
303
315
 
316
+ def _add_maharana_pratap_jayanti(self, name) -> date | None:
317
+ """
318
+ Add Maharana Pratap Jayanti.
319
+
320
+ Maharana Pratap Jayanti celebrates the birth of the Rajput king Maharana Pratap.
321
+ It falls on the third day of the Shukla Paksha of the month of Jyeshtha.
322
+ https://en.wikipedia.org/wiki/Maharana_Pratap
323
+ """
324
+ return self._add_hindu_calendar_holiday(
325
+ name, self._hindu_calendar.maharana_pratap_jayanti_date(self._year)
326
+ )
327
+
304
328
  def _add_mahavir_jayanti(self, name) -> date | None:
305
329
  """
306
330
  Add Mahavir Jayanti.
holidays/holiday_base.py CHANGED
@@ -775,7 +775,8 @@ class HolidayBase(dict[date, str]):
775
775
  if parent_entity := self.parent_entity:
776
776
  entity_translation.add_fallback(
777
777
  translation(
778
- parent_entity.country or parent_entity.market,
778
+ getattr(parent_entity, "country", None)
779
+ or getattr(parent_entity, "market", None), # type: ignore[arg-type]
779
780
  fallback=fallback,
780
781
  languages=languages,
781
782
  localedir=locale_directory,
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
holidays/registry.py CHANGED
@@ -285,6 +285,7 @@ COUNTRIES: RegistryDict = {
285
285
  }
286
286
 
287
287
  FINANCIAL: RegistryDict = {
288
+ "bombay_stock_exchange": ("BombayStockExchange", "XBOM", "BSE"),
288
289
  "brasil_bolsa_balcao": ("BrasilBolsaBalcao", "BVMF", "B3"),
289
290
  "european_central_bank": ("EuropeanCentralBank", "XECB", "ECB", "TAR"),
290
291
  "ice_futures_europe": ("IceFuturesEurope", "IFEU", "ICEFuturesEurope"),
holidays/utils.py CHANGED
@@ -16,14 +16,17 @@ __all__ = (
16
16
  "financial_holidays",
17
17
  "list_localized_countries",
18
18
  "list_localized_financial",
19
+ "list_long_breaks",
19
20
  "list_supported_countries",
20
21
  "list_supported_financial",
21
22
  )
22
23
 
23
24
  import warnings
24
25
  from collections.abc import Iterable
26
+ from datetime import date
25
27
  from functools import cache
26
28
 
29
+ from holidays.calendars.gregorian import _timedelta
27
30
  from holidays.holiday_base import CategoryArg, HolidayBase
28
31
  from holidays.registry import EntityLoader
29
32
 
@@ -234,6 +237,7 @@ def financial_holidays(
234
237
  expand: bool = True,
235
238
  observed: bool = True,
236
239
  language: str | None = None,
240
+ categories: CategoryArg | None = None,
237
241
  ) -> HolidayBase:
238
242
  """Return a new dictionary-like [HolidayBase][holidays.holiday_base.HolidayBase] object.
239
243
 
@@ -291,6 +295,9 @@ def financial_holidays(
291
295
 
292
296
  This behavior will be updated and formalized in v1.
293
297
 
298
+ categories:
299
+ Requested holiday categories.
300
+
294
301
  Returns:
295
302
  A `HolidayBase` object matching the `market`.
296
303
 
@@ -306,7 +313,12 @@ def financial_holidays(
306
313
 
307
314
  try:
308
315
  return getattr(holidays, market)(
309
- years=years, subdiv=subdiv, expand=expand, observed=observed, language=language
316
+ years=years,
317
+ subdiv=subdiv,
318
+ expand=expand,
319
+ observed=observed,
320
+ language=language,
321
+ categories=categories,
310
322
  )
311
323
  except AttributeError:
312
324
  raise NotImplementedError(f"Financial market {market} not available")
@@ -434,3 +446,52 @@ def list_supported_financial(include_aliases: bool = True) -> dict[str, list[str
434
446
  subdivision codes.
435
447
  """
436
448
  return _list_supported_entities(EntityLoader.get_financial_codes(include_aliases))
449
+
450
+
451
+ def list_long_breaks(
452
+ instance: HolidayBase, *, minimum_break_length: int = 3, require_weekend_overlap: bool = True
453
+ ) -> list[list[date]]:
454
+ """Get consecutive holidays.
455
+
456
+ Args:
457
+ instance:
458
+ HolidayBase object containing holidays data.
459
+
460
+ minimum_break_length:
461
+ The minimum number of consecutive holidays required for a break period
462
+ to be considered a long one. Defaults to 3.
463
+
464
+ require_weekend_overlap:
465
+ Whether to include only consecutive holidays that overlap with a weekend.
466
+ Defaults to True.
467
+
468
+ Returns:
469
+ A list of consecutive holidays longer than or equal to the specified minimum length.
470
+ """
471
+ long_breaks = []
472
+ seen_dates = set()
473
+
474
+ for dt in sorted(instance.keys()):
475
+ if dt in seen_dates:
476
+ continue
477
+
478
+ previous_working_day = instance.get_nth_working_day(dt, -1)
479
+ next_working_day = instance.get_nth_working_day(dt, +1)
480
+ long_break_length = (next_working_day - previous_working_day).days - 1
481
+
482
+ if long_break_length < minimum_break_length:
483
+ continue
484
+
485
+ is_long_break = not require_weekend_overlap
486
+ long_break_dates = []
487
+ for delta_days in range(1, long_break_length + 1):
488
+ holiday = _timedelta(previous_working_day, delta_days)
489
+ if not is_long_break and instance._is_weekend(holiday):
490
+ is_long_break = True
491
+ long_break_dates.append(holiday)
492
+ seen_dates.add(holiday)
493
+
494
+ if is_long_break:
495
+ long_breaks.append(long_break_dates)
496
+
497
+ return long_breaks
holidays/version.py CHANGED
@@ -10,4 +10,6 @@
10
10
  # Website: https://github.com/vacanza/holidays
11
11
  # License: MIT (see LICENSE file)
12
12
 
13
- __version__ = "0.86"
13
+ from importlib.metadata import version
14
+
15
+ __version__ = version("holidays")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: holidays
3
- Version: 0.86
3
+ Version: 0.88
4
4
  Summary: Open World Holidays Framework
5
5
  Author: Vacanza Team
6
6
  Maintainer: Arkadii Yakovets, Panpakorn Siripanich, Serhii Murza
@@ -32,7 +32,7 @@ Requires-Python: >=3.10
32
32
  Description-Content-Type: text/markdown
33
33
  License-File: CONTRIBUTORS
34
34
  License-File: LICENSE
35
- Requires-Dist: python-dateutil
35
+ Requires-Dist: python-dateutil<3,>=2.9.0.post0
36
36
  Dynamic: license-file
37
37
 
38
38
  # Holidays
@@ -210,7 +210,7 @@ any) in brackets, available languages and additional holiday categories. All cou
210
210
  <td>AS</td>
211
211
  <td>Can also be loaded as country US, subdivision AS</td>
212
212
  <td><strong>en_US</strong>, th</td>
213
- <td>GOVERNMENT, UNOFFICIAL</td>
213
+ <td>UNOFFICIAL</td>
214
214
  </tr>
215
215
  <tr>
216
216
  <td>Andorra</td>
@@ -307,7 +307,7 @@ any) in brackets, available languages and additional holiday categories. All cou
307
307
  <td>Bangladesh</td>
308
308
  <td>BD</td>
309
309
  <td></td>
310
- <td></td>
310
+ <td><strong>bn</strong>, en_US</td>
311
311
  <td></td>
312
312
  </tr>
313
313
  <tr>
@@ -397,7 +397,7 @@ any) in brackets, available languages and additional holiday categories. All cou
397
397
  <tr>
398
398
  <td>Brazil</td>
399
399
  <td>BR</td>
400
- <td>States: AC (Acre), AL (Alagoas), AM (Amazonas), AP (Amapá), BA (Bahia), CE (Ceará), DF (Distrito Federal), ES (Espírito Santo), GO (Goiás), MA (Maranhão), MG (Minas Gerais), MS (Mato Grosso do Sul), MT (Mato Grosso), PA (Pará), PB (Paraíba), PE (Pernambuco), PI (Piauí), PR (Paraná), RJ (Rio de Janeiro), RN (Rio Grande do Norte), RO (Rondônia), RR (Roraima), RS (Rio Grande do Sul), SC (Santa Catarina), SE (Sergipe), SP (São Paulo), TO (Tocantins)</td>
400
+ <td>States: AC (Acre), AL (Alagoas), AM (Amazonas), AP (Amapá), BA (Bahia), CE (Ceará), DF (Distrito Federal), ES (Espírito Santo), GO (Goiás), MA (Maranhão), MG (Minas Gerais), MS (Mato Grosso do Sul), MT (Mato Grosso), PA (Pará), PB (Paraíba), PE (Pernambuco), PI (Piauí), PR (Paraná), RJ (Rio de Janeiro), RN (Rio Grande do Norte), RO (Rondônia), RR (Roraima), RS (Rio Grande do Sul), SC (Santa Catarina), SE (Sergipe), SP (São Paulo), TO (Tocantins); cities: São Paulo Capital</td>
401
401
  <td>en_US, <strong>pt_BR</strong>, uk</td>
402
402
  <td>OPTIONAL</td>
403
403
  </tr>
@@ -812,7 +812,7 @@ any) in brackets, available languages and additional holiday categories. All cou
812
812
  <td>GU</td>
813
813
  <td>Can also be loaded as country US, subdivision GU</td>
814
814
  <td><strong>en_US</strong>, th</td>
815
- <td>GOVERNMENT, UNOFFICIAL</td>
815
+ <td>UNOFFICIAL</td>
816
816
  </tr>
817
817
  <tr>
818
818
  <td>Guatemala</td>
@@ -895,7 +895,7 @@ any) in brackets, available languages and additional holiday categories. All cou
895
895
  <td>India</td>
896
896
  <td>IN</td>
897
897
  <td>States: AN (Andaman and Nicobar Islands), AP (Andhra Pradesh), AR (Arunachal Pradesh, Arunāchal Pradesh), AS (Assam), BR (Bihar, Bihār), CG (Chhattisgarh, Chhattīsgarh), CH (Chandigarh, Chandīgarh), DH (Dadra and Nagar Haveli and Daman and Diu, Dādra and Nagar Haveli and Damān and Diu), DL (Delhi), GA (Goa), GJ (Gujarat, Gujarāt), HP (Himachal Pradesh, Himāchal Pradesh), HR (Haryana, Haryāna), JH (Jharkhand, Jhārkhand), JK (Jammu and Kashmir, Jammu and Kashmīr), KA (Karnataka, Karnātaka), KL (Kerala), LA (Ladakh, Ladākh), LD (Lakshadweep), MH (Maharashtra, Mahārāshtra), ML (Meghalaya, Meghālaya), MN (Manipur), MP (Madhya Pradesh), MZ (Mizoram), NL (Nagaland, Nāgāland), OD (Odisha), PB (Punjab), PY (Puducherry), RJ (Rajasthan, Rājasthān), SK (Sikkim), TN (Tamil Nadu, Tamil Nādu), TR (Tripura), TS (Telangana, Telangāna), UK (Uttarakhand, Uttarākhand), UP (Uttar Pradesh), WB (West Bengal)</td>
898
- <td><strong>en_IN</strong>, en_US, hi</td>
898
+ <td><strong>en_IN</strong>, en_US, gu, hi</td>
899
899
  <td>OPTIONAL</td>
900
900
  </tr>
901
901
  <tr>
@@ -1316,7 +1316,7 @@ any) in brackets, available languages and additional holiday categories. All cou
1316
1316
  <td>MP</td>
1317
1317
  <td>Can also be loaded as country US, subdivision MP</td>
1318
1318
  <td><strong>en_US</strong>, th</td>
1319
- <td>GOVERNMENT, UNOFFICIAL</td>
1319
+ <td>UNOFFICIAL</td>
1320
1320
  </tr>
1321
1321
  <tr>
1322
1322
  <td>North Korea</td>
@@ -1428,7 +1428,7 @@ any) in brackets, available languages and additional holiday categories. All cou
1428
1428
  <td>PR</td>
1429
1429
  <td>Can also be loaded as country US, subdivision PR</td>
1430
1430
  <td><strong>en_US</strong>, th</td>
1431
- <td>GOVERNMENT, UNOFFICIAL</td>
1431
+ <td>HALF_DAY, UNOFFICIAL</td>
1432
1432
  </tr>
1433
1433
  <tr>
1434
1434
  <td>Qatar</td>
@@ -1680,7 +1680,7 @@ any) in brackets, available languages and additional holiday categories. All cou
1680
1680
  <td>SE</td>
1681
1681
  <td></td>
1682
1682
  <td>en_US, <strong>sv</strong>, th, uk</td>
1683
- <td>BANK, OPTIONAL</td>
1683
+ <td>BANK, DE_FACTO, OPTIONAL</td>
1684
1684
  </tr>
1685
1685
  <tr>
1686
1686
  <td>Switzerland</td>
@@ -1827,14 +1827,14 @@ any) in brackets, available languages and additional holiday categories. All cou
1827
1827
  <td>UM</td>
1828
1828
  <td>Can also be loaded as country US, subdivision UM</td>
1829
1829
  <td><strong>en_US</strong>, th</td>
1830
- <td>GOVERNMENT, UNOFFICIAL</td>
1830
+ <td>UNOFFICIAL</td>
1831
1831
  </tr>
1832
1832
  <tr>
1833
1833
  <td>United States of America (the)</td>
1834
1834
  <td>US</td>
1835
1835
  <td>States and territories: AK (Alaska), AL (Alabama), AR (Arkansas), AS (American Samoa), AZ (Arizona), CA (California), CO (Colorado), CT (Connecticut), DC (District of Columbia), DE (Delaware), FL (Florida), GA (Georgia), GU (Guam), HI (Hawaii), IA (Iowa), ID (Idaho), IL (Illinois), IN (Indiana), KS (Kansas), KY (Kentucky), LA (Louisiana), MA (Massachusetts), MD (Maryland), ME (Maine), MI (Michigan), MN (Minnesota), MO (Missouri), MP (Northern Mariana Islands), MS (Mississippi), MT (Montana), NC (North Carolina), ND (North Dakota), NE (Nebraska), NH (New Hampshire), NJ (New Jersey), NM (New Mexico), NV (Nevada), NY (New York), OH (Ohio), OK (Oklahoma), OR (Oregon), PA (Pennsylvania), PR (Puerto Rico), RI (Rhode Island), SC (South Carolina), SD (South Dakota), TN (Tennessee), TX (Texas), UM (United States Minor Outlying Islands), UT (Utah), VA (Virginia), VI (Virgin Islands, U.S.), VT (Vermont), WA (Washington), WI (Wisconsin), WV (West Virginia), WY (Wyoming)</td>
1836
1836
  <td><strong>en_US</strong>, th</td>
1837
- <td>GOVERNMENT, UNOFFICIAL</td>
1837
+ <td>GOVERNMENT, HALF_DAY, UNOFFICIAL</td>
1838
1838
  </tr>
1839
1839
  <tr>
1840
1840
  <td>United States Virgin Islands (the)</td>
@@ -1890,7 +1890,7 @@ any) in brackets, available languages and additional holiday categories. All cou
1890
1890
  <td>VI</td>
1891
1891
  <td>Can also be loaded as country US, subdivision VI</td>
1892
1892
  <td><strong>en_US</strong>, th</td>
1893
- <td>GOVERNMENT, UNOFFICIAL</td>
1893
+ <td>UNOFFICIAL</td>
1894
1894
  </tr>
1895
1895
  <tr>
1896
1896
  <td>Wallis and Futuna</td>
@@ -1940,8 +1940,9 @@ code when available. The following financial markets are available:
1940
1940
  <colgroup>
1941
1941
  <col style="width: 20.0%" />
1942
1942
  <col style="width: 4.0%" />
1943
- <col style="width: 65.0%" />
1944
- <col style="width: 15.0%" />
1943
+ <col style="width: 46.0%" />
1944
+ <col style="width: 20.0%" />
1945
+ <col style="width: 10.0%" />
1945
1946
  </colgroup>
1946
1947
  <thead>
1947
1948
  <tr>
@@ -1949,38 +1950,51 @@ code when available. The following financial markets are available:
1949
1950
  <th>Code</th>
1950
1951
  <th>Info</th>
1951
1952
  <th>Supported Languages</th>
1953
+ <th>Supported Categories</th>
1952
1954
  </tr>
1953
1955
  </thead>
1954
1956
  <tbody>
1955
1957
  <tr>
1958
+ <td>Bombay Stock Exchange</td>
1959
+ <td>XBOM</td>
1960
+ <td>Bombay Stock Exchange (BSE) market holidays</td>
1961
+ <td><strong>en_IN</strong>, en_US, gu, hi</td>
1962
+ <td></td>
1963
+ </tr>
1964
+ <tr>
1956
1965
  <td>Brasil, Bolsa, Balcão</td>
1957
1966
  <td>BVMF</td>
1958
1967
  <td>Brazil Stock Exchange and Over-the-Counter Market holidays (same as ANBIMA holidays)</td>
1959
1968
  <td>en_US, <strong>pt_BR</strong>, uk</td>
1969
+ <td></td>
1960
1970
  </tr>
1961
1971
  <tr>
1962
1972
  <td>European Central Bank</td>
1963
1973
  <td>XECB</td>
1964
1974
  <td>Trans-European Automated Real-time Gross Settlement (TARGET2)</td>
1965
1975
  <td></td>
1976
+ <td></td>
1966
1977
  </tr>
1967
1978
  <tr>
1968
1979
  <td>ICE Futures Europe</td>
1969
1980
  <td>IFEU</td>
1970
1981
  <td>A London-based Investment Exchange holidays</td>
1971
1982
  <td></td>
1983
+ <td></td>
1972
1984
  </tr>
1973
1985
  <tr>
1974
1986
  <td>National Stock Exchange of India</td>
1975
1987
  <td>XNSE</td>
1976
1988
  <td>National Stock Exchange of India market holidays</td>
1977
- <td><strong>en_IN</strong>, en_US, hi</td>
1989
+ <td><strong>en_IN</strong>, en_US, gu, hi</td>
1990
+ <td></td>
1978
1991
  </tr>
1979
1992
  <tr>
1980
1993
  <td>New York Stock Exchange</td>
1981
1994
  <td>XNYS</td>
1982
1995
  <td>NYSE market holidays (used by all other US-exchanges, including NASDAQ, etc.)</td>
1983
1996
  <td></td>
1997
+ <td>HALF_DAY</td>
1984
1998
  </tr>
1985
1999
  </tbody>
1986
2000
  </table>