CURRENT_SIGN_SETTING := $(shell git config commit.gpgSign) .PHONY: clean-pyc clean-build docs help: @echo "clean-build - remove build artifacts" @echo "clean-pyc - remove Python file artifacts" @echo "lint - check style with flake8" @echo "test - run tests quickly with the default Python" @echo "testall - run tests on every Python version with tox" @echo "release - package and upload a release" @echo "dist - package" clean: clean-build clean-pyc clean-build: rm -fr build/ rm -fr dist/ rm -fr *.egg-info clean-pyc: find . -name '*.pyc' -exec rm -f {} + find . -name '*.pyo' -exec rm -f {} + find . -name '*~' -exec rm -f {} + lint: tox -elint lint-roll: isort --recursive tests $(MAKE) lint test: pytest tests test-all: tox build-docs: sphinx-apidoc -o docs/ . setup.py "*conftest*" $(MAKE) -C docs clean $(MAKE) -C docs html $(MAKE) -C docs doctest ./newsfragments/validate_files.py towncrier --draft --version preview docs: build-docs open docs/_build/html/index.html linux-docs: build-docs xdg-open docs/_build/html/index.html release: clean CURRENT_SIGN_SETTING=$(git config commit.gpgSign) git config commit.gpgSign true # Let UPCOMING_VERSION be the version that is used for the current bump $(eval UPCOMING_VERSION=$(shell bumpversion $(bump) --dry-run --list | grep new_version= | sed 's/new_version=//g')) # Now generate the release notes to have them included in the release commit towncrier --yes --version $(UPCOMING_VERSION) # Before we bump the version, make sure that the towncrier-generated docs will build make build-docs # We need --allow-dirty because of the generated release_notes file that goes into the release # commit. No other files are added accidentially. The dry-run still runs *without* --allow-dirty bumpversion --allow-dirty $(bump) git push upstream && git push upstream --tags python setup.py sdist bdist_wheel twine upload dist/* git config commit.gpgSign "$(CURRENT_SIGN_SETTING)" dist: clean python setup.py sdist bdist_wheel ls -l dist