Skip to content

Commit eca5f11

Browse files
committed
0.9.6
1 parent 0843d76 commit eca5f11

4 files changed

Lines changed: 46 additions & 32 deletions

File tree

‎CHANGES‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
Version 0.9.6
2+
=============
3+
4+
Released August 1, 2018
5+
6+
- Added India (Shaurya Uppal)
7+
- Fixed Canadian holidays (Canada / Dominion Day)
8+
- Fixed German holidays (Buß- und Bettag, Ostern, Pfingsten)
9+
110
Version 0.9.5
211
=============
312

‎README.rst‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -99,11 +99,12 @@ France FRA **Métropole** (default), Alsace-Moselle, Guadeloup
9999
Martinique, Mayotte, Nouvelle-Calédonie, La Réunion,
100100
Polynésie Française, Saint-Barthélémy, Saint-Martin,
101101
Wallis-et-Futuna
102-
Germany DE BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST,
103-
SH, TH
102+
Germany DE prov = BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN,
103+
ST, SH, TH
104104
Hungary HU None
105-
India IND AS, SK, CG, KA, GJ, BR, RJ, OD, TN, AP, WB, KL, HR, MH, MP, UP, UK, TN
106-
Ireland IE
105+
India IND prov = AS, SK, CG, KA, GJ, BR, RJ, OD, TN, AP, WB, KL, HR,
106+
MH, MP, UP, UK, TN
107+
Ireland IE None
107108
Isle of Man None
108109
Italy IT prov = MI, RM
109110
Japan JP None

‎holidays.py‎

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from dateutil.relativedelta import MO, TU, WE, TH, FR, SA, SU
1919
import six
2020

21-
__version__ = '0.9.5'
21+
__version__ = '0.9.6'
2222

2323

2424
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY = range(7)
@@ -452,14 +452,22 @@ def _populate(self, year):
452452

453453
# Canada Day / Memorial Day (NL)
454454
if self.prov != 'NL' and year >= 1867:
455-
name = "Canada Day"
455+
if year >= 1983:
456+
name = "Canada Day"
457+
else:
458+
name = "Dominion Day"
456459
self[date(year, 7, 1)] = name
457-
if self.observed and date(year, 7, 1).weekday() in (5, 6):
460+
if year >= 1879 and self.observed \
461+
and date(year, 7, 1).weekday() in (5, 6):
458462
self[date(year, 7, 1) + rd(weekday=MO)] = name + " (Observed)"
459463
elif year >= 1867:
460-
name = "Memorial Day"
464+
if year >= 1983:
465+
name = "Memorial Day"
466+
else:
467+
name = "Dominion Day"
461468
self[date(year, 7, 1)] = name
462-
if self.observed and date(year, 7, 1).weekday() in (5, 6):
469+
if year >= 1879 and self.observed \
470+
and date(year, 7, 1).weekday() in (5, 6):
463471
self[date(year, 7, 1) + rd(weekday=MO)] = name + " (Observed)"
464472

465473
# Nunavut Day
@@ -1707,23 +1715,21 @@ def _populate(self, year):
17071715

17081716
self[easter(year) - rd(days=2)] = 'Karfreitag'
17091717

1710-
if self.prov == 'BB':
1711-
# will always be a Sunday and we have no "observed" rule so
1712-
# this is pretty pointless but it's nonetheless an official
1713-
# holiday by law
1714-
self[easter(year)] = 'Ostern'
1718+
# will always be a Sunday and we have no "observed" rule so
1719+
# this is pretty pointless but it's nonetheless an official
1720+
# holiday by law
1721+
self[easter(year)] = 'Ostern'
17151722

17161723
self[easter(year) + rd(days=1)] = 'Ostermontag'
17171724

17181725
self[date(year, 5, 1)] = 'Maifeiertag'
17191726

17201727
self[easter(year) + rd(days=39)] = 'Christi Himmelfahrt'
17211728

1722-
if self.prov == 'BB':
1723-
# will always be a Sunday and we have no "observed" rule so
1724-
# this is pretty pointless but it's nonetheless an official
1725-
# holiday by law
1726-
self[easter(year) + rd(days=49)] = 'Pfingsten'
1729+
# will always be a Sunday and we have no "observed" rule so
1730+
# this is pretty pointless but it's nonetheless an official
1731+
# holiday by law
1732+
self[easter(year) + rd(days=49)] = 'Pfingsten'
17271733

17281734
self[easter(year) + rd(days=50)] = 'Pfingstmontag'
17291735

