forked from pykeen/pykeen
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtox.ini
275 lines (248 loc) · 6.29 KB
/
tox.ini
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
# Tox (http://tox.testrun.org/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.
[tox]
isolated_build = true
envlist =
# always keep coverage-clean first
#coverage-clean
# code linters/stylers
lint
manifest
flake8
pyroma
# documentation linters/checkers
readme
doc8
docs-test
# the actual tests
doctests
py
integration
treon
# always keep coverage-report last
#coverage-report
[testenv]
commands =
# custom installation for PyG, cf. https://github.com/rusty1s/pytorch_scatter/pull/268
pip install torch-scatter torch-sparse torch-cluster torch-spline-conv torch-geometric --find-links https://data.pyg.org/whl/torch-2.1.0+cpu.html
coverage run -p -m pytest --durations=20 {posargs:tests} -m "not slow"
# ensure we use the CPU-only version of torch
setenv =
PIP_EXTRA_INDEX_URL = https://download.pytorch.org/whl/cpu
passenv =
HOME
extras =
matplotlib
seaborn
mlflow
ogb
opt_einsum
tensorboard
tests
transformers
lightning
# biomedicine # pyobo is too slow without caching
allowlist_externals =
/bin/cat
/bin/cp
/bin/mkdir
/usr/bin/cat
/usr/bin/cp
/usr/bin/mkdir
/usr/bin/git
/usr/local/bin/git
[testenv:integration]
commands = coverage run -p -m pytest --durations=20 {posargs:tests} -m slow
extras =
mlflow
tests
[testenv:doctests]
commands =
# TODO make this automatic for all RST in a loop (but not using xargs since doctest uses multiprocessing)
python -m doctest docs/source/tutorial/running_ablation.rst
python -m doctest docs/source/tutorial/first_steps.rst
python -m doctest docs/source/byo/data.rst
python -m doctest docs/source/byo/interaction.rst
xdoctest -m src/pykeen/utils.py
xdoctest -m src/pykeen/pipeline/api.py
# xdoctest -m src/pykeen/predict.py # can't run because of migration guide
# xdoctest -m src/pykeen/hpo/__init__.py
deps =
xdoctest
pygments
[testenv:coverage-clean]
deps = coverage
skip_install = true
commands = coverage erase
[testenv:manifest]
deps = check-manifest
skip_install = true
commands = check-manifest
[testenv:lint]
deps =
black[jupyter]
isort
skip_install = true
commands =
black src/ tests/ docs/ notebooks/
isort src/ tests/ docs/ notebooks/
description = Run linters.
[testenv:doclint]
deps =
rstfmt
skip_install = true
commands =
rstfmt \
docs/source/tutorial/node_piece.rst \
docs/source/tutorial/troubleshooting.rst
description = Run documentation linters.
[testenv:flake8]
skip_install = true
deps =
black
darglint
flake8<5.0.0
# flake8-bandit
flake8-black
flake8-bugbear
flake8-colors
flake8-docstrings<1.6
flake8-isort==5.0.0
flake8-print
pep8-naming
pydocstyle
commands =
flake8 src/pykeen/ tests/
description = Run the flake8 tool with several plugins (bandit, docstrings, import order, pep8 naming).
[testenv:docstr-coverage]
skip_install = true
deps =
docstr-coverage
commands =
docstr-coverage --skip-private --skip-magic src/pykeen
description = Run the docstr-coverage tool to check documentation coverage
[testenv:mypy]
deps =
mypy
skip_install = true
commands = mypy --install-types --non-interactive --ignore-missing-imports src/pykeen
description = Run the mypy tool to check static typing on the project.
[testenv:pyroma]
deps =
pygments
pyroma
skip_install = true
commands = pyroma --min=9 .
description = Run the pyroma tool to check the package friendliness of the project.
[testenv:readme]
commands = pykeen readme --check
usedevelop = true
extras =
templating
description = Make sure readme has been updated properly
[testenv:readme-build]
commands = pykeen readme
usedevelop = true
extras =
templating
description = Make sure readme has been updated properly
[testenv:doc8]
skip_install = true
deps =
sphinx
doc8
commands =
doc8 docs/source/ CHANGELOG.rst
description = Run the doc8 tool to check the style of the RST files in the project docs.
[testenv:docs-test]
description = Test building the documentation in an isolated environment.
changedir = docs
extras =
docs
lightning
commands =
mkdir -p {envtmpdir}
cp -r source {envtmpdir}/source
python -m sphinx -W -b html -d {envtmpdir}/build/doctrees {envtmpdir}/source {envtmpdir}/build/html
python -m sphinx -W -b coverage -d {envtmpdir}/build/doctrees {envtmpdir}/source {envtmpdir}/build/coverage
cat {envtmpdir}/build/coverage/c.txt
cat {envtmpdir}/build/coverage/python.txt
allowlist_externals =
/bin/cat
/bin/cp
/bin/mkdir
/usr/bin/cat
/usr/bin/cp
/usr/bin/mkdir
[testenv:docs]
description = Build the documentation locally.
extras =
{[testenv:docs-test]extras}
commands =
python -m sphinx -W -b html -d docs/build/doctrees docs/source docs/build/html
[testenv:coverage-report]
deps = coverage
skip_install = true
commands =
coverage combine
coverage report
[testenv:treon]
deps =
treon
extras = plotting
commands =
treon notebooks
description = Run notebooks.
####################
# Deployment tools #
####################
[testenv:bumpversion]
commands = bumpversion {posargs}
skip_install = true
passenv = HOME
deps =
bumpversion
[testenv:build]
skip_install = true
deps =
wheel
build
commands =
python -m build --sdist --wheel --no-isolation
[testenv:release]
description = Release the code to PyPI so users can pip install it
skip_install = true
deps =
{[testenv:build]deps}
twine >= 1.5.0
commands =
{[testenv:build]commands}
twine upload --skip-existing dist/*
[testenv:testrelease]
description = Release the code to the test PyPI site
skip_install = true
deps =
{[testenv:build]deps}
twine >= 1.5.0
commands =
{[testenv:build]commands}
twine upload --skip-existing --repository-url https://test.pypi.org/simple/ dist/*
[testenv:finish]
skip_install = true
passenv =
HOME
TWINE_USERNAME
TWINE_PASSWORD
deps =
{[testenv:release]deps}
bump2version
commands =
bump2version release --tag
{[testenv:release]commands}
git push --tags
bump2version patch
git push
allowlist_externals =
/usr/bin/git