from datetime import datetime from typing import List, Dict def filter_accounts_current_month(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: """Filter accounts whose expiry date falls within the current month. Args: accounts (List[Dict[str, int]]): A list of account dictionaries, each containing an 'expiaryDate' key with an epoch timestamp as its value. Returns: List[Dict[str, int]]: A list of accounts expiring in the current month. """ # Get the start of the current month now = datetime.now() start_of_month = datetime(now.year, now.month, 1) # Determine the start of the next month if now.month == 12: # If the current month is December, next month is January of the next year start_of_next_month = datetime(now.year + 1, 1, 1) else: # Otherwise, the next month is the following month of the same year start_of_next_month = datetime(now.year, now.month + 1, 1) # Convert start and end of the month to epoch timestamps start_of_month_timestamp = int(start_of_month.timestamp()) start_of_next_month_timestamp = int(start_of_next_month.timestamp()) # Filter accounts with expiryDate in the current month accounts_in_current_month = [ account for account in accounts if start_of_month_timestamp <= account['expiaryDate'] < start_of_next_month_timestamp ] return accounts_in_current_month def filter_accounts_expired(accounts: List[Dict[str, int]]) -> List[Dict[str, int]]: """Filter accounts whose expiry date has passed. Args: accounts (List[Dict[str, int]]): A list of account dictionaries, each containing an 'expiaryDate' key with an epoch timestamp as its value. Returns: List[Dict[str, int]]: A list of accounts that have expired. """ # Get the current epoch timestamp current_timestamp = int(datetime.now().timestamp()) # Filter accounts where the current date is greater than the expiryDate expired_accounts = [ account for account in accounts if account['expiaryDate'] < current_timestamp ] return expired_accounts