utils#
Вспомогательные функции для работы проекта.
Используется как набор общих вспомогательных функций, которые работают внутри проекта, но редко выходят за его пределы.
Содержит:
Функции для работы с json файлами.
Проверка ключей словаря по шаблону.
Склонение слов относительно числа.
Получение строкового таймера обратного отсчёта.
Упаковка нескольких записей об обновлениях в одну.
Работа с файлами#
Являются обёртками для более удобной работы с json файлами. json файлы используются для сохранения и кеширование данных.
- sp.utils.save_file(path: Path, data: dict | list)#
Записывает данные в json файл.
Используется как обёртка для более удобной упаковки данных в json файлы. Автоматически создаёт файл, есть его не существует.
- Параметры:
path (Path) – Путь к файлу для записи данных.
data (Union[dict, list]) – Данные для записи в файл.
- Результат:
Ваши данные для записи.
- Тип результата:
dict
- sp.utils.load_file(path: Path, data: dict | list | None = None) dict | list #
Читает данные из json файла.
Используется как обёртка для более удобного чтения данных из json файла. Если переданы данные и файла не существует -> создаёт новый файл и записывает переданные данные. Если файла не суещствует и данные переданы или возникло исключение при чтении файла -> возвращаем пустой словарь.
- Параметры:
path (Path) – Путь к файлу для чтения.
data (Optional[dict], optional) – Данные для записи, по умолчанию не указаны.
- Результат:
Распакованные данные из файла.
- Тип результата:
Union[dict, list]
Строковые утилиты#
- sp.utils.plural_form(n: int, v: tuple[str]) str #
Возвращает просклонённое значение в зивисимости от числа.
Возвращает просклонённое слово: «для одного», «для двух», «для пяти» значений.
plural_form(difference.days, ("день", "дня", "дней")) # difference.days = 1 -> день # difference.days = 32 -> дня # difference.days = 65 -> дней
- Параметры:
n (int) – Некоторое число, используемое в склонении.
v (tuple[str]) – Варианты слова (для 1, для 2, для 5).
- Результат:
Просклонённое слово в зависимости от числа.
- Тип результата:
str
- sp.utils.get_str_timedelta(s: int, hours: bool | None = True) str #
Возвращает строковый обратный отсчёт из количества секунд.
Если hours = False -> ММ:SS. Если hours = True -> HH:MM:SS.
- Параметры:
s (int) – Количество секунд для обратного отсчёта.
hours (Optional[bool], optional) – Использовать ли часы, по умолчанию да.
- Результат:
Строковый обратный отсчёт.
- Тип результата:
str
Работа с обновлениями#
- sp.utils.compact_updates(updates: list[dict[str, Any]]) dict[str, Any] #
Упаковывает несколько записей об обновлениях в одну.
Используется чтобы совместить несколько записей об изменениях. Например чтобы покзаать все изменения в расписании за неделю. Или использваоть при получении обнолвений.
Правила совмешения:
Если урока ранее не было -> добавляем урок.
Если Урок A, сменился на B, а после снова на A -> удаляем урок.
Если A -> B, B -> C, то A => C.
Иначе добавить запись.
- Параметры:
updates (list[dict[str, Any]]) – Список записей об обновлениях расписания.
- Результат:
Новая упакованная запись об обновлённом расписании.
- Тип результата:
dict[str, Any]