Семестровый проект
Семестровый проект — это публичный git-репозиторий с кодом на Python3, содержащий всё необходимое для сборки и деплоймента некоторого приложения (кроме секретных ключей, конечно ☺).
- Все стадии сборки проекта должны воспроизводиться любым желающим (например, мной!)
- Совместная разработка
- В проекте должно быть более одного участника; статистика участия — по коммитам и по объёму написанного (оба измерения неидеальны, я это знаю)
- Единая дисциплина оформления коммитов, которая должна включать правила:
- одно изменение — один коммит
- многострочное описание сложных изменений
- Один публичный репозиторий, в который коммиты от других участников принимает его владелец (схема «precious source»)
Грамотное ведение репозитория (отсутствие генератов, типа .mo и т. п.)
Оформление исходного текста
- Стилевые анализаторы (исходного текста и и docstring) не находят ошибок в исходных текстах.
Варианты flake8 + pydocstyle; pylint или аналоги
Некоторые требования анализаторов можно запрещать в config-файле
Все функции и классы должны быть по возможности аннотированы. Если аннотация требует безумных дженериков или по каким-то другим соображением нежелательна, её можно опускать.
Наличие строк документации обязательно.
- Стилевые анализаторы (исходного текста и и docstring) не находят ошибок в исходных текстах.
- Покрытие модульным тестированием — не менее 75%, с использованием тестового фреймворка
- Документирование
- Локализация
Строго рекомендуется babel
- Потребуется продемонстрировать работу как минимум в двух локалях
- Сборка дистрибутива с исходниками
- Файлы в дистрибутиве с исходниками должны быть необходимыми и достаточными
- Можно эффекта ради запаковать туда собранную документацию
- Сборка и установка дистрибутива
- Формат дистрибутива — wheel-пакет; если требуются дополнительные действия после установки, они должны быть описаны в документации
Профиль проекта должен быть оформлен в виде pyproject.toml; запускаемые приложения должны быть оформлены как точки входа pyproject.toml
- Установочные зависимости и не-Python файлы в составе пакета должны быть необходимыми и достаточными
- Автоматизация
Замечания
- Рекомендаций по инструментам можно не придерживаться, если есть обоснование использовать другие
- Исключения из условия №0: секретные ключи (например, TG-ботов); ручные действия, если ваша работа — это часть большего фреймфорка и т. п.
- Темы, которые меня достали в прошлом году (их делать не рекомендуется):
- «Трекер привычек»
Методика проверки
Проверка происходит после git clone и активации чистого окружения
- показать статистику участия в проекте
- подтвердить чистоту репозитория
- показать профиль оркестрации, и действия по сборке делать с его помощью
- показать проверку стиля
- показать запуск тестов и площадь покрытия
- показать выгонку техдокументации и саму документацию
- сформировать wheel-пакет (здесь проверяется необходимость и достаточность)
- сформировать дистрибутив с исходниками (здесь проверяется необходимость и достаточность)
- задеплоить в чистое окружение
- показать работу в двух локалях
Оценка выставляется суммированием баллов по каждому пункту:
+1 претензий нет, или они мелкие;
0 формально пункт выполнен, но претензии серьёзные, например, «само» не заработало, пришлось доделывать руками;
-1 формально пункт не выполнен.
Баллы |
Условие |
Оценка |
8…10 |
|
ОТЛ / ЗАЧЁТ |
5…7 |
|
ХОР / ЗАЧЁТ |
2…4 |
отсутствие «-1» |
УДОВЛ / ЗАЧЁТ |
2…4 |
наличие «-1» |
УДОВЛ / незачёт |
-10…1 |
|
неуд / незачёт |
В случае значимо неравномерного участия в проекте водится КТУ — есть шанс получить оценку меньше, чем товарищи
Пользоваться ИИ можно, но экзаменатор по каждому пункту имеет право ткнуть в исходник и спросить «почему так?». Ответ «не знаю, калькулятор всегда показывал, что 2×2=4так накодила ИИшечка» оценивается не выше 0 баллов.
Регистрация проекта
Зарегистрировать публичный репозиторий проекта в качестве вашего персонального issue на странице репозитория PythonDevelopment2026.
- В issue указать:
Короткую формулировку сути проекта (см. минимальное содержимое проекта при регистрации)
Ссылку на публичный репозиторий проекта
- Список участников проекта в виде:
- ФИО1, группа1 (факультет1, если не ВМК) и nick1, под которым появляются коммиты в репозитории
- ФИО2, группа2 (факультет2, если не ВМК) и nick2, под которым появляются коммиты в репозитории
- …
- В репозитории проекта должен быть README-файл с постановкой задачи.
- Для UI — проект интерфейса (можно в виде диаграммы или даже нарисованный от руки)
- Постановка и UI не обязаны в точности совпадать с реализацией