@@ -1746,7 +1752,7 @@ def _populate(self, year):
17461752
if self.prov in ('BW', 'BY', 'NW', 'RP', 'SL'):
17471753
self[date(year, 11, 1)] = 'Allerheiligen'
17481754

1749-
if self.prov == 'SN':
1755+
if (year >= 1990 and year <= 1994) or self.prov == 'SN':
17501756
# can be calculated as "last wednesday before year-11-23" which is
17511757
# why we need to go back two wednesdays if year-11-23 happens to be
17521758
# a wednesday

‎tests.py‎

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,8 @@ def test_add(self):
169169
self.assertIn("2015-02-16", a)
170170
na = holidays.CA() + holidays.US() + holidays.MX()
171171
self.assertIn(date(1969, 12, 25), na)
172-
self.assertEqual(na.get(date(1969, 7, 1)), "Canada Day")
172+
self.assertEqual(na.get(date(1969, 7, 1)), "Dominion Day")
173+
self.assertEqual(na.get(date(1983, 7, 1)), "Canada Day")
173174
self.assertEqual(na.get(date(1969, 12, 25)),
174175
"Christmas Day, Navidad [Christmas]")
175176
na = holidays.MX() + holidays.CA() + holidays.US()
@@ -204,7 +205,7 @@ def test_get_list(self):
204205
self.assertIn(date(1969, 12, 25), na)
205206
self.assertEqual(na.get_list(date(1969, 12, 25)),
206207
["Christmas Day", "Navidad [Christmas]"])
207-
self.assertEqual(na.get_list(date(1969, 7, 1)), ["Canada Day"])
208+
self.assertEqual(na.get_list(date(1969, 7, 1)), ["Dominion Day"])
208209
self.assertEqual(na.get_list(date(1969, 1, 3)), [])
209210

210211
def test_radd(self):
@@ -333,6 +334,11 @@ def test_observed(self):
333334
self.holidays = holidays.US(years=[2022], observed=False)
334335
self.assertNotIn(date(2021, 12, 31), self.holidays.keys())
335336

337+
self.holidays = holidays.CA(observed=False)
338+
self.assertNotIn(date(1878, 7, 3), self.holidays)
339+
self.holidays.observed = True
340+
self.assertIn(date(2018, 7, 2), self.holidays)
341+
336342

337343
class TestKeyTransforms(unittest.TestCase):
338344

@@ -2457,13 +2463,9 @@ def test_ostern(self):
24572463
(2017, 4, 16), (2018, 4, 1), (2019, 4, 21),
24582464
(2020, 4, 12), (2021, 4, 4), (2022, 4, 17),
24592465
(2023, 4, 9), (2024, 3, 31)]
2460-
provinces_that_have = {'BB'}
2461-
provinces_that_dont = set(holidays.DE.PROVINCES) - provinces_that_have
24622466

2463-
for province, (y, m, d) in product(provinces_that_have, known_good):
2467+
for province, (y, m, d) in product(holidays.DE.PROVINCES, known_good):
24642468
self.assertIn(date(y, m, d), self.prov_hols[province])
2465-
for province, (y, m, d) in product(provinces_that_dont, known_good):
2466-
self.assertNotIn(date(y, m, d), self.prov_hols[province])
24672469

24682470
def test_ostermontag(self):
24692471
known_good = [(2014, 4, 21), (2015, 4, 6), (2016, 3, 28),
@@ -2488,13 +2490,9 @@ def test_pfingsten(self):
24882490
(2017, 6, 4), (2018, 5, 20), (2019, 6, 9),
24892491
(2020, 5, 31), (2021, 5, 23), (2022, 6, 5),
24902492
(2023, 5, 28), (2024, 5, 19)]
2491-
provinces_that_have = {'BB'}
2492-
provinces_that_dont = set(holidays.DE.PROVINCES) - provinces_that_have
24932493

2494-
for province, (y, m, d) in product(provinces_that_have, known_good):
2494+
for province, (y, m, d) in product(holidays.DE.PROVINCES, known_good):
24952495
self.assertIn(date(y, m, d), self.prov_hols[province])
2496-
for province, (y, m, d) in product(provinces_that_dont, known_good):
2497-
self.assertNotIn(date(y, m, d), self.prov_hols[province])
24982496

24992497
def test_pfingstmontag(self):
25002498
known_good = [(2014, 6, 9), (2015, 5, 25), (2016, 5, 16),

0 commit comments

Comments
 (0)