~/
│
├── dedetoklib/
│ ├── __init__.py
│ └── check_holiday.py
│
└── main.py
check_holiday.py
import holidays
from datetime import datetime
# Create holiday object for Indonesia
ID_HOLIDAYS = holidays.country_holidays("ID")
def is_holiday(date_str):
"""
Check if a date (YYYY-MM-DD) is a holiday.
Returns:
(bool, str | None):
- True and holiday name if holiday
- False and None if not
"""
date_obj = datetime.strptime(date_str, "%Y-%m-%d").date()
if date_obj in ID_HOLIDAYS:
return True, ID_HOLIDAYS[date_obj]
else:
return False, None
def is_working_day(date_str):
"""
Check if a date (YYYY-MM-DD) is a working day (Monday to Friday).
Returns:
bool: True if Monday–Friday, False if Saturday or Sunday
"""
date_obj = datetime.strptime(date_str, "%Y-%m-%d").date()
# weekday(): Monday = 0, Sunday = 6 if date_obj.weekday() < 5:
return True, "Weekday"
else:
return False, "Weekend"
Test main.py
from dedetoklib import check_holiday
dates = ["2025-01-01", "2025-01-02", "2025-08-17"]
for d in dates:
# Check holiday
holiday_flag, holiday_name = check_holiday.is_holiday(d)
# Check working day
working_flag, working_str = check_holiday.is_working_day(d)
print(f"{d}: {working_str}, Holiday? {holiday_flag}", end="")
if holiday_flag:
print(f" ({holiday_name})")
else:
print()