From a87389d9cafc72443c92cbc26c51ef07a533ed27 Mon Sep 17 00:00:00 2001 From: walle250ai Date: Tue, 28 Apr 2026 15:12:04 +0800 Subject: [PATCH] feat: Add is_weekday() and is_weekend() methods to Arrow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds two convenience predicates to the Arrow class: - is_weekday() → True if Mon–Fri (weekday() in range(0, 5)) - is_weekend() → True if Sat–Sun (weekday() in (5, 6)) Both methods are placed after isoweekday() and follow the same docstring style. Tests added to TestArrowDatetimeInterface. --- arrow/arrow.py | 24 ++++++++++++++++++++++++ tests/test_arrow.py | 14 ++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/arrow/arrow.py b/arrow/arrow.py index f0a57f04..76091bdb 100644 --- a/arrow/arrow.py +++ b/arrow/arrow.py @@ -1682,6 +1682,30 @@ def isoweekday(self) -> int: return self._datetime.isoweekday() + def is_weekday(self) -> bool: + """Returns a boolean indicating whether the day is a weekday (Monday-Friday). + + Usage:: + + >>> arrow.utcnow().is_weekday() + True + + """ + + return self.weekday() in range(0, 5) + + def is_weekend(self) -> bool: + """Returns a boolean indicating whether the day is a weekend (Saturday-Sunday). + + Usage:: + + >>> arrow.utcnow().is_weekend() + False + + """ + + return self.weekday() in (5, 6) + def isocalendar(self) -> Tuple[int, int, int]: """Returns a 3-tuple, (ISO year, ISO week number, ISO weekday). diff --git a/tests/test_arrow.py b/tests/test_arrow.py index b595e4e2..08d64daa 100644 --- a/tests/test_arrow.py +++ b/tests/test_arrow.py @@ -479,6 +479,20 @@ def test_isoweekday(self): assert result == self.arrow._datetime.isoweekday() + def test_is_weekday(self): + monday = arrow.Arrow(2023, 1, 2) + saturday = arrow.Arrow(2023, 1, 7) + + assert monday.is_weekday() is True + assert saturday.is_weekday() is False + + def test_is_weekend(self): + saturday = arrow.Arrow(2023, 1, 7) + monday = arrow.Arrow(2023, 1, 2) + + assert saturday.is_weekend() is True + assert monday.is_weekend() is False + def test_isocalendar(self): result = self.arrow.isocalendar()