-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
146 lines (114 loc) · 3.62 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
# -*- mode: makefile-gmake -*-
PYTHON ?= python3
coverage = ${PYTHON} -m coverage
twine = ${PYTHON} -m twine
version = $(shell PYTHONPATH=lib ${PYTHON} -c "import pipettor; print(pipettor.__version__)")
ifeq ($(shell uname),Darwin)
browser = open
else
browser = true
endif
.PHONY: help clean clean-build clean-pyc clean-docs clean-tests \
lint vulture test test-all coverage \
docs docs-open \
install \
dist test-pip \
test-release test-release-pip \
release
testenv = testenv
pypi_url = https://upload.pypi.org/simple/
testpypi_url = https://test.pypi.org/simple/
define envsetup
@rm -rf ${testenv}
mkdir -p ${testenv}
${PYTHON} -m virtualenv --quiet ${testenv}
endef
envact = cd ${testenv} && source ./bin/activate
help:
@echo "clean - remove all build, test, coverage and Python artifacts"
@echo "clean-build - remove build artifacts"
@echo "clean-pyc - remove Python file artifacts"
@echo "clean-docs - remove generated documentation"
@echo "clean-test - remove test and coverage artifacts"
@echo "lint - check style with flake8"
@echo "vulture - check for unused code"
@echo "test - run tests quickly with the default Python"
@echo "test-all - run tests on every Python version with tox"
@echo "coverage - check code coverage quickly with the default Python"
@echo "docs - generate Sphinx HTML documentation, including API docs"
@echo "docs-open - gererate documents and open in web local browser"
@echo "install - install the package to the active Python's site-packages"
@echo "dist - package"
@echo "test-pip - test install the package using pip"
@echo "release-testpypi - test upload to testpypi"
@echo "test-release-testpypi - install from testpypi"
@echo "release - package and upload a release"
@echo "test-release - test final release"
clean: clean-build clean-pyc clean-test clean-docs
clean-build:
rm -fr build/
rm -fr dist/
rm -fr .eggs/
rm -fr ${testenv}/
rm -fr pipettor.egg-info/
clean-pyc:
rm -fr lib/pipettor/__pycache__
rm -fr tests/__pycache__
clean-docs:
rm -f docs/pipettor.rst
rm -f docs/modules.rst
$(MAKE) -C docs clean
clean-test:
rm -fr .tox/
rm -f .coverage
rm -fr htmlcov/
rm -fr tests/output/
lint:
${PYTHON} -m flake8 --color=never lib/pipettor tests
vulture:
${PYTHON} -m vulture lib/pipettor tests
pytestOpts = --tb=native -rsx
test:
PYTHONPATH=lib:${PYTHONPATH} ${PYTHON} -W always -m pytest ${pytestOpts} tests
test-all:
tox
coverage:
${coverage} run --source pipettor setup.py test
${coverage} report -m
${coverage} html
${browser} htmlcov/index.html
docs:
rm -f docs/pipettor.rst
rm -f docs/modules.rst
sphinx-apidoc -o docs/ lib
$(MAKE) -C docs clean
$(MAKE) -C docs html
docs-open: docs
${browser} docs/_build/html/index.html
install: clean
${PYTHON} setup.py install
dist: clean
${PYTHON} setup.py sdist
${PYTHON} setup.py bdist_wheel
ls -l dist
# test install locally
test-pip: dist
${envsetup}
${envact} && pip install --no-cache-dir ../dist/pipettor-${version}.tar.gz
${envact} && ${PYTHON} ../tests/test_pipettor.py
dist_wheel = dist/pipettor-${version}-py3-none-any.whl
dist_tar = dist/pipettor-${version}.tar.gz
# test release to testpypi
release-testpypi: dist
${twine} upload --repository=testpypi ${dist_wheel} ${dist_tar}
# test release install from testpypi
test-release-testpypi:
${envsetup}
${envact} && pip install --no-cache-dir --index-url=${testpypi_url} pipettor==${version}
${envact} && ${PYTHON} ../tests/test_pipettor.py
release: dist
${twine} upload --repository=pypi ${dist_wheel} ${dist_tar}
release-test:
${envsetup}
${envact} && pip install --no-cache-dir pipettor==${version}
${envact} && ${PYTHON} ../tests/test_pipettor.py