nebius/SWE-rebench-V2-PRs huggingface dataset:
Repository: peopledoc/workalendar
Pull request #266 (2018-06-14 15:52:10)

De-duplicate South Africa holidays
refs #265

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes.



Patch:
diff --git a/CHANGELOG b/CHANGELOG
index 2fd8777..ab3384a 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -4,7 +4,7 @@ CHANGELOG
 master (unreleased)
 -------------------
 
-Nothing here yet.
+* Bugfix: deduplicate South Africa holidays that were emitted as duplicates (#265).
 
 2.4.0 (2018-03-28)
 ------------------
diff --git a/workalendar/africa/south_africa.py b/workalendar/africa/south_africa.py
index 06141f7..fdbaa18 100644
--- a/workalendar/africa/south_africa.py
+++ b/workalendar/africa/south_africa.py
@@ -58,7 +58,10 @@ class SouthAfrica(WesternCalendar, ChristianMixin):
     def get_variable_days(self, year):
         days = super(SouthAfrica, self).get_variable_days(year)
         days.append(self.get_family_day(year))
-        days += self.get_fixed_holidays(year)
+        return days
+
+    def get_calendar_holidays(self, year):
+        days = super(SouthAfrica, self).get_calendar_holidays(year)
         # compute shifting days
         for holiday, label in days:
             if holiday.weekday() == SUN:


Test patch:
diff --git a/workalendar/tests/test_africa.py b/workalendar/tests/test_africa.py
index c398925..1861c7e 100644
--- a/workalendar/tests/test_africa.py
+++ b/workalendar/tests/test_africa.py
@@ -70,12 +70,6 @@ class SouthAfricaTest(GenericCalendarTest):
         self.assertIn(date(2014, 4, 27), holidays)  # freedom day
         self.assertIn(date(2014, 4, 28), holidays)  # freedom day sub
 
-#    def test_pre_1994(self):
-#        pass
-#
-#    def test_pre_1995(self):
-#        pass
-
     def test_special_1999(self):
         # National and provincial government elections – 2 June 1999[8]
         holidays = self.cal.holidays_set(1999)
@@ -153,6 +147,11 @@ class SouthAfricaTest(GenericCalendarTest):
         holidays = self.cal.holidays_set(1960)
         self.assertIn(date(1960, 5, 2), holidays)
 
+    def test_remove_duplicates(self):
+        holidays = self.cal.holidays(2014)
+        dates = ["{} {}".format(x, y) for x, y in holidays]
+        self.assertEqual(len(dates), len(set(dates)))
+
 
 class Madagascar(GenericCalendarTest):
     cal_class = Madagascar
Repository: peopledoc/workalendar
Pull request #292 (2018-11-12 14:54:20)

Fix ISO 3166-1 code for Slovenia
superseeds and closes #291

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes.




Patch:
diff --git a/Changelog.md b/Changelog.md
index 914f62e..21759e5 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,7 +2,7 @@
 
 ## master (unreleased)
 
-Nothing here yet.
+- Fixed ISO 3166-1 code for the `Slovenia` calendar (#291, thx @john-sandall).
 
 ## v3.1.0 (2018-10-25)
 
diff --git a/workalendar/europe/slovenia.py b/workalendar/europe/slovenia.py
index 9102ed4..2125bb5 100644
--- a/workalendar/europe/slovenia.py
+++ b/workalendar/europe/slovenia.py
@@ -5,7 +5,7 @@ from workalendar.core import WesternCalendar, ChristianMixin
 from workalendar.registry import iso_register
 
 
-@iso_register('SL')
+@iso_register('SI')
 class Slovenia(WesternCalendar, ChristianMixin):
     'Slovenia'
 


Test patch:
diff --git a/workalendar/tests/test_registry_europe.py b/workalendar/tests/test_registry_europe.py
index d5cf12a..f8d067b 100644
--- a/workalendar/tests/test_registry_europe.py
+++ b/workalendar/tests/test_registry_europe.py
@@ -78,3 +78,7 @@ class RegistryEurope(TestCase):
         classes = list(classes)
         for klass in GERMANY_REGION_CLASSES:
             self.assertIn(klass, classes)
+
+    def test_slovenia_code(self):
+        # Source: https://github.com/peopledoc/workalendar/pull/291
+        self.assertEqual(registry.region_registry['SI'], Slovenia)
Repository: peopledoc/workalendar
Pull request #301 (2018-12-06 11:03:32)

Singapore: update DEEPAVALI days up to 2020
superseeds and closes #282

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes.



Patch:
diff --git a/Changelog.md b/Changelog.md
index 49e5dc7..f8dade1 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,7 +2,8 @@
 
 ## master (unreleased)
 
-Nothing here yet.
+- Added DEEPAVALI days for 2019 and 2020, thx @pvalenti (#282).
+
 
 ## v3.2.0 (2018-11-30)
 
diff --git a/workalendar/asia/singapore.py b/workalendar/asia/singapore.py
index 0d80808..aa3c321 100644
--- a/workalendar/asia/singapore.py
+++ b/workalendar/asia/singapore.py
@@ -45,7 +45,9 @@ class Singapore(WesternCalendar,
         2015: date(2015, 11, 10),
         2016: date(2016, 10, 29),
         2017: date(2017, 10, 18),
-        2018: date(2018, 11, 6)  # This might change
+        2018: date(2018, 11, 6),
+        2019: date(2019, 10, 27),
+        2020: date(2020, 11, 14),   # This might change
     }
     chinese_new_year_label = "Chinese Lunar New Year's Day"
     include_chinese_second_day = True


Test patch:
diff --git a/workalendar/tests/test_asia.py b/workalendar/tests/test_asia.py
index 6b867bd..dbcf215 100644
--- a/workalendar/tests/test_asia.py
+++ b/workalendar/tests/test_asia.py
@@ -263,6 +263,17 @@ class SingaporeTest(GenericCalendarTest):
         # Shifted day (Monday)
         self.assertIn(date(2016, 5, 2), holidays)
 
+    def test_deepavali(self):
+        # At the moment, we have values for deepavali only until year 2020
+        for year in range(2000, 2021):
+            self.assertIn(year, self.cal.DEEPAVALI)
+
+    def test_deepavali_current_year(self):
+        # This is a regression test. We should be able to have the deepavali
+        # value until this year and probably a few years in the future
+        current_year = date.today().year
+        self.assertIn(current_year, self.cal.DEEPAVALI)
+
 
 class SouthKoreaTest(GenericCalendarTest):
Repository: peopledoc/workalendar
Pull request #347 (2019-04-15 04:45:07)

2019 Labour Day Holiday Shift for China, update at 20190322
2019 Labour Day Holiday Shift for China, update at 20190322 by Chinese government.

refs #
http://www.gov.cn/zhengce/content/2018-12/06/content_5346276.htm

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes.



Patch:
diff --git a/Changelog.md b/Changelog.md
index 82c61cb..bb38ccf 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,7 +2,7 @@
 
 ## master (unreleased)
 
-Nothing here yet.
+- Update 2019 Labour Day Holidays for China as changed by government recently(2019-03-22).
 
 ## v4.3.0 (2019-03-15)
 
diff --git a/workalendar/asia/china.py b/workalendar/asia/china.py
index 1c1bb30..bc50cb5 100644
--- a/workalendar/asia/china.py
+++ b/workalendar/asia/china.py
@@ -20,7 +20,7 @@ holidays = {
     2019:
         {
             'Ching Ming Festival': [(4, 5)],
-            'Labour Day Holiday': [(5, 1)],
+            'Labour Day Holiday': [(5, 1), (5, 2), (5, 3)],
             'Dragon Boat Festival': [(6, 7)],
             'Mid-Autumn Festival': [(9, 13)]
         },
@@ -38,6 +38,7 @@ workdays = {
     2019:
         {
             'Spring Festival Shift': [(2, 2), (2, 3)],
+            'Labour Day Holiday Shift': [(4, 28), (5, 5)],
             'National Day Shift': [(9, 29), (10, 12)],
         },
 }


Test patch:
diff --git a/workalendar/tests/test_asia.py b/workalendar/tests/test_asia.py
index 05a929f..35c0458 100644
--- a/workalendar/tests/test_asia.py
+++ b/workalendar/tests/test_asia.py
@@ -29,6 +29,14 @@ class ChinaTest(GenericCalendarTest):
         self.assertIn(date(2018, 12, 30), holidays)  # New year
         self.assertIn(date(2018, 12, 31), holidays)  # New year
 
+    def test_year_2019(self):
+        holidays = self.cal.holidays_set(2019)
+        self.assertNotIn(date(2019, 4, 28), holidays)  # Labour Day Shift
+        self.assertIn(date(2019, 5, 1), holidays)  # Labour Day Holiday
+        self.assertIn(date(2019, 5, 2), holidays)  # Labour Day Holiday
+        self.assertIn(date(2019, 5, 3), holidays)  # Labour Day Holiday
+        self.assertNotIn(date(2019, 5, 5), holidays)  # Labour Day Shift
+
 
 class HongKongTest(GenericCalendarTest):
Repository: peopledoc/workalendar
Pull request #351 (2019-05-17 09:09:27)

Richard ob south africa national elections 2019
This Pull Request supersedes and will close #350

Changes:

* fix erroneous test that was not pointing at the right year,
* moved the test into the canonical `SouthAfricaTest` class in `test_africa.py`
* changelog adjustements, to give @RichardOB all credits due :o)


Patch:
diff --git a/Changelog.md b/Changelog.md
index 7ab760f..378a3ea 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -4,6 +4,7 @@
 
 - Added California specific calendars: California Education, Berkeley, San Francisco, West Hollywood (#215).
 - Added a few refactors and tests for Australia Capital Territory holiday named "Family & Community Day", that lasted from 2007 to 2017 (#25).
+- Added South African 2019 National Elections as holiday (#350), by @RichardOB.
 
 ## v4.3.1 (2019-05-03)
 
diff --git a/workalendar/africa/south_africa.py b/workalendar/africa/south_africa.py
index 0d5c448..ebd8fb2 100644
--- a/workalendar/africa/south_africa.py
+++ b/workalendar/africa/south_africa.py
@@ -159,5 +159,7 @@ class SouthAfrica(WesternCalendar, ChristianMixin):
             days.append((date(year, 5, 7), "National Elections"))
         if year == 2016:
             days.append((date(year, 8, 3), "Local Elections"))
+        if year == 2019:
+            days.append((date(year, 5, 8), "National Elections"))
 
         return days


Test patch:
diff --git a/workalendar/tests/test_africa.py b/workalendar/tests/test_africa.py
index e2046dc..bae9c8f 100644
--- a/workalendar/tests/test_africa.py
+++ b/workalendar/tests/test_africa.py
@@ -455,6 +455,14 @@ class SouthAfricaTest(GenericCalendarTest):
         holidays = self.cal.holidays_set(2016)
         self.assertIn(date(2016, 8, 3), holidays)
 
+    def test_special_2019(self):
+        holidays = self.cal.holidays_set(2019)
+        self.assertIn(date(2019, 5, 8), holidays)  # 2019 National Elections
+
+        # Only in 2019
+        holidays = self.cal.holidays_set(2017)
+        self.assertNotIn(date(2017, 5, 8), holidays)
+
 
 class MadagascarTest(GenericCalendarTest):
     cal_class = Madagascar
Repository: peopledoc/workalendar
Pull request #598 (2020-11-27 14:39:34)

Adding the latest extra holidays of 2020 for Russia
refs #578

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] ~~Changelog already mentions other similar changes~~



Patch:
diff --git a/workalendar/europe/russia.py b/workalendar/europe/russia.py
index a19ed89..be12e44 100644
--- a/workalendar/europe/russia.py
+++ b/workalendar/europe/russia.py
@@ -45,6 +45,22 @@ class Russia(OrthodoxCalendar):
                     (day, f"Non-Working Day (COVID-19) #{index}")
                 )
                 index += 1
+
+            # Adding May extra days
+            days.extend([
+                (date(year, 5, 4), "May 4th, 2020 holiday"),
+                (date(year, 5, 5), "Day of Spring and Labor"),
+            ])
+
+            # Extra COVID-19 in May
+            days.extend([
+                (date(year, 5, 6), "Covid-19 May #1"),
+                (date(year, 5, 7), "Covid-19 May #2"),
+                (date(year, 5, 8), "Covid-19 May #3"),
+            ])
+
+            # Constitution Vote Public Holiday
+            days.append((date(year, 7, 1), "Constitution Vote Public Holiday"))
         return days
 
     def get_calendar_holidays(self, year):


Test patch:
diff --git a/workalendar/tests/test_europe.py b/workalendar/tests/test_europe.py
index 64c0959..ccaf9fb 100644
--- a/workalendar/tests/test_europe.py
+++ b/workalendar/tests/test_europe.py
@@ -1457,6 +1457,11 @@ class RussiaTest(GenericCalendarTest):
         end = date(2020, 4, 30)
         for day in daterange(start, end):
             self.assertIn(day, holidays)
+        # COVID-19 days in May
+        self.assertIn(date(2020, 5, 6), holidays)  # Covid-19 May #1
+        self.assertIn(date(2020, 5, 7), holidays)  # Covid-19 May #2
+        self.assertIn(date(2020, 5, 8), holidays)  # Covid-19 May #3
+
         # Not for 2019, though
         holidays = self.cal.holidays_set(2019)
         start = date(2019, 3, 28)
@@ -1473,6 +1478,18 @@ class RussiaTest(GenericCalendarTest):
             if start <= day <= end:
                 self.assertNotIn("shift", label)
 
+    def test_extra_days_2020(self):
+        holidays = self.cal.holidays_set(2020)
+        self.assertIn(date(2020, 5, 4), holidays)  # extra day, no other info
+        self.assertIn(date(2020, 5, 5), holidays)  # Day of spring/labor day
+        # Constitution Vote Public Holiday
+        self.assertIn(date(2020, 7, 1), holidays)
+        # Not in 2019
+        holidays = self.cal.holidays_set(2019)
+        self.assertNotIn(date(2019, 5, 4), holidays)
+        self.assertNotIn(date(2019, 5, 5), holidays)
+        self.assertNotIn(date(2019, 7, 1), holidays)
+
     def test_new_year_holidays_2004(self):
         # At that time, only Jan 1st/2nd were holidays.
         holidays = self.cal.holidays_set(2004)
Repository: peopledoc/workalendar
Pull request #617 (2021-01-11 12:22:50)

Add Deepavali and Thaipusam until 2024 for Malaysia
Adds holidays up to 2024 for:
  - Malaysia Deepavali (https://publicholidays.com.my/deepavali/)
  - Malaysia Thaipusam (https://publicholidays.com.my/thaipusam/)

Checklist:
- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes. **Note** *Please do NOT change the version number here. It's the project maintainers' duty.*


Patch:
diff --git a/Changelog.md b/Changelog.md
index 17754d3..6fbf887 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,7 +2,7 @@
 
 ## master (unreleased)
 
-Nothing here yet.
+- Update Malaysia 2022-2024 (Deepavali + Thaipusam) by @jack-pace
 
 ## v14.2.0 (2021-01-08)
 
diff --git a/workalendar/asia/malaysia.py b/workalendar/asia/malaysia.py
index d67de9d..30b886c 100644
--- a/workalendar/asia/malaysia.py
+++ b/workalendar/asia/malaysia.py
@@ -35,6 +35,7 @@ class Malaysia(IslamicMixin, ChineseNewYearCalendar):
         (12, 25, "Christmas Day"),
     )
 
+    # Ref: https://publicholidays.com.my/deepavali/
     MSIA_DEEPAVALI = {
         2010: date(2010, 11, 5),
         2011: date(2011, 10, 26),
@@ -46,10 +47,14 @@ class Malaysia(IslamicMixin, ChineseNewYearCalendar):
         2017: date(2017, 10, 18),
         2018: date(2018, 11, 6),
         2019: date(2019, 10, 27),
-        2020: date(2020, 11, 14),  # This might change
+        2020: date(2020, 11, 14),
         2021: date(2021, 11, 4),
+        2022: date(2022, 10, 24),
+        2023: date(2023, 11, 13),  # in lieu of 12th Nov
+        2024: date(2024, 10, 31),
     }
 
+    # Ref: https://publicholidays.com.my/thaipusam/
     MSIA_THAIPUSAM = {
         2010: date(2010, 1, 30),
         2011: date(2011, 1, 20),
@@ -61,8 +66,11 @@ class Malaysia(IslamicMixin, ChineseNewYearCalendar):
         2017: date(2017, 2, 9),
         2018: date(2018, 1, 31),
         2019: date(2019, 1, 21),
-        2020: date(2020, 2, 8),  # This might change
+        2020: date(2020, 2, 8),
         2021: date(2021, 1, 28),
+        2022: date(2022, 1, 18),
+        2023: date(2023, 2, 4),
+        2024: date(2024, 1, 25),
     }
     chinese_new_year_label = "First Day of Lunar New Year"
     include_chinese_second_day = True


Test patch:
diff --git a/workalendar/tests/test_asia.py b/workalendar/tests/test_asia.py
index 2ce7555..3cfcd57 100644
--- a/workalendar/tests/test_asia.py
+++ b/workalendar/tests/test_asia.py
@@ -438,8 +438,8 @@ class MalaysiaTest(GenericCalendarTest):
         self.assertEqual(holidays[deepavali], "Deepavali")
 
     def test_msia_thaipusam(self):
-        # we only have them for years 2010-2021
-        self.assertEqual(set(self.cal.MSIA_THAIPUSAM), set(range(2010, 2022)))
+        # we only have them for years 2010-2024
+        self.assertEqual(set(self.cal.MSIA_THAIPUSAM), set(range(2010, 2025)))
 
     def test_missing_deepavali(self):
         save_2020 = self.cal.MSIA_DEEPAVALI[2020]
Repository: peopledoc/workalendar
Pull request #632 (2021-02-26 09:16:00)

Hotfix: Taiwan exceptional working days in 2021
refs #628 (will be closed after the HF release)

Two extra-working days in 2021

* February, 20th
* September 11th,

**checklist**

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes. **Note** *Please do NOT change the version number here. It's the project maintainers' duty.*



Patch:
diff --git a/Changelog.md b/Changelog.md
index 686634c..6c90613 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,7 +2,8 @@
 
 ## master (unreleased)
 
-Nothing here yet.
+- Hotfix: Taiwan exceptional working day on February, 20th 2021 (#628).
+- Hotfix: September 11th is a working day in Taiwan (#628).
 
 ## v15.0.0 (2021-02-19)
 
diff --git a/workalendar/asia/taiwan.py b/workalendar/asia/taiwan.py
index f84bef9..ac43ff1 100644
--- a/workalendar/asia/taiwan.py
+++ b/workalendar/asia/taiwan.py
@@ -1,4 +1,6 @@
-from ..core import ChineseNewYearCalendar
+from datetime import date
+
+from ..core import ChineseNewYearCalendar, cleaned_date
 from ..astronomy import solar_term
 from ..registry_tools import iso_register
 
@@ -14,6 +16,12 @@ class Taiwan(ChineseNewYearCalendar):
     include_chinese_new_year_eve = True
     include_chinese_second_day = True
 
+    def is_working_day(self, day, *args, **kwargs):
+        day = cleaned_date(day)
+        if day in (date(2021, 2, 20), date(2021, 9, 11)):
+            return True
+        return super().is_working_day(day, *args, **kwargs)
+
     def get_variable_days(self, year):
         days = super().get_variable_days(year)
         # Qingming begins when the sun reaches the celestial


Test patch:
diff --git a/workalendar/tests/test_asia.py b/workalendar/tests/test_asia.py
index 3cfcd57..d828fb5 100644
--- a/workalendar/tests/test_asia.py
+++ b/workalendar/tests/test_asia.py
@@ -612,6 +612,26 @@ class TaiwanTest(GenericCalendarTest):
         self.assertIn(date(2013, 4, 4), self.cal.holidays_set(2013))
         self.assertIn(date(2014, 4, 4), self.cal.holidays_set(2014))
 
+    def test_extra_day_2021_february(self):
+        extra_day_feb_20 = date(2021, 2, 20)
+        self.assertTrue(self.cal.is_working_day(extra_day_feb_20))
+        # Compute deltas with the extra-working day...
+        five_days_after = self.cal.add_working_days(
+            date(2021, 2, 19), 5
+        )
+        # Should've been on 26th, albeit the 20th
+        self.assertEqual(five_days_after, date(2021, 2, 25))
+
+    def test_extra_day_2021_september(self):
+        extra_day_sept_11 = date(2021, 9, 11)
+        self.assertTrue(self.cal.is_working_day(extra_day_sept_11))
+        # Compute deltas with the extra-working day...
+        five_days_after = self.cal.add_working_days(
+            date(2021, 9, 10), 5
+        )
+        # Should've been on 17th, albeit the 11th
+        self.assertEqual(five_days_after, date(2021, 9, 16))
+
 
 class IsraelTest(GenericCalendarTest):
Repository: peopledoc/workalendar
Pull request #644 (2021-04-23 08:56:15)

Update Cuiaba-Brazil holidays
Adding Easter Sunday, Corpus Christi and Good Friday.

This PR amends and would close #642 when it'll be merged.

- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes. **Note** *Please do NOT change the version number here. It's the project maintainers' duty.*



Patch:
diff --git a/Changelog.md b/Changelog.md
index 29b6746..69a3522 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -2,7 +2,7 @@
 
 ## master (unreleased)
 
-Nothing to see here yet.
+- Fixed Cuiaba City calendar (Brazil), adding Easter Sunday, Corpus Christi and Good Friday, thx @leogregianin (#642).
 
 ## v15.1.0 (2021-03-12)
 
diff --git a/workalendar/america/brazil.py b/workalendar/america/brazil.py
index 32ad5b9..fd23778 100644
--- a/workalendar/america/brazil.py
+++ b/workalendar/america/brazil.py
@@ -462,6 +462,10 @@ class BrazilCuiabaCity(BrazilMatoGrosso):
     FIXED_HOLIDAYS = BrazilMatoGrosso.FIXED_HOLIDAYS + (
         (4, 8, "Aniversário de Cuiabá"),
     )
+    include_easter_sunday = True
+    include_corpus_christi = True
+    include_good_friday = True
+    good_friday_label = "Sexta-feira da Paixão"
 
 
 class BrazilBelemCity(BrazilPara):


Test patch:
diff --git a/workalendar/tests/test_brazil.py b/workalendar/tests/test_brazil.py
index d708eac..6825387 100644
--- a/workalendar/tests/test_brazil.py
+++ b/workalendar/tests/test_brazil.py
@@ -676,6 +676,15 @@ class BrazilCuiabaCityTest(BrazilMatoGrossoTest):
         # Fixed days
         # Aniversário de Cuiabá
         self.assertIn(date(2017, 4, 8), holidays)
+        self.assertIn(date(2017, 4, 14), holidays)  # good_friday
+        self.assertIn(date(2017, 4, 16), holidays)  # easter_sunday
+        self.assertIn(date(2017, 6, 15), holidays)  # corpus_christi
+
+    def test_good_friday_label(self):
+        holidays = self.cal.holidays(2017)
+        holidays_dict = dict(holidays)
+        good_friday_label = holidays_dict[date(2017, 4, 14)]
+        self.assertEqual(good_friday_label, "Sexta-feira da Paixão")
 
 
 class BrazilBelemCityTest(BrazilParaTest):
Repository: peopledoc/workalendar
Pull request #645 (2021-04-23 09:19:58)

Add St John the Baptist day for Catalonian calendar
This PR amends, solves conflict and thus, closes #643


- [x] Tests with a significant number of years to be tested for your calendar.
- [x] Changelog amended with a mention describing your changes. **Note** *Please do NOT change the version number here. It's the project maintainers' duty.*



Patch:
diff --git a/Changelog.md b/Changelog.md
index 69a3522..5226f8b 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -3,6 +3,7 @@
 ## master (unreleased)
 
 - Fixed Cuiaba City calendar (Brazil), adding Easter Sunday, Corpus Christi and Good Friday, thx @leogregianin (#642).
+- Fix Catalonian calendar: add missing St John the Baptist public holiday, thx @lozlow (#643).
 
 ## v15.1.0 (2021-03-12)
 
diff --git a/workalendar/europe/spain.py b/workalendar/europe/spain.py
index d9d443c..77fc5bb 100644
--- a/workalendar/europe/spain.py
+++ b/workalendar/europe/spain.py
@@ -83,6 +83,7 @@ class Catalonia(Spain):
 
     FIXED_HOLIDAYS = Spain.FIXED_HOLIDAYS + (
         (9, 11, "Diada nacional de Catalunya"),
+        (6, 24, "La revetlla de Sant Joan, Nit de Sant Joan"),
     )
 
 


Test patch:
diff --git a/workalendar/tests/test_spain.py b/workalendar/tests/test_spain.py
index f593e12..a43cae5 100644
--- a/workalendar/tests/test_spain.py
+++ b/workalendar/tests/test_spain.py
@@ -135,16 +135,20 @@ class CataloniaTest(SpainTest):
         self.assertIn(date(2015, 4, 6), holidays)  # Easter Monday
         # Diada nacional de Catalunya
         self.assertIn(date(2015, 9, 11), holidays)
+        # La revetlla de Sant Joan, Nit de Sant Joan
+        self.assertIn(date(2015, 6, 24), holidays)
         self.assertIn(date(2015, 12, 26), holidays)  # Sant Esteve
-        self.assertEqual(len(holidays), 13)
+        self.assertEqual(len(holidays), 14)
 
     def test_region_year_2016(self):
         holidays = self.cal.holidays_set(2016)
         self.assertIn(date(2016, 3, 28), holidays)  # Easter Monday
         # Diada nacional de Catalunya
         self.assertIn(date(2016, 9, 11), holidays)
+        # La revetlla de Sant Joan, Nit de Sant Joan
+        self.assertIn(date(2016, 6, 24), holidays)
         self.assertIn(date(2016, 12, 26), holidays)  # Sant Esteve
-        self.assertEqual(len(holidays), 13)
+        self.assertEqual(len(holidays), 14)
 
     def test_boxing_day_label(self):
         holidays = self.cal.holidays(2020)