"""Utility functions for working with Dagster partition keys.""" from datetime import datetime from typing import Tuple def parse_hourly_partition_key(partition_key: str) -> Tuple[str, int]: """ Parse an hourly partition key into p_date and p_hour components. Args: partition_key: Partition key in format "YYYY-MM-DD-HH:00" Example: "2025-10-03-14:00" Returns: Tuple of (p_date, p_hour) where: - p_date is a string in format "YYYY-MM-DD" - p_hour is an integer (0-23) Example: >>> parse_hourly_partition_key("2025-10-03-14:00") ('2025-10-03', 14) """ dt = datetime.strptime(partition_key, "%Y-%m-%d-%H:00") return dt.strftime("%Y-%m-%d"), dt.hour def parse_daily_partition_key(partition_key: str) -> str: """ Parse a daily partition key. Args: partition_key: Partition key in format "YYYY-MM-DD" Example: "2025-10-03" Returns: String in format "YYYY-MM-DD" Example: >>> parse_daily_partition_key("2025-10-03") '2025-10-03' """ return partition_key