from datetime import datetime def get_month_name_from_range(from_date: str, to_date: str) -> str: """Определяет название месяца по диапазону дат""" try: end = datetime.strptime(to_date, "%Y-%m-%d") except ValueError: return "Январь" months = [ "", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь", ] return months[end.month] def get_version(issue) -> str: """Возвращает версию задачи или '', если не задана.""" return str(getattr(issue, "fixed_version", "")) def hours_to_human(hours: float) -> str: """Преобразует часы в человекочитаемый формат: '2ч 30м'.""" if hours <= 0: return "0ч" total_minutes = round(hours * 60) h = total_minutes // 60 m = total_minutes % 60 parts = [] if h: parts.append(f"{h}ч") if m: parts.append(f"{m}м") return " ".join(parts) if parts else "0ч"