forked from astropy/astropy
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
184 lines (162 loc) · 6.92 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
[tox]
envlist =
py{310,311,312,dev}-test{,-recdeps,-alldeps,-oldestdeps,-devdeps,-devinfra,-predeps,-numpy123,-numpy124,-numpy125,-mpl360}{,-cov}{,-clocale}{,-fitsio}{,-noscipy}
# Only these two exact tox environments have corresponding figure hash files.
py310-test-image-mpl360-cov
py310-test-image-mpldev-cov
build_docs
linkcheck
codestyle
[testenv]
# Pass through the following environment variables which are needed for the CI
passenv = HOME,WINDIR,LC_ALL,LC_CTYPE,CC,CI,IS_CRON,ARCH_ON_CI
setenv =
NUMPY_WARN_IF_NO_MEM_POLICY = 1
# For coverage, we need to pass extra options to the C compiler
cov: CFLAGS = --coverage -fno-inline-functions -O0
# opt-in faster coverage when available (requires Python >= 3.12)
py312: COVERAGE_CORE=sysmon
image: MPLFLAGS = -m "mpl_image_compare" --mpl --mpl-generate-summary=html --mpl-results-path={toxinidir}/results --mpl-hash-library={toxinidir}/astropy/tests/figures/{envname}.json --mpl-baseline-path=https://raw.githubusercontent.com/astropy/astropy-figure-tests/astropy-main/figures/{envname}/ --remote-data -W ignore::DeprecationWarning
!image: MPLFLAGS =
clocale: LC_CTYPE = C.ascii
clocale: LC_ALL = C
devdeps: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/liberfa/simple https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
mpldev: PIP_EXTRA_INDEX_URL = https://pypi.anaconda.org/scientific-python-nightly-wheels/simple
fitsio: ASTROPY_ALWAYS_TEST_FITSIO = true
# Run the tests in a temporary directory to make sure that we don't import
# astropy 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
recdeps: with recommended optional dependencies
alldeps: with all optional and test 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
numpy123: with numpy 1.23.*
numpy124: with numpy 1.24.*
numpy125: with numpy 1.25.*
image: with image tests
mpl360: with matplotlib 3.6.0
mpldev: with the latest developer version of matplotlib
double: twice in a row to check for global state changes
noscipy: without scipy-dev
deps =
numpy123: numpy==1.23.*
numpy124: numpy==1.24.*
numpy125: numpy==1.25.*
mpl360: matplotlib==3.6.0
# mpl 3.6.0 isn't compatible with numpy 2.0 but didn't include a pin
mpl360: numpy<2.0
image: latex
image: scipy
image: pytest-mpl>=0.17
# Some FITS tests use fitsio as a comparison
fitsio: fitsio
# The oldestdeps factor is intended to be used to install the oldest versions of all
# dependencies that have a minimum version.
oldestdeps: pyerfa==2.0.*
oldestdeps: numpy==1.23.*
oldestdeps: matplotlib==3.3.*
oldestdeps: asdf==2.8.* # asdf-astropy==0.3.*
oldestdeps: asdf-astropy==0.3.*
oldestdeps: attrs < 24.1.0 # ASDF_LT_3_4
oldestdeps: scipy==1.8.*
oldestdeps: pyyaml==3.13
oldestdeps: ipython==4.2.*
oldestdeps: pandas==2.0.*
oldestdeps: pyarrow==7.0.0
# ipython did not pin traitlets, so we have to
oldestdeps: traitlets<4.1 # ipython==4.2.*
# The devdeps factor is intended to be used to install the latest developer version
# or nightly wheel of key dependencies.
devdeps-!noscipy: scipy>=0.0.dev0
devdeps: numpy>=0.0.dev0
devdeps-!noscipy: matplotlib>=0.0.dev0
devdeps: pyerfa>=0.0.dev0
mpldev: matplotlib>=0.0.dev0
# 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/scientific-python/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/matplotlib/pytest-mpl.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
recdeps: recommended
recdeps: test_all
alldeps: all
alldeps: test_all
install_command =
!devdeps: python -I -m pip install
devdeps: python -I -m pip install -v --pre
commands =
pip freeze
!cov-!double: pytest --pyargs astropy {toxinidir}/docs {env:MPLFLAGS} {posargs}
cov-!double: pytest --pyargs astropy {toxinidir}/docs {env:MPLFLAGS} --cov astropy --cov-config={toxinidir}/pyproject.toml --cov-report xml:{toxinidir}/coverage.xml {posargs}
double: python -c 'import sys; from astropy import test; test(); sys.exit(test())'
pip_pre =
predeps: true
!predeps: false
# This lets developers use tox to build docs and ignores warnings.
# This is not used in CI; For that, we have RTD PR builder.
[testenv:build_docs]
changedir = docs
description = invoke sphinx-build to build the HTML docs
extras = docs
commands =
pip freeze
sphinx-build -b html . _build/html {posargs:-j auto}
[testenv:linkcheck]
changedir = docs
description = check the links in the HTML docs
extras = docs
commands =
pip freeze
sphinx-build -b linkcheck . _build/html {posargs:-W}
[testenv:codestyle]
skip_install = true
description = Run all style and file checks with pre-commit
deps =
pre-commit
commands =
pre-commit install-hooks
pre-commit run {posargs:--color always --all-files --show-diff-on-failure}
[testenv:pyinstaller]
# Check that astropy can be included in a PyInstaller bundle without any issues. This
# also serves as a test that tests do not import anything from outside the tests
# directories with relative imports, since we copy the tests out to a separate directory
# to run them.
description = check that astropy can be included in a pyinstaller bundle
changedir = .pyinstaller
deps =
pyinstaller
pytest-mpl
matplotlib
extras = test
commands =
pyinstaller --onefile run_astropy_tests.py \
--distpath . \
--additional-hooks-dir hooks \
--exclude-module tkinter \
--collect-submodules=py \
--hidden-import pytest \
--hidden-import pytest_astropy.plugin \
--hidden-import pytest_remotedata.plugin \
--hidden-import pytest_doctestplus.plugin \
--hidden-import pytest_mpl.plugin
./run_astropy_tests --astropy-root {toxinidir}