-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
84 lines (66 loc) · 2.43 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
.PHONY: clean clean-test clean-pyc clean-build help
.DEFAULT_GOAL := help
SRCROOT := src/polyswarmd
TESTSRCROOT := tests/
define PRINT_HELP_PYSCRIPT
import re, sys
for line in sys.stdin:
match = re.match(r'^([a-zA-Z_-]+):.*?## (.*)$$', line)
if match:
target, help = match.groups()
print("%-20s %s" % (target, help))
endef
export PRINT_HELP_PYSCRIPT
help:
@python -c "$$PRINT_HELP_PYSCRIPT" < $(MAKEFILE_LIST)
lint: mypy ## check style
# static checks
-flake8 $(SRCROOT)
# style checks
-yapf -p -r -d $(SRCROOT)
# order import
-isort --recursive --diff $(SRCROOT)
# verify that requirements.txt is ordered
sort -u -c requirements.txt && sort -u -c requirements.dev.txt
mypy: ## check types
mypy
format: format-requirements format-tests ## format code in Polyswarm style
yapf -p -r -i $(SRCROOT)
isort --recursive $(SRCROOT)
format-tests: ## format test code in Polyswarm style
yapf -p -r -i --exclude tests/test_suite_internals.py $(TESTSRCROOT)
isort --recursive $(TESTSRCROOT)
format-requirements: ## sort requirements.txt
sort -u requirements.txt -o requirements.txt
sort -u requirements.dev.txt -o requirements.dev.txt
msgstubs: ## generate websocket event definition type stubs
(cd $(SRCROOT) && python -m websockets.scripts.gen_stubs | yapf)
quicktest: ## run tests
py.test -k "not test_SLOW"
test: ## run tests, including slow ones
py.test
clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts
clean-build: ## remove build artifacts
rm -fr build/
rm -fr dist/
rm -fr .eggs/
find . \( -path ./env -o -path ./venv -o -path ./.env -o -path ./.venv \) -prune -o -name '*.egg-info' -exec rm -fr {} +
find . \( -path ./env -o -path ./venv -o -path ./.env -o -path ./.venv \) -prune -o -name '*.egg' -exec rm -f {} +
clean-pyc: ## remove Python file artifacts
find . -name '*.pyc' -exec rm -f {} +
find . -name '*.pyo' -exec rm -f {} +
find . -name '*~' -exec rm -f {} +
find . -name '__pycache__' -exec rm -fr {} +
clean-test: ## remove test and coverage artifacts
rm -f .coverage
rm -fr htmlcov/
rm -fr .pytest_cache
coverage: ## check code coverage
coverage run --source $(SRCROOT) -m pytest --doctest-modules
coverage report -m
coverage html
google-chrome htmlcov/index.html
ci-test: dev-dependencies test ## install dev-dependencies and test
dev-dependencies: # Install developer requirements
bash -c "pip install -r <(cat requirements.dev.txt | grep -v 'mypy')"
pip install -e .