counters#
Счётчики элементов расписания.
Проедостовляют вспомогательные функции для подсчёта количества элементов в расписании. Эти статистические функции могут использоваться для последующего анализа расписания. Все функции используют намерениея, для уточнения результатов работы счётчиков.
Обрабите внимение, что счётчики возвращают «сырой» результат. Который вы можеет в последствии самостоятельно обработать.
Совет
Генератор сообещний.
Если вы хотите получить готовые текстовые сообщения, на основе результатов счётчков, обратитесь к методам генератора сообщений.
Содержит:
Вспомогательные функции для результатов счётчиков.
- Счётчики:
классы
Дни
Индексы (уроки, кабинеты)
Вспомогательные функции#
Используеются для поддержания работы основных функций счётчиков.
- sp.counters.group_counter_res(counter_res: dict[str, dict[str, int | Counter]]) dict[int, dict[str, dict]] #
Группирует результат работы счётчиков по total ключу.
Формат вывода:
{ 2: { # Общее количество ("total" счётчика) "8в" { # Некоторые счётчики, не обязательно класс. # ... }, "...", { # ... } } }
- Параметры:
counter_res (dict[str, dict[str, Union[int, Counter]]]) – Результаты работы счётчика расписания.
- Результат:
Сгруппированные результаты работы счётчика.
- Тип результата:
dict[int, dict[str, dict]]
- sp.counters.reverse_counter(cnt: Counter) dict[int, list[str]] #
Меняет ключ и занчение Counter местами.
- Параметры:
cnt (Сounter) – Счётчик элементов расписаия.
- Результат:
Перевернётый счётчик расписнаия.
- Тип результата:
dict[int, list[str]]
Функции счётчиков#
Используются для подсчёта количества элементов расписания.
- sp.counters.cl_counter(sc: Schedule, intent: Intent) dict[str, dict[str, int | Counter]] #
Счётчик по классам с использованием sp.lessons.
Считает элементы расписнаия, пробегаясь по sp.lessons. Использует намерения для уточнения результатов поиска.
Пример результатов работы счетчика:
{ "7а": { # Классы "total": 12, # Общее количество элементов. "days": Counter(), # Количество элементов по дням. "lessons": Counter(), # Количесво элементов по урокам. "cabinets": Counter(), # Элементы по кабинетам. } }
- sp.counters.days_counter(sc: Schedule, intent: Intent) dict[str, dict[str, int | Counter]] #
Счётчик по дням с использованием sc.lessons.
Производит подсчёт элементов относительно дней недели в расписании. Использует намерения для уточнения результатов работы счётчиков.
Пример результатов работы счётчика:
{ "1": { # День недели (0 - понедельник, 5 - суббота). "total": 12 # Общее количесво элементов расписания. "cl": Counter() # Количество элементов по классам. "lessons": Counter() # Количесвто элементов по урокам. "cabinets": Counter() # Количесво элементов по кабнетам. } }
- sp.counters.index_counter(sc: Schedule, intent: Intent, cabinets_mode: bool | None = False) dict[str, dict[str, int | Counter]] #
Счётчик уроков/кабинетов с использованием индексов.
Производит подсчёт элементов расписания в счётиках. В зависимости от режима считает уроки или кабинеты. Использует намерения, для уточнения результатов счётчика.
Осторожно
Этот счётик сильно отличается
Обратите внимаение, что поскольку этот счётчик использует в подсчёте индексы, то и шалон результатов рабоыт этого счётчика отличается.
cabinets
obj
another
false
lesson
cabinet
true
cabinet
lesson
Пример результатов работы счётчика:
{ "obj": { # урок или кабинет в зависимости от режима. "total": 12 # Общее количесво элементов расписания. "cl": Counter() # Количество элементов по классам. "days": Counter() # Количесвто элементов по дням. "main": Counter() # Количесво элементов по `another`. } }
- Параметры:
- Результат:
Подсчитанные элементы расписнаия по урокам/кабинетам.
- Тип результата:
dict[str, dict[str, Union[int, Counter]]]