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