Задачи

Задача 1

Добавьте в makefile задачи для автоматического форматирования кода по pep8, а также для публикации проекта в PyPI. Добавьте информационное сообщение для каждой задачи в makefile.

Ответ

(код):

PACKAGE_NAME := mtracker
PYTHON := pipenv run python

.PHONY: install test clean package docs publish format build

install:
	@echo "Setting up pipenv virtual environment..."
	pipenv install --dev

test:
	@echo "Running tests..."
	pipenv run pytest

clean:
	@echo "Cleaning up..."
	rm -rf dist/ build/ *.egg-info

package:
	@echo "Packaging the library..."
	$(PYTHON) setup.py sdist bdist_wheel

docs:
	@echo "Generating documentation..."
	pipenv run pdoc --html $(PACKAGE_NAME) --output-dir docs --force

publish: package
	@echo "Publishing the package to PyPI..."
	pipenv run twine upload dist/*

format:
	@echo "Formatting code with autopep8..."
	pipenv run autopep8 --in-place --recursive mtracker tests

Задача 2

Прямой вызов setup.py считается не самым надежным на сегодня способом. Мы написали урок с его использованием для того, чтобы показать явно все шаги. Прочитайте статью и замените вызов python setup.py на python -m build.

Ответ

(код):

PACKAGE_NAME := mtracker
PYTHON := pipenv run python

.PHONY: install test clean package docs publish format build

install:
	@echo "Setting up pipenv virtual environment..."
	pipenv install --dev

test:
	@echo "Running tests..."
	pipenv run pytest

clean:
	@echo "Cleaning up..."
	rm -rf dist/ build/ *.egg-info

package:
	@echo "Packaging the library..."
	$(PYTHON) -m build

docs:
	@echo "Generating documentation..."
	pipenv run pdoc --html $(PACKAGE_NAME) --output-dir docs --force

publish: package
	@echo "Publishing the package to PyPI..."
	pipenv run twine upload dist/*

format:
	@echo "Formatting code with autopep8..."
	pipenv run autopep8 --in-place --recursive mtracker tests