05/17 Пакетирование
Автоматизация на примере doit
- Зачем нужно и когда не нужно
- Понятие задания и составного задания
- Понятие целевого файла и зависимости на файл
Пример: диаграмма (векторная) → картинка → иконка (уменьшенная)
Использование setuptools (на примере GradeProject2021)
Настройка pyproject.toml и выбор setuptools
- Указание сборочных зависимостей
Файл setup.cfg
- Создание бинарного дистрибутива wheel
- Указание эксплуатационных зависимостей
install_requires =
- Указание дополнительных данных пакета
include_package_data = True и [options.package_data]
- Задание пускового сценария
[options.entry_points]
- Указание эксплуатационных зависимостей
- Создание архива с исходниками:
- Файлы по умолчанию
Файл MANIFEST.in
Задача_1: создать и развернуть пакет для несложной программы
- Напишите программу, решающую линейное уравнение a*x+b=0.
- Эта программа должна:
- получать на вход значения a и b
выполнять решение уравнения в функции solve(a,b), которая при a!=0 возвращает корень уравнения, а при a==0 возвращает None
если a!=0, вычислять и выводить текст "Root: <корень_уравнения>", в противном случае выводить "NO ROOTS"
вывод текста должен быть осуществлён при помощи pyfiglet
напишите для функции solve() несколько тестов, включая тест для a==0
локализуйте программу при помощи babel: программа должна вместо "Root:" выводить "Корень:", а вместо "NO ROOTS" - "КОРНЕЙ НЕТ"
- Эта программа должна:
Напишите автоматизацию с помощью doit
- Проверьте
что wheel устанавливается, тянет по зависимостям pyfiglet, и работает вместе с переводом в отдельном venv
- что в архив с исходниками попали исходники модуля, тесты и исходник перевода (но не шаблон и не скомпилированный перевод)
- Напишите программу, решающую линейное уравнение a*x+b=0.
Д/З
- Дописать и выложить по стандартному протоколу решение Задачи_1