This repository has been archived by the owner on Aug 6, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tox.ini
187 lines (162 loc) · 6.03 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
[tox]
envlist =
py{37,38,39,dev}-test{,-alldeps,-oldestdeps,-devdeps}{,-cov}{,-clocale}
py{37,38,39,dev}-test-numpy{,117,118,119}
py{37,38,39,dev}-test-astropy{40,lts}
build_docs
linkcheck
codestyle
requires =
setuptools >= 30.3.0
pip >= 19.3.1
tox-pypi-filter >= 0.12
isolated_build = true
indexserver =
NIGHTLY = https://pypi.anaconda.org/scipy-wheels-nightly/simple
[testenv]
# Pass through the following environment variables which are needed for the CI
passenv = HOME WINDIR LC_ALL LC_CTYPE CC CI TRAVIS TEST_READ_HUGE_FILE
# For coverage, we need to pass extra options to the C compiler
setenv =
cov: CFLAGS = --coverage -fno-inline-functions -O0
image: MPLFLAGS = --mpl
!image: MPLFLAGS =
clocale: LC_CTYPE = C.ascii
clocale: LC_ALL = C
# TODO Suppress display of matplotlib plots generated during docs build
# setenv = MPLBACKEND=agg
# 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
oldestdeps: with the oldest supported version of key dependencies
cov: and test coverage
numpy117: with numpy 1.17.*
numpy118: with numpy 1.18.*
numpy119: with numpy 1.19.*
astropy40: with astropy 4.0.*
astropylts: with the latest astropy LTS
image: with image tests
mpldev: with the latest developer version of matplotlib
double: twice in a row to check for global state changes
# The following provides some specific pinnings for key packages
deps =
numpy117: numpy==1.17.*
numpy118: numpy==1.18.*
numpy119: numpy==1.19.*
astropy40: astropy==4.0.*
astropylts: astropy==4.0.*
image: pytest-mpl
# The oldestdeps factor is intended to be used to install the oldest versions of all
# dependencies that have a minimum version.
# pytest-openfiles pinned because of https://github.com/astropy/astropy/issues/10160
oldestdeps: numpy==1.17.*
oldestdeps: matplotlib==3.0.*
oldestdeps: asdf==2.6.*
oldestdeps: scipy==1.2.*
oldestdeps: pyyaml==3.13
# The devdeps factor is intended to be used to install the latest developer version
# or nightly wheel of key dependencies.
devdeps: :NIGHTLY:numpy
devdeps,mpldev: git+https://github.com/matplotlib/matplotlib.git#egg=matplotlib
devdeps: git+https://github.com/astropy/astropy.git#egg=astropy
devdeps: git+https://github.com/spacetelescope/asdf.git#egg=asdf
devdeps: git+https://github.com/liberfa/pyerfa.git#egg=pyerfa
# Linkcheck is broken with cryptic error with Sphinx 3.1.0
# https://github.com/astropy/astropy/issues/10489
# It also emits a warning from BLS docstring that we cannot banish with numpydoc 1.1.0
linkcheck: sphinx<3.1
linkcheck: numpydoc<1.1.0
# The following indicates which extras_require from setup.cfg will be installed
extras =
test
alldeps: all
commands =
pip freeze
!cov-!double: pytest --pyargs discO {toxinidir}/docs {env:MPLFLAGS} {posargs}
cov-!double: pytest --pyargs discO {toxinidir}/docs {env:MPLFLAGS} --cov discO --cov-config={toxinidir}/setup.cfg {posargs}
double: python -c 'import sys; from discO import test; test(); sys.exit(test())'
cov: coverage xml -o {toxinidir}/coverage.xml
# This lets developers to 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 -j auto -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]
# We list the warnings/errors to check for here rather than in setup.cfg because
# we don't want these options to apply whenever anyone calls flake8 from the
# command-line or their code editor - in this case all warnings/errors should be
# checked for. The warnings/errors we check for here are:
# E101 - mix of tabs and spaces
# W191 - use of tabs
# W291 - trailing whitespace
# W292 - no newline at end of file
# W293 - trailing whitespace
# W391 - blank line at end of file
# E111 - 4 spaces per indentation level
# E112 - 4 spaces per indentation level
# E113 - 4 spaces per indentation level
# E301 - expected 1 blank line, found 0
# E302 - expected 2 blank lines, found 0
# E303 - too many blank lines (3)
# E304 - blank lines found after function decorator
# E305 - expected 2 blank lines after class or function definition
# E306 - expected 1 blank line before a nested definition
# E502 - the backslash is redundant between brackets
# E722 - do not use bare except
# E901 - SyntaxError or IndentationError
# E902 - IOError
# E999: SyntaxError -- failed to compile a file into an Abstract Syntax Tree
# F822: undefined name in __all__
# F823: local variable name referenced before assignment
skip_install = true
changedir = .
description = check code style, e.g. with flake8
deps = flake8
exclude =
*/_astropy_init.py
docs/conf.py
commands = flake8 discO --count --max-line-length=100
[testenv:unused_code]
basepython=python
deps = vulture
changedir = .
commands = vulture ./discO --min-confidence=80 --exclude discO/extern/
[testenv:mypy]
basepython=python
deps = mypy
changedir = .
commands = mypy ./discO --ignore-missing-imports
[testenv:black]
skip_install = true
changedir = .
description = check code style, with black
deps = black
commands = black ./discO -l 79 --check
[flake8]
ignore = F401, W503, E203, E743, F403, E702
exclude =
discO/_astropy_init.py
docs/conf.py