Repository: vacanza/python-holidays

Issue:
Update AU holidays: fix WA King's birthday date
              Kings birthday is on September 23rd in Western Australia (WA) in 2024.
https://www.wa.gov.au/service/employment/workplace-agreements/public-holidays-western-australia

_Originally posted by @engserv in https://github.com/vacanza/python-holidays/issues/1736#issuecomment-2042052832_
            


Discussion:

Resolving patch:
diff --git a/holidays/countries/australia.py b/holidays/countries/australia.py
--- a/holidays/countries/australia.py
+++ b/holidays/countries/australia.py
@@ -891,7 +891,19 @@ def _populate_subdiv_wa_public_holidays(self):
         # Sovereign's Birthday.
         if self._year >= 1936:
             if self._year >= 1984:
-                self._add_holiday_last_mon_of_sep(self.sovereign_birthday)
+                # Celebration Day for the Anniversary of the Birthday of the Reigning Sovereign
+                # to be appointed for each year by proclamation published in the Government Gazette
+                sovereign_birthday_dates = {
+                    2011: (OCT, 28),
+                    2012: (OCT, 1),
+                    2024: (SEP, 23),
+                }
+                if self._year in sovereign_birthday_dates:
+                    self._add_holiday(
+                        self.sovereign_birthday, sovereign_birthday_dates[self._year]
+                    )
+                else:
+                    self._add_holiday_last_mon_of_sep(self.sovereign_birthday)
             else:
                 self._add_holiday_2nd_mon_of_oct(self.sovereign_birthday)
 
@@ -945,3 +957,8 @@ class AustraliaStaticHolidays:
         2010: (DEC, 28, "Christmas Day"),
         2011: (JAN, 3, "New Year's Day"),
     }
+
+    special_wa_public_holidays = {
+        # In 2011 both ANZAC Day and Easter Monday fell on Monday 25 April.
+        2011: (APR, 26, "Special public holiday"),
+    }


Test patch:
diff --git a/tests/countries/test_australia.py b/tests/countries/test_australia.py
--- a/tests/countries/test_australia.py
+++ b/tests/countries/test_australia.py
@@ -461,6 +461,17 @@ def test_national_day_of_mourning_for_queen_elizabeth_II(self):
         for holidays in self.subdiv_holidays.values():
             self.assertHolidayName(name, holidays, dt)
 
+    def test_special_holidays(self):
+        act_holidays = self.subdiv_holidays["ACT"]
+        qld_holidays = self.subdiv_holidays["QLD"]
+        wa_holidays = self.subdiv_holidays["WA"]
+        self.assertHoliday(act_holidays, "2020-04-20", "2021-04-25")
+        self.assertHoliday(qld_holidays, "2010-12-28", "2011-01-03", "2012-06-11")
+        self.assertNoNonObservedHoliday(
+            Australia(subdiv="QLD", observed=False, years=(2010, 2011)), "2010-12-28", "2011-01-03"
+        )
+        self.assertHoliday(wa_holidays, "2011-04-26")
+
     def test_all_holidays(self):
         holidays_found = set()
         for subdiv in Australia.subdivisions:
@@ -664,7 +675,7 @@ def test_holidays_2024(self):
             (AUG, 5): {"NT"},
             (AUG, 14): {"QLD"},
             (SEP, 27): {"VIC"},
-            (SEP, 30): {"WA"},
+            (SEP, 23): {"WA"},
             (OCT, 7): {"ACT", "NSW", "QLD", "SA"},
             (NOV, 5): {"VIC"},
             (DEC, 25): {"ACT", "NSW", "NT", "QLD", "SA", "TAS", "VIC", "WA"},