counters#
Счётчики элементов расписания.
Проедостовляют вспомогательные функции для подсчёта количества элементов в расписании. Эти статистические функции могут использоваться для последующего анализа расписания. Все функции используют намерения, для уточнения результатов подсчёта элементов.
Обрабите внимение, что счётчики возвращают «сырой» результат. Который вы можеет в последствии самостоятельно обработать в необходимый вам формат.
Совет
Если вашей целью является использовать текстовый результат работы счётчиков,
то обратите внимание на класс sp.text_counter.TextCounter.
Содержит:
Перечисление подгрупп счётчика.
Вспомогательные функции для результатов счётчиков.
- Счётчики:
классы.
Дни.
Индексы (уроки/кабинеты).
- class sp.counters.CounterTarget(value)#
Описывает все доступные подгруппы счётчиков.
Пример использования с TextCounter:
# coutnter - экземпляр TextCounter с переданным Schedule message = counter.cl( sc.construct_intent() target=CounterTarget.CL )
NONE: То же самое что и None, без цели отображения.
CL: По классам в расписании.
DAYS: По дням недели.
LESSONS: По урокам (l_index).
CABINETS: По кабинетам (c_index).
- MAIN: Противоположный выбранному счётчику индекса.
Если это счётчик уроков - то по кабинетам. И напротив, если это счётчик кабентов, то по урокам.
Вспомогательные функции#
Используеются для поддержания работы основных функций счётчиков.
- 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]]#
Меняет ключ и занчение collections.Counter местами.
Перевоварачивает счётчик из name:count -> count:[name, name, name]. Используется в групперовке результатов работы счётчиков по количеству. Также он будет пропускать пустые значения при подсчёте.
- Параметры:
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]]]