forked from instructlab/instructlab
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
104 lines (94 loc) · 3.24 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
# SPDX-License-Identifier: Apache-2.0
[tox]
# py3-unit runs unit tests with 'python3'
# py311-unit runs the same tests with 'python3.11'
envlist = ruff, lint, mypy, spellcheck, py3-{unit, functional}, tomllint
minversion = 4.4
[testenv]
description = run tests (unit, unitcov, functional)
# Use PyTorch CPU build instead of CUDA build in test envs. CUDA dependencies
# are huge. This reduces venv from 5.7 GB to 1.5 GB.
setenv =
PIP_EXTRA_INDEX_URL=https://download.pytorch.org/whl/cpu
package = wheel
wheel_build_env = pkg
deps = -r requirements-dev.txt
commands =
ilab --version
{envpython} -m instructlab --version
unit: {envpython} -m pytest {posargs:tests}
unitcov: {envpython} -W error::UserWarning -m pytest --cov=instructlab --cov-report term --cov-report=html:coverage-{env_name} --cov-report=xml:coverage-{env_name}.xml --html=durations/{env_name}.html {posargs:tests -m "not (examples or slow)"}
functional: ./scripts/functional-tests.sh
allowlist_externals =
functional: ./scripts/functional-tests.sh
# format, check, and linting targets don't build and install the project to
# speed up testing.
[testenv:lint]
description = lint with pylint
skip_install = true
skipsdist = true
deps = -r requirements-dev.txt
commands =
{envpython} -m pylint --load-plugins pylint_pydantic src/instructlab/ tests/
[testenv:fastlint]
description = fast lint with pylint (without 3rd party modules)
skip_install = true
skipsdist = true
deps =
pylint
pylint-pydantic
commands =
{envpython} -m pylint --load-plugins pylint_pydantic {posargs:--disable=import-error --ignored-modules=instructlab.schema,instructlab.sdg,instructlab.training src/instructlab/ tests/}
[testenv:ruff]
description = reformat and fix code with Ruff (and isort)
skip_install = True
skipsdist = true
# keep in sync with .pre-commit-config.yaml
deps =
ruff==0.3.4
isort==5.11.5
# supports 'fix', 'check', or abitrary args to 'ruff' command
commands =
./scripts/ruff.sh {posargs:fix}
allowlist_externals = ./scripts/ruff.sh
[testenv:tomllint]
description = lint and format pyproject.toml
skip_install = true
skipsdist = true
deps =
commands =
make toml-lint
make toml-fmt
sh -c 'git diff --exit-code || (echo "pyproject.toml formatting is incorrect. Please run \"make toml-fmt\" and commit the changes." && exit 1)'
allowlist_externals = make, sh
[testenv:spellcheck]
description = spell check (needs 'aspell' command)
skip_install = true
skipsdist = true
deps =
pyspelling
commands =
sh -c 'command -v aspell || (echo "aspell is not installed. Please install it." && exit 1)'
{envpython} -m pyspelling --config {toxinidir}/.spellcheck.yml --spellchecker aspell
allowlist_externals = sh
[testenv:docs]
description = docs
deps =
# TODO: switch to a release tag when it's cut
# We need https://github.com/click-contrib/click-man/pull/62 to handle hidden options
git+https://github.com/click-contrib/click-man@24ec8377e3c24378417f6fc4f571b4f585d7df6b
commands =
click-man --target {toxinidir}/man ilab
[testenv:mypy]
description = Python type checking with mypy
deps =
mypy>=1.10.0,<2.0
types-tqdm
types-PyYAML
pytest
commands =
mypy src tests
[gh]
python =
3.11 = py311-{unitcov, functional}
3.10 = py310-{unitcov, functional}