import calendar import datetime from typing import List, Tuple def get_month_str() -> str: return calendar.month_name[datetime.datetime.today().month] def get_calendar_days() -> Tuple[List[int], Tuple[int, int]]: """ Get calendar grid of dates as well as starting week index and weekday index """ today = datetime.date.today() year = today.year month = today.month weekday_idx = (today.weekday() + 1) % 7 # week start on Sunday calendar_lib = calendar.Calendar(firstweekday=6) weeks: List[List[datetime.date]] = calendar_lib.monthdatescalendar( year, month) week_idx: int = 0 for week in weeks: if week[weekday_idx] == today: break week_idx += 1 if week_idx >= 5: month += 1 if month > 12: month = 1 year += 1 weeks = calendar_lib.monthdatescalendar(year, month) week_idx = 0 if len(weeks) >= 5: weeks = weeks[:5] week_list: List[datetime.date] = sum(weeks, []) return list(map(lambda date: date.day, week_list)), (week_idx, weekday_idx)