-
Notifications
You must be signed in to change notification settings - Fork 3
/
Makefile
135 lines (104 loc) · 2.21 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
.PHONY: all develop test lint clean doc format
# The package name
PKG=ldif
all: test lint
#
# Setup
#
develop: install-deps activate-pre-commit configure-git
install-deps:
@echo "--> Installing dependencies"
pip install -U pip setuptools wheel
poetry install
activate-pre-commit:
@echo "--> Activating pre-commit hook"
pre-commit install
configure-git:
@echo "--> Configuring git"
git config branch.autosetuprebase always
#
# testing & checking
#
test-all: test
test:
@echo "--> Running Python tests"
pytest --ff -x -p no:randomly
@echo ""
test-randomly:
@echo "--> Running Python tests in random order"
pytest
@echo ""
test-with-coverage:
@echo "--> Running Python tests"
py.test --cov $(PKG)
@echo ""
test-with-typeguard:
@echo "--> Running Python tests with typeguard"
pytest --typeguard-packages=${PKG}
@echo ""
#
# Various Checkers
#
lint: lint-py lint-mypy lint-rst lint-doc
lint-ci: lint
lint-all: lint lint-bandit
lint-py:
@echo "--> Linting Python files /w various tools"
ruff check src tests
# adt all
@echo ""
lint-mypy:
@echo "--> Typechecking Python files w/ mypy"
mypy src tests
@echo ""
lint-travis:
@echo "--> Linting .travis.yml files"
travis lint --no-interactive
@echo ""
lint-rst:
@echo "--> Linting .rst files"
rst-lint *.rst
@echo ""
lint-doc:
@echo "--> Linting doc"
@echo "TODO"
#sphinx-build -W -b dummy docs/ docs/_build/
#sphinx-build -b dummy docs/ docs/_build/
@echo ""
#
# Formatting
#
format: format-py
format-py:
docformatter -i -r src tests
black src tests
isort src tests
#
# Everything else
#
install:
poetry install
doc: doc-html doc-pdf
doc-html:
sphinx-build -W -b html docs/ docs/_build/html
doc-pdf:
sphinx-build -W -b latex docs/ docs/_build/latex
make -C docs/_build/latex all-pdf
clean:
adt clean
rm -f **/*.pyc
find . -type d -empty -delete
rm -rf *.egg-info *.egg .coverage .eggs .cache .mypy_cache .pyre \
.pytest_cache .pytest .DS_Store docs/_build docs/cache docs/tmp \
dist build pip-wheel-metadata junit-*.xml htmlcov coverage.xml
tidy: clean
rm -rf .tox
update-deps:
pip install -U pip setuptools wheel
poetry update
poetry show -o
pre-commit autoupdate
publish: clean
git push --tags
poetry build
twine upload dist/*