"""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
