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(), # Элементы по кабинетам.
    }
}
Параметры:
  • sc (Schedule) – Экземлпря расписания для которого производить подсчёт.

  • intent (Intent) – Намерения для уточнения рещультатов подсчёта.

Результат:

Подсчитанные элементы расписания по классам.

Тип результата:

dict[str, dict[str, Union[int, 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() # Количесво элементов по кабнетам.
    }
}
Параметры:
  • sc (Schedule) – Экземпляр расписания уроков для которого считать.

  • intent (Intent) – Намерения для уточнения резульатов поиска.

Результат:

Подсчитанные элементы расписнаия по дням.

Тип результата:

dict[str, dict[str, Union[int, 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`.
    }
}
Параметры:
  • sc (Schedule) – Экземпляр расписания уроков для которого считать.

  • intent (Intent) – Намерения для уточнения резульатов поиска.

  • cabinets_mode (Optional[bool]) – Длеать ли подсчёты по кабинетам.

Результат:

Подсчитанные элементы расписнаия по урокам/кабинетам.

Тип результата:

dict[str, dict[str, Union[int, Counter]]]