PyJudge.Update
Система доставки. Позволяет скачивать / кешировать / обновлять все решения всех заданных Д/З всех зарегистрированных пользователей и формировать «паспорт» решения с метаданными (время первого/последнего коммита, закешированное расположение удалённых тестов и т. п.).
API
get_task_list() -> list[(name, ID, deadline)] — список Д/З
get_user_list() -> list[(name, ID, repository_url)] — список пользователей
get_task(UserID, TaskID) ->
( Путь к закешированному каталогу с решением, Путь к закешированному каталогу с тестами (обычно входит в состав Д/З), Путь к закешированному каталогу с удалёнными тестами, Cокращённый git log по Д/З: list[(файл из Д/З, время коммита)] )
- (один и тот же файл может участвовать в нескольких коммитах)
- Элементы кортежа могут быть пустыми, если соответствующего объекта нет
get_remote_tests(файл с URL-ами) -> Путь к скачанному (закешированному?) каталогу с удалёнными тестами
- (для локального запуска)
- … TODO
На входе
- Список пользователей:
- ФИО, URL репозитория с решениями
- Список Д/З
- Идентификатор, время дедлайна
В репозитории может быть файл, в котором указано, где лежат удалённые тесты, этот файл надо распарсить, а тесты скачать
На выходе
- Каталог со всеми решениями
- Метаданные по каждому Д/З:
- время дедлайна
- Время коммитов (и какие файлы входили в коммит)
- Пути к скачанным удалённым тестам