-
-
Notifications
You must be signed in to change notification settings - Fork 151
Expand file tree
/
Copy pathtox.ini
More file actions
181 lines (160 loc) · 5.55 KB
/
tox.ini
File metadata and controls
181 lines (160 loc) · 5.55 KB
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
[tox]
envlist =
py{311,312}-test-oldestdeps
py{311,312}-cython-oldestdeps
py{311,312}-build-oldestdeps
py{311,312}-install-oldestdeps
py{311,312,313,314}-test{,-alldeps,-devdeps,-devinfra}{,-cov}
build_docs
linkcheck
codestyle
pep517
bandit
asdf-schemas
isolated_build = true
[testenv]
# Suppress display of matplotlib plots generated during docs build
setenv =
MPLBACKEND=agg
devdeps: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/scientific-python-nightly-wheels/simple https://pypi.anaconda.org/liberfa/simple https://pypi.anaconda.org/astropy/simple
# Pass through the following environment variables which may be needed
# for the CI
passenv = HOME,WINDIR,LC_ALL,LC_CTYPE,CC,CI
# Run the tests in a temporary directory to make sure that we don't
# import this package from the source tree
changedir = .tmp/{envname}
# tox environments are constructed with so-called 'factors' (or terms)
# separated by hyphens, e.g., test-devdeps-cov. Lines below starting
# with factor: will only take effect if that factor is included in the
# environment name. To see a list of example environments that can be
# run, along with a description, run:
#
# tox -l -v
#
description =
run tests
alldeps: with all optional dependencies
devdeps: with the latest developer version of key dependencies
devinfra: like devdeps but also dev version of infrastructure
oldestdeps: with the oldest supported version of key dependencies
cov: and test coverage
# The following provides some specific pinnings for key packages
deps =
cov: pytest-cov
oldestdeps: minimum_dependencies
devdeps: numpy>=0.0.dev0
devdeps: scipy>=0.0.dev0
devdeps: scikit-image>=0.0.dev0
devdeps: matplotlib>=0.0.dev0
devdeps: pyerfa>=0.0.dev0
devdeps: astropy>=0.0.dev0
devdeps: git+https://github.com/spacetelescope/gwcs.git
# Latest developer version of infrastructure packages
devinfra: git+https://github.com/pytest-dev/pytest.git
devinfra: git+https://github.com/astropy/extension-helpers.git
devinfra: git+https://github.com/astropy/pytest-doctestplus.git
devinfra: git+https://github.com/astropy/pytest-remotedata.git
devinfra: git+https://github.com/astropy/pytest-astropy-header.git
devinfra: git+https://github.com/astropy/pytest-arraydiff.git
devinfra: git+https://github.com/astropy/pytest-filter-subpackage.git
devinfra: git+https://github.com/astropy/pytest-astropy.git
# The following indicates which [project.optional-dependencies] from
# pyproject.toml will be installed
extras =
test: test
alldeps: all
build_docs: docs
install_command =
!devdeps: python -I -m pip install
devdeps: python -I -m pip install -v --pre
commands_pre =
oldestdeps: minimum_dependencies photutils --filename requirements-min.txt
oldestdeps: pip install -r requirements-min.txt
commands =
pip freeze
pytest --pyargs photutils {toxinidir}/docs \
cov: --cov photutils --cov-config={toxinidir}/pyproject.toml --cov-report xml:{toxinidir}/coverage.xml --cov-report term-missing \
{posargs}
[testenv:build_docs]
changedir = docs
description = invoke sphinx-build to build the HTML docs
extras = docs
commands =
pip freeze
sphinx-build -W -b html . _build/html
[testenv:linkcheck]
changedir = docs
description = check the links in the HTML docs
extras = docs
commands =
pip freeze
sphinx-build -W -b linkcheck . _build/html
[testenv:codestyle]
skip_install = true
changedir = .
description = check code style with flake8
deps = flake8
commands = flake8 photutils --count --max-line-length=79
[testenv:pep517]
skip_install = true
changedir = .
description = PEP 517
deps =
build
twine
commands =
python -m build --sdist .
twine check dist/* --strict
[testenv:{py311,py312}-cython-oldestdeps]
skip_install = true
changedir = .
description = check Cython compilation with oldest supported Cython version
deps =
packaging
commands_pre =
python -c "import sys; assert (3,11) <= sys.version_info < (3,13), 'Requires Python 3.11 or 3.12'"
python {toxinidir}/_build_oldest_pins.py
pip install -r {toxinidir}/build-oldest-constraints.txt
commands =
pip freeze --all
python -c "from Cython.Build import cythonize; cythonize('photutils/**/*.pyx', force=True, language_level='3')"
[testenv:{py311,py312}-build-oldestdeps]
skip_install = true
changedir = .
description = check building the package with oldest supported build dependencies
deps =
packaging
commands_pre =
python -c "import sys; assert (3,11) <= sys.version_info < (3,13), 'Requires Python 3.11 or 3.12'"
python {toxinidir}/_build_oldest_pins.py
pip install -r {toxinidir}/build-oldest-constraints.txt
commands =
pip freeze --all
pip wheel --no-build-isolation --no-deps .
[testenv:{py311,py312}-install-oldestdeps]
skip_install = true
changedir = .
description = check building and installing the package with oldest supported dependencies
deps =
packaging
commands_pre =
python -c "import sys; assert (3,11) <= sys.version_info < (3,13), 'Requires Python 3.11 or 3.12'"
python {toxinidir}/_build_oldest_pins.py
pip install -r {toxinidir}/install-oldest-constraints.txt
commands =
pip freeze --all
pip install --no-build-isolation .
[testenv:bandit]
skip_install = true
changedir = .
description = security check with bandit
deps = bandit
commands = bandit -r photutils -c pyproject.toml
[testenv:asdf-schemas]
changedir = .
description = run ASDF schema validation
deps = asdf-astropy
extras = test
commands =
pip freeze
pytest photutils/resources/schemas {posargs}