Skip to content

study v1.4.0

Choose a tag to compare

@nowherewashere nowherewashere released this 20 Sep 01:06
· 24 commits to master since this release

Сводка видит файлы из старых курсов и пересдачи, submit проверяет себя перед отправкой, перезалитые методички перекачиваются.

  • «Новое в курсах» — по составу, а не по дате: снимок хранит состав курсов, и файл, скопированный преподавателем из прошлогоднего курса (с timemodified того года), теперь виден и в сводке, и в study files. core_course_get_updates_since такие файлы не показывает. Если состав курса не прочитался, прошлый список сохраняется — назавтра всё не станет «новым».
  • Пересдачи («Пересдача лабораторной работы № N») — не срок, пока лаба не просрочена и не сдана: в «Сроки», «Горит» и «новое задание» они не попадают, в --json есть retakes[] с retake_of и needed. Скрытые ограничением доступа пересдачи — по тому же правилу.
  • study files --pull перекачивает перезалитый в ТУИС файл поверх копии (отметки «есть, в ТУИС новее» и «обновлён», «скачано N, из них обновлено M»); копия ложится на место старой, в том числе в подкаталог, mtime = timemodified из ТУИС.
  • study submit: план показывает, что принимает задание (текст, число, типы и размер файлов — из configs), и отказывает при несовпадении даже с --confirm. --attach <файл>… проверяет вложения на диске и загружает их только при отправке; study upload → --files <itemid> остаётся.
  • Курс, появившийся в записи ТУИС (или выведенный из COURSE_IGNORE), объявляется строкой «Новый курс в ТУИС: …». study assigns --json отдаёт intro — текст задания.
  • study setup и study courses --setup кладут заготовку NOTES.md по курсу (готовый файл не трогают). В docs/AGENTS.md: что делать с NOTES.md при первом обращении к предмету, курс без репозитория, новые методички, раздел «Работа над самим инструментом», грабли про invalidtoken, пояс и пересдачи.
  • Windows: study state --since all больше не падает в fmt.moment (OSError 22 на первых часах эпохи) — #1 от @Paefremova; регрессионный тест гоняется в CI на windows-latest.