From 0b29073a630e27f0f281ecb2237f1248689b26b3 Mon Sep 17 00:00:00 2001 From: PPsyrius <19505219+PPsyrius@users.noreply.github.com> Date: Thu, 9 Oct 2025 14:17:58 +0700 Subject: [PATCH 1/2] Introduce `HolidayBase::_is_weekday` method --- holidays/holiday_base.py | 9 ++++++++- tests/test_holiday_base.py | 8 ++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/holidays/holiday_base.py b/holidays/holiday_base.py index cd03e59c39..bc6adc6ff2 100644 --- a/holidays/holiday_base.py +++ b/holidays/holiday_base.py @@ -865,7 +865,7 @@ def _is_saturday(self, *args) -> bool: def _is_sunday(self, *args) -> bool: return self._check_weekday(SUN, *args) - def _is_weekend(self, *args): + def _is_weekend(self, *args) -> bool: """ Returns True if date's week day is a weekend day. Returns False otherwise. @@ -874,6 +874,13 @@ def _is_weekend(self, *args): dt = dt if isinstance(dt, date) else date(self._year, *dt) return dt.weekday() in self._get_weekend(dt) + def _is_weekday(self, *args) -> bool: + """ + Returns True if date's week day is not a weekend day. + Returns False otherwise. + """ + return not self._is_weekend(*args) + def _populate(self, year: int) -> None: """This is a private method that populates (generates and adds) holidays for a given year. To keep things fast, it assumes that no holidays for diff --git a/tests/test_holiday_base.py b/tests/test_holiday_base.py index 99a7ccc61f..e3fbdae4ea 100644 --- a/tests/test_holiday_base.py +++ b/tests/test_holiday_base.py @@ -567,23 +567,31 @@ def test_is_weekend(self): self.hb.weekend = {MON, TUE} for dt in dts: self.assertTrue(self.hb._is_weekend(dt)) + self.assertFalse(self.hb._is_weekday(dt)) self.hb.weekend = {} for dt in dts: self.assertFalse(self.hb._is_weekend(dt)) + self.assertTrue(self.hb._is_weekday(dt)) self.hb.weekend = {SAT, SUN} for dt in (date(2022, 10, 1), date(2022, 10, 2)): self.assertTrue(self.hb._is_weekend(dt)) + self.assertFalse(self.hb._is_weekday(dt)) for dt in ((OCT, 1), (OCT, 2)): self.assertTrue(self.hb._is_weekend(dt)) self.assertTrue(self.hb._is_weekend(*dt)) + self.assertFalse(self.hb._is_weekday(dt)) + self.assertFalse(self.hb._is_weekday(*dt)) for dt in (date(2022, 10, 3), date(2022, 10, 4)): self.assertFalse(self.hb._is_weekend(dt)) + self.assertTrue(self.hb._is_weekday(dt)) for dt in ((OCT, 3), (OCT, 4)): self.assertFalse(self.hb._is_weekend(dt)) self.assertFalse(self.hb._is_weekend(*dt)) + self.assertTrue(self.hb._is_weekday(dt)) + self.assertTrue(self.hb._is_weekday(*dt)) class TestHolidaySum(unittest.TestCase): From 77d4b246f404693f7c9685353800b928e7a7f1bb Mon Sep 17 00:00:00 2001 From: Arkadii Yakovets Date: Fri, 10 Oct 2025 18:19:11 -0700 Subject: [PATCH 2/2] Update code --- holidays/holiday_base.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/holidays/holiday_base.py b/holidays/holiday_base.py index bc6adc6ff2..e4c2ad702a 100644 --- a/holidays/holiday_base.py +++ b/holidays/holiday_base.py @@ -865,6 +865,13 @@ def _is_saturday(self, *args) -> bool: def _is_sunday(self, *args) -> bool: return self._check_weekday(SUN, *args) + def _is_weekday(self, *args) -> bool: + """ + Returns True if date's week day is not a weekend day. + Returns False otherwise. + """ + return not self._is_weekend(*args) + def _is_weekend(self, *args) -> bool: """ Returns True if date's week day is a weekend day. @@ -874,13 +881,6 @@ def _is_weekend(self, *args) -> bool: dt = dt if isinstance(dt, date) else date(self._year, *dt) return dt.weekday() in self._get_weekend(dt) - def _is_weekday(self, *args) -> bool: - """ - Returns True if date's week day is not a weekend day. - Returns False otherwise. - """ - return not self._is_weekend(*args) - def _populate(self, year: int) -> None: """This is a private method that populates (generates and adds) holidays for a given year. To keep things fast, it assumes that no holidays for