from .charts_format_types import DateLabel from .dates_add_days import parse_iso_date _MONTHS = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"] def format_date(iso: str, label: DateLabel) -> str: """A date as a tick label for the interval it stands for.""" date = parse_iso_date(iso) year = iso[0:4] month = _MONTHS[date.month - 1] if label in ("day", "week"): return "%d %s" % (date.day, month) if label == "month": return "%s %s" % (month, year) if label == "quarter": return "Q%d %s" % ((date.month - 1) // 3 + 1, year) if label == "year": return year raise ValueError('unknown date label "%s"; use day, week, month, quarter or year' % (label,))