Структура git-репозитория для практикума 2024 г. по Python
Регистрация
После создания репозитория его следует зарегистрировать здесь: https://git.cs.msu.ru/gkuryachiy/prac/-/issues/8
- Если у вас не аккаунта на git.cs.msu.ru, используйте гостевой
- Указать ФИО и группу
Репозиторий
Репозиторий должен быть публичный
- Название репозитория может быть любым, структуру и именование каталогов с домашними заданиями см. ниже.
Всё, что вы сделали за время занятия, следует публиковать в этом репозитории в день занятия
Все решения и тесты должны быть опубликованы в репозитории до окончания дедлайна по заданию
Правила именования
Для каждого семинара создается каталог с именем вида <ГГГГММДД> (выдача команды date "+%Y%m%d"), дата - того семинара, на котором выдано задание.
Все программы, написанные во время занятия, записываются в каталог <ГГГГММДД>/0
Для каждого задания создаются подкаталоги <ГГГГММДД>/1, <ГГГГММДД>/2 и т. д.
В подкаталоге содержатся:
ровно один .py-файл с текстом решения, имя файла должно быть prog.py
исключение: задания, в которых явно требуется наличие нескольких .py-файлов. В таком случае задание оформляется в виде набора модулей, каждый из которых располагается в каталоге src/имя_модуля и запускается из каталога src командой python3 -m имя_модуля.
подкаталог check/, в котором хранятся примеры входных данных и эталонного вывода (если нужны по заданию).
Подсистема проверки домашних заданий
hworker-0.9.6-py3-none-any.whl
скачиваем, делаем pip install /путь/куда/скачали/hworker-0.9.6-py3-none-any.whl (Python 3.12+)
(вариант: pip3 install)
Если дистрибутив артачится и не хочет ставить, использовать изолированное окружение:
python3 -m venv отдельный_каталог; cd отдельный_каталог; source bin/activate
- вот оттуда уже заработает; оттуда и запускать
- Персональный запуск (не для кросс-тестирования):
hworker -p из каталога с решением или hworker -p каталог-с решением
например, hworker -p pythonprac/20231017/1
Пример:
20210903/1
prog.py
check/
1.in
1.out
2.in
2.out
- …
Как написать тест на класс/функцию?
- К файлу с классом/функцией необходимо приписать тестирующий код
В файл с тестом (1.in) кладётся программа на питоне, в которой используется тестируемый класс или функция
В файл с эталонным выводом попадает результат этого print()
Пример:
prog.py
check/1.in
print(C().A+42-C().fun(33))
check/1.out
9
Кросс-тестирование
- Подготавливаем окружение (необязательно, но практика показала, что так меньше ошибок)
python3 -m venv crosstest cd crosstest source bin/activate # Вариант для Linux / MacOS Scripts\activate # Вариант для windows pip install путь_до_hworker.whl
Для того, чтобы возобновить работу в окружении после выхода из него, надо вновь войти в каталог окружения и запустить activate
В некоторых случаях стартовый сценарий в командной строке не виден, тогда вместо hworker надо писать python -m hworker
- Быстрая проверка, что HWorker запускается:
hworker -s -c update
Это тестовый пример, он заводится в подкаталоге sample
- Он выдаст журнал проверок
можно даже запустить hworker -s -c update -c publish, но не обязательно ☹
Выберите себе напарника из числа участвующих в вашем практикуме (публикатор на grep.cs.msu.ru)
- Подготовка HWorker к кросс-тестированию
Скачиваем конфигурационный файл и кладём в тот же каталог
- Вписываем в этот файл себя и напарника
Имя — строго как в публикаторе на grep.cs.msu.ru
Репозиторий — строго в формате https://… (не git@git:…). Проверьте, что этот репозиторий доступен публично и его можно склонировать.
- Проверяем, что HWorker работает в режиме полной проверки:
hworker путь-до/personal.toml -c update
- Ошибок быть не должно
Заходим в свой репозиторий. Подкладываем в подкаталог check (рядом с файлами-тестами) всех задач (кроме №0 — классных работ, и задач, относительно которых отмечено, что кросс-тестов по ним не надо) файл remote с описанием тестов, которые написали не вы. Формат файла:
[remote] "Напарник:20241008/2/01" = [] "Напарник:20241008/2/02" = [] "Напарник:20241008/2/03" = [] …
Напарник — ID напарника, 20241008/2 — ID задачи, 01 — имя файла без расширения .in/.out
Пушим файлы */*/remote в репозиторий
Выполняем кросс-тестирование этой задачи той же командой (update).
Посмотреть результаты можно командой hworker путь-до/personal.toml -c "show result"
Ключевое слово для поиска — "rating = …". В идеале должно быть 1.0