Семестровый проект

О регистрации проекта

Семестровый проект — это публичный git-репозиторий с кодом на Python3, содержащий всё необходимое для сборки и деплоймента некоторого приложения (кроме секретных ключей, конечно ☺).

  1. Все стадии сборки проекта должны воспроизводиться любым желающим (например, мной!)
  2. Совместная разработка
    • В проекте должно быть более одного участника; статистика участия — по коммитам и по объёму написанного (оба измерения неидеальны, я это знаю)
    • Единая дисциплина оформления коммитов, которая должна включать правила:
      • одно изменение — один коммит
      • многострочное описание сложных изменений
    • Один публичный репозиторий, в который коммиты от других участников принимает его владелец (схема «precious source»)
    • Грамотное ведение репозитория (отсутствие генератов, типа .mo и т. п.)

  3. Оформление исходного текста

    • Стилевые анализаторы (исходного текста и и docstring) не находят ошибок в исходных текстах.
    • Некоторые требования анализаторов можно запрещать в config-файле

    • Все функции и классы должны быть по возможности аннотированы. Если аннотация требует безумных дженериков или по каким-то другим соображением нежелательна, её можно опускать.

    • Наличие строк документации обязательно.

  4. Покрытие модульным тестированием — не менее 75%, с использованием тестового фреймворка
  5. Документирование
    • Описание проекта в README

    • Программная документация (строго рекомендуется Sphinx

    • Инструкция по сборке и установке (возможно, предельно краткая)
    • Пользовательская документация любого формата
  6. Локализация
    • Строго рекомендуется babel

    • Потребуется продемонстрировать работу как минимум в двух локалях
  7. Сборка дистрибутива с исходниками
    • Файлы в дистрибутиве с исходниками должны быть необходимыми и достаточными
    • Можно эффекта ради запаковать туда собранную документацию
  8. Сборка и установка дистрибутива
    • Формат дистрибутива — wheel-пакет; если требуются дополнительные действия после установки, они должны быть описаны в документации
    • Профиль проекта должен быть оформлен в виде pyproject.toml; запускаемые приложения должны быть оформлены как точки входа pyproject.toml

    • Установочные зависимости и не-Python файлы в составе пакета должны быть необходимыми и достаточными
  9. Автоматизация
    • Пункты 3-7 методики должны быть оформлены в виде задач инструмента оркестрации (рекомендуется doit), в котором есть понятие зависимости заданий и / или зависимости объектов (как в GNU Make).

Замечания

Методика проверки

Проверка происходит после git clone и активации чистого окружения

  1. показать статистику участия в проекте
  2. подтвердить чистоту репозитория
  3. показать профиль оркестрации, и действия по сборке делать с его помощью
  4. показать проверку стиля
  5. показать запуск тестов и площадь покрытия
  6. показать выгонку техдокументации и саму документацию
  7. сформировать wheel-пакет (здесь проверяется необходимость и достаточность)
  8. сформировать дистрибутив с исходниками (здесь проверяется необходимость и достаточность)
  9. задеплоить в чистое окружение
  10. показать работу в двух локалях

Оценка выставляется суммированием баллов по каждому пункту:

Баллы

Условие

Оценка

8…10

ОТЛ / ЗАЧЁТ

5…7

ХОР / ЗАЧЁТ

2…4

отсутствие «-1»

УДОВЛ / ЗАЧЁТ

2…4

наличие «-1»

УДОВЛ / незачёт

-10…1

неуд / незачёт

Регистрация проекта

Зарегистрировать публичный репозиторий проекта в качестве вашего персонального issue на странице репозитория PythonDevelopment2026.

LecturesCMC/PythonDevelopment2026/GraduateProject (последним исправлял пользователь FrBrGeorge 2026-06-09 13:48:25)