intents#

Вспомогательный класс намерений.

При получении например списка изменений может потребоваться уточнить результат относительно дня, кабинета, класса и т.д. Этот класс объединяет множество аргументов: cl, days. lesons. cabinets, а также их валидацию и сборку.

class sp.intents.Intent(cl: set[str] = {}, days: set[int] = {}, lessons: set[str] = {}, cabinets: set[str] = {})#

Вспомогательный класс, хранящий в себе намерения пользователя.

Если вам нужно более точно указать результаты работы расписнаия. Например при поиске или получении списка изменений. Просмотреть результаты для конкретного дня или урока.

Предупреждение

Пожалуйста не вводите данные вручную.

Если вы хотите собрать новое намерение, то используйте метод класса construct:

sc = Schedule()
i = Intent.construct(sc, cl="8в")

Или воспользуйтесь методом parse:

sc = Schedule()
prompt = "9в матем 204"
i = Intent.parse(sc, prompt.split())
cl: set[str]#

Классы намерения (алиас на индекс 0)

days: set[int]#

Дни недели намерения 0-5 (понедельник-суббота) (алиас на индекс 1)

lessons: set[str]#

Уроки намерения, например матем (алиас на индекс 2)

cabinets: set[str]#

Кабенты расписания, например 328 (алиас на индекс 3)

to_str() str#

Запаковывает намерение в строку.

Используется, для сохранения содержимого намерения в строке. Например при сохранении намерения в базу данных или файл.

Примеры запакованных намерений:

  • ::: - Пустое намерение.

  • 9в::матем: - Намерение с классом «9в» и «уроком математика».

  • :1,2:: - Намерение с несколькими значениями (тут днями).

Результат:

Упакованное намерение.

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

str

Сборка намерения#

Методы, используемые для сборки новоего намерения.

classmethod from_str(s: str)#

Распаковывает намерение из строки.

Получает полноценное намерение, которое ранее было упаковано в строку.

# Запаковываем намерение
sc = Schedule()
i = Intent.construct(sc, cl="8в")
i_str = i.to_str()

# Тут будет ваш код...
# ...
# ...

# а теперь вы захотели загрузить намерение из строки
i = Intent.from_str(i_str)

Примечание

Обратите внимание, что метод from_str не производит валидацию передаваемых значений относительно расписания.

Формат строки:

cl:day:lessons:cabinets,cabinets2,cabinetsN

  • «9в:1,2::» -> Intent(cl=[«9в»], days=[1, 2])

Параметры:

s (str) – Строка с упакованным намерение.

Результат:

Новое распакованное намерение.

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

Intent

classmethod construct(sc, cl: Iterable[str] | str = (), days: Iterable[int] | int = (), lessons: Iterable[str] | str = (), cabinets: Iterable[str] | str = ())#

Собирает новый экземпляр намерений.

Занимается сборкой и валидацией нового экземпляра намерений. Вы можете передавать для сборки итерируемые контейнеры.

i = Intent.construct(sc, cl="8а")
# Intent({"8а"}, set(), set(), set())

i = Intent.construct(sc, days=[2, 3], lessons="матем")

Экзмеляр Schedule используется для валидации параметров относительно текущего расписания.

Параметры:
  • sc (Schedule) – Экземпляр расписания уроков для валидации аргументов.

  • cl (Union[Iterable[str], str]) – Какие классы расписания добавить в намерение

  • days (Union[Iterable[int], int]) – Какие дни добавить в намерение (0-5)

  • lessons (Union[Iterable[str], str]) – Какие уроки добавить в намерение (из l_index).

  • cabinets (Union[Iterable[str], str]) – Какие кабинеты добавить в намерение (c_index).

Результат:

Проверенное намерение из переданных аргументов

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

Intent

classmethod parse(sc, args: Iterable[str])#

Извлекает намерения из списка строковых аргументов.

    Урок          Кабинет
    /             /
> Химия вторнки 204 8а
        /           /
    День       класс

Также занимается валидацией параметров, использую класс Schedule относительно текущего расписнаия.

Параметры:
  • sc (Schedule) – Экземпляр расписания уроков для валидации аргументов.

  • args (Iterable[str]) – Арнументы парсинга намерений.

Результат:

Готовое намерение из строковых аргументов.

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

Intent

Пересборка намерения#

Методы чтобы создать новое намерение, основываясь на старом.

Не рекомендуется, начиная с версии v5.7: Считаются устаревшими и будут удалены вместе с классом Intents.

reconstruct(sc, cl: Iterable[str] | str = (), days: Iterable[int] | int = (), lessons: Iterable[str] | str = (), cabinets: Iterable[str] | str = ())#

Пересобирает новый экземпляр намерений.

Занимается сборкой и валидацией нового экземпляра намерений на основе текущего экземпляра. Вы можете передавать для сборки итерируемые контейнеры. Если вы не укзаали какой-то параметр, который уже был в экзмемпляре, он будет взят из текущего экземлпяра.

# Intent({"8а"}, set(), set(), set())
i = Intent.construct(sc, cl="8а")

# Intent({"8а"}, set(), {"матем"}, set())
new_i = i.reconstruct(sc, lessons="матем")

Экзмеляр Schedule используется для валидации параметров относительно текущего расписания.

Параметры:
  • sc (Schedule) – Экземпляр расписания уроков для валидации аргументов.

  • cl (Union[Iterable[str], str]) – Какие классы расписания добавить в намерение

  • days (Union[Iterable[int], int]) – Какие дни добавить в намерение (0-5)

  • lessons (Union[Iterable[str], str]) – Какие уроки добавить в намерение (из l_index).

  • cabinets (Union[Iterable[str], str]) – Какие кабинеты добавить в намерение (c_index).

Результат:

Пересобранное намерение из переданных аргументов

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

Intent

reparse(sc, args: Iterable[str])#

Извлекает намерения из списка строковых аргументов.

Собрает новый экземпляр намерений из строковых аргументов и параметров экземпляра. Если вы не указали какой-то параметр в строковых аргументах он будет подставлен из текущего экземлпяра.

    Урок          Кабинет
    /             /
> Химия вторнки 204 8а
        /           /
    День       класс

Также занимается валидацией параметров, использую класс Schedule относительно текущего расписнаия.

Параметры:
  • sc (Schedule) – Экземпляр расписания уроков для валидации аргументов.

  • args (Iterable[str]) – Арнументы парсинга намерений.

Результат:

Готовое намерение из строковых аргументов.

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

Intent