понедельник, 2 июня 2025 г.

Makefile, Giga, Python. Code Format, Tools

Makefile, Giga, Python. Code Format, Tools

https://giga.chat/link/gcsObBTGeV

Makefile — это инструмент, традиционно используемый в Unix-системах для автоматизации процессов сборки и выполнения различных задач.

В контексте Python-разработки Makefile помогает автоматизировать часто повторяющиеся операции, такие как установка зависимостей,

запуск тестов, очистка временной информации и подготовка документаций.

Зачем нужен Makefile для Python?

Разработчики нередко сталкиваются с необходимостью выполнения одних и тех же задач снова и снова. Например:

  • Установка зависимостей (pip install -r requirements.txt)
  • Запуск тестов (pytest)
  • Генерация документации (sphinx-build)
  • Очистка временных файлов (find . -name "__pycache__" -delete)

Все эти задачи можно собрать в Makefile, сделав их доступными через простые команды вида make install, make test, make clean и т.д.

Как составить хороший Makefile для Python?

Makefile состоит из заданий (targets), каждое из которых связано с набором команд. Пример простого Makefile для Python-проекта:

.PHONY: help install test clean docs

help:
    @echo "Available commands:"
    @echo "  install - Install dependencies"
    @echo "  test    - Run unit tests"
    @echo "  clean   - Remove temporary files"
    @echo "  docs    - Generate documentation"

install:
    pip install -r requirements.txt

test:
    pytest

clean:
    find . -type d -name "__pycache__" -exec rm -rf {} +
    find . -type f -name "*.py[cod]" -delete

docs:
    sphinx-build -b html docs/source docs/build/html

Объяснение примеров:

  • help: Первая цель должна показывать список доступных команд.
  • install: Устанавливает зависимости из файла requirements.txt.
  • test: Запускает тесты с помощью pytest.
  • clean: Очищает временные файлы, созданные при компиляции и тестировании.
  • docs: Генерирует HTML-документацию с помощью Sphinx.

Совет по созданию Makefile:

  • Четкие названия: Выбирайте информативные и однозначные названия целей.
  • Краткость: Сделайте команды короткими и выразительными.
  • Последовательность: Располагайте задачи в логическом порядке.
  • Зависимости: Используйте зависимости между целями, если одна задача должна зависеть от результатов другой.

Распространённая практика:

Часто встречающиеся цели в Makefile для Python-проектов:

  • install: Установка зависимостей.
  • dev_install: Установка зависимостей для разработки.
  • format: Форматирование кода (например, с помощью Black или Ruff).
  • lint: Запуск линтеров (например, Flake8 или Ruff).
  • test: Запуск тестов (например, с помощью Pytest).
  • coverage: Генерация отчёта о покрытии кода тестами.
  • clean: Очистка временных файлов.
  • dist: Пакетирование проекта (создание колес, архива).

Заключение:

Makefile — это замечательный инструмент для автоматизации рутинных задач в Python-разработке.

Он позволяет сэкономить массу времени и усилий, сведя регулярные операции к простым командам вида make <target>.

Созданный однажды, такой файл надолго останется полезным ресурсом в любом крупном проекте.

---------------------------

Зачем использовать Makefile в Python?

Рассмотрим частые действия, которые разработчики выполняют ежедневно:

  • Установка зависимостей (pip install -r requirements.txt);
  • Запуск тестов (pytest);
  • Генерация документации (sphinx-build);
  • Очистка временного мусора (rm -rf __pycache__).

Каждая из этих задач может быть выполнена отдельно, но зачем тратить время на постоянное переключение между терминалом и командой,

если можно воспользоваться удобной системой Makefile?

Пример простого Makefile для Python:

Давайте создадим простой Makefile, который автоматизирует наши типичные задачи:

.PHONY: help install test clean format lint docs

help:
    @echo "Usage:"
    @echo "	make install          Install dependencies"
    @echo "	make test             Run unit tests"
    @echo "	make clean            Clean generated files"
    @echo "	make format           Format code using Black"
    @echo "	make lint             Lint code using Ruff"
    @echo "	make docs             Build documentation"

install:
    pip install -r requirements.txt

test:
    pytest

clean:
    find . -type d -name "__pycache__" -exec rm -rf {} +
    find . -type f -name "*.py[cod]" -delete

format:
    black .

lint:
    ruff .

docs:
    sphinx-build -b html docs/source docs/build/html

Объяснение примера:

  • help: первая цель должна выводить список доступных команд.
  • install: устанавливает зависимости из файла requirements.txt.
  • test: запускает тесты с помощью pytest.
  • clean: очищает временные файлы, созданные при компиляции и тестировании.
  • format: форматирует код с помощью Black.
  • lint: проверяет код с помощью Ruff.
  • docs: генерирует HTML-документацию с помощью Sphinx.

Совет по созданию Makefile:

  • Называйте цели понятно и однозначно.
  • Сокращайте команды до минимума, оставляя лаконичные и эффективные действия.
  • Расположите задачи в логическом порядке.
  • Определите зависимости между задачами, если одна зависит от другой.

Распространённые задачи в Makefile для Python:

  • install: установка зависимостей.
  • dev_install: установка зависимостей для разработки.
  • format: форматирование кода.
  • lint: проверка стиля и качества кода.
  • test: запуск тестов.
  • coverage: отчёт о покрытии кода тестами.
  • clean: очистка временных файлов.
  • dist: создание распределительного пакета.

Заключение:

Makefile — это превосходный помощник для разработчиков Python, позволяющий экономить время и силы,

сводя повторяющиеся действия к короткой команде make <task>.

Однажды созданный, такой файл навсегда остается ценным ресурсом для каждого крупного проекта.

Комментариев нет:

Отправить комментарий