Различия между версиями 4 и 5
Версия 4 от 2021-05-16 23:06:17
Размер: 3053
Редактор: FrBrGeorge
Комментарий:
Версия 5 от 2021-05-17 14:12:33
Размер: 3723
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 9: Строка 9:
  * Настройка `pyproject.toml` и выбор `setuptools`   * Настройка [[https://git.sr.ht/~frbrgeorge/GradeProject2021/tree/master/item/pyproject.toml|pyproject.toml]] и выбор `setuptools`
Строка 11: Строка 11:
  * Файл `setup.cfg`   * Файл [[https://git.sr.ht/~frbrgeorge/GradeProject2021/tree/master/item/setup.cfg|setup.cfg]]
Строка 14: Строка 14:
    * `install_requires =`
Строка 15: Строка 16:
    * `include_package_data = True` и `[options.package_data]`
Строка 16: Строка 18:
    * `[options.entry_points]`
Строка 18: Строка 21:
   * Файл `MANIFEST.in`    * Файл [[https://git.sr.ht/~frbrgeorge/GradeProject2021/tree/master/item/MANIFEST.in|MANIFEST.in]]
Строка 35: Строка 38:
   * что wheel устанавливается и работает вместе с переводом отдельном `venv`
   * что в архив с исходниками попали тесты и исходник перевода
   * что wheel устанавливается, тянет по зависимостям `pyfiglet`, и работает ''вместе с переводом'' в отдельном `venv`
   * что в архив с исходниками попали исходники модуля, тесты и исходник перевода (но не шаблон и не скомпилированный перевод)

== Д/З ==
 * Дописать и выложить по стандартному протоколу решение Задачи_1

05/17 Пакетирование

  • Автоматизация на примере doit

    • Зачем нужно и когда не нужно
    • Понятие задания и составного задания
    • Понятие целевого файла и зависимости на файл
    • {i} Пример: диаграмма (векторная) → картинка → иконка (уменьшенная)

  • Использование setuptools (на примере GradeProject2021)

    • Настройка pyproject.toml и выбор setuptools

      • Указание сборочных зависимостей
    • Файл setup.cfg

    • Создание бинарного дистрибутива wheel
      • Указание эксплуатационных зависимостей
        • install_requires =

      • Указание дополнительных данных пакета
        • include_package_data = True и [options.package_data]

      • Задание пускового сценария
        • [options.entry_points]

    • Создание архива с исходниками:
      • Файлы по умолчанию
      • Файл MANIFEST.in

  • <!> Задача_1: создать и развернуть пакет для несложной программы

    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" - "КОРНЕЙ НЕТ"

    2. Напишите автоматизацию с помощью doit

      • Обновления и компиляции перевода
      • Запуска тестов
      • Сборки wheel с помощью build

      • Сборки архива с исходниками с помощью build

      • Очистки всех генератов, включая шаблон перевода
    3. Проверьте
      • что wheel устанавливается, тянет по зависимостям pyfiglet, и работает вместе с переводом в отдельном venv

      • что в архив с исходниками попали исходники модуля, тесты и исходник перевода (но не шаблон и не скомпилированный перевод)

Д/З

  • Дописать и выложить по стандартному протоколу решение Задачи_1

LecturesCMC/PythonDevelopment2021/Prac/11_Packaging (последним исправлял пользователь FrBrGeorge 2021-05-17 14:12:33)