Skip to content

Commit 905585b

Browse files
sonntagsgesichtryanss
authored andcommitted
Merge pull request vacanza#29 from sonntagsgesicht/master
Add EU TARGET holidays Squashed commit of the following: commit 57138330e33a414cd6da95649f9bdc88c3c10160 Merge: 0c92ef0 4db1602 Author: ryanss <ryanssdev@icloud.com> Date: Mon Sep 19 08:50:35 2016 -0400 Merge branch 'master' of git://github.com/sonntagsgesicht/holidays.py into sonntagsgesicht-master commit 4db1602 Author: sonntagsgesicht <j@n-philipp.de> Date: Sun Sep 18 14:32:28 2016 +0200 update .gitignore commit 2bbb556 Author: sonntagsgesicht <j@n-philipp.de> Date: Sun Sep 18 14:02:37 2016 +0200 added newline at end of file commit 0bd6bad Author: sonntagsgesicht <j@n-philipp.de> Date: Sun Sep 18 13:54:24 2016 +0200 added TARGET holidays and corresponding unittests commit dd60ef5 Author: sonntagsgesicht <j@n-philipp.de> Date: Sun Sep 18 13:30:52 2016 +0200 update .gitignore to handle PyCharm .idea
1 parent 0c92ef0 commit 905585b

3 files changed

Lines changed: 84 additions & 1 deletion

File tree

‎.gitignore‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,3 @@ MANIFEST
44
.coverage
55
*.egg-info
66
*.pyc
7-
env*/

‎holidays.py‎

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1816,3 +1816,29 @@ def _populate(self, year):
18161816

18171817
class ES(Spain):
18181818
pass
1819+
1820+
1821+
class Target(HolidayBase):
1822+
# https://en.wikipedia.org/wiki/TARGET2
1823+
# http://www.ecb.europa.eu/press/pr/date/2000/html/pr001214_4.en.html
1824+
1825+
def __init__(self, **kwargs):
1826+
self.country = 'EU'
1827+
HolidayBase.__init__(self, **kwargs)
1828+
1829+
def _populate(self, year):
1830+
self[date(year, 1, 1)] = "New Year's Day"
1831+
e = easter(year)
1832+
self[e - rd(days=2)] = "Good Friday"
1833+
self[e + rd(days=1)] = "Easter Monday"
1834+
self[date(year, 5, 1)] = "1 May (Labour Day)"
1835+
self[date(year, 12, 25)] = "Christmas Day"
1836+
self[date(year, 12, 26)] = "26 December"
1837+
1838+
1839+
class TAR(Target):
1840+
pass
1841+
1842+
1843+
class EU(Target):
1844+
pass

‎tests.py‎

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2668,5 +2668,63 @@ def test_province_specific_days(self):
26682668
prov in fest_prov)
26692669

26702670

2671+
class TestTAR(unittest.TestCase):
2672+
2673+
def setUp(self):
2674+
self.holidays = holidays.TAR()
2675+
2676+
def test_new_years(self):
2677+
for year in range(1974, 2100):
2678+
dt = date(year, 1, 1)
2679+
self.assertTrue(dt in self.holidays)
2680+
self.assertFalse(dt + relativedelta(days=-1) in self.holidays)
2681+
2682+
def test_good_friday(self):
2683+
for dt in [date(1900, 4, 13), date(1901, 4, 5), date(1902, 3, 28),
2684+
date(1999, 4, 2), date(2000, 4, 21), date(2010, 4, 2),
2685+
date(2018, 3, 30), date(2019, 4, 19), date(2020, 4, 10)]:
2686+
self.assertTrue(dt in self.holidays)
2687+
self.assertFalse(dt + relativedelta(days=-1) in self.holidays)
2688+
self.assertFalse(dt + relativedelta(days=+1) in self.holidays)
2689+
2690+
def test_easter_monday(self):
2691+
for dt in [date(1900, 4, 16), date(1901, 4, 8), date(1902, 3, 31),
2692+
date(1999, 4, 5), date(2000, 4, 24), date(2010, 4, 5),
2693+
date(2018, 4, 2), date(2019, 4, 22), date(2020, 4, 13)]:
2694+
self.assertTrue(dt in self.holidays)
2695+
self.assertFalse(dt + relativedelta(days=-1) in self.holidays)
2696+
self.assertFalse(dt + relativedelta(days=+1) in self.holidays)
2697+
2698+
def test_labour_day(self):
2699+
for year in range(1900, 2100):
2700+
dt = date(year, 5, 1)
2701+
self.assertTrue(dt in self.holidays)
2702+
self.assertFalse(dt + relativedelta(days=-1) in self.holidays)
2703+
self.assertFalse(dt + relativedelta(days=+1) in self.holidays)
2704+
2705+
def test_christmas_day(self):
2706+
for year in range(1900, 2100):
2707+
dt = date(year, 12, 25)
2708+
self.assertTrue(dt in self.holidays)
2709+
self.assertFalse(dt + relativedelta(days=-1) in self.holidays)
2710+
2711+
def test_26_december_day(self):
2712+
for year in range(1900, 2100):
2713+
dt = date(year, 12, 26)
2714+
self.assertTrue(dt in self.holidays)
2715+
self.assertFalse(dt + relativedelta(days=+1) in self.holidays)
2716+
2717+
def test_all_holidays_present(self):
2718+
tar_2015 = holidays.TAR(years=[2015])
2719+
all_holidays = ["New Year's Day",
2720+
"Good Friday",
2721+
"Easter Monday",
2722+
"1 May (Labour Day)",
2723+
"Christmas Day",
2724+
"26 December"]
2725+
for holiday in all_holidays:
2726+
self.assertTrue(holiday in tar_2015.values())
2727+
2728+
26712729
if __name__ == "__main__":
26722730
unittest.main()

0 commit comments

Comments
 (0)